diff options
author | Karl Berry <karl@freefriends.org> | 2018-02-01 23:05:35 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-02-01 23:05:35 +0000 |
commit | bc61db48b8a70b7211fef576059edbacb9a36d0d (patch) | |
tree | ff8c416201b8d06479df96effd2fa998393a1b7d /Master/texmf-dist | |
parent | 2386e67a40f8dbbe9d00e1619d33e7a6d5a7ab49 (diff) |
jlreq (1feb18)
git-svn-id: svn://tug.org/texlive/trunk@46514 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/latex/jlreq/README-ja.md | 38 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/jlreq/README.md | 6 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/jlreq/jlreq-ja.html | 35 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/jlreq/jlreq.html | 8 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/jlreq/jlreq.cls | 578 |
5 files changed, 505 insertions, 160 deletions
diff --git a/Master/texmf-dist/doc/latex/jlreq/README-ja.md b/Master/texmf-dist/doc/latex/jlreq/README-ja.md index 5369bda26f1..1ce380021b4 100644 --- a/Master/texmf-dist/doc/latex/jlreq/README-ja.md +++ b/Master/texmf-dist/doc/latex/jlreq/README-ja.md @@ -72,10 +72,12 @@ ### その他 * ルビや圏点は提供されません.[PXrubrica](https://github.com/zr-tex8r/PXrubrica)またはluatexja-ruby(LuaLaTeX,LuaTeX-jaパッケージに付属)を使うと良いかと思います. * 日本語組版処理の要件2.3.2.dによれば,二段組の最後のページの各段の行数は揃えることが望ましいとされていますが,この処理は行われません.`nidanfloat`パッケージを使い, -```latex -\usepackage[balance]{nidanfloat} -``` -とするとこの処理が行われます.ただし,最終ページでの`\newpage`や`\clearpage`が正しく動作しません.詳しくは`nidanfloat`パッケージのマニュアルをご覧ください. + + ```latex + \usepackage[balance]{nidanfloat} + ``` + + とするとこの処理が行われます.ただし,最終ページでの`\newpage`や`\clearpage`が正しく動作しません.詳しくは`nidanfloat`パッケージのマニュアルをご覧ください. ## 各種設計 設計はクラスオプションまたは`\jlreqsetup`によりkeyval形式で行います.以下では次の用法を使います. @@ -125,6 +127,9 @@ 図表のキャプションを`\jlreqsetup`で変更できます. * `caption_font=<命令>`:キャプション自身のフォントを指定します. * `caption_label_font=<命令>`:キャプションのラベルのフォントを指定します. +* `caption_after_label_space=<寸法>`:ラベルとキャプションの間の空きを指定します. +* `caption_label_format=<書式>`:ラベルの書式を指定します.`caption_label_format={#1:}`のようにします.`#1`が「図1」のような番号に置換されます. +* `caption_align=[{left/right/center/bottom/top/<環境名1>=<位置指定1>,<環境名2>=<位置指定2>,...}]`:キャプションの場所を指定します.`caption_align=left`のように指定します.`caption_align={center,table=right}`とすると,`table`のみ右,そのほかは中央配置となります. ### 引用 `quote / quotation / verse`環境の挙動を`\jlreqsetup`で指定できます. @@ -135,7 +140,7 @@ ### 箇条書き `\jlreqsetup`で指定します. -* `itemization_beforeafter_space=<寸法>`:箇条書きの前後の空きを指定します. +* `itemization_beforeafter_space=<寸法>`:箇条書きの前後の空きを指定します.`itemization_beforeafter_space={i=<寸法>}`とするとトップレベルのみに設定を行います.`itemization_beforeafter_space={0pt,i=10pt,ii=5pt}`とすれば,レベル1の箇条書きに10ptを,レベル2のそれに5ptを,それ以外には0ptを設定します. * `itemization_itemsep=<寸法>`:項目同士の空きを指定します. ### 定理環境 @@ -149,7 +154,13 @@ \Declare***Heading{<命令名>}{<レベル>}{<設定>} ``` -となっています.また,`\New***Heading`,`\Renew***Heading`,`\Provide***Heading`も同時に用意されます.それぞれ`\newcommand`,`\renewcommand`,`\providecommand`に対応した動きをします. +となっています.また,`\New***Heading`,`\Renew***Heading`,`\Provide***Heading`も同時に用意されます.それぞれ + +* `\New***Heading`:指定した名前の命令が既に定義されている場合はエラー. +* `\Renew***Heading`:指定した名前の命令が定義されていなければエラー. +* `\Provide***Heading`:指定した名前の命令が定義されていない場合に限り見出し命令の定義が行われる. + +となっています. ### 扉見出し `\DeclareTobiraHeading`で作成します.通常のクラスファイルにおける`\section`等と同じ書式の命令ができます.設定は以下の通り. @@ -203,7 +214,7 @@ のように使います.この意味は次の通りです. * `\part`,`\section`,`\subsection`という順番で見出しが掲げられていて,その前後が見出しでない場合は,`\part`は三行取り+前に一行空き,`\section`と`\subsection`は二行取りとなります. -* `\section`,`\subsection`という順番で見出しが掲げられていて,その前後が乱し出ない場合は,全体で五行取りとし,`\section`と`\subsection`との間に`23pt`の空き,`\subsection`の後に`16pt`の空きを入れます. +* `\section`,`\subsection`という順番で見出しが掲げられていて,その前後が見出しでない場合は,全体で五行取りとし,`\section`と`\subsection`との間に`23pt`の空き,`\subsection`の後に`16pt`の空きを入れます. 個々の設定は以下のようになります. @@ -221,6 +232,8 @@ * `font=<命令>`:見出しのフォントを指定します. * `indent=<寸法>` 見出し文字列全体の字下げ量を指定します. +* `after_label_space=<寸法>`:ラベル後,見出し文字列までの空きを指定します. +* `label_format=<命令>`:ラベルのフォーマットを指定します.`label_format={\theparagraph}`などのようにします. ### 窓見出し `\DeclareCutinHeading`で作成します.`\<命令名>{見出し文字列}`という書式の命令を作成します.設定は以下の通り. @@ -257,7 +270,7 @@ * `tate`:縦書きで小口側に出力します. * `font=<命令>`:柱とノンブルのフォントを指定します. * `running_head_position`, `nombre_position`:柱とノンブルの位置を指定します.`yoko`か`tate`のどちらが指定されているかで挙動が変わります. - - `yoko`指定時:`top-left`のように指定できます.`top/bottom/center/left/right/gutter/fore_edge`が使えます.`gutter`はのど,`fore_edge`は小口です.`left`,`right`の指定は奇数ページに対するものです.`twoside`が指定されている場合,偶数ページはその逆になります. + - `yoko`指定時:`top-left`のように指定できます.`top / bottom / center / left / right / gutter / fore_edge`が使えます.`gutter`はのど,`fore_edge`は小口です.`left`,`right`の指定は奇数ページに対するものです.`twoside`が指定されている場合,偶数ページはその逆になります. - `tate`指定時:`<寸法>`が指定できます.`running_head_position`は柱の天からの下げ量を,`nombre_position`はノンブルの地からの上げ量を指定します. * `nombre=<書式>`:出力するノンブルを指定します.デフォルトは`\thepage`. * `odd_running_head=<書式>`,`even_running_head=<書式>`:それぞれ奇数ページ,偶数ページの柱を指定します.`_section`のように`_`から始まる名前を指定すると,対応する見出しを出力します.(`_section`だと現在の`\section`を出力する.) @@ -266,9 +279,11 @@ ## JFM 以下のような独自のJFMを使います.パッケージによっては,パッケージ独自のJFMや,また標準のJFMを使うように設定がし直される場合があります.例えばLuaTeX-jaに付属するluatexja-presetパッケージは通常LuaTeX-ja標準のJFMを使います.本クラスファイルで使っているJFMを使う場合は, + ```LaTeX \usepackage[jfm_yoko=jlreq,jfm_tate=jlreqv,hiragino-pron]{luatexja-preset} ``` + のようにオプションで指定する必要があります. ### pLaTeX/upLaTeXの場合 @@ -348,7 +363,12 @@ JFMの名前は次の通りです.`[]`で囲まれている文字は設定に - JFMを改善. - 別行見出しの間の`\label`の検出方法を変更. - `\theequation`,`\thefigure`,`\thetable`に章番号を追加. - +* 2018-02-01 + - 縦書きの傍注は奇数ページにのみ出るようにした(改善の余地ありかも). + - LuaTeX時に`\fnixbottomtrue`を追加. + - キャプション関係のオプションを`\jlreqsetup`に追加. + - `itemization_beforeafter_space`を拡張. + - バグ修正. -------------- diff --git a/Master/texmf-dist/doc/latex/jlreq/README.md b/Master/texmf-dist/doc/latex/jlreq/README.md index 6d00ba2dd30..fe7ec60a664 100644 --- a/Master/texmf-dist/doc/latex/jlreq/README.md +++ b/Master/texmf-dist/doc/latex/jlreq/README.md @@ -68,6 +68,12 @@ This package is distributed under the BSD 2-Clause License. See [LICENSE](LICENS - Improved JFM. - Change the way to detect `\label` between block headings. - Added chapter number to `\theequation`,`\thefigure`,`\thetable`. +* 2018-02-01 + - Sidenotes appears only odd pages in `tate` mode. + - Added `\fnixbottomtrue` for LuaLaTeX. + - Added some options related to captions. + - Extended `itemization_beforeafter_space`. + - Fixed bugs. diff --git a/Master/texmf-dist/doc/latex/jlreq/jlreq-ja.html b/Master/texmf-dist/doc/latex/jlreq/jlreq-ja.html index fe3b66bf5d1..b9dc63b93ed 100644 --- a/Master/texmf-dist/doc/latex/jlreq/jlreq-ja.html +++ b/Master/texmf-dist/doc/latex/jlreq/jlreq-ja.html @@ -134,11 +134,11 @@ <p>全角空白(U+3000)一文字からなるマクロです.和文間隔を挿入します.LuaLaTeXでは<code> </code>のみでも和文間隔を入力できます.</p> <h3 id="その他">その他</h3> <ul> -<li>ルビや圏点は提供されません.<a href="https://github.com/zr-tex8r/PXrubrica">PXrubrica</a>またはluatexja-ruby(LuaLaTeX,LuaTeX-jaパッケージに付属)を使うと良いかと思います.</li> -<li>日本語組版処理の要件2.3.2.dによれば,二段組の最後のページの各段の行数は揃えることが望ましいとされていますが,この処理は行われません.<code>nidanfloat</code>パッケージを使い,</li> -</ul> +<li><p>ルビや圏点は提供されません.<a href="https://github.com/zr-tex8r/PXrubrica">PXrubrica</a>またはluatexja-ruby(LuaLaTeX,LuaTeX-jaパッケージに付属)を使うと良いかと思います.</p></li> +<li><p>日本語組版処理の要件2.3.2.dによれば,二段組の最後のページの各段の行数は揃えることが望ましいとされていますが,この処理は行われません.<code>nidanfloat</code>パッケージを使い,</p> <pre class="sourceCode latex" id="cb5"><code class="sourceCode latex"><a class="sourceLine" id="cb5-1" data-line-number="1"><span class="bu">\usepackage</span>[balance]{<span class="ex">nidanfloat</span>}</a></code></pre> -<p>とするとこの処理が行われます.ただし,最終ページでの<code>\newpage</code>や<code>\clearpage</code>が正しく動作しません.詳しくは<code>nidanfloat</code>パッケージのマニュアルをご覧ください.</p> +<p>とするとこの処理が行われます.ただし,最終ページでの<code>\newpage</code>や<code>\clearpage</code>が正しく動作しません.詳しくは<code>nidanfloat</code>パッケージのマニュアルをご覧ください.</p></li> +</ul> <h2 id="各種設計">各種設計</h2> <p>設計はクラスオプションまたは<code>\jlreqsetup</code>によりkeyval形式で行います.以下では次の用法を使います.</p> <ul> @@ -192,6 +192,9 @@ <ul> <li><code>caption_font=<命令></code>:キャプション自身のフォントを指定します.</li> <li><code>caption_label_font=<命令></code>:キャプションのラベルのフォントを指定します.</li> +<li><code>caption_after_label_space=<寸法></code>:ラベルとキャプションの間の空きを指定します.</li> +<li><code>caption_label_format=<書式></code>:ラベルの書式を指定します.<code>caption_label_format={#1:}</code>のようにします.<code>#1</code>が「図1」のような番号に置換されます.</li> +<li><code>caption_align=[{left/right/center/bottom/top/<環境名1>=<位置指定1>,<環境名2>=<位置指定2>,...}]</code>:キャプションの場所を指定します.<code>caption_align=left</code>のように指定します.<code>caption_align={center,table=right}</code>とすると,<code>table</code>のみ右,そのほかは中央配置となります.</li> </ul> <h3 id="引用">引用</h3> <p><code>quote / quotation / verse</code>環境の挙動を<code>\jlreqsetup</code>で指定できます.</p> @@ -204,7 +207,7 @@ <h3 id="箇条書き">箇条書き</h3> <p><code>\jlreqsetup</code>で指定します.</p> <ul> -<li><code>itemization_beforeafter_space=<寸法></code>:箇条書きの前後の空きを指定します.</li> +<li><code>itemization_beforeafter_space=<寸法></code>:箇条書きの前後の空きを指定します.<code>itemization_beforeafter_space={i=<寸法>}</code>とするとトップレベルのみに設定を行います.<code>itemization_beforeafter_space={0pt,i=10pt,ii=5pt}</code>とすれば,レベル1の箇条書きに10ptを,レベル2のそれに5ptを,それ以外には0ptを設定します.</li> <li><code>itemization_itemsep=<寸法></code>:項目同士の空きを指定します.</li> </ul> <h3 id="定理環境">定理環境</h3> @@ -216,7 +219,13 @@ <p>見出しの設定は,<code>\Declare***Heading</code>という命令で行います(***には見出しの種類に応じた文字列が入る).書式はすべて</p> <pre><code>\Declare***Heading{<命令名>}{<レベル>}{<設定>} </code></pre> -<p>となっています.また,<code>\New***Heading</code>,<code>\Renew***Heading</code>,<code>\Provide***Heading</code>も同時に用意されます.それぞれ<code>\newcommand</code>,<code>\renewcommand</code>,<code>\providecommand</code>に対応した動きをします.</p> +<p>となっています.また,<code>\New***Heading</code>,<code>\Renew***Heading</code>,<code>\Provide***Heading</code>も同時に用意されます.それぞれ</p> +<ul> +<li><code>\New***Heading</code>:指定した名前の命令が既に定義されている場合はエラー.</li> +<li><code>\Renew***Heading</code>:指定した名前の命令が定義されていなければエラー.</li> +<li><code>\Provide***Heading</code>:指定した名前の命令が定義されていない場合に限り見出し命令の定義が行われる.</li> +</ul> +<p>となっています.</p> <h3 id="扉見出し">扉見出し</h3> <p><code>\DeclareTobiraHeading</code>で作成します.通常のクラスファイルにおける<code>\section</code>等と同じ書式の命令ができます.設定は以下の通り.</p> <ul> @@ -267,7 +276,7 @@ <p>のように使います.この意味は次の通りです.</p> <ul> <li><code>\part</code>,<code>\section</code>,<code>\subsection</code>という順番で見出しが掲げられていて,その前後が見出しでない場合は,<code>\part</code>は三行取り+前に一行空き,<code>\section</code>と<code>\subsection</code>は二行取りとなります.</li> -<li><code>\section</code>,<code>\subsection</code>という順番で見出しが掲げられていて,その前後が乱し出ない場合は,全体で五行取りとし,<code>\section</code>と<code>\subsection</code>との間に<code>23pt</code>の空き,<code>\subsection</code>の後に<code>16pt</code>の空きを入れます.</li> +<li><code>\section</code>,<code>\subsection</code>という順番で見出しが掲げられていて,その前後が見出しでない場合は,全体で五行取りとし,<code>\section</code>と<code>\subsection</code>との間に<code>23pt</code>の空き,<code>\subsection</code>の後に<code>16pt</code>の空きを入れます.</li> </ul> <p>個々の設定は以下のようになります.</p> <ul> @@ -284,6 +293,8 @@ <ul> <li><code>font=<命令></code>:見出しのフォントを指定します.</li> <li><code>indent=<寸法></code> 見出し文字列全体の字下げ量を指定します.</li> +<li><code>after_label_space=<寸法></code>:ラベル後,見出し文字列までの空きを指定します.</li> +<li><code>label_format=<命令></code>:ラベルのフォーマットを指定します.<code>label_format={\theparagraph}</code>などのようにします.</li> </ul> <h3 id="窓見出し">窓見出し</h3> <p><code>\DeclareCutinHeading</code>で作成します.<code>\<命令名>{見出し文字列}</code>という書式の命令を作成します.設定は以下の通り.</p> @@ -314,7 +325,7 @@ <li><code>font=<命令></code>:柱とノンブルのフォントを指定します.</li> <li><code>running_head_position</code>, <code>nombre_position</code>:柱とノンブルの位置を指定します.<code>yoko</code>か<code>tate</code>のどちらが指定されているかで挙動が変わります. <ul> -<li><code>yoko</code>指定時:<code>top-left</code>のように指定できます.<code>top/bottom/center/left/right/gutter/fore_edge</code>が使えます.<code>gutter</code>はのど,<code>fore_edge</code>は小口です.<code>left</code>,<code>right</code>の指定は奇数ページに対するものです.<code>twoside</code>が指定されている場合,偶数ページはその逆になります.</li> +<li><code>yoko</code>指定時:<code>top-left</code>のように指定できます.<code>top / bottom / center / left / right / gutter / fore_edge</code>が使えます.<code>gutter</code>はのど,<code>fore_edge</code>は小口です.<code>left</code>,<code>right</code>の指定は奇数ページに対するものです.<code>twoside</code>が指定されている場合,偶数ページはその逆になります.</li> <li><code>tate</code>指定時:<code><寸法></code>が指定できます.<code>running_head_position</code>は柱の天からの下げ量を,<code>nombre_position</code>はノンブルの地からの上げ量を指定します.</li> </ul></li> <li><code>nombre=<書式></code>:出力するノンブルを指定します.デフォルトは<code>\thepage</code>.</li> @@ -424,6 +435,14 @@ <li>別行見出しの間の<code>\label</code>の検出方法を変更.</li> <li><code>\theequation</code>,<code>\thefigure</code>,<code>\thetable</code>に章番号を追加.</li> </ul></li> +<li>2018-02-01 +<ul> +<li>縦書きの傍注は奇数ページにのみ出るようにした(改善の余地ありかも).</li> +<li>LuaTeX時に<code>\fnixbottomtrue</code>を追加.</li> +<li>キャプション関係のオプションを<code>\jlreqsetup</code>に追加.</li> +<li><code>itemization_beforeafter_space</code>を拡張.</li> +<li>バグ修正.</li> +</ul></li> </ul> <hr /> <p>Noriyuki Abe <a href="https://github.com/abenori/jlreq" class="uri">https://github.com/abenori/jlreq</a></p> diff --git a/Master/texmf-dist/doc/latex/jlreq/jlreq.html b/Master/texmf-dist/doc/latex/jlreq/jlreq.html index 35236912238..260e45669f4 100644 --- a/Master/texmf-dist/doc/latex/jlreq/jlreq.html +++ b/Master/texmf-dist/doc/latex/jlreq/jlreq.html @@ -146,6 +146,14 @@ <li>Change the way to detect <code>\label</code> between block headings.</li> <li>Added chapter number to <code>\theequation</code>,<code>\thefigure</code>,<code>\thetable</code>.</li> </ul></li> +<li>2018-02-01 +<ul> +<li>Sidenotes appears only odd pages in <code>tate</code> mode.</li> +<li>Added <code>\fnixbottomtrue</code> for LuaLaTeX.</li> +<li>Added some options related to captions.</li> +<li>Extended <code>itemization_beforeafter_space</code>.</li> +<li>Fixed bugs.</li> +</ul></li> </ul> <hr /> <p>Noriyuki Abe <a href="https://github.com/abenori/jlreq" class="uri">https://github.com/abenori/jlreq</a></p> diff --git a/Master/texmf-dist/tex/latex/jlreq/jlreq.cls b/Master/texmf-dist/tex/latex/jlreq/jlreq.cls index 0b062cf4363..1ffce720f14 100644 --- a/Master/texmf-dist/tex/latex/jlreq/jlreq.cls +++ b/Master/texmf-dist/tex/latex/jlreq/jlreq.cls @@ -5,7 +5,7 @@ %% % (based on JLReq 20120403 https://www.w3.org/TR/2012/NOTE-jlreq-20120403/ja/) \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{jlreq}[2017/12/22 jlreq] +\ProvidesClass{jlreq}[2018/02/01 jlreq] \RequirePackage{xkeyval,everyhook,filehook,etoolbox,ifthen} %. helper1 @@ -88,16 +88,16 @@ % #1が\jlreq@endmarkか \long\def\jlreq@ifendmark#1{\jlreq@iffirsttoken{#1}{\jlreq@endmark}} -% #1の先頭がマクロか -\long\def\jlreq@ifmacro#1{% +% #1の先頭が引数なしのマクロか +\long\def\jlreq@ifmacro@noargument#1{% \jlreq@ifempty{#1}{\@secondoftwo}{% \jlreq@iffirsttoken{#1}{ }{\@secondoftwo}{% - \expandafter\expandafter\expandafter\jlreq@ifmacro@\jlreq@getfirsttoken#1\jlreq@uniqtoken{}\jlreq@endmark@ + \expandafter\expandafter\expandafter\jlreq@ifmacro@noargument@\jlreq@getfirsttoken#1\jlreq@uniqtoken{}\jlreq@endmark@ }}} -\long\def\jlreq@ifmacro@#1{\expandafter\jlreq@ifmacro@@\expandafter{\meaning #1}} +\long\def\jlreq@ifmacro@noargument@#1{\expandafter\jlreq@ifmacro@noargument@@\expandafter{\meaning #1}} \edef\jlreq@do{% - \unexpanded{\def\jlreq@ifmacro@@}##1{\noexpand\jlreq@ifmacro@@@##1\expandonce{\detokenize{macro:}}\noexpand\jlreq@endmark} - \unexpanded{\def\jlreq@ifmacro@@@}##1\expandonce{\detokenize{macro:}}##2\noexpand\jlreq@endmark{\noexpand\jlreq@ifempty{##1}} + \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 @@ -262,6 +262,29 @@ \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} @@ -320,16 +343,27 @@ \AtBeginDocument{\jlreq@preamblefalse} \RequirePackage[savepos]{zref} -\zref@newprop*{jlreq@page}[0]{\number\c@page} -\zref@addprop{main}{jlreq@page} -% 現在のページを得る \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@rest@width.page.\the\jlreq@zref@reference@count}{jlreq@page}% - \global\jlreq@currentpage=\zref@extractdefault{jlreq@rest@width.page.\the\jlreq@zref@reference@count}{jlreq@page}{\c@page}% + \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 +} + +% 現在の段組位置を得る +\zref@newprop*{jlreq@firstcolumn}[1]{\if@firstcolumn 1\else 0\fi} +\zref@addprop{main}{jlreq@firstcolumn} +\newif\ifjlreq@firstcolumn +\newcommand*{\jlreq@setcurrentcolumn}{% + \global\advance\jlreq@zref@reference@count by 1 + \zref@labelbyprops{jlreq@currentcolumn.\the\jlreq@zref@reference@count}{jlreq@firstcolumn}% + \ifnum\zref@extractdefault{jlreq@currentcolumn.\the\jlreq@zref@reference@count}{jlreq@firstcolumn}{1}=1 \global\jlreq@firstcolumntrue\else \global\jlreq@firstcolumnfalse\fi } \def\jlreq@saveoriginalcs#1{% @@ -341,11 +375,25 @@ }% \expandafter\expandafter\expandafter\let\expandafter\expandafter\csname jlreq@original@#1\endcsname\csname #1\endcsname } +\def\jlreq@useoriginalcs#1{% + \ifcsname jlreq@original@\expandafter\@gobble\string#1\endcsname\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi + {\csname jlreq@original@\expandafter\@gobble\string#1\endcsname}% + {#1}% +} -% 先頭にあるマクロを展開しまくった結果を#2に入れる. -\long\def\jlreq@expandmacros#1#2{% - \jlreq@ifmacro{#1}{\expandafter\jlreq@expandmacros\expandafter{#1}{#2}}{\def#2{#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}% @@ -452,6 +500,7 @@ \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} %.. フォントサイズ,行長,1ページあたりの行数で基本版面のサイズを決める(2.4.1.a) @@ -638,11 +687,16 @@ \fi +% 必要パッケージのロード \ifx l\jlreq@engine \RequirePackage{luatexja} \directlua{jlreq = {}} \fi +\if@tate + \RequirePackage{atbegshi} +\fi + % (u)pLaTeXの場合ここで初めて\epTeXinputencodingが発行されるので, % これ以前には和文は使えない. \ifx l\jlreq@engine\else @@ -655,16 +709,18 @@ \AtBeginDocument{\tate\message{《縦組モード》}\adjustbaseline} \fi + + % \jlreq@gol(Gyo Okuri Length), \jlreq@mol (Moji Okuri Length)を定義 \let\jlreq@gol=\zh \let\jlreq@mol=\zw -%. helper2(エンジン依存系) +%. helper2(エンジン依存系:和文文字を含むものもこれ以降) % #1のboxを今の真ん中に配置する. \def\jlreq@box@putcenter#1{% \begingroup \jlreq@tempdima=\dimexpr(\ht#1 - \dp#1)/2\relax - \setbox\jlreq@tempboxa=\hbox{あ}% + \setbox\jlreq@tempboxa=\hbox{阿}% \edef\jlreq@do{% \noexpand\lower\the\dimexpr(\jlreq@tempdima - (\ht\jlreq@tempboxa - \dp\jlreq@tempboxa)/2)\relax\unexpanded{\box#1}% }% @@ -674,10 +730,9 @@ % #1の先頭が文字か \long\def\jlreq@ifletter#1{% - \jlreq@ifempty{#1}{\@secondoftwo}{% - \jlreq@iffirsttoken{#1}{ }{\@secondoftwo}{% - \expandafter\expandafter\expandafter\jlreq@helper@ifletter\jlreq@getfirsttoken#1\jlreq@uniqtoken{}\jlreq@endmark@ - }}% + \jlreq@iffirsttoken{#1}{ }{\@secondoftwo}{% + \expandafter\expandafter\expandafter\jlreq@helper@ifletter\jlreq@getfirsttoken#1\jlreq@uniqtoken{}\jlreq@endmark@ + }% } \long\def\jlreq@helper@ifletter#1{% @@ -693,10 +748,6 @@ \fi } -% こっちは先頭にあるマクロを展開してチェックする -\long\def\jlreq@ifletter@expandmacros#1{% - \jlreq@ifmacro{#1}{\expandafter\jlreq@ifletter@expandmacros\expandafter{#1}}{\jlreq@ifletter{#1}}% -} % 組方向を判定 % \jlreq@if(y|t)(dir|box)を定義する. @@ -834,15 +885,19 @@ % \jlreq@nextcharと\jlreq@lastnodecharの間のJFMグルーを挿入 \def\jlreq@insertjfm{% \ifnum\jlreq@getpostbreakpenalty{\jlreq@lastnodechar}=0\else\penalty\jlreq@getpostbreakpenalty{\jlreq@lastnodechar}\fi - \jlreq@ifletter@expandmacros{\jlreq@nextchar}{% - \jlreq@expandmacros{\jlreq@nextchar}{\jlreq@tempa}% - \def\jlreq@tempb##1##2\jlreq@endmark{\def\jlreq@tempa{##1}}% - \expandafter\jlreq@tempb\jlreq@tempa\jlreq@endmark - \jlreq@calc@jfmglue{\char\jlreq@lastnodechar}{\jlreq@tempa}% -% \message{fixjfm Insert: \the\jlreq@resultskip}% - \hskip\jlreq@resultskip - \inhibitglue - }{}% + \begingroup + \def\jlreq@do{}% + \jlreq@getfirsttoken@expandmacros{\jlreq@nextchar}{\jlreq@tempa}% + \expandafter\jlreq@ifletter\expandafter{\jlreq@tempa}{% + \jlreq@calc@jfmglue{\char\jlreq@lastnodechar}{\jlreq@tempa}% +% \message{fixjfm Insert: \the\jlreq@resultskip}% + \edef\jlreq@do{% + \noexpand\hskip\the\jlreq@resultskip\space + \noexpand\inhibitglue + }% + }{}% + \expandafter\endgroup + \jlreq@do } % #1÷#2を\jlreq@resultdimenに入れる.(#1,#2は寸法を与える.) @@ -1159,6 +1214,8 @@ \DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal} %.. 和文 +% ダミー +\def\@ptsize{0} % JFMに関連する設定 \ifx l\jlreq@engine % この値は後でjfm-jlreq内で読む @@ -1842,8 +1899,8 @@ } %.. 別行見出し -% \jlreq@startBlockHeading:別行見出しを出力する命令. -% \jlreq@startBlockHeading{1 = 命令名}{2 = レベル}{3 = スペース関連}{4 = フォーマット関連}{5 = 全体フォーマット}*{見出し}[副題] +% \jlreq@BlockHeading@start:別行見出しを出力する命令. +% \jlreq@BlockHeading@start{1 = 命令名}{2 = レベル}{3 = スペース関連}{4 = フォーマット関連}{5 = 全体フォーマット}*{見出し}[副題] % スペース関連={配置:lcr(左中央右)}{字下げ(寸法)}{字上げ(寸法)}{前空き}{後空き}{行取りの行数}{空か*か,偶数ページでも改ページを許可するならば空} % 前/後空きはprefixにa:/s:/r:が入る.r:は空きがその値そのものになる.a:/s:は行取りに加えて入る.a:で指定された空きはページ行頭では入らない % 後空きの時はs:は指定できない. @@ -1853,7 +1910,7 @@ % 見出し全体のフォーマット内では#1=ラベル,#2=見出し文字列,#3=副題,それぞれ各々のフォーマットに基づき整形される. % ラベルフォーマットでは#1=カウンタ名,見出し文字列フォーマットでは#1=見出し文字列,副題フォーマットでは#1=副題 % ラベルのみのフォーマットは目次に使われる. -\newcommand{\jlreq@startBlockHeading}[5]{% +\newcommand{\jlreq@BlockHeading@start}[5]{% \edef\jlreq@BlockHeading@start@format{\unexpanded{#4}}% この二つは\parを含むかもしれないので引数渡しはしない(後の\@ifstarで詰まる) \edef\jlreq@BlockHeading@start@totalformat{\unexpanded{#5}}% \jlreq@BlockHeading@start@{#1}{#2}{#3}% @@ -1895,9 +1952,12 @@ \expandonce{\jlreq@resulta}% }% \expandafter\xdef\csname jlreq@BlockHeading@spaces@current@after@\the\jlreq@BlockHeading@spaces@current@count\endcsname{}% - \ifx\jlreq@BlockHeading@spaces@headingslist\@empty\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi - {\jlreq@BlockHeading@spaces@outputwospace\ignorespaces}% - {\jlreq@BlockHeading@start@afterheading}% + \ifx\jlreq@BlockHeading@spaces@headingslist\@empty + \expandafter\jlreq@BlockHeading@spaces@outputwospace + \expandafter\ignorespaces + \else + \expandafter\jlreq@BlockHeading@start@afterheading + \fi } \def\jlreq@BlockHeading@start@afterheading{\futurelet\jlreq@nextchar\jlreq@BlockHeading@start@afterheading@} @@ -2340,7 +2400,7 @@ \noexpand\edef\expandonce{\csname #1\endcsname}{\noexpand\unexpanded{% \noexpand\jlreq@hook@beforeheadings{#1}% \expandonce{\jlreq@pagebreak}% - \unexpanded{\jlreq@startBlockHeading{#1}{#2}}% + \unexpanded{\jlreq@BlockHeading@start{#1}{#2}}% {{\expandonce{\jlreq@align}}{\expandonce{\jlreq@indent}}{\expandonce{\jlreq@end@indent}}\expandonce{\jlreq@spaceset}{\expandonce{\jlreq@allowbreak@evenpage}}}% {% {\expandonce{\jlreq@label@format}}{\expandonce{\jlreq@label@format@modified}}% @@ -2620,40 +2680,103 @@ } %.. 同行見出し +% {1 = 命令名}{2 = レベル}{3 = ラベルフォーマット}{4 = ラベルありフォーマット}{5 = ラベルなしフォーマット} +% 4,5は見出し文字列が#1になる. +\long\def\jlreq@RuninHeading@start#1#2#3#4#5{% + \edef\jlreq@RuninHeading@start@format@label{\unexpanded{#3}}% + \edef\jlreq@RuninHeading@start@format@wlabel{\unexpanded{#4}}% + \edef\jlreq@RuninHeading@start@format@wolabel{\unexpanded{#5}}% + \@ifstar{\@dblarg{\jlreq@RuninHeading@start@{#1}{#2}{*}}}{\@dblarg{\jlreq@RuninHeading@start@{#1}{#2}{}}}% +} +% {1 = 命令名}{2 = レベル}{3 = *}{4 = running head}{5 = 見出し} +\long\def\jlreq@RuninHeading@start@#1#2#3[#4]#5{% + \edef\jlreq@do{\noexpand\jlreq@RuninHeading@start@@{#1}{#2}{#3}{#4}{#5}{\expandonce{\jlreq@RuninHeading@start@format@label}}{\expandonce{\jlreq@RuninHeading@start@format@wlabel}}{\expandonce{\jlreq@RuninHeading@start@format@wolabel}}}% + \jlreq@do +} +% {1 = 命令名}{2 = レベル}{3 = *}{4 = running head}{5 = 見出し}{6 = ラベルフォーマット}{7 = ラベルありフォーマット}{8 = ラベルなしフォーマット} +\long\def\jlreq@RuninHeading@start@@#1#2#3#4#5#6#7#8{% + \ifnum0\jlreq@ifempty{#3}{}{1}\ifnum #2>\c@secnumdepth 1\fi>0 + \def\jlreq@tempa##1{#8}% + \else + \refstepcounter{#1}% + \def\jlreq@tempa##1{#7}% + \fi + \par + \edef\jlreq@do{% + \noexpand\everypar{% + \unexpanded{\everypar{}}% + \unexpanded{{\setbox\jlreq@tempboxa\lastbox}}% + \noexpand\begingroup + \expandonce{\jlreq@tempa{#5}}% + \expandonce{\csname jlreq@heading@maketoc@#1\endcsname{#3}{#6}{#4}}% + \noexpand\endgroup + }% + }% + \jlreq@do + \ignorespaces +} + % \DeclareRuninHeading{命令名}{レベル}{設定} \newcommand*{\DeclareRuninHeading}[3]{% \def\jlreq@do{\@removeelement{#1}}% \expandafter\jlreq@do\expandafter{\jlreq@heading@allheadings}{\jlreq@heading@allheadings}% - \appto{\jlreq@heading@allheadings}{,#1}% + \appto\jlreq@heading@allheadings{,#1}% \expandafter\def\csname jlreq@heading@level@#1\endcsname{#2}% \expandafter\edef\csname jlreq@heading@setting@#1\endcsname{\unexpanded{#3}}% \expandafter\def\csname jlreq@heading@type@#1\endcsname{\RenewRuninHeading}% \@ifundefined{c@#1}{\newcounter{#1}}{}% \@ifundefined{#1mark}{\expandafter\let\csname #1mark\endcsname\@gobble}{}% \@ifundefined{l@#1}{\expandafter\def\csname l@#1\endcsname{\@dottedtocline{#2}{0\zw}{2\zw}}}{}% + \jlreq@heading@make@maketoc{#1}{#2}% \begingroup \def\jlreq@font{\normalfont\normalsize}% \def\jlreq@indent{0\zw}% + \def\jlreq@after@label@space{1\zw}% \def\jlreq@mark{}% \def\jlreq@label@font{}% + \def\jlreq@label@format{\@seccntformat{#1}}% \def\jlreq@after@space{1\zw}% \jlreq@parsekeyval[RuninHeading:#1]{% {font}{\def\jlreq@font{##1}} {indent}{\def\jlreq@indent{##1}} {mark}{\def\jlreq@mark{##1}} + {label_format}{\def\jlreq@label@format{##1}} + {after_label_space}{ + \ifdim\dimexpr##1\relax<0pt \ClassWarning{jlreq}{after_label_space in Runin Heading #1 should be not negative}\fi + \def\jlreq@after@label@space{##1} + } {after_space}{% - \ifdim\dimexpr##1\relax<0pt\ClassWarning{jlreq}{after_space in Runin Heading #1 should be positive}\fi + \ifdim\dimexpr##1\relax<0pt \ClassWarning{jlreq}{after_space in Runin Heading #1 should be not negative}\fi \def\jlreq@after@space{##1}% } }{#3}% - % \@startsection{#1}{#2}{indent}{0pt}{-after_space}{font} + \newif\ifjlreq@indent@zero + \jlreq@ifgluezero{\glueexpr\jlreq@indent\relax}{\jlreq@indent@zerotrue}{\jlreq@indent@zerofalse}% + \newif\ifjlreq@after@space@zero + \jlreq@ifgluezero{\glueexpr\jlreq@after@space\relax}{\jlreq@after@space@zerotrue}{\jlreq@after@space@zerofalse}% + \newif\ifjlreq@after@label@space@zero + \jlreq@ifgluezero{\glueexpr\jlreq@after@label@space\relax}{\jlreq@after@label@spacefalse}% + \edef\jlreq@format@wlabel{{% + \ifjlreq@indent@zero\else\unexpanded{\hskip\glueexpr}\expandonce{\jlreq@indent}\noexpand\relax\fi + \expandonce{\jlreq@font}% + \expandonce{\jlreq@label@format}% + \ifjlreq@after@label@space@zero\else\unexpanded{\hskip\glueexpr}\expandonce{\jlreq@after@label@space}\noexpand\relax\fi + ####1% + \ifjlreq@after@space@zero\else\unexpanded{\hskip\glueexpr}\expandonce{\jlreq@after@space}\noexpand\relax\fi + }}% + \edef\jlreq@format@wolabel{{% + \ifjlreq@indent@zero\else\unexpanded{\hskip\glueexpr}\expandonce{\jlreq@indent}\noexpand\relax\fi + \expandonce{\jlreq@font}% + ####1% + \ifjlreq@after@space@zero\else\unexpanded{\hskip\glueexpr}\expandonce{\jlreq@after@space}\noexpand\relax\fi + }}% + \jlreq@heading@make@l@{#1}{#2}{\jlreq@label@format}% \edef\jlreq@do{% - \noexpand\def\expandonce{\csname #1\endcsname}{% - \unexpanded{\jlreq@hook@beforeheadings{#1}}% - \expandafter\jlreq@ifempty\expandafter{\jlreq@mark}{% - \noexpand\@startsection{\unexpanded{#1}}{\unexpanded{#2}}{\expandonce{\jlreq@indent}}{0pt}{-\expandonce{\jlreq@after@space}}{\expandonce{\jlreq@font}}% - }{% - \noexpand\@startsection{\unexpanded{#1}}{\unexpanded{#2}}{\expandonce{\jlreq@indent}}{0pt}{-\expandonce{\jlreq@after@space}}{\noexpand\kern\expandonce{\jlreq@indent}\expandonce{\jlreq@mark}\noexpand\kern-\expandonce{\jlreq@indent}\expandonce{\jlreq@font}}% + \expandonce{\jlreq@result}% + \noexpand\edef\expandonce{\csname #1\endcsname}{% + \noexpand\unexpanded{% + \unexpanded{\jlreq@hook@beforeheadings{#1}}% + \noexpand\jlreq@RuninHeading@start{#1}{#2}{\expandonce{\jlreq@label@format}}{\expandonce{\jlreq@format@wlabel}}{\expandonce{\jlreq@format@wolabel}}% }% }% }% @@ -2949,43 +3072,8 @@ %. 注 -% 合印:4.2.3 % 文字サイズは6ポイントくらい(4.2.3.a)とりあえす\scriptsize - -% \footnoteと\footnotemarkの前後に\jlreq@hook@prenote/\jlreq@hook@postnoteを入れる -\jlreq@saveoriginalcs{footnote} -\edef\jlreq@do{ - \unexpanded{\long\def\jlreq@fixjfm@footnote@[#1]#2}{% - \expandonce{\footnote[#1]{#2}}% - \noexpand\jlreq@hook@postnote - } - \unexpanded{\long\def\jlreq@fixjfm@footnote@@#1}{% - \expandonce{\footnote{#1}}% - \noexpand\jlreq@hook@postnote - } -} -\jlreq@do -\def\footnote{% - \jlreq@hook@prenote - \@ifnextchar[{\jlreq@fixjfm@footnote@}{\jlreq@fixjfm@footnote@@}% -} -\edef\jlreq@do{ - \unexpanded{\def\jlreq@fixjfm@footnotemark@[#1]}{% - \expandonce{\footnotemark[#1]}% - \noexpand\jlreq@hook@postnote - } - \unexpanded{\def\jlreq@fixjfm@footnotemark@@}{% - \expandonce{\footnotemark}% - \noexpand\jlreq@hook@postnote - } -} -\jlreq@do -\jlreq@saveoriginalcs{footnotemark}% -\def\footnotemark{% - \jlreq@hook@prenote - \@ifnextchar[{\jlreq@fixjfm@footnotemark@}{\jlreq@fixjfm@footnotemark@@}% -} - +%.. 合印(4.2.3) \newcommand*\jlreq@referencemark@format[1]{#1} \newif\ifjlreqadjustreferencemark \jlreqadjustreferencemarktrue @@ -3013,9 +3101,10 @@ \@tempdima=\jlreq@current@linewidth \fi \fi - \setbox\jlreq@tempboxa=\hbox to\z@{\hskip-\@tempdima\raise\dimexpr.5\zw + (\ht\@tempboxa + \dp\@tempboxa)/2\relax\box\@tempboxa\hss}% - \dp\jlreq@tempboxa=0pt\ht\jlreq@tempboxa=0pt\box\jlreq@tempboxa}% - }% + \setbox\jlreq@tempboxb=\hbox{阿}% + \setbox\jlreq@tempboxa=\hbox to\z@{\hskip-\@tempdima\raise\dimexpr\ht\jlreq@tempboxb + \dp\@tempboxa\relax\box\@tempboxa\hss}% + \dp\jlreq@tempboxa=0pt\ht\jlreq@tempboxa=0pt\box\jlreq@tempboxa% + }}% \ifx l\jlreq@engine \def\jlreq@hook@prenote{% \jlreq@lastnodechar=\lastnodechar\relax @@ -3039,45 +3128,141 @@ \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi #2% \ifhmode\spacefactor\@x@sf\fi - \relax} + \relax}% } \jlreq@setdefaultnotemark\@footnotemark\@makefnmark -%.. 脚注 (縦書きの時は傍注,4.2.5) -{% - \footnotesize\global\setlength{\footnotesep}{.7\baselineskip} % 何でかわからん…… - % \jlreq@tempdimaに罫線と脚注との間の長さを入れる - % 脚注の行間よりやや広くする(4.2.5.f) - \global\jlreq@tempdima=1.5\dimexpr\baselineskip - 1\jlreq@gol\relax -} + +%.. 脚注(4.2.5) +% (縦書きの時は傍注,4.2.6) % 罫線の前は行間分,最大+文字サイズ分伸びる(4.2.5.g) \setlength{\skip\footins}{\dimexpr\baselineskip - 1\jlreq@gol \relax plus 1\jlreq@gol} -%\setlength{\skip\footins}{0pt} -% 脚注の前の罫線は表罫で,長さは行長の1/3位(4.2.5.f) -\edef\footnoterule{% - \unexpanded{\hrule width .333\textwidth height \jlreq@omotekeiwidth}% - \noexpand\kern\the\jlreq@tempdima -} +% 罫線の長さは,基本版面で設定した行長にもよるが,行長の1/3くらいにする. +\def\jlreq@footnote@rulewidth{.333\textwidth} +\begingroup + \footnotesize + \edef\jlreq@do{ + \unexpanded{\setlength{\footnotesep}}{\the\dimexpr .7\baselineskip\relax}% 何でかわからん…… + \unexpanded{\def\footnoterule}{% + % この罫線は,表罫(おもてけい)とする. + \unexpanded{\hrule width \jlreq@footnote@rulewidth height \jlreq@omotekeiwidth}% + % 脚注の行間よりやや広くする(4.2.5.f) + \noexpand\kern\the\dimexpr 1.5\dimexpr\baselineskip - 1\zh\relax\relax + } + } +\expandafter\endgroup +\jlreq@do % インデントの計算:脚注の長さが文字の整数倍になるように字下げする(4.2.5.b) -{ - \footnotesize - \jlreq@footnoteindent=1\jlreq@mol - \@tempdima=\dimexpr\textwidth - \jlreq@footnoteindent\relax - \@tempdimb=1\jlreq@mol - \divide\@tempdima\@tempdimb \multiply\@tempdima\@tempdimb - \global\jlreq@footnoteindent=\dimexpr\textwidth - \@tempdima\relax +\jlreq@jlreqsetup@add{footnote_indent}{% + \if@tate\else + \ifdim\dimexpr#1\relax=0pt\else\jlreq@note{脚注は,一般にその前に区切りのための罫線を挿入するので,字下げは行わなくてよい(4.2.5.b).}\fi + \fi + \begingroup + \footnotesize + \jlreq@footnoteindent=\dimexpr#1\relax + \@tempdima=\dimexpr\textwidth - \jlreq@footnoteindent\relax + \@tempdimb=1\zw + \divide\@tempdima\@tempdimb \multiply\@tempdima\@tempdimb + \edef\jlreq@do{\noexpand\jlreq@footnoteindent=\the\dimexpr\textwidth - \@tempdima\relax}% + \expandafter\endgroup + \jlreq@do +} +\if@tate + \jlreqsetup{footnote_indent=1\zw}% 根拠なし +\else + \jlreqsetup{footnote_indent=0pt}% (4.2.5.b) +\fi + +\ifx l\jlreq@engine + \fnfixbottomtrue +\fi + +% \footnoteと\footnotemarkの前後に\jlreq@hook@prenote/\jlreq@hook@postnoteを入れる +\jlreq@saveoriginalcs{footnote} +\jlreq@saveoriginalcs{footnotemark} +\def\footnote{% + \jlreq@hook@prenote + \@ifnextchar[{\jlreq@footnote@impl@woption}{\jlreq@footnote@impl@wooption}% +} +\def\footnotemark{% + \jlreq@hook@prenote + \@ifnextchar[{\jlreq@footnotemark@impl@woption}{\jlreq@footnotemark@impl@wooption}% +} +\if@tate + % 縦組の傍注は,その見開き内に付いている合印に対応する注を,奇数ページの左端にそろえて配置する(4.2.6.a). + % TODO: 多段組では最下段の左端にそろえて配置する. + \def\jlreq@footnote@delayfootnoteslist{} + \preto\@outputpage{% + \expandafter\gdef\expandafter\jlreq@footnote@delayfootnoteslist\expandafter{\expandafter}% + \jlreq@footnote@delayfootnoteslist + } + \def\jlreq@footnote@delayfootnote@delay#1#2#3{% + \ifnum#1<1 + \footnotetext[#2]{#3}% + \else + \xappto\jlreq@footnote@delayfootnoteslist{\noexpand\jlreq@footnote@delayfootnote{\the\numexpr#1 - 1\relax}{\unexpanded{#2}}{\unexpanded{#3}}}% + \fi + } + \def\jlreq@footnote@delayfootnote@immediate#1#2#3{\footnotetext[#2]{#3}}% + \let\jlreq@footnote@delayfootnote=\jlreq@footnote@delayfootnote@delay + \def\jlreq@footnote@flushdelayfootnoteslist{% + \let\jlreq@footnote@delayfootnote=\jlreq@footnote@delayfootnote@immediate + \jlreq@footnote@delayfootnoteslist + \gdef\jlreq@footnote@delayfootnoteslist{}% + \let\jlreq@footnote@delayfootnote=\jlreq@footnote@delayfootnote@delay + } + \AtEndDocument{\jlreq@footnote@flushdelayfootnoteslist} + \preto\newpage{\jlreq@footnote@flushdelayfootnoteslist} + \long\def\jlreq@footnote@impl@woption[#1]#2{% + \jlreq@setcurrentpage + \ifodd\jlreq@currentpage + \jlreq@useoriginalcs{\footnote}[#1]{#2}% + \else + \jlreq@useoriginalcs{\footnotemark}[#1]% + \xappto\jlreq@footnote@delayfootnoteslist{\noexpand\jlreq@footnote@delayfootnote{\the\numexpr\jlreq@currentpage - \value{page}\relax}{\unexpanded{#1}}{\unexpanded{#2}}}% + \fi + \jlreq@hook@postnote + } + \long\def\jlreq@footnote@impl@wooption#1{% + \jlreq@setcurrentpage + \ifodd\jlreq@currentpage + \jlreq@useoriginalcs{\footnote}{#1}% + \else + \jlreq@useoriginalcs{\footnotemark}% + \xappto\jlreq@footnote@delayfootnoteslist{\noexpand\jlreq@footnote@delayfootnote{\the\numexpr\jlreq@currentpage - \value{page}\relax}{\the\value{footnote}}{\unexpanded{#1}}}% + \fi + \jlreq@hook@postnote + } +\else + \long\def\jlreq@footnote@impl@woption[#1]#2{% + \jlreq@useoriginalcs{\footnote}[#1]{#2}% + \jlreq@hook@postnote + } + \long\def\jlreq@footnote@impl@wooption#1{% + \jlreq@useoriginalcs{\footnote}{#1}% + \jlreq@hook@postnote + } +\fi +\long\def\jlreq@footnotemark@impl@woption[#1]{% + \jlreq@useoriginalcs{\footnotemark}[#1]% + \jlreq@hook@postnote } +\long\def\jlreq@footnotemark@impl@wooption{% + \jlreq@useoriginalcs{\footnotemark}% + \jlreq@hook@postnote +} + % 4.2.5.d \newcommand{\@makefntext}[1]{\jlreq@makefntext{#1}} \jlreq@jlreqsetup@add{footnotetext_indent}{ \ifthenelse{\equal{#1}{one}}{ - \long\def\jlreq@makefntext##1{\parindent 1\jlreq@mol - \addtolength{\leftskip}{\dimexpr\jlreq@footnoteindent + 1\jlreq@mol\relax}% 全体をインデント+1文字分下げる - \noindent\hskip -1\jlreq@mol\jlreq@referencemark@format{\@thefnmark}\hskip 1\jlreq@mol##1}% 見出し出力と一文字分の空き + \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}% 見出し出力と一文字分の空き }{ - \long\def\jlreq@makefntext##1{\parindent 1\jlreq@mol + \long\def\jlreq@makefntext##1{\parindent 1\zw \addtolength{\leftskip}{\jlreq@footnoteindent}% 全体をインデント - \noindent\hskip 1\jlreq@mol\jlreq@referencemark@format{\@thefnmark}\hskip 1\jlreq@mol##1}% 見出し出力と一文字分の空き + \noindent\hskip 1\zw\jlreq@referencemark@format{\@thefnmark}\hskip 1\zw##1}% 見出し出力と一文字分の空き } } \jlreqsetup{footnotetext_indent=one} @@ -3104,8 +3289,7 @@ \newdimen\jlreq@endnote@indent % 現在の後注一覧を,\jlreq@endnote@textsに{{合印1}{後注1}}{{合印2}{後注2}}...の形で保持する \def\jlreq@endnote@texts{} -\long\def\jlreq@endnote@addtext#1#2{% - \expandafter\gdef\expandafter\jlreq@endnote@texts\expandafter{\jlreq@endnote@texts{{#1}{#2}}}} +\long\def\jlreq@endnote@addtext#1#2{\xappto\jlreq@endnote@texts{\unexpanded{{{#1}{#2}}}}} % \endnote自身は後で定義する \def\jlreq@endnote@impl{\jlreq@hook@prenote\@ifnextchar[{\jlreq@endnote}{\jlreq@endnote[]}} \def\endnotemark{\jlreq@hook@prenote\@ifnextchar[{\jlreq@endnotemark}{\jlreq@endnotemark[]}} @@ -3565,7 +3749,6 @@ }% } - %. ページスタイル. % メモ: % 2.6.1.cの後半が前半と整合的でないように見える…… @@ -3614,6 +3797,14 @@ }% } +% レベル#1より低いレベルの見出しの**markを\markboth{}{}にする +\def\jlreq@pagestyle@setclearmark#1{% + \expandafter\@for\expandafter\@tempa\expandafter:\expandafter=\jlreq@heading@allheadings\do{% + \@ifundefined{\@tempa}{}{% + \ifnum\csname jlreq@heading@level@\@tempa\endcsname<#1\relax\expandafter\def\csname\@tempa mark\endcsname##1{\markboth{}{}}\fi + }% + }% +} % odd_running_head=_sectionのように下線から始まる場合,その値の見出し命令を柱に出すようにする. % 要するに\ps@***に\sectionmarkを定義するように仕込む. @@ -3634,7 +3825,7 @@ \def\jlreq@font{}% % 柱とノンブルの間 \def\jlreq@gap{1.5\zw}% - \newif\ifjlreq@clearmark\jlreq@clearmarktrue + \newif\ifjlreq@clearmarkcommand\jlreq@clearmarkcommandtrue \newif\ifjlreq@pstate\jlreq@pstatefalse % PageStyleTATE \jlreq@parsekeyval[PageStyle:#1]{ *{tate}{\jlreq@pstatetrue} @@ -3648,7 +3839,7 @@ {mark_format}{\edef\jlreq@mark@format{\unexpanded{##1}}} {command}{\edef\jlreq@command{\unexpanded{##1}}} {gap}{\def\jlreq@gap{##1}} - {clear_mark}[true,false]{\csname jlreq@clearmark##1\endcsname} + {clear_markcommand}[true,false]{\csname jlreq@clearmarkcommand##1\endcsname} }{#2}% % 見出しを出す場合:evenに章などの高いレベルの見出しを出す(2.6.3.a) \def\jlreq@markdefinition{}% @@ -3689,8 +3880,7 @@ \def\jlreq@markcommand{\markright}% \def\jlreq@markcommandafter{}% }% - \edef\jlreq@markdefinition{% - \expandonce{\jlreq@markdefinition}% + \eappto\jlreq@markdefinition{% \noexpand\def\expandonce{\csname ##3mark\endcsname}\unexpanded{####1}{\expandonce{\jlreq@markcommand}% {\expandonce{\jlreq@result}}\expandonce{\jlreq@markcommandafter}}% }% @@ -3707,6 +3897,18 @@ \jlreq@note{偶数ページには奇数ページよりアウトラインレベルの高い見出しを入れる (ページスタイル #1内,2.6.3.a).}% \fi \fi\fi + % \jlreq@tempa = min{\jlreq@odd@running@head@level,\jlreq@even@running@head@level} + \let\jlreq@tempa=\jlreq@odd@running@head@level + \ifx\jlreq@tempa\@empty + \let\jlreq@tempa=\jlreq@even@running@head@level + \else + \ifx\jlreq@even@running@head@level\@empty\else\ifnum\jlreq@tempa>\jlreq@even@running@head@level + \let\jlreq@tempa=\jlreq@even@running@head@level + \fi\fi + \fi + \ifx\jlreq@tempa\@empty\else + \eappto\jlreq@markdefinition{\noexpand\jlreq@pagestyle@setclearmark{\expandonce{\jlreq@tempa}}}% + \fi % \jlreq@[even/odd][head/foot]に入れていく.tateか否かで場合分け. \ifjlreq@pstate\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi{% \ifx\jlreq@nombre@position\@empty\def\jlreq@nombre@position{0pt}\fi @@ -3940,7 +4142,7 @@ \edef\jlreq@do{% \noexpand\def\expandonce{\csname ps@#1\endcsname}{% \unexpanded{\def\jlreq@current@pagestyle{#1}}% - \ifjlreq@clearmark\unexpanded{\jlreq@heading@execmacro@toallheadings\jlreq@clearheadingmarks}\fi + \ifjlreq@clearmarkcommand\unexpanded{\jlreq@heading@execmacro@toallheadings\jlreq@clearheadingmarks}\fi \unexpanded{\let\@mkboth=\markboth}% \unexpanded{\def\@oddhead}{\expandonce{\jlreq@oddhead}}% \unexpanded{\def\@oddfoot}{\expandonce{\jlreq@oddfoot}}% @@ -3995,8 +4197,8 @@ \ModifyPageStyle{headings}{mark_format={_chapter={第\thechapter 章\quad #1}}} } \if@tate - \RenewPageStyle{plain}{nombre=\thepage,odd_running_head={},even_running_head={},clear_mark=false} - \NewPageStyle{myheadings}{nombre=\thepage,odd_running_head=\rightmark,even_running_head=\leftmark,clear_mark=false} + \RenewPageStyle{plain}{nombre=\thepage,odd_running_head={},even_running_head={},clear_markcommand=false} + \NewPageStyle{myheadings}{nombre=\thepage,odd_running_head=\rightmark,even_running_head=\leftmark,clear_markcommand=false} \if@twoside \ModifyPageStyle{plain}{nombre_position={top-left}} \ModifyPageStyle{headings}{nombre=\thepage,nombre_position=bottom-left,running_head_position=top-left} @@ -4007,9 +4209,9 @@ \ModifyPageStyle{myheadings}{nombre_position=bottom-center,running_head_position=top-center} \fi \else% yoko - \RenewPageStyle{plain}{nombre=\thepage,odd_running_head={},even_running_head={},nombre_position={bottom-center},clear_mark=false} + \RenewPageStyle{plain}{nombre=\thepage,odd_running_head={},even_running_head={},nombre_position={bottom-center},clear_markcommand=false} \ModifyPageStyle{headings}{nombre=\thepage,nombre_position=bottom-center,running_head_position=top-center} - \NewPageStyle{myheadings}{nombre=\thepage,nombre_position=bottom-center,running_head_position=top-center,odd_running_head=\rightmark,even_running_head=\leftmark,clear_mark=false} + \NewPageStyle{myheadings}{nombre=\thepage,nombre_position=bottom-center,running_head_position=top-center,odd_running_head=\rightmark,even_running_head=\leftmark,clear_markcommand=false} \fi \ModifyPageStyle{plain}{font=\small} \ModifyPageStyle{headings}{font=\small} @@ -4030,17 +4232,64 @@ \newcommand{\@makecaption}[2]{{% \reset@font\small \vskip\abovecaptionskip - \sbox\@tempboxa{{\jlreq@@makecaption@label@font #1}\hskip 1\zw{\jlreq@@makecaption@font #2}}% - \ifdim \wd\@tempboxa >\hsize - {\jlreq@@makecaption@label@font #1}\hskip1\zw{\jlreq@@makecaption@font #2}\relax\par + \edef\jlreq@do{\unexpanded{\def\jlreq@tempa##1}{\expandonce{\jlreq@makecaption@label@format}}}% + \jlreq@do + \jlreq@ifempty{#1}{}{% + \edef\jlreq@tempa{{\noexpand\jlreq@@makecaption@label@font\expandonce{\jlreq@tempa{#1}}\unexpanded{\hskip \glueexpr\jlreq@makecaption@after@label@space\relax}}}% + }% + \appto\jlreq@tempa{{\jlreq@@makecaption@font #2}}% + \setbox\@tempboxa=\hbox{\jlreq@tempa}% + \@ifundefined{@currenvir}{% + \@ifundefined{@captype}% + {\def\jlreq@tempb{}}% + {\let\jlreq@tempb=\@captype}% + }{\let\jlreq@tempb=\@currenvir}% + \@ifundefined{jlreq@caption@align@\jlreq@tempb}% + {\let\jlreq@align=\jlreq@caption@align}% + {\expandafter\let\expandafter\jlreq@align\csname jlreq@caption@align@\jlreq@tempb\endcsname}% + \ifdim\wd\@tempboxa>\hsize\relax + {% + \ifx c\jlreq@align\centering\fi + \ifx r\jlreq@align\raggedleft\fi + \jlreq@tempa\par + }% \else \global\@minipagefalse - \hbox to\hsize{\hfil\box\@tempboxa\hfil}% + \hbox to\hsize{% + \ifnum0\ifx c\jlreq@align 1\fi\ifx r\jlreq@align 1\fi>0 \hfil\fi + \unhbox\@tempboxa + \ifnum0\ifx c\jlreq@align 1\fi\ifx l\jlreq@align 1\fi>0 \hfil\fi + }% \fi \vskip\belowcaptionskip}} \jlreq@jlreqsetup@add{caption_font}{\def\jlreq@@makecaption@font{#1}} \jlreq@jlreqsetup@add{caption_label_font}{\def\jlreq@@makecaption@label@font{#1}} -\jlreqsetup{caption_font={\sffamily\bfseries},caption_label_font={\sffamily\bfseries}} +\jlreq@jlreqsetup@add{caption_label_format}{\edef\jlreq@makecaption@label@format{\unexpanded{#1}}} +\jlreq@jlreqsetup@add{caption_after_label_space}{\def\jlreq@makecaption@after@label@space{#1}} +\def\jlreq@caption@setalign#1#2{% + \jlreq@switch{#2}{ + {center}{\let#1=c} + {left}{\let#1=l} + {right}{\let#1=r} + {top}{\let#1=l} + {bottom}{\let#1=r} + }% +} +\jlreq@jlreqsetup@add{caption_align}{% + \jlreq@parsekeyval@nokey{% + \jlreq@ifempty{##1}{}{% + \jlreq@switch{##1}{% + {center}{\let\jlreq@caption@align=c} + {left}{\let\jlreq@caption@align=l} + {right}{\let\jlreq@caption@align=r} + {top}{\let\jlreq@caption@align=l} + {bottom}{\let\jlreq@caption@align=r} + {\expandafter\jlreq@caption@setalign\csname jlreq@caption@align@##1\endcsname{##2}} + }% + }% + }{#1}% +} +\jlreqsetup{caption_font={\sffamily\bfseries},caption_label_font={\sffamily\bfseries},caption_after_label_space=1\zw,caption_label_format={#1},caption_align=center} % 特に根拠のない値 \setlength\abovecaptionskip{.5\jlreq@gol} \setlength\belowcaptionskip{0pt} @@ -4310,13 +4559,38 @@ \setlength\leftmarginvi{1\zw} %.. 箇条書き -\jlreq@jlreqsetup@add{itemization_beforeafter_space}{\def\jlreq@itemization@beforeafter@space{#1}} +\jlreq@jlreqsetup@add{itemization_beforeafter_space}{ + \begingroup + \def\jlreq@do{}% + \def\jlreq@keyvallist{}% + \@for\@tempa:=#1\do{% + \expandafter\jlreq@ifcontains\expandafter{\@tempa}{=}% + {\expandafter\appto\expandafter\jlreq@keyvallist\expandafter{\@tempa,}}% + {% + \@for\@tempb:=i,ii,iii,iv,v,vi\do{% + \eappto\jlreq@do{\noexpand\def\expandonce{\csname jlreq@itemization@beforeafter@space@\@tempb\endcsname}{\expandonce{\@tempa}}}% + }% + }% + }% + \def\jlreq@tempa{% + \jlreq@parsekeyval{% + {i}{\appto\jlreq@do{\def\jlreq@itemization@beforeafter@space@i{####1}}} + {ii}{\appto\jlreq@do{\def\jlreq@itemization@beforeafter@space@ii{####1}}} + {iii}{\appto\jlreq@do{\def\jlreq@itemization@beforeafter@space@iii{####1}}} + {iv}{\appto\jlreq@do{\def\jlreq@itemization@beforeafter@space@iv{####1}}} + {v}{\appto\jlreq@do{\def\jlreq@itemization@beforeafter@space@v{####1}}} + {vi}{\appto\jlreq@do{\def\jlreq@itemization@beforeafter@space@vi{####1}}} + }% + }% + \expandafter\jlreq@tempa\expandafter{\jlreq@keyvallist}% + \expandafter\endgroup + \jlreq@do +} \jlreq@jlreqsetup@add{itemization_itemsep}{\def\jlreq@itemization@itemsep{#1}} -\jlreqsetup{itemization_beforeafter_space=0pt,itemization_itemsep=0pt} +\jlreqsetup{itemization_beforeafter_space={0pt,i=.5\baselineskip},itemization_itemsep=0pt} % enumerate, itemize用初期化 \def\jlreq@init@list{% \setlength{\labelwidth}{2\jlreq@mol}% - \setlength{\topsep}{\dimexpr\jlreq@itemization@beforeafter@space\relax}% \setlength{\partopsep}{0pt}% \setlength{\itemsep}{\dimexpr\jlreq@itemization@itemsep\relax}% \setlength{\parsep}{0pt}% @@ -4333,25 +4607,35 @@ \def\@listi{% \jlreq@init@list + \setlength{\topsep}{\dimexpr\jlreq@itemization@beforeafter@space@i\relax}% \setlength{\leftmargin}{\leftmargini}% } \let\@listI\@listi \def\@listii{% \jlreq@init@list + \setlength{\topsep}{\dimexpr\jlreq@itemization@beforeafter@space@ii\relax}% \setlength{\leftmargin}{\leftmarginii}% } \def\@listiii{% \jlreq@init@list + \setlength{\topsep}{\dimexpr\jlreq@itemization@beforeafter@space@iii\relax}% \setlength{\leftmargin}{\leftmarginiii}% } \def\@listiv{% \jlreq@init@list + \setlength{\topsep}{\dimexpr\jlreq@itemization@beforeafter@space@iv\relax}% \setlength{\leftmargin}{\leftmarginiv}% } \def\@listv{% \jlreq@init@list + \setlength{\topsep}{\dimexpr\jlreq@itemization@beforeafter@space@v\relax}% \setlength{\leftmargin}{\leftmarginv}% } +\def\@listvi{% + \jlreq@init@list + \setlength{\topsep}{\dimexpr\jlreq@itemization@beforeafter@space@vi\relax}% + \setlength{\leftmargin}{\leftmarginvi}% +} \if@tate \renewcommand{\theenumi}{\jlreq@Kanji{enumi}} @@ -4587,6 +4871,10 @@ \jlreq@oldfontcommand@disable } \let\@openbib@code\@empty +\if@tate + \def\@cite#1#2{\jlreq@rensuji{[{#1\if@tempswa , #2\fi}]}} + \def\@biblabel#1{\jlreq@rensuji{[#1]}} +\fi %. 索引 \newif\ifjlreq@resttate @@ -4701,14 +4989,18 @@ \futurelet\jlreq@nextchar\jlreq@tatechuyoko@ } \def\jlreq@tatechuyoko@{% - \jlreq@ifletter{\jlreq@nextchar}{% - \jlreq@expandmacros{\jlreq@nextchar}{\jlreq@tempa}% - \def\jlreq@tempb##1##2\jlreq@endmark{\def\jlreq@tempa{##1}}% - \expandafter\jlreq@tempb\jlreq@tempa\jlreq@endmark - \jlreq@calc@jfmglue{阿}{\jlreq@tempa}% - \jlreq@ifgluezero\jlreq@resultskip{}{\hskip\jlreq@resultskip}% - \inhibitglue - }{}% + \begingroup + \def\jlreq@do{}% + \jlreq@getfirsttoken@expandmacros{\jlreq@nextchar}{\jlreq@tempa}% + \expandafter\jlreq@ifletter\expandafter{\jlreq@tempa}{% + \jlreq@calc@jfmglue{阿}{\jlreq@tempa}% + \edef\jlreq@do{% + \noexpand\hskip\the\jlreq@resultskip\space + \noexpand\inhibitglue + }% + }{}% + \expandafter\endgroup + \jlreq@do } % 日にち |