summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/jlreq/jlreq.cls
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/jlreq/jlreq.cls')
-rw-r--r--Master/texmf-dist/tex/latex/jlreq/jlreq.cls707
1 files changed, 204 insertions, 503 deletions
diff --git a/Master/texmf-dist/tex/latex/jlreq/jlreq.cls b/Master/texmf-dist/tex/latex/jlreq/jlreq.cls
index d84993e69ce..241fa9d4d01 100644
--- a/Master/texmf-dist/tex/latex/jlreq/jlreq.cls
+++ b/Master/texmf-dist/tex/latex/jlreq/jlreq.cls
@@ -5,328 +5,24 @@
%%
% (based on JLReq 20120403 https://www.w3.org/TR/2012/NOTE-jlreq-20120403/ja/)
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{jlreq}[2018/04/11 jlreq]
+\ProvidesClass{jlreq}[2018/05/19 jlreq]
\RequirePackage{xkeyval,everyhook,filehook,etoolbox,ifthen}
+\RequirePackage{jlreq-helpers}
-%. helper1
-\newcount\jlreq@tempcnta
-\newcount\jlreq@tempcntb
-\newcount\jlreq@tempcntc
-\newdimen\jlreq@tempdima
-\newdimen\jlreq@tempdimb
-\newdimen\jlreq@tempdimc
-\newskip\jlreq@tempskipa
-\newskip\jlreq@tempskipb
-\newskip\jlreq@tempskipc
-\newif\ifjlreq@tempa
-\newif\ifjlreq@tempb
-\newif\ifjlreq@tempc
-\newbox\jlreq@tempboxa
-\newbox\jlreq@tempboxb
-\newbox\jlreq@tempboxc
-% 計算結果を返すための変数
-\newdimen\jlreq@resultdimen
-\newskip\jlreq@resultskip
-\newbox\jlreq@resultbox
-\newif\ifjlreq@result
-\newcount\jlreq@resultcnt
-
-\newcommand*{\jlreq@undefcs}[1]{%
- \ifundef{#1}{\ClassError{jlreq}{Trying to delete \string#1 even though it is not defined, may be a bug}{\@ehc}}{\undef{#1}}%
-}
-
+\newcommand*{\jlreq@undeferr}[1]{\ClassError{jlreq}{Trying to delete \string#1 even though it is not defined, may be a bug}{\@ehc}}
% クラスファイル内でしか使わないマクロをクラスファイル終了時に未定義にする
\newcommand*{\jlreq@aftercls@addtodeletecs}[1]{%
- \appto\jlreq@aftercls@deletecslist{\jlreq@undefcs{#1}}%
+ \appto\jlreq@aftercls@deletecslist{\jlreq@helper@undefcs{#1}{\jlreq@undeferr}}%
}
-\jlreq@aftercls@addtodeletecs{\jlreq@aftercls@addtodeletecs}
\newcommand*{\jlreq@aftercls@addtodeleteif}[1]{%
- \edef\@tempa{\expandafter\@gobble\string#1}%
- \edef\@tempa{\expandafter\@gobbletwo\@tempa}%
- \eappto\jlreq@aftercls@deletecslist{%
- \unexpanded{\jlreq@undefcs{#1}}%
- \noexpand\jlreq@undefcs{\expandonce{\csname\@tempa true\endcsname}}%
- \noexpand\jlreq@undefcs{\expandonce{\csname\@tempa false\endcsname}}%
- }%
+ \appto\jlreq@aftercls@deletecslist{\jlreq@helper@undefif{#1}{\jlreq@undeferr}}%
}
+\jlreq@aftercls@addtodeletecs{\jlreq@aftercls@addtodeletecs}
\jlreq@aftercls@addtodeletecs{\jlreq@aftercls@addtodeleteif}
\AtEndOfClass{%
\jlreq@aftercls@deletecslist
- \jlreq@undefcs{\jlreq@aftercls@deletecslist}%
- \undef{\jlreq@undefcs}%
-}
-
-\def\jlreq@uniqtoken{\jlreq@uniqtoken}
-\def\jlreq@endmark{\jlreq@endmark}
-\long\def\jlreq@deleteuntileendmark#1\jlreq@endmark{}
-
-\def\jlreq@expandafter@ii{\expandafter\expandafter\expandafter}
-\edef\jlreq@expandafter@iii{\expandonce{\jlreq@expandafter@ii}\noexpand\expandafter\expandonce{\jlreq@expandafter@ii}}
-\edef\jlreq@expandtwice#1{\expandonce{\jlreq@expandafter@ii}\noexpand\unexpanded\expandonce{\jlreq@expandafter@ii}{#1}}
-\edef\jlreq@expand@three#1{\expandonce{\jlreq@expandafter@iii}\noexpand\unexpanded\expandonce{\jlreq@expandafter@iii}{#1}}
-
-% \jlreq@getfirsttoken#1\jlreq@uniqtoken{}\jlreq@endmark@の形で使う
-% 二回展開すると,#1の先頭(ただし空白は無視される)を取り出す.#1が空の場合は\jlreq@uniqtoken,先頭が{の場合は\bgroupとなる
-\def\jlreq@endmark@{\jlreq@endmark@} % \jlreq@getfirsttokenだけのためのendmark
-\long\def\jlreq@getfirsttoken#1#{\jlreq@getfirsttoken@#1\bgroup\jlreq@endmark@}
-\long\def\jlreq@getfirsttoken@#1#2\jlreq@endmark@#3\jlreq@endmark@{#1}
-% 与えられたトークン列が空か(展開はしないでチェック)
-\long\def\jlreq@ifempty#1{\expandafter\ifx\expandafter\relax\detokenize{#1}\relax\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
-% #1の先頭トークンが#2か(ただし#1が空ならば#2=\jlreq@uniqtoken,#1={ならば#2=\bgroupでTRUEとなる)
-\long\edef\jlreq@iffirsttoken#1#2{%
- % スペースチェック
- \unexpanded{\expandafter\expandafter\expandafter\jlreq@deleteuntileendmark\expandafter\ifx\expandafter}\expandonce{\space}\noexpand\detokenize{#1}\unexpanded{\@undefined\jlreq@endmark\expandafter\@firstoftwo\else\jlreq@endmark\expandafter\@secondoftwo\fi}{%
- \noexpand\ifx\expandonce{\space}#2\unexpanded{\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}%
- }{%
- \noexpand\jlreq@iffirsttoken@ignorespaces{#1}{#2}%
- }%
-}
-% こちらは先頭のスペースを読み飛ばす
-\long\def\jlreq@iffirsttoken@ignorespaces#1#2{%
- \expandafter\expandafter\expandafter\ifx\jlreq@getfirsttoken#1\jlreq@uniqtoken{}\jlreq@endmark@#2\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
-}
-
-% #1が\jlreq@endmarkか
-\long\def\jlreq@ifendmark#1{\jlreq@iffirsttoken{#1}{\jlreq@endmark}}
-
-% #1の先頭が引数なしのマクロか
-\long\def\jlreq@ifmacro@noargument#1{%
- \jlreq@ifempty{#1}{\@secondoftwo}{%
- \jlreq@iffirsttoken{#1}{ }{\@secondoftwo}{%
- \expandafter\expandafter\expandafter\jlreq@ifmacro@noargument@\jlreq@getfirsttoken#1\jlreq@uniqtoken{}\jlreq@endmark@
-}}}
-\long\def\jlreq@ifmacro@noargument@#1{\expandafter\jlreq@ifmacro@noargument@@\expandafter{\meaning #1}}
-\edef\jlreq@do{%
- \unexpanded{\def\jlreq@ifmacro@noargument@@}##1{\noexpand\jlreq@ifmacro@noargument@@@##1\expandonce{\detokenize{macro:->}}\noexpand\jlreq@endmark}
- \unexpanded{\def\jlreq@ifmacro@noargument@@@}##1\expandonce{\detokenize{macro:->}}##2\noexpand\jlreq@endmark{\noexpand\jlreq@ifempty{##1}}
-}
-\jlreq@do
-
-% #1(skipレジスタ)が0か(展開不可).
-\def\jlreq@ifgluezero#1{%
- \begingroup
- \edef\@tempa{\the#1}%
- \edef\@tempb{\detokenize{0.0pt}}%
- \edef\jlreq@do{\ifx\@tempa\@tempb\noexpand\@firstoftwo\else\noexpand\@secondoftwo\fi}%
- \expandafter\endgroup
- \jlreq@do
-}
-
-% #1が#2で終わるか(展開不可)
-\def\jlreq@ifendswith#1#2{%
- \jlreq@ifempty{#2}{\@firstoftwo}{%
- \begingroup
- \def\jlreq@tempa##1#2\jlreq@uniqtoken##2\jlreq@endmark{%
- \edef\jlreq@do{\jlreq@ifempty{##2}{\noexpand\@secondoftwo}{\noexpand\@firstoftwo}}%
- }%
- \jlreq@tempa#1\jlreq@uniqtoken#2\jlreq@uniqtoken\jlreq@endmark
- \expandafter\endgroup
- \jlreq@do
- }%
-}
-% #1が#2で始まるか(展開不可)
-\def\jlreq@ifstartswith#1#2{%
- \jlreq@ifempty{#2}{\@firstoftwo}{%
- \jlreq@ifempty{#1}{\@secondoftwo}{%
- \begingroup
- \def\jlreq@tempa##1#2##2\jlreq@endmark{%
- \edef\jlreq@do{\jlreq@ifempty{##1}{\noexpand\@firstoftwo}{\noexpand\@secondoftwo}}%
- }%
- \jlreq@tempa#1#2\jlreq@endmark
- \expandafter\endgroup
- \jlreq@do
- }%
- }%
-}
-% #1が#2を含むか(展開不可){}内に#2があってもFALSE判定.
-\def\jlreq@ifcontains#1#2{%
- \jlreq@ifempty{#2}{\@firstoftwo}{%
- \begingroup
- \def\jlreq@tempa##1#2##2\jlreq@endmark{%
- \edef\jlreq@do{\jlreq@ifempty{##2}{\noexpand\@secondoftwo}{\noexpand\@firstoftwo}}%
- }%
- \jlreq@tempa#1#2\jlreq@endmark
- \expandafter\endgroup
- \jlreq@do
- }%
-}
-
-% @removeelementの括弧があっても動くかもしれない版
-% #2から#1を消して#3に入れる
-\def\jlreq@helper@removeelement#1#2#3{%
- \begingroup
- \edef\jlreq@tempa{\unexpanded{#1}}% 消したいやつ
- \def\jlreq@tempb{}% 消していない分を放り込んでいく
- \jlreq@tempatrue% 最初の\jlreq@tempbへの追加か.
- \jlreq@helper@removeelement@#2,\jlreq@endmark,%
- \edef\jlreq@do{\unexpanded{\def#3}{\expandonce{\jlreq@tempb}}}%
- \expandafter\endgroup
- \jlreq@do
-}
-\def\jlreq@helper@removeelement@#1,{%
- \jlreq@ifendmark{#1}{}{%
- \edef\@tempa{\unexpanded{#1}}%
- \ifx\jlreq@tempa\@tempa\expandafter\@gobble\else\expandafter\@firstofone\fi{%
- \eappto\jlreq@tempb{\ifjlreq@tempa\else,\fi\unexpanded{#1}}%
- \jlreq@tempafalse
- }%
- \jlreq@helper@removeelement@
- }%
-}
-
-% 空白を無視しない\@ifnextchar
-\long\def\jlreq@ifnextchar#1#2#3{%
- \let\reserved@d=#1%
- \edef\reserved@a{\unexpanded{#2}}%
- \edef\reserved@b{\unexpanded{#3}}%
- \futurelet\jlreq@nextchar\jlreq@ifnextchar@
-}
-\def\jlreq@ifnextchar@{%
- \ifx\jlreq@nextchar\reserved@d\let\reserved@b\reserved@a\fi
- \reserved@b
-}
-% 空白を無視しない\@ifsart
-\def\jlreq@ifstar#1#2{\jlreq@ifnextchar *{\edef\reserved@a*{\unexpanded{#1}}\reserved@a}{#2}}
-% カンマで区切って,その前と後ろを\jlreq@resulta,\jlreq@resultbに入れる
-% もしカンマがない場合は\ifjlreq@resultがfalseになる.
-\def\jlreq@helper@dividebycomma#1{\jlreq@helper@dividebycomma@#1,\jlreq@endmark}
-\def\jlreq@helper@dividebycomma@#1,#2\jlreq@endmark{%
- \def\jlreq@resulta{#1}%
- \def\jlreq@resultb{#2}%
- \ifx\jlreq@resultb\@empty\jlreq@resultfalse\else\jlreq@resulttrue\expandafter\def\expandafter\jlreq@resultb\expandafter{\jlreq@helper@removelastcomma#2\jlreq@endmark}\fi
-}
-\def\jlreq@helper@removelastcomma#1,\jlreq@endmark{#1}
-
-% vbox #1の最後を\jlreq@resultboxに入れる
-% #1の最後の行は消える
-\newcommand*{\jlreq@getlastbox}[1]{%
- \setbox#1=\vbox{\unvbox#1\relax
- \unskip\unskip\unpenalty\global\setbox\jlreq@resultbox=\lastbox}%
- \ifhbox\jlreq@resultbox
- \global\setbox\jlreq@resultbox=\hbox{%
- \unhbox\jlreq@resultbox\unskip\unskip\unpenalty}%
- \else
- \global\setbox\jlreq@resultbox=\copy\voidb@x
- \fi
-}
-
-% 簡易なkeyvalのパース.
-% \jlreq@parsekeyval*[family=jlreq@key]{ % *ありは\setkeys*を使う
-% {key}{\def\val{#1}}
-% *{key}{\def\val{#1}} % デフォルト値を空文字列にする
-% {key}[choice1,choice2]{\def\valchoice{#1}}
-%}{parse対象}
-\def\jlreq@parsekeyval{%
- \@ifstar{\jlreq@helper@parsekeyval@{*}}{\jlreq@helper@parsekeyval@{}}%
-}
-\def\jlreq@helper@parsekeyval@#1{%
- \@ifnextchar[{\jlreq@helper@parsekeyval@@{#1}}{\jlreq@helper@parsekeyval@@{#1}[jlreq@key]}%
-}
-\long\def\jlreq@helper@parsekeyval@@#1[#2]#3#4{%
- \begingroup
- \def\jlreq@do{}%
- \jlreq@helper@parsekeyval@@@{#2}#3{\jlreq@endmark}%
- \setkeys#1{#2}{#4}%
- \expandafter\endgroup
- \jlreq@do
-}
-\def\jlreq@helper@parsekeyval@@@#1#2#{%
- \jlreq@iffirsttoken@ignorespaces{#2}{*}{%
- \jlreq@helper@parsekeyval@@@definekeywithdefault{#1}%
- }{%
- \jlreq@helper@parsekeyval@@@@{#1}%
- }%
-}
-\long\def\jlreq@helper@parsekeyval@@@@#1#2{%
- \jlreq@ifendmark{#2}{}{%
- \@ifnextchar[{\jlreq@helper@parsekeyval@@@choicekey{#1}{#2}}{\jlreq@helper@parsekeyval@@@definekey{#1}{#2}}%
- }%
-}
-\long\def\jlreq@helper@parsekeyval@@@choicekey#1#2[#3]#4{%
- \define@choicekey{#1}{#2}{#3}{\eappto\jlreq@do{\unexpanded{#4}}}%
- \jlreq@helper@parsekeyval@@@{#1}%
-}
-\long\def\jlreq@helper@parsekeyval@@@definekeywithdefault#1#2#3{%
- \define@key{#1}{#2}[]{\eappto\jlreq@do{\unexpanded{#3}}}%
- \jlreq@helper@parsekeyval@@@{#1}%
-}
-\long\def\jlreq@helper@parsekeyval@@@definekey#1#2#3{%
- \define@key{#1}{#2}{\eappto\jlreq@do{\unexpanded{#3}}}%
- \jlreq@helper@parsekeyval@@@{#1}%
-}
-
-% キー指定しないkeyval(独自実装)
-% \jlreq@parsekeyval@nokey{<action>}{<parse対象>}
-% action内では#1=key, #2=val
-\long\def\jlreq@parsekeyval@nokey#1#2{%
- \begingroup
- \def\jlreq@do{}%
- \def\jlreq@parsekeyval@nokey@execute##1##2{#1}%
- \expandafter\jlreq@parsekeyval@nokey@#2,\jlreq@endmark,%
- \expandafter\endgroup
- \jlreq@do
-}
-\long\def\jlreq@parsekeyval@nokey@#1,{%
- \jlreq@ifendmark{#1}{}{\jlreq@parsekeyval@nokey@@#1=\jlreq@endmark}%
-}
-\long\def\jlreq@parsekeyval@nokey@@#1=#2\jlreq@endmark{%
- \jlreq@ifempty{#2}{\jlreq@parsekeyval@nokey@@@{}{#1}}{\expandafter\jlreq@parsekeyval@nokey@@@\expandafter{\jlreq@parsekeyval@nokey@@@@#2\jlreq@endmark}{#1}}%
-}
-\long\def\jlreq@parsekeyval@nokey@@@#1#2{%
- \eappto\jlreq@do{\expandonce{\jlreq@parsekeyval@nokey@execute{#2}{#1}}}%
- \jlreq@parsekeyval@nokey@
-}
-\long\def\jlreq@parsekeyval@nokey@@@@#1=\jlreq@endmark{#1}
-
-% \jlreq@switch{str}{
-% {str}{abcd}
-% {str1}{xyz}
-%}[default: input = #1] -> abcd
-%または
-%
-% \jlreq@switch{str}{
-% {str}{abcd}
-% {str1}{xyz}
-% {default} % ここは#1を受け付けない(パラメータトークンを受け付けたい場合のため).
-%} -> abcd
-% 文字列比較→\edefして比較する
-% 第一引数は\jlreq@tempaに入れておく.
-\long\def\jlreq@helper@switch@executeoption#1[#2]{%
- \begingroup
- \def\jlreq@do##1{#2}%
- \expandafter\endgroup
- \jlreq@do{#1}%
-}
-\long\def\jlreq@helper@removeoption[#1]{}
-\long\def\jlreq@switch#1#2{%
- \begingroup
- \let\jlreq@do\@undefined
- \edef\jlreq@tempa{#1}% ループ中ずっと保存する
- \jlreq@helper@switch@#2\jlreq@endmark
- \ifx\jlreq@do\@undefined
- \def\jlreq@do{\@ifnextchar[{\jlreq@helper@switch@executeoption{#1}}{}}%
- \else
- \appto\jlreq@do{\@ifnextchar[{\jlreq@helper@removeoption}{}}%
- \fi
- \expandafter\endgroup
- \jlreq@do
-}
-\long\def\jlreq@helper@switch@#1{%
- \jlreq@ifendmark{#1}{}{\jlreq@helper@switch@@{#1}}%
-}
-
-\long\def\jlreq@helper@switch@@#1#2{%
- \jlreq@ifendmark{#2}{%
- \edef\jlreq@do{\unexpanded{#1}}%
- }{%
- \edef\jlreq@tempb{#1}%
- \ifx\jlreq@tempa\jlreq@tempb\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi{%
- \edef\jlreq@do{\unexpanded{#2}}%
- \jlreq@deleteuntileendmark
- }{%
- \jlreq@helper@switch@
- }%
- }%
+ \jlreq@helper@undefcs{\jlreq@aftercls@deletecslist}{\jlreq@undeferr}%
+ \undef{\jlreq@undeferr}%
}
% preambleにいるかのスイッチ
@@ -334,20 +30,6 @@
\jlreq@preambletrue
\AtBeginDocument{\jlreq@preamblefalse}
-\RequirePackage[savepos]{zref}
-\newcount\jlreq@zref@reference@count
-\jlreq@zref@reference@count=0
-% 現在のページを得る
-\zref@newprop*{jlreq@page}[0]{\number\c@page}
-\zref@addprop{main}{jlreq@page}
-\newcount\jlreq@currentpage
-% \jlreq@setcurrentpageをすると,\jlreq@currentpageにこの場所のページ数が入る
-\newcommand*{\jlreq@setcurrentpage}{%
- \global\advance\jlreq@zref@reference@count by 1
- \zref@labelbyprops{jlreq@currentpage.\the\jlreq@zref@reference@count}{jlreq@page}%
- \global\jlreq@currentpage=\zref@extractdefault{jlreq@currentpage.\the\jlreq@zref@reference@count}{jlreq@page}{\c@page}\relax
-}
-
\def\jlreq@saveoriginalcs#1{%
\ifx#1\relax
\ClassError{jlreq}{Trying to save \string#1 but it's not defined, may be a bug}{\@ehc}%
@@ -363,34 +45,6 @@
{#1}%
}
-% 先頭にあるマクロを展開しまくった結果の先頭を#2に入れる.
-\long\def\jlreq@getfirsttoken@expandmacros#1#2{%
- \jlreq@iffirsttoken{#1}{ }{\def#2{ }}{%
- \jlreq@ifempty{#1}{\def#2{}}{%
- \jlreq@ifmacro@noargument{#1}{%
- \expandafter\jlreq@getfirsttoken@expandmacros\expandafter{#1}{#2}%
- }{%
- \expandafter\expandafter\expandafter\jlreq@getfirsttoken@expandmacros@\jlreq@getfirsttoken#1\jlreq@uniqtoken{}\jlreq@endmark@{#2}%
- }%
- }%
- }%
-}
-\def\jlreq@getfirsttoken@expandmacros@#1#2{\def#2{#1}}
-
-\def\jlreq@helper@checktokenlist#1#2{%
- \jlreq@ifendmark{#2}{\@firstoftwo}%
- {%
- \ifnum0#1{#2}>0 \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
- {\jlreq@helper@checktokenlist{#1}}%
- {\expandafter\@secondoftwo\jlreq@deleteuntileendmark}%
- }%
-}
-\def\jlreq@helper@chknumlist#1{\ifx#101\fi\ifx#111\fi\ifx#121\fi\ifx#131\fi\ifx#141\fi\ifx#151\fi\ifx#161\fi\ifx#171\fi\ifx#181\fi\ifx#191\fi}
-\def\jlreq@helper@chkfloatlist#1{\jlreq@helper@chknumlist{#1}\ifx#1.1\fi}
-% #1が[0-9\.]*に当てはまるか.
-\def\jlreq@iffloat#1{\jlreq@helper@checktokenlist{\jlreq@helper@chkfloatlist}#1\jlreq@endmark}
-\def\jlreq@ifnumber#1{\jlreq@helper@checktokenlist{\jlreq@helper@chknumlist}#1\jlreq@endmark}
-
%. オプションの定義
% オプション処理の際にしか使わない変数(後でそれを元に別の変数を調整する)
% ものは\jlreq@option@<key>に格納する.
@@ -419,7 +73,15 @@
\def\jlreq@switchpapersize{}
\jlreq@aftercls@addtodeletecs{\jlreq@switchpapersize}
% \jlreq@addpapersize{paper=に指定するもの}{単独オプション名}{横}{縦}
-\newcommand*{\jlreq@addpapersize}[4]{%
+
+\def\jlreq@addpapersize#1#2{%
+ \@ifnextchar[{\jlreq@addpapersize@{#1}{#2}}{\jlreq@addpapersize@@{#1}{#2}}
+}
+\def\jlreq@addpapersize@#1#2[#3]{%
+ \edef\@tempa{\unexpanded{\jlreq@addpapersize@@{#1}{#2}}\csexpandonce{jlreq@helper@papersizelist@#3}}%
+ \@tempa
+}
+\newcommand*{\jlreq@addpapersize@@}[4]{%
\@for\@tempa:=#1\do{%
\eappto\jlreq@switchpapersize{{\expandonce{\@tempa}}{\unexpanded{\setlength{\paperwidth}{#3}\setlength{\paperheight}{#4}}}}%
}%
@@ -428,6 +90,8 @@
}%
}
\jlreq@aftercls@addtodeletecs{\jlreq@addpapersize}
+\jlreq@aftercls@addtodeletecs{\jlreq@addpapersize@}
+\jlreq@aftercls@addtodeletecs{\jlreq@addpapersize@@}
\DeclareOptionX{paper}{
\edef\jlreq@do{%
\unexpanded{\jlreq@switch{#1}}{\expandonce{\jlreq@switchpapersize}}%
@@ -444,45 +108,45 @@
\jlreq@do
}
% 紙サイズ一覧.b*はJIS B.
-\jlreq@addpapersize{a0,A0}{}{841mm}{1189mm}
-\jlreq@addpapersize{a1,A1}{}{594mm}{841mm}
-\jlreq@addpapersize{a2,A2}{}{420mm}{594mm}
-\jlreq@addpapersize{a3,A3}{a3paper}{297mm}{420mm}
-\jlreq@addpapersize{a4,A4}{a4paper}{210mm}{297mm}
-\jlreq@addpapersize{a5,A5}{a5paper}{148mm}{210mm}
-\jlreq@addpapersize{a6,A6}{a6paper}{105mm}{148mm}
-\jlreq@addpapersize{a7,A7}{}{74mm}{105mm}
-\jlreq@addpapersize{a8,A8}{}{52mm}{74mm}
-\jlreq@addpapersize{a9,A9}{}{37mm}{52mm}
-\jlreq@addpapersize{a10,A10}{}{26mm}{37mm}
-
-\jlreq@addpapersize{b0,B0}{}{1030mm}{1456mm}
-\jlreq@addpapersize{b1,B1}{}{728mm}{1030mm}
-\jlreq@addpapersize{b2,B2}{}{515mm}{728mm}
-\jlreq@addpapersize{b3,B3}{}{364mm}{515mm}
-\jlreq@addpapersize{b4,B4}{b4paper}{257mm}{364mm}
-\jlreq@addpapersize{b5,B5}{b5paper}{182mm}{257mm}
-\jlreq@addpapersize{b6,B6}{b6paper}{128mm}{182mm}
-\jlreq@addpapersize{b7,B7}{}{91mm}{128mm}
-\jlreq@addpapersize{b8,B8}{}{64mm}{91mm}
-\jlreq@addpapersize{b9,B9}{}{45mm}{64mm}
-\jlreq@addpapersize{b10,B10}{}{32mm}{45mm}
-
-\jlreq@addpapersize{c2,C2}{}{458mm}{648mm}
-\jlreq@addpapersize{c3,C3}{}{324mm}{458mm}
-\jlreq@addpapersize{c4C,C4}{}{229mm}{354mm}
-\jlreq@addpapersize{c5,C5}{}{162mm}{229mm}
-\jlreq@addpapersize{c6,C6}{}{114mm}{162mm}
-\jlreq@addpapersize{c7,C7}{}{81mm}{114mm}
-\jlreq@addpapersize{c8,C8}{}{57mm}{81mm}
-
-\jlreq@addpapersize{a4var}{}{210mm}{283mm}
-\jlreq@addpapersize{b5var}{}{182mm}{230mm}
-
-\jlreq@addpapersize{letter}{letterpaper}{8.5in}{11in}
-\jlreq@addpapersize{legal}{legalpaper}{8.5in}{14in}
-\jlreq@addpapersize{executive}{executivepaper}{7.25in}{10.5in}
-\jlreq@addpapersize{hagaki}{}{100mm}{148mm}
+\jlreq@addpapersize{a0,A0}{}[a0]
+\jlreq@addpapersize{a1,A1}{}[a1]
+\jlreq@addpapersize{a2,A2}{}[a2]
+\jlreq@addpapersize{a3,A3}{a3paper}[a3]
+\jlreq@addpapersize{a4,A4}{a4paper}[a4]
+\jlreq@addpapersize{a5,A5}{a5paper}[a5]
+\jlreq@addpapersize{a6,A6}{a6paper}[a6]
+\jlreq@addpapersize{a7,A7}{}[a7]
+\jlreq@addpapersize{a8,A8}{}[a8]
+\jlreq@addpapersize{a9,A9}{}[a9]
+\jlreq@addpapersize{a10,A10}{}[a10]
+
+\jlreq@addpapersize{b0,B0}{}[b0]
+\jlreq@addpapersize{b1,B1}{}[b1]
+\jlreq@addpapersize{b2,B2}{}[b2]
+\jlreq@addpapersize{b3,B3}{}[b3]
+\jlreq@addpapersize{b4,B4}{b4paper}[b4]
+\jlreq@addpapersize{b5,B5}{b5paper}[b5]
+\jlreq@addpapersize{b6,B6}{b6paper}[b6]
+\jlreq@addpapersize{b7,B7}{}[b7]
+\jlreq@addpapersize{b8,B8}{}[b8]
+\jlreq@addpapersize{b9,B9}{}[b9]
+\jlreq@addpapersize{b10,B10}{}[b10]
+
+\jlreq@addpapersize{c2,C2}{}[c2]
+\jlreq@addpapersize{c3,C3}{}[c3]
+\jlreq@addpapersize{c4,C4}{}[c4]
+\jlreq@addpapersize{c5,C5}{}[c5]
+\jlreq@addpapersize{c6,C6}{}[c6]
+\jlreq@addpapersize{c7,C7}{}[c7]
+\jlreq@addpapersize{c8,C8}{}[c8]
+
+\jlreq@addpapersize{a4var}{}[a4var]
+\jlreq@addpapersize{b5var}{}[b5var]
+
+\jlreq@addpapersize{letter}{letterpaper}[letter]
+\jlreq@addpapersize{legal}{legalpaper}[legal]
+\jlreq@addpapersize{executive}{executivepaper}[executive]
+\jlreq@addpapersize{hagaki}{}[hagaki]
%.. フォントサイズ,行長,1ページあたりの行数で基本版面のサイズを決める(2.4.1.a)
@@ -521,6 +185,10 @@
\newcommand*{\jlreq@option@gutter}{}
\jlreq@aftercls@addtodeletecs{\jlreq@option@gutter}
\DeclareOptionX{gutter}{\renewcommand*{\jlreq@option@gutter}{#1}}
+%.. 小口
+\newcommand*{\jlreq@option@fore@edge}{}
+\jlreq@aftercls@addtodeletecs{\jlreq@option@fore@edge}
+\DeclareOptionX{fore_edge}{\renewcommand*{\jlreq@option@fore@edge}{#1}}
%.. 柱とノンブル
\newcommand*{\jlreq@option@headfoot@verticalpos}{}
@@ -564,14 +232,9 @@
\newif\if@landscape\@landscapefalse
\newif\if@tate \@tatefalse
\jlreq@DeclareOption{landscape}{\@landscapetrue}
-\jlreq@DeclareOption{tombo}{%
- \tombowtrue\tombowdatefalse
- \setlength{\@tombowwidth}{.1\p@}%
- \maketombowbox}
-\jlreq@DeclareOption{mentuke}{%
- \tombowtrue\tombowdatefalse
- \setlength{\@tombowwidth}{\z@}%
- \maketombowbox}
+\jlreq@DeclareOption{tombo}{\ClassWarningNoLine{jlreq}{The option `tombo' is not supported by jlreq class. Please use the jlreq-trimmarks package}}
+\jlreq@DeclareOption{tombow}{\ClassWarningNoLine{jlreq}{The option `tombow' is not supported by jlreq class. Please use the jlreq-trimmarks package}}
+\jlreq@DeclareOption{mentuke}{\ClassWarningNoLine{jlreq}{The option `mentuke' is not supported by jlreq class. Please use the jlreq-trimmarks package}}
\jlreq@DeclareOption{tate}{\@tatetrue}
\newif\ifjlreq@option@twoside\jlreq@option@twosidefalse % onesideかtwosideが指定された
@@ -648,26 +311,10 @@
\jlreq@aftercls@addtodeletecs{\jlreq@jlreqsetup@addtofinally}
\@onlypreamble\jlreqsetup
-% \jlreq@ifprimitive#1#2#3: #1がprimitiveならば#2を,そうでなければ#3を実行する
-% (\if(pdf)primitiveを避けるようにしている.)
-\def\jlreq@ifprimitive#1{%
- \begingroup
- \edef\@tempa{\string#1}%
- \edef\@tempb{\meaning#1}%
- \expandafter\endgroup
- \ifx\@tempa\@tempb\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
-}
% エンジンの設定
\ifx\jlreq@engine\@undefined
- \jlreq@ifprimitive\directlua{
- \let\jlreq@engine=l
- }{
- \jlreq@ifprimitive\ucs{
- \let\jlreq@engine=u
- }{
- \let\jlreq@engine=p
- }
- }
+ \jlreq@helper@guessengine
+ \let\jlreq@engine=\jlreq@result
\fi
@@ -757,6 +404,7 @@
\else
\evensidemargin
\fi
+ \iftombow - 1in\fi
- 1in - \hoffset\relax
}
\else
@@ -778,6 +426,7 @@
- \topmargin - \headheight - \headsep - \voffset
- \zposy{jlreq@rest@width.pos.\the\jlreq@zref@reference@count} sp
}%
+ \iftombow - 1in\fi
- \@totalleftmargin - 1in
\relax
}
@@ -880,39 +529,12 @@
\jlreq@do
}
-% #1÷#2を\jlreq@resultdimenに入れる.(#1,#2は寸法を与える.)
\ifx l\jlreq@engine
\newcommand*{\jlreq@divide}[2]{%
\jlreq@resultdimen=\directlua{tex.print(tostring(\strip@pt\dimexpr #1\relax/\strip@pt\dimexpr #2\relax) .. "pt ")}%
}
\else
- \newcommand*{\jlreq@divide}[2]{%
- \begingroup
- \@tempdima=\dimexpr#1\relax\@tempdimb=\dimexpr#2\relax
- % 分母を正にする
- \ifdim\@tempdimb<0pt \@tempdima=-\@tempdima\@tempdimb=-\@tempdimb\fi
- % \jlreq@tempdima*\@tempdimb <= \@tempdima < (\jlreq@tempdima + 1)*\@tempdimb
- % となる整数\jlreq@tempdimaを捜し,\jlreq@tempdimb=\jlreq@tempdima + 1とする
- \jlreq@tempdima=0pt
- \ifdim\@tempdima<0pt
- \loop\ifdim\strip@pt\jlreq@tempdima\@tempdimb>\@tempdima\advance\jlreq@tempdima by -1pt\repeat
- \else
- \loop\ifdim\strip@pt\jlreq@tempdima\@tempdimb<\@tempdima\advance\jlreq@tempdima by 1pt\repeat
- \ifdim\strip@pt\jlreq@tempdima\@tempdimb=\@tempdima\else\advance\jlreq@tempdima by -1pt\fi
- \fi
- \jlreq@tempdimb=\dimexpr\jlreq@tempdima + 1pt\relax
- % \jlreq@tempdimaと\jlreq@tempdimbで挟んでいく二分法
- \jlreq@tempcnta=0 % 無限ループを避けるためのカウンタ
- \loop\ifnum\numexpr\ifdim\dimexpr\jlreq@tempdimb - \jlreq@tempdima\relax>1sp 1\else0\fi*\ifnum\jlreq@tempcnta<100 1\else 0\fi\relax=1
- \jlreq@tempdimc=\dimexpr(\jlreq@tempdima+\jlreq@tempdimb)/2\relax
- \ifdim\strip@pt\jlreq@tempdimc\@tempdimb>\@tempdima\jlreq@tempdimb=\jlreq@tempdimc
- \else\jlreq@tempdima=\jlreq@tempdimc\fi
- \advance\jlreq@tempcnta by 1
- \repeat
- \edef\jlreq@do{\noexpand\jlreq@resultdimen=\the\jlreq@tempdima\noexpand\relax}%
- \expandafter\endgroup
- \jlreq@do
- }
+ \let\jlreq@divide=\jlreq@helper@divide
\fi
%. 基本設定
@@ -1251,7 +873,7 @@
% 行頭の括弧は \jlreq@open@bracket@before@space \inhibitglue 「みたいにする.
\ifthenelse{\equal{\jlreq@open@bracket@pos}{zenkakunibu_nibu}}{
- \def\jlreq@open@bracket@before@space{\hskip -.5\zw}
+ \def\jlreq@open@bracket@before@space{\hskip\glueexpr-.5\zw\relax}
}{
\def\jlreq@open@bracket@before@space{}
}
@@ -1610,16 +1232,47 @@
% (TODO: 頭注)
\if@tate\@mparswitchfalse\fi
+\setlength{\topskip}{1\zw} % フォントサイズと一致させる
+\ifx\jlreq@option@headfoot@verticalpos\@empty
+ \if@tate\def\jlreq@option@headfoot@verticalpos{1zw}
+ \else\def\jlreq@option@headfoot@verticalpos{2zw}\fi
+\fi
+\setlength{\headsep}{\jlreq@speciallength{\jlreq@option@headfoot@verticalpos}}
+\ifdim\headsep<1\zw\relax\jlreq@note{基本版面との上下方向の最低の空き量を,基本版面の文字サイズの全角アキとする (26.1.a).}\fi
+\setlength{\headheight}{1\zw}
+
% \textwidthと\textheightのデフォルト値は縦横ともに0.75倍(調整が入る).
%.. \textwidth:文字送り方向の行長
% 二段の場合は最初の段の頭から次の段の後まで
% 一度\textwidthに一行の長さの文字数を入れる(段組の場合でも)
+\newif\ifjlreq@determine@kihonhanmen@warning@first
+\jlreq@determine@kihonhanmen@warning@firsttrue
+\def\jlreq@determine@kihonhanmen@warning{
+ \ifjlreq@determine@kihonhanmen@warning@first
+ \jlreq@note{基本版面は,a. サイズの決定 b. 仕上りサイズに対する基本版面の配置位置の決定 という手順で行う (2.4.1).}
+ \jlreq@determine@kihonhanmen@warning@firstfalse
+ \fi
+}
+\jlreq@aftercls@addtodeletecs{\jlreq@determine@kihonhanmen@warning}
+\jlreq@aftercls@addtodeleteif{\ifjlreq@determine@kihonhanmen@warning@first}
\@tempdima=1\zw
\ifx\jlreq@option@line@length\@empty
\if@tate
- \setlength{\textwidth}{0.75\paperheight}
+ \ifnum 0\ifx\jlreq@option@head@space\@empty 1\fi\ifx\jlreq@option@foot@space\@empty 1\fi>0
+ \setlength{\textwidth}{0.75\paperheight}
+ \divide\textwidth\@tempdima\multiply\textwidth\@tempdima
+ \else
+ \jlreq@determine@kihonhanmen@warning
+ \setlength{\textwidth}{\dimexpr\paperheight - \jlreq@option@head@space - \jlreq@option@foot@space \relax}
+ \fi
\else
- \setlength{\textwidth}{0.75\paperwidth}
+ \ifnum 0\ifx\jlreq@option@gutter\@empty 1\fi\ifx\jlreq@option@fore@edge\@empty 1\fi>0
+ \setlength{\textwidth}{0.75\paperwidth}
+ \divide\textwidth\@tempdima\multiply\textwidth\@tempdima
+ \else
+ \jlreq@determine@kihonhanmen@warning
+ \setlength{\textwidth}{\dimexpr\paperwidth - \jlreq@option@gutter - \jlreq@option@fore@edge\relax}
+ \fi
\fi
\if@twocolumn
\addtolength{\textwidth}{\dimexpr-2\marginparwidth - 2\marginparsep\relax}
@@ -1627,7 +1280,6 @@
\else
\addtolength{\textwidth}{\dimexpr-\marginparwidth - \marginparsep\relax}
\fi
- \divide\textwidth\@tempdima
\else
\setlength{\textwidth}{\jlreq@speciallength{\jlreq@option@line@length}}
\divide\textwidth\@tempdima
@@ -1640,66 +1292,95 @@
\jlreq@note{一行の長さは40文字以下が望ましい (2.4.2.c 注2).}
\fi
\fi
+ \multiply\textwidth\@tempdima
\fi
-\multiply\textwidth\@tempdima
\if@twocolumn
\setlength{\textwidth}{\dimexpr2\textwidth + \columnsep\relax}
\fi
-\setlength{\topskip}{1\zw} % フォントサイズと一致させる
%.. \textheight:行送り方向の長さ
% 一番上(直後に\topskip由来が入る)から最終行のベースラインまでの長さ.
% \topskipが十分ある時は先頭行のベースラインから最終行のベースライン+\topskip
+\def\jlreq@adjusttextheight{
+ \addtolength{\textheight}{-\topskip}
+ \divide\textheight\baselineskip \multiply\textheight\baselineskip
+ \addtolength{\textheight}{\topskip}
+}
+\jlreq@aftercls@addtodeletecs{\jlreq@adjusttextheight}
\ifx\jlreq@option@number@of@lines\@empty
\if@tate
- \setlength{\textheight}{0.75\paperwidth}
+ \ifnum 0\ifx\jlreq@option@gutter\@empty 1\fi\ifx\jlreq@option@fore@edge\@empty 1\fi>0
+ \setlength{\textheight}{0.75\paperwidth}
+ \jlreq@adjusttextheight
+ \else
+ \jlreq@determine@kihonhanmen@warning
+ \setlength{\textheight}{\dimexpr\paperwidth - \jlreq@option@gutter - \jlreq@option@fore@edge + \topskip - 1\zw\relax}
+ \fi
\else
- \setlength{\textheight}{0.75\paperheight}
+ \ifnum 0\ifx\jlreq@option@head@space\@empty 1\fi\ifx\jlreq@option@foot@space\@empty 1\fi>0
+ \setlength{\textheight}{0.75\paperheight}
+ \jlreq@adjusttextheight
+ \else
+ \jlreq@determine@kihonhanmen@warning
+ \setlength{\textheight}{\dimexpr\paperheight + 2\topskip - 1\zh - \Cht - \jlreq@option@head@space - \jlreq@option@foot@space\relax}
+ \fi
\fi
- \addtolength{\textheight}{-\topskip}
- \divide\textheight\baselineskip \multiply\textheight\baselineskip
- \addtolength{\textheight}{\topskip}
\else
\setlength{\textheight}{\dimexpr\numexpr\jlreq@option@number@of@lines\relax\baselineskip - \baselineskip + \topskip\relax}
\fi
-\ifx\jlreq@option@headfoot@verticalpos\@empty
- \if@tate\def\jlreq@option@headfoot@verticalpos{1zw}
- \else\def\jlreq@option@headfoot@verticalpos{2zw}\fi
-\fi
-\setlength{\headsep}{\jlreq@speciallength{\jlreq@option@headfoot@verticalpos}}
-\ifdim\headsep<1\zw\relax\jlreq@note{基本版面との上下方向の最低の空き量を,基本版面の文字サイズの全角アキとする (26.1.a).}\fi
-\setlength{\headheight}{1\zw}
%.. 横
-\ifx\jlreq@option@gutter\@empty
- % 中央配置
+\def\jlreq@setsidemargin@by@gutter#1{
\if@tate
- \setlength{\oddsidemargin}{\dimexpr\paperwidth - \textheight + \topskip\relax}
+ \setlength{\evensidemargin}{#1}
+ \setlength{\oddsidemargin}{\dimexpr\paperwidth - \textheight - \evensidemargin + \topskip - \Cht\relax}
+ \addtolength{\evensidemargin}{\Cdp}
\else
+ \setlength{\oddsidemargin}{#1}
\if@twocolumn
- \setlength{\oddsidemargin}{\dimexpr\paperwidth - \textwidth\relax}
- \else
- \setlength{\oddsidemargin}{\dimexpr\paperwidth - \textwidth - \marginparsep - \marginparwidth\relax}
+ \addtolength{\oddsidemargin}{\dimexpr\marginparsep + \marginparwidth\relax}
\fi
+ \setlength{\evensidemargin}{\dimexpr\paperwidth - \textwidth - \oddsidemargin\relax}
+ \fi
+}
+\def\jlreq@setsidemargin@by@fore@edge#1{
+ \jlreq@setsidemargin@by@gutter{#1}
+ \@tempdima=\evensidemargin
+ \evensidemargin=\oddsidemargin
+ \oddsidemargin=\@tempdima
+ \ifjlreq@determine@kihonhanmen@warning@first
+ \jlreq@note{基本版面の配置はのどの空き量を指定する (2.4.1.b).}
\fi
- \setlength{\oddsidemargin}{.5\oddsidemargin}
- \ifnum0\if@twocolumn1\fi\if@tate1\fi>0
- \setlength{\evensidemargin}{\oddsidemargin}
+}
+
+\ifx\jlreq@option@gutter\@empty
+ \ifx\jlreq@option@fore@edge\@empty
+ % 中央配置
+ \if@tate
+ \setlength{\oddsidemargin}{\dimexpr\paperwidth - \textheight + \topskip\relax}
+ \else
+ \if@twocolumn
+ \setlength{\oddsidemargin}{\dimexpr\paperwidth - \textwidth\relax}
+ \else
+ \setlength{\oddsidemargin}{\dimexpr\paperwidth - \textwidth - \marginparsep - \marginparwidth\relax}
+ \fi
+ \fi
+ \setlength{\oddsidemargin}{.5\oddsidemargin}
+ \ifnum0\if@twocolumn1\fi\if@tate1\fi>0
+ \setlength{\evensidemargin}{\oddsidemargin}
+ \else
+ \setlength{\evensidemargin}{\dimexpr\oddsidemargin + \marginparsep + \marginparwidth\relax}
+ \fi
\else
- \setlength{\evensidemargin}{\dimexpr\oddsidemargin + \marginparsep + \marginparwidth\relax}
+ \jlreq@setsidemargin@by@fore@edge{\jlreq@speciallength{\jlreq@option@fore@edge}}
\fi
\else
- \if@tate
- \setlength{\evensidemargin}{\jlreq@speciallength{\jlreq@option@gutter}}
- \setlength{\oddsidemargin}{\dimexpr\paperwidth - \textheight - \evensidemargin + \topskip - \Cht\relax}
- \addtolength{\evensidemargin}{\Cdp}
- \else
- \setlength{\oddsidemargin}{\jlreq@speciallength{\jlreq@option@gutter}}
- \if@twocolumn
- \addtolength{\oddsidemargin}{\dimexpr\marginparsep + \marginparwidth\relax}
+ \jlreq@setsidemargin@by@gutter{\jlreq@speciallength{\jlreq@option@gutter}}
+ \ifx\jlreq@option@fore@edge\@empty\else
+ \ifjlreq@determine@kihonhanmen@warning@first\else
+ \ClassWarningNoLine{jlreq}{fore_edge is ignored}
\fi
- \setlength{\evensidemargin}{\dimexpr\paperwidth - \textwidth - \oddsidemargin\relax}
\fi
\fi
\addtolength{\oddsidemargin}{-1in}
@@ -1751,10 +1432,14 @@
% 両方指定されていたら,縦書きは地を,横書きは天を使う
\if@tate
\jlreq@settopmarginbyfoot{\jlreq@speciallength{\jlreq@option@foot@space}}
- \ClassWarningNoLine{jlreq}{head_space is ignored}
+ \ifx\jlreq@option@line@length\@empty\else
+ \ClassWarningNoLine{jlreq}{head_space is ignored}
+ \fi
\else
\jlreq@settopmarginbyhead{\jlreq@speciallength{\jlreq@option@head@space}}
- \ClassWarningNoLine{jlreq}{foot_space is ignored}
+ \ifx\jlreq@option@number@of@lines\@empty\else
+ \ClassWarningNoLine{jlreq}{foot_space is ignored}
+ \fi
\fi
\fi
\fi
@@ -1783,17 +1468,21 @@
\fi
}
-% 同行見出し以外では,jlreq@heading@maketoc@<命令名>が\tableofcontents用の出力をするために呼び出される.
+% 扉見出しと別行見出しについては,\<csname> -> \jlreq@headingcs@csname -> 本体と
+% 二段構えで展開されるようにする.一度の展開で\parが出るのを防ぐため.
+% 一度展開を\longなしマクロに渡されると破綻するので.(そういうパッケージが存在する.)
+
+% jlreq@heading@maketoc@<命令名>が\tableofcontents用の出力をするために呼び出される.
% #1=*または空(見出し命令に*がついていたかで分岐),#2=ラベル,#3=running head
% デフォルトでは\<命令名>markと\addcontentslineが必要ならば呼ばれる.
-% 同行見出しでは\@startsection任せ
% 見出しの直前に実行される
\newcommand*{\jlreq@hook@beforeheadings}[1]{}
% 見出し名一覧を格納する
\def\jlreq@heading@allheadings{}
-% 目次を出力する命令\l@<命令名>を作る.{1 = 命令名}{2 = レベル}{3 = ラベルのフォーマット}
+% 目次を出力する命令\l@<命令名>を作る命令を作る.{1 = 命令名}{2 = レベル}{3 = ラベルのフォーマット}
+% 結果は\jlreq@resultに入る.
\def\jlreq@heading@make@l@#1#2#3{%
\@ifundefined{l@#1}{%
% 長さは適当に計測する
@@ -1801,12 +1490,17 @@
% ちょっと大きめで計測しておく
\csname c@#1\endcsname=9
\setbox\jlreq@tempboxa=\hbox{#3}%
- \jlreq@tempdima=\wd\jlreq@tempboxa\relax%
- \jlreq@tempdimb=1\zw
- \divide\jlreq@tempdima by \jlreq@tempdimb
+ \jlreq@tempdima=\wd\jlreq@tempboxa
+ \csname c@#1\endcsname=26
+ \setbox\jlreq@tempboxa=\hbox{#3}%
+ \ifdim\jlreq@tempdima<\wd\jlreq@tempboxa
+ \jlreq@tempdima=\wd\jlreq@tempboxa
+ \fi
+ % \numexprは四捨五入
+ \jlreq@tempdimb=\dimexpr\the\numexpr\jlreq@tempdima/\dimexpr 1\zw\relax + 2\relax\zw\relax
\edef\jlreq@do{%
\unexpanded{\def\jlreq@result}{%
- \noexpand\def\expandonce{\csname l@#1\endcsname}{\unexpanded{\@dottedtocline{#2}{0\zw}}{\the\numexpr\jlreq@tempdima + 1\relax\noexpand\zw}}%
+ \noexpand\def\expandonce{\csname l@#1\endcsname}{\unexpanded{\@dottedtocline{#2}{0\zw}}{\the\jlreq@tempdimb}}%
}%
}%
\expandafter\endgroup
@@ -1885,11 +1579,12 @@
\expandonce{\jlreq@heading@clearpage}%
\unexpanded{\if@restonecol\twocolumn\fi}%
}%
- \noexpand\def\expandonce{\csname #1\endcsname}{%
+ \noexpand\def\expandonce{\csname jlreq@headingcs@#1\endcsname}{%
% 改丁.これでよいのかな.
\unexpanded{\if@twocolumn\onecolumn\@restonecoltrue\else\@restonecolfalse\fi\cleartooddpage}%
\ifx\jlreq@pagestyle\@empty\else\noexpand\thispagestyle{\expandonce{\jlreq@pagestyle}}\fi
\noexpand\secdef{\expandonce{\csname jlreq@TobiraHeading@start@#1\endcsname}}{\expandonce{\csname jlreq@TobiraHeading@start@s@#1\endcsname}}}%
+ \noexpand\def\expandonce{\csname #1\endcsname}{\expandonce{\csname jlreq@headingcs@#1\endcsname}}%
}%
\expandafter\endgroup
\jlreq@do
@@ -2407,7 +2102,7 @@
\fi
\edef\jlreq@do{%
\expandonce{\jlreq@do}%
- \noexpand\edef\expandonce{\csname #1\endcsname}{\noexpand\unexpanded{%
+ \noexpand\edef\expandonce{\csname jlreq@headingcs@#1\endcsname}{\noexpand\unexpanded{%
\noexpand\jlreq@hook@beforeheadings{#1}%
\expandonce{\jlreq@pagebreak}%
\unexpanded{\jlreq@BlockHeading@start{#1}{#2}}%
@@ -2420,6 +2115,7 @@
}%
{\expandonce{\jlreq@totalformat}}%
}}%
+ \noexpand\def\expandonce{\csname #1\endcsname}{\expandonce{\csname jlreq@headingcs@#1\endcsname}}%
}%
\expandafter\endgroup
\jlreq@do
@@ -2517,7 +2213,7 @@
\fi
\eappto\jlreq@tempb{%
\noexpand\@ifundefined{jlreq@BlockHeading@spaces@setlist@\jlreq@headings}{}{%
- \noexpand\ClassError{jlrqe}{The spaces for \jlreq@headings\space is multiplly defined (in SetBlockHeadingSpaces)}{\noexpand\@ehc}%
+ \noexpand\ClassError{jlrqe}{The spaces for \jlreq@headings\space is defined more than once (in SetBlockHeadingSpaces)}{\noexpand\@ehc}%
}%
\noexpand\def\expandonce{\csname jlreq@BlockHeading@spaces@setlist@\jlreq@headings\endcsname}{{\expandonce{\jlreq@totalset}}\expandonce{\jlreq@set}}%
}%
@@ -2720,7 +2416,7 @@
\unexpanded{{\setbox\jlreq@tempboxa\lastbox}}%
\noexpand\begingroup
\expandonce{\jlreq@tempa{#5}}%
- \expandonce{\csname jlreq@heading@maketoc@#1\endcsname{#3}{#6}{#4}}%
+ \expandonce{\csname jlreq@heading@maketoc@#1\endcsname}{#3}{#6}{#4}%
\noexpand\endgroup
}%
}%
@@ -3308,11 +3004,11 @@
\ifthenelse{\equal{#1}{one}}{
\long\def\jlreq@makefntext##1{\parindent 1\zw
\addtolength{\leftskip}{\dimexpr\jlreq@footnoteindent + 1\zw\relax}% 全体をインデント+1文字分下げる
- \noindent\hskip -1\zw\jlreq@referencemark@format{\@thefnmark}\hskip 1\zw##1}% 見出し出力と一文字分の空き
+ \noindent\hskip\glueexpr-1\zw\relax\jlreq@referencemark@format{\@thefnmark}\hskip\glueexpr1\zw\relax##1}% 見出し出力と一文字分の空き
}{
\long\def\jlreq@makefntext##1{\parindent 1\zw
\addtolength{\leftskip}{\jlreq@footnoteindent}% 全体をインデント
- \noindent\hskip 1\zw\jlreq@referencemark@format{\@thefnmark}\hskip 1\zw##1}% 見出し出力と一文字分の空き
+ \noindent\hskip\glueexpr1\zw\relax\jlreq@referencemark@format{\@thefnmark}\hskip\glueexpr1\zw\relax##1}% 見出し出力と一文字分の空き
}
}
\jlreqsetup{footnotetext_indent=one}
@@ -3352,7 +3048,7 @@
}{%
\begingroup
\csname c@\jlreq@endnotecounter\endcsname #1\relax
- \expandafter\unrestored@protected@xdef\csname\jlreq@endnotemarkname\endcsname{\csname \jlreq@endnotecounter\endcsname}%
+ \expandafter\unrestored@protected@xdef\csname\jlreq@endnotemarkname\endcsname{\csname the\jlreq@endnotecounter\endcsname}%
\endgroup
}%
\@endnotemark
@@ -3365,7 +3061,7 @@
}{%
\begingroup
\csname c@\jlreq@endnotecounter\endcsname #1\relax
- \expandafter\unrestored@protected@xdef\csname\jlreq@endnotemarkname\endcsname{\csname \jlreq@endnotecounter\endcsname}%
+ \expandafter\unrestored@protected@xdef\csname\jlreq@endnotemarkname\endcsname{\csname the\jlreq@endnotecounter\endcsname}%
\endgroup
}%
\@endnotetext{#2}%
@@ -3416,7 +3112,7 @@
\jlreq@endnote@indent=2\jlreq@mol
% 二行目以降を全角分下げる(4.2.4.d:TODO: 選択できるべき)
\newcommand{\@makeendtext}[1]{\parindent 1\jlreq@mol
- \hskip-1\jlreq@mol\csname\jlreq@endnotemarkname\endcsname\hskip 1\jlreq@mol#1}% 見出し出力と一文字分の空き(4.2.4.c)
+ \hskip\glueexpr-1\jlreq@mol\relax\csname\jlreq@endnotemarkname\endcsname\hskip\glueexpr1\zw\relax#1}% 見出し出力と一文字分の空き(4.2.4.c)
\def\@makeendmark{\@makefnmark}
% \theendnoteの出力を仕込む
@@ -5112,6 +4808,11 @@
\else
\jlreqsetup{year_style=seireki}
\fi
+
+% 時刻
+\hour=\time \divide\hour by 60
+\minute=\numexpr\time - 60*\hour\relax
+
%.. 定理環境
\jlreq@saveoriginalcs{\@begintheorem}
\jlreq@saveoriginalcs{\@opargbegintheorem}