From 6c6557191951b5d4062c3abe8d20e2b8aa41f638 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 14 Mar 2017 21:52:14 +0000 Subject: jlreq (14mar17) git-svn-id: svn://tug.org/texlive/trunk@43499 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/jlreq/README-ja.html | 140 ++++- Master/texmf-dist/doc/latex/jlreq/README-ja.md | 98 ++- Master/texmf-dist/doc/latex/jlreq/README.html | 55 +- Master/texmf-dist/doc/latex/jlreq/README.md | 5 + Master/texmf-dist/tex/latex/jlreq/jlreq.cls | 742 +++++++++++++++-------- 5 files changed, 709 insertions(+), 331 deletions(-) (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/latex/jlreq/README-ja.html b/Master/texmf-dist/doc/latex/jlreq/README-ja.html index 76d487f7971..e43dff4d12e 100644 --- a/Master/texmf-dist/doc/latex/jlreq/README-ja.html +++ b/Master/texmf-dist/doc/latex/jlreq/README-ja.html @@ -1,14 +1,49 @@ - - + + - - - + + + - + + + + +

jlreq

これは何?

日本語組版処理の要件の実装を試みるLuaTeX-ja / pLaTeX / upLaTeX用のクラスファイルと,それに必要なJFMの組み合わせです.

@@ -32,9 +67,11 @@

その他,oneside / twoside / onecolumn / twocolumn / titlepage / notitlepage / draft / final / openright / openany / leqno / fleqnというよくあるオプションを受け付けます.

標準的な文書クラスと同じように中身を書くことができますが,次のような命令が追加 / 拡張されています.

\section

-

\section*[running head]{見出し文字列}[副題]というように,通常の書式に加えて副題を受け付けられるように拡張されています.その他,\part(articleのみ),\chapter(book/reportのみ),\subsectionも副題を受け付けます.(\subsubsectionも受け付けますが,汚い見た目になります.)

+

\section*[running head]{見出し文字列}[副題]というように,通常の書式に加えて副題を受け付けられるように拡張されています.その他,\part(articleのみ),\chapter(book/reportのみ),\subsection\subsubsectionも副題を受け付けます.

+

abstract環境

+

プリアンブルにもかけるようになっています.プリアンブルに書かれた場合は,\maketitleとともに出力されます.二段組の場合は,段組にならず概要を出力することができます.

\sidenote

-

傍注(縦組みの場合は脚注)を出力します.デフォルトでは\footnoteと同様の書式となりますが,クラスオプションにsidenote_type=markが指定されている場合,その書式は\sidenote{該当項目}{注}となります.たとえば

+

傍注(縦組みの場合は脚注)を出力します.デフォルトでは\footnoteと同様の書式となりますが,クラスオプションにsidenote_type=symbolが指定されている場合,その書式は\sidenote{該当項目}{注}となります.たとえば

刊行できる\sidenote{原稿}{印刷などの方法により……}を入手する仕事である.

とします.後の説明も参照してください.

デフォルトの基本版面では余白が少なく,実用にはならないかと思います.後の基本版面の設定を参考にしてください.

@@ -42,7 +79,7 @@

後注を指定します.\footnoteと同様の書式です.デフォルトでは,注自身の出力は見出し直前に行われます.この動作はクラスオプションにより制御できます.また\theendnotesを実行するとその場に出力をします.

\warichu

割注を出力します.行分割位置などは自動で計算されます.(複数回のコンパイルが必要.)\warichu*ではこれらの位置を手動で指定できます.書式は

-

\warichu*{(一行目前) & (一行目後)\\ (二行目前) & (二行目後)...}

+
\warichu*{(一行目前) & (一行目後)\\ (二行目前) & (二行目後)...}

です.&が省略されている場合は自動で調整されます.

\jlreqsetup

設定用命令です.プリアンブルでしか使えません.文書に対する殆どの設定はクラスオプションにより行いますが,一部の設定はこの命令を通じて行います.

@@ -57,48 +94,48 @@

設計はクラスオプションまたは\jlreqsetupによりkeyval形式で行います.以下では次の用法を使います.

-

たとえばQが利用可能な場合は<寸法;Q>のように記述します.

基本版面

-

すべてクラスファイルへのオプションです.

+

クラスオプションです.

組み方

+

クラスオプションです.

注関係

キャプション

図表のキャプションを\jlreqsetupで変更できます.

@@ -106,6 +143,14 @@
  • caption_font=<命令>: キャプション自身のフォントを指定します.
  • caption_label_font=<命令>: キャプションのラベルのフォントを指定します.
  • +

    引用

    +

    quote / quotation / verse環境の挙動をクラスオプションで指定できます.

    +

    見出し

    見出しの設定は,\Declare***Headingという命令で行います(***には見出しの種類に応じた文字列が入る).書式はすべて

    \Declare****Heading{<命令名>}{<レベル>}{<設定>}
    @@ -116,39 +161,64 @@
  • type=[han/naka]: hanだと半扉見出しを,nakaだと中扉見出しを作ります.
  • pagestyle=<ページスタイル>: 見出し箇所のページスタイルを指定します.
  • label_format=<書式>: ラベルを出力する命令を指定します.たとえばlabel_format={第\thechapter 章}のように指定します.
  • -
  • format=<書式>: 実際に出力する書式を指定します.format={\null\vfill {\Huge\bfseries #1#2}}のようにします.#1はラベルに,#2は見出し文字列に置き換えられます.
  • +
  • format=<書式>: 実際に出力する書式を指定します.format={\null\vfil {\Huge\bfseries #1#2}}のようにします.#1はラベルに,#2は見出し文字列に置き換えられます.
  • 別行見出し

    \DeclareBlockHeadingで作成します.\<命令名>*[running head]{見出し文字列}[副題]という書式の命令を作成します.設定は以下の通り.

    +

    書式関連

    +

    インデント関連

    + +

    その他

    + -

    また,行取りの指定を行うことができます.次のいずれかの方法で行います.

    +

    行取り

    +

    行取りの指定は以下のいずれかの方法で行うことができます.

    同行見出し

    -

    \DeclareRuninHeadingで作成します.\sectionと同様の書式の命令が作成されます.設定は以下の通り.

    +

    \DeclareRuninHeadingで作成します.通常の文書クラスにおける\sectionと同様の,\<命令名>*[running head]{見出し文字列}という書式の命令が作成されます.設定は以下の通り.

    窓見出し

    \DeclareCutinHeadingで作成します.\<命令名>{見出し文字列}という書式の命令を作成します.設定は以下の通り.

    \ModifyHeading

    既に(上のどれかを使い)定義された見出し命令の設定を変更します.たとえば

    \ModifyHeading{section}{lines=10}

    とすると,\sectionのフォントなどの設定はそのままに,行取りのみが10行に変更されます.見出しの種類を変更することはできません.

    +

    \SaveHeading

    +

    見出し命令の定義を待避します.

    +
    \SaveHeading{section}{\restoresection} % \sectionの中身を\restoresectionに待避.
    +\RenewBlockHeading{section}{1}{font=……} % \sectionを新しく定義する.
    +……
    +\restoresection % \sectionの中身を元に戻す.
    +

    のように使います.

    ページスタイル

    \DeclarePageStyle{<ページスタイル名>}{<設定>}

    によりページスタイルを定義することができます.設定は以下の通り.

    @@ -158,7 +228,7 @@
  • odd_running_head=<書式>even_running_head=<書式>:それぞれ奇数ページ,偶数ページの柱を指定します._sectionのように_から始まる名前を指定すると,対応する見出しを出力します.(_sectionだと現在の\sectionを出力する.)
  • \ModifyPageStyleにより既存のページスタイルを改変することが可能です.

    -

    その他

    +

    その他

    @@ -177,6 +247,14 @@
  • abstract環境を実装.
  • パッケージを読み込んでいるだけのはやめた.
  • +
  • 2017-03-14 +
      +
    • いくつかバグを修正.
    • +
    • 和文ファミリを欧文ファミリに従属させるようにした.
    • +
    • \DeclareBlockHeadingにオプションをたくさん追加.
    • +
    • quote環境などを調整するオプションを追加.
    • +
  • +
    diff --git a/Master/texmf-dist/doc/latex/jlreq/README-ja.md b/Master/texmf-dist/doc/latex/jlreq/README-ja.md index f491a116eaa..a3d7ef52798 100644 --- a/Master/texmf-dist/doc/latex/jlreq/README-ja.md +++ b/Master/texmf-dist/doc/latex/jlreq/README-ja.md @@ -32,10 +32,13 @@ 標準的な文書クラスと同じように中身を書くことができますが,次のような命令が追加 / 拡張されています. ### `\section` -`\section*[running head]{見出し文字列}[副題]`というように,通常の書式に加えて副題を受け付けられるように拡張されています.その他,`\part`(articleのみ),`\chapter`(book/reportのみ),`\subsection`も副題を受け付けます.(`\subsubsection`も受け付けますが,汚い見た目になります.) +`\section*[running head]{見出し文字列}[副題]`というように,通常の書式に加えて副題を受け付けられるように拡張されています.その他,`\part`(articleのみ),`\chapter`(book/reportのみ),`\subsection`,`\subsubsection`も副題を受け付けます. + +### `abstract`環境 +プリアンブルにもかけるようになっています.プリアンブルに書かれた場合は,`\maketitle`とともに出力されます.二段組の場合は,段組にならず概要を出力することができます. ### `\sidenote` -傍注(縦組みの場合は脚注)を出力します.デフォルトでは`\footnote`と同様の書式となりますが,クラスオプションに`sidenote_type=mark`が指定されている場合,その書式は`\sidenote{該当項目}{注}`となります.たとえば +傍注(縦組みの場合は脚注)を出力します.デフォルトでは`\footnote`と同様の書式となりますが,クラスオプションに`sidenote_type=symbol`が指定されている場合,その書式は`\sidenote{該当項目}{注}`となります.たとえば ```` 刊行できる\sidenote{原稿}{印刷などの方法により……}を入手する仕事である. ```` @@ -48,9 +51,9 @@ ### `\warichu` 割注を出力します.行分割位置などは自動で計算されます.(複数回のコンパイルが必要.)`\warichu*`ではこれらの位置を手動で指定できます.書式は - -``\warichu*{(一行目前) & (一行目後)\\ (二行目前) & (二行目後)...}`` - +```` +\warichu*{(一行目前) & (一行目後)\\ (二行目前) & (二行目後)...} +```` です.`&`が省略されている場合は自動で調整されます. ### `\jlreqsetup` @@ -68,50 +71,55 @@ 設計はクラスオプションまたは`\jlreqsetup`によりkeyval形式で行います.以下では次の用法を使います. * `[A/B]`: AまたはBです.`[A/B/C]`等も同様. -* `<寸法>`: TeXが認識する寸法です.簡単な式(10pt+10ptのような)を使うこともできます.また,場合によっては次のような特殊な値を使うこともできます. - * `Q`: 0.25mmと解釈されます. - * `zh`, `zw`: 全角幅として解釈されます. - -たとえば`Q`が利用可能な場合は`<寸法;Q>`のように記述します. +* `<寸法>`: TeXが認識する寸法です.簡単な式(10pt+10ptのような)を使うこともできます.また,クラスオプションでは,場合によっては次のような特殊な値を使うこともできます.(これらはpLaTeX / upLaTeXではもとから利用可能ですが,LuaLaTeXでも利用可能なように処理されています.)`\jlreqsetup`内のような場所では,常に`\zw`や`\zh`により全角幅が記述できます.以下,たとえば`Q`が利用可能な場合は`<寸法;Q>`のように記述します. + - `Q`: 0.25mmと解釈されます. + - `zw`, `zh`: 全角幅として解釈されます. ### 基本版面 -すべてクラスファイルへのオプションです. +クラスオプションです. * `paper=[<紙サイズ名>/{<寸法>,<寸法>}]`:紙サイズです.紙サイズ名はa0からa10,b0からb10,c2からc8を指定できます.B列はJIS B列です.また,`{<縦>,<横>}`と直接寸法を指定することもできます. * `fontsize=<寸法;Q>` : フォントサイズ.デフォルトは10pt. * `line_length=<寸法;zw,zh>` : 一行の長さ.デフォルトは紙の縦幅の0.75倍.実際の値は一文字の長さの整数倍になるように補正されます. * `number_of_lines=<整数値>` : 一ページの行数.デフォルトは紙の横幅の0.75倍になるような値. -* `gutter=<寸法;zh,zw>` : のどの余白の大きさ. +* `gutter=<寸法;zw,zh>` : のどの余白の大きさ. - `tate`無指定時は奇数ページ左,偶数ページ右の余白 - `tate`指定時は奇数ページ右,偶数ページ左の余白 - `twoside`が指定されていない時は,常に奇数ページ扱いで余白が設定される -* `head_space=<寸法;zh,zw>` : 天の空き量.デフォルトは中央寄せになるような値. -* `foot_space=<寸法;zh,zw>` : 地の空き量.デフォルトは中央寄せになるような値. -* `baselineskip=<寸法;Q,zh,zw>` : 行送り.デフォルトはfontsizeの1.7倍. -* `linegap=<寸法;Q,zh,zw>` : 行間. +* `head_space=<寸法;zw,zh>` : 天の空き量.デフォルトは中央寄せになるような値. +* `foot_space=<寸法;zw,zh>` : 地の空き量.デフォルトは中央寄せになるような値. +* `baselineskip=<寸法;Q,zw,zh>` : 行送り.デフォルトはfontsizeの1.7倍. +* `linegap=<寸法;Q,zw,zh>` : 行間. * `headfoot_sidemargin=<寸法;zw,zh>`:柱やノンブルの左右の空き. * `column_gap=<寸法;zw,zh>`: 段間(twocolumn指定時のみ). ### 組み方 +クラスオプションです. * `open_bracket_pos=[zenkaku_tentsuki/zenkakunibu_nibu/nibu_tentsuki]`: 始め括弧が行頭に来た際の配置方法を指定します.それぞれ段落開始全角折り返し行頭天付き(デフォルト),段落開始全角二分折り返し行頭二分,段落開始二分折り返し行頭天付きを意味します. * `hanging_punctuation`: ぶら下げ組をします. ### 注関係 -* `reference_mark=[inline/interlinear]`: 合印の配置方法を指定します.`inline`にすると該当項目の後ろの行中に配置します.`interlinear`を指定すると該当項目の上(横組)または右(縦組)に配置します. -* `sidenote_type=[number/symbol]`: 傍注と本文との対応の方法を指定します.`number`が規定で,注の位置に通し番号が入り,それにより対応が示されます.`symbol`とすると,注の位置に特定の記号が入り,また注がついている単語が強調されます.ここに入る記号と単語の強調は`\jlreqsetup`に次を渡すことで指定します. +* `reference_mark=[inline/interlinear]`: 合印の配置方法を指定します.`inline`にすると該当項目の後ろの行中に配置します.`interlinear`を指定すると該当項目の上(横組)または右(縦組)に配置します.クラスオプションです. +* `sidenote_type=[number/symbol]`: クラスオプションです.傍注と本文との対応の方法を指定します.`number`が規定で,注の位置に通し番号が入り,それにより対応が示されます.`symbol`とすると,注の位置に特定の記号が入り,また注がついている単語が強調されます.ここに入る記号と単語の強調は`\jlreqsetup`に次を渡すことで指定します. - `sidenote_symbol`: 注の位置に入る記号.デフォルト* - `sidenote_keyword_font`: 注のついている単語のフォント命令.デフォルトは無し(強調しない) -* `sidenote_width=<寸法;zh,zw>`: 傍注の幅を指定します.基本版面の設定に合わせて設定してください. -* `endnote_position=[headings/paragraph/{_<見出し名1>,_<見出し名2>,...}]`:後注の出力場所を指定します.`headings`は各見出しの直前(デフォルト),`paragraph`は改段落の際に出力します.また,`endnote_position={_chapter,_section}`とすると,`\chapter`と`\section`の直前に出力します. +* `sidenote_width=<寸法;zw,zh>`: 傍注の幅を指定します.基本版面の設定に合わせて設定してください.クラスオプションです. +* `endnote_position=[headings/paragraph/{_<見出し名1>,_<見出し名2>,...}]`:後注の出力場所を指定します.`headings`は各見出しの直前(デフォルト),`paragraph`は改段落の際に出力します.また,`endnote_position={_chapter,_section}`とすると,`\chapter`と`\section`の直前に出力します.クラスオプションです. ### キャプション 図表のキャプションを`\jlreqsetup`で変更できます. * `caption_font=<命令>`: キャプション自身のフォントを指定します. * `caption_label_font=<命令>`: キャプションのラベルのフォントを指定します. +### 引用 +`quote / quotation / verse`環境の挙動をクラスオプションで指定できます. +* `quote_indent=<寸法;zw,zh>`: 字下げを指定します.デフォルトは2zwです.一行の長さが文字サイズの整数倍になるように調整されます. +* `quote_end_indent=<寸法;zw,zh>`: 字上げを指定します.デフォルトは0zwです. +* `quote_beforeafter_space=<寸法>`: 前後の空きを指定します.`quote_beforeafter_space=1\baselineskip`とすると一行あきます. +* `quote_fontsize=[normalsize/small/footnotesize/scriptsize/tiny]`: フォントサイズを指定します. ## 見出し 見出しの設定は,`\Declare***Heading`という命令で行います(***には見出しの種類に応じた文字列が入る).書式はすべて @@ -128,33 +136,49 @@ * `type=[han/naka]`: `han`だと半扉見出しを,`naka`だと中扉見出しを作ります. * `pagestyle=<ページスタイル>`: 見出し箇所のページスタイルを指定します. * `label_format=<書式>`: ラベルを出力する命令を指定します.たとえば`label_format={第\thechapter 章}`のように指定します. -* `format=<書式>`: 実際に出力する書式を指定します.`format={\null\vfill {\Huge\bfseries #1#2}}`のようにします.`#1`はラベルに,`#2`は見出し文字列に置き換えられます. +* `format=<書式>`: 実際に出力する書式を指定します.`format={\null\vfil {\Huge\bfseries #1#2}}`のようにします.`#1`はラベルに,`#2`は見出し文字列に置き換えられます. ### 別行見出し `\DeclareBlockHeading`で作成します.`\<命令名>*[running head]{見出し文字列}[副題]`という書式の命令を作成します.設定は以下の通り. +#### 書式関連 * `font=<命令>`: 見出しのフォントを指定します. -* `indent=<整数値>` 見出し全体の字下げ量を全角文字数で指定します. * `subtitle_font=<命令>`: 副題のフォントを指定します. +* `label_format=<命令>`: ラベルのフォーマットを指定します.`label_format={第\thechapter 章}`などのようにします. +* `subtitle_format=<命令>`: 副題のフォーマットを指定します.`subtitle_format={「#1」}`のようにします.`#1`が副題自身になります. + +#### インデント関連 +* `indent=<寸法/center>` 見出し全体の字下げ量を指定します.`indent=center`とすると見出しを中央寄せします. +* `end_indent=<寸法/center>`: 見出し全体の字上げ量を指定します.`end_indent=center`とすると見出しを中央寄せします. +* `after_label_space=<寸法>`: ラベル後,見出し文字列までの空きを指定します. +* `second_heading_text_indent=<寸法/{寸法,寸法}>`: 見出し文字列の二行目以降のインデントを指定します.一行目の頭を起点として指定しますが,`second_heading_text_indent=*1\zw`のように先頭に`*`をつけるとラベルの頭を起点としての指定になります.(ラベルがない時は一行目の頭が起点.)また,`second_heading_text_indent={<ラベルがある時>,<ラベルがない時>}`という指定をすると,ラベルの有無に応じて値を変更することができます.`<ラベルがある時>`の指定ではやはり`*`を使うことができます. +* `subtitle_indent=<寸法>`: 副題のインデント量を指定します.見出し文字列の一行目を起点として指定します. + +#### その他 +* `subtitle_break=`: 見出し文字列と副題の間を改行するか指定します. +* `allowbreak_if_evenpage=[true/false]`: 見出しが偶数ページにあった場合,その直後の改ページを許可します. * `pagebreak=[clearpage/cleardoublepage/clearcolumn/nariyuki]`: 見出し直前の改ページを指定します.それぞれ,改ページ,改丁,改段,なりゆきです. +* `afterindent=[true/false]`: 見出し直後の段落の字下げを行うかを指定します. -また,行取りの指定を行うことができます.次のいずれかの方法で行います. +#### 行取り +行取りの指定は以下のいずれかの方法で行うことができます. -* 行数を指定し,その中央に配置する.`lines=<整数値>`により行数を指定します.`before_lines=<整数値>`や`after_lines=<整数値>`により,さらに前後に追加する行数を指定します.たとえば`lines=3,after_lines=1`とすれば,四行の中に配置され,前の空きよりも後ろの空きの方が一行分大きくなります. -* 行数と,前後いずれかの空きを指定します.`lines=<整数値>`により行数を,`before_space=<寸法>`または`after_space=<寸法>`のいずれかの指定によりそれぞれ前またら後ろの空きを指定します. +* 行数を指定し,その中央に配置する.`lines=<整数値>`により行数を指定します.`before_lines=<整数値>`や`after_lines=<整数値>`により,さらに前後に追加する行数を指定します.たとえば`lines=3,after_lines=1`とすれば,四行の中に配置され,前の空きよりも後ろの空きの方が一行分大きくなります.`before_lines`により指定された空きは,ページ頭には入りませんが,`before_lines=*1`というように`*`を先頭につけると常に入るようになります. +* 行数と,前後いずれかの空きを指定します.`lines=<整数値>`により行数を,`before_space=<寸法>`または`after_space=<寸法>`のいずれかの指定によりそれぞれ前または後ろの空きを指定します. * 前後の空きを指定します.`before_space=<寸法>`および`after_space=<寸法>`を指定します. ### 同行見出し -`\DeclareRuninHeading`で作成します.`\section`と同様の書式の命令が作成されます.設定は以下の通り. +`\DeclareRuninHeading`で作成します.通常の文書クラスにおける`\section`と同様の,`\<命令名>*[running head]{見出し文字列}`という書式の命令が作成されます.設定は以下の通り. * `font=<命令>`: 見出しのフォントを指定します. -* `indent=<整数値>` 見出し文字列全体の字下げ量を全角文字数で指定します. +* `indent=<寸法>` 見出し文字列全体の字下げ量を指定します. ### 窓見出し `\DeclareCutinHeading`で作成します.`\<命令名>{見出し文字列}`という書式の命令を作成します.設定は以下の通り. * `font=<命令>`: 見出しのフォントを指定します. -* `indent=<整数値>`: 見出し全体の字下げ量を全角文字数で指定します. +* `indent=<寸法>`: 見出し全体の字下げ量を指定します. +* `after_space=<寸法>`: 見出しと本文との間の空きを指定します. * `onelinemax=<寸法>`, `twolinemax=<寸法>`: 見出し文字列の長さが`onelinemax`以下ならば一行で,`twolinemax`以下ならば二行で窓見出しを出力します.それ以上の場合は三行です.デフォルトはそれぞれ6文字,20文字の長さ. ### `\ModifyHeading` @@ -164,8 +188,17 @@ ```` とすると,`\section`のフォントなどの設定はそのままに,行取りのみが10行に変更されます.見出しの種類を変更することはできません. -## ページスタイル +### `\SaveHeading` +見出し命令の定義を待避します. +```` +\SaveHeading{section}{\restoresection} % \sectionの中身を\restoresectionに待避. +\RenewBlockHeading{section}{1}{font=……} % \sectionを新しく定義する. +…… +\restoresection % \sectionの中身を元に戻す. +```` +のように使います. +## ページスタイル ```` \DeclarePageStyle{<ページスタイル名>}{<設定>} ```` @@ -191,3 +224,10 @@ - クラスオプション/`\jlreqsetup`にいくつかのキーを追加/変更. - `abstract`環境を実装. - パッケージを読み込んでいるだけのはやめた. +* 2017-03-14 + - いくつかバグを修正. + - 和文ファミリを欧文ファミリに従属させるようにした. + - `\DeclareBlockHeading`にオプションをたくさん追加. + - quote環境などを調整するオプションを追加. + + diff --git a/Master/texmf-dist/doc/latex/jlreq/README.html b/Master/texmf-dist/doc/latex/jlreq/README.html index 761d89b199f..d801119975a 100644 --- a/Master/texmf-dist/doc/latex/jlreq/README.html +++ b/Master/texmf-dist/doc/latex/jlreq/README.html @@ -1,14 +1,49 @@ - - + + - - - + + + - + + + + +

    jlreq

    What is this?

    This package provides the class file and JFM (Japanese font metric) files for LuaTeX-ja / pLaTeX / upLaTeX. This aims to implement Requirements for Japanese Text Layout.

    @@ -38,6 +73,14 @@
  • Change/Add some keys to class option/\jlreqsetup
  • Stop to load pxrubirica, luatexja-ruby and nidanfloat.
  • +
  • 2017-03-14 +
      +
    • Fix bugs.
    • +
    • \sffamily etc. also change the Japanese font family.
    • +
    • Add many options to \DeclareBlockHeading.
    • +
    • Some options related to quote environment etc.
    • +
  • +
    diff --git a/Master/texmf-dist/doc/latex/jlreq/README.md b/Master/texmf-dist/doc/latex/jlreq/README.md index 17b4df62d9e..ab9fb6be804 100644 --- a/Master/texmf-dist/doc/latex/jlreq/README.md +++ b/Master/texmf-dist/doc/latex/jlreq/README.md @@ -27,3 +27,8 @@ This package is distributed under the BSD 2-Clause License. See [LICENSE](LICENS - Implement `abstract` environment. - Change/Add some keys to class option/`\jlreqsetup` - Stop to load `pxrubirica`, `luatexja-ruby` and `nidanfloat`. +* 2017-03-14 + - Fix bugs. + - `\sffamily` etc. also change the Japanese font family. + - Add many options to `\DeclareBlockHeading`. + - Some options related to `quote` environment etc. diff --git a/Master/texmf-dist/tex/latex/jlreq/jlreq.cls b/Master/texmf-dist/tex/latex/jlreq/jlreq.cls index f0dd59e52db..a47d9d89f88 100644 --- a/Master/texmf-dist/tex/latex/jlreq/jlreq.cls +++ b/Master/texmf-dist/tex/latex/jlreq/jlreq.cls @@ -3,9 +3,9 @@ %% The package is distributed under the BSD 2-Clause License %% %% -% (based on JLREQ 20120403 https://www.w3.org/TR/2012/NOTE-jlreq-20120403/ja/) +% (based on JLReq 20120403 https://www.w3.org/TR/2012/NOTE-jlreq-20120403/ja/) \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{jlreq}[2017/02/17 jlreq] +\ProvidesClass{jlreq}[2017/03/14 jlreq] \RequirePackage{xkeyval,everyhook,filehook,etoolbox,ifthen} %. helper1 @@ -24,6 +24,7 @@ % 計算結果を返すための変数 \newdimen\jlreq@resultdimen \newbox\jlreq@resultbox +\newif\ifjlreq@result \def\jlreq@uniqtoken{\jlreq@uniqtoken} \def\jlreq@endmark{\jlreq@endmark} @@ -35,8 +36,12 @@ \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か +\long\def\jlreq@iffirsttoken#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{\expandafter\expandafter\expandafter\ifx\jlreq@getfirsttoken#1{}\jlreq@uniqtoken\jlreq@endmark\jlreq@endmark\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi} +\long\def\jlreq@ifendmark#1{\jlreq@iffirsttoken{#1}{\jlreq@endmark}} % @removeelementの括弧があっても動くかもしれない版 % 次の変数を使う:\jlreq@tempa:消したいやつ,\jlreq@tempb:今処理している部分. @@ -186,15 +191,15 @@ \@tempa } \long\def\jlreq@helper@parsekeyval@@@choicekey#1#2[#3]#4{% - \define@choicekey{#1}{#2}{#3}{\appto\jlreq@do{#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}[]{\appto\jlreq@do{#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}{\appto\jlreq@do{#3}}% + \define@key{#1}{#2}{\eappto\jlreq@do{\unexpanded{#3}}}% \jlreq@helper@parsekeyval@@@{#1}% } @@ -272,6 +277,19 @@ \jlreq@preambletrue \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 +\newcount\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}% +} + %. オプションの定義 % オプション処理の際にしか使わない変数(後でそれを元に別の変数を調整する) % ものは\jlreq@option@に格納する. @@ -342,28 +360,28 @@ % 追加 \jlreq@addpapersize[a0]{}{1189mm}{841mm} \jlreq@addpapersize[a1]{}{841mm}{594mm} -\jlreq@addpapersize[a2]{}{420mm}{594mm} -\jlreq@addpapersize[a7]{}{74mm}{105mm} -\jlreq@addpapersize[a8]{}{52mm}{74mm} -\jlreq@addpapersize[a9]{}{37mm}{52mm} -\jlreq@addpapersize[a10]{}{26mm}{37mm} - -\jlreq@addpapersize[b0]{}{1030mm}{1456mm} -\jlreq@addpapersize[b1]{}{728mm}{1030mm} -\jlreq@addpapersize[b2]{}{515mm}{728mm} -\jlreq@addpapersize[b3]{}{364mm}{515mm} -\jlreq@addpapersize[b7]{}{91mm}{128mm} -\jlreq@addpapersize[b8]{}{64mm}{91mm} -\jlreq@addpapersize[b9]{}{45mm}{64mm} -\jlreq@addpapersize[b10]{}{32mm}{45mm} - -\jlreq@addpapersize[c2]{}{458mm}{648mm} -\jlreq@addpapersize[c3]{}{324mm}{458mm} -\jlreq@addpapersize[c4]{}{229mm}{354mm} -\jlreq@addpapersize[c5]{}{162mm}{229mm} -\jlreq@addpapersize[c6]{}{114mm}{162mm} -\jlreq@addpapersize[c7]{}{81mm}{114mm} -\jlreq@addpapersize[c8]{}{57mm}{81mm} +\jlreq@addpapersize[a2]{}{594mm}{420mm} +\jlreq@addpapersize[a7]{}{105mm}{74mm} +\jlreq@addpapersize[a8]{}{74mm}{52mm} +\jlreq@addpapersize[a9]{}{52mm}{37mm} +\jlreq@addpapersize[a10]{}{37mm}{26mm} + +\jlreq@addpapersize[b0]{}{1456mm}{1030mm} +\jlreq@addpapersize[b1]{}{1030mm}{728mm} +\jlreq@addpapersize[b2]{}{728mm}{515mm} +\jlreq@addpapersize[b3]{}{515mm}{364mm} +\jlreq@addpapersize[b7]{}{128mm}{91mm} +\jlreq@addpapersize[b8]{}{91mm}{64mm} +\jlreq@addpapersize[b9]{}{64mm}{45mm} +\jlreq@addpapersize[b10]{}{45mm}{32mm} + +\jlreq@addpapersize[c2]{}{648mm}{458mm} +\jlreq@addpapersize[c3]{}{458mm}{324mm} +\jlreq@addpapersize[c4]{}{354mm}{229mm} +\jlreq@addpapersize[c5]{}{229mm}{162mm} +\jlreq@addpapersize[c6]{}{162mm}{114mm} +\jlreq@addpapersize[c7]{}{114mm}{81mm} +\jlreq@addpapersize[c8]{}{81mm}{57mm} %.. フォントサイズ,行長,1ページあたりの行数で基本版面のサイズを決める(2.4.1.a) \newcommand*{\jlreq@option@fontsize}{} @@ -422,8 +440,8 @@ % 脚注の字下げ,一行目を下げるならばone,二行目以降ならばtwo.ちょっと酷いので後で考える. \newcommand*{\jlreq@footnotetext@indent}{one} \define@choicekey{jlreq.cls}{footnotetext_indent}{one,two}{\renewcommand*{\jlreq@footnotetext@indent}{#1}} -% 後注をどこに配置するか._headings(全ての見出し),_paragraph(段落後),_で始まらないやつ(その名前の見出し).カンマ区切り -\newcommand*{\jlreq@endnote@position}{_headings} +% 後注をどこに配置するか.headings(全ての見出し),paragraph(段落後),_で始まるやつ(その名前の見出し).カンマ区切り +\newcommand*{\jlreq@endnote@position}{headings} \DeclareOptionX{endnote_position}{\renewcommand*{\jlreq@endnote@position}{#1}} % 傍注のタイプ \newcommand*{\jlreq@sidenote@type}{number} @@ -431,6 +449,18 @@ \newcommand*{\jlreq@option@sidenote@width}{} \DeclareOptionX{sidenote_width}{\renewcommand*{\jlreq@option@sidenote@width}{#1}} +%.. 引用 +\def\jlreq@quote@indent{2zw} +\DeclareOptionX{quote_indent}{\def\jlreq@quote@indent{#1}} +\def\jlreq@quote@end@indent{0zw} +\DeclareOptionX{quote_end_indent}{\def\jlreq@quote@end@indent{#1}} +\def\jlreq@quote@fontsize{normalsize} +\define@choicekey{jlreq.cls}{quote_fontsize}{normalsize,small,footnotesize,scriptsize,tiny}{\def\jlreq@quote@fontsize{#1}} +\def\jlreq@quote@beforeafter@space{0pt} +\DeclareOptionX{quote_beforeafter_space}{\def\jlreq@quote@beforeafter@space{#1}} + + +%.. もろもろ \newif\if@restonecol \@restonecolfalse \newif\if@titlepage \@titlepagefalse \newif\ifjlreq@option@titlepage \jlreq@option@titlepagefalse % titlepageかnotitlepageかが指定された @@ -445,9 +475,8 @@ \tombowtrue \tombowdatefalse \setlength{\@tombowwidth}{\z@}% \maketombowbox} -\jlreq@DeclareOption{tate}{\@tatetrue - \AtBeginDocument{\tate\message{\jlreq@tategumi@message}\adjustbaseline}% -} +\jlreq@DeclareOption{tate}{\@tatetrue} + \newif\ifjlreq@option@twoside\jlreq@option@twosidefalse % onesideかtwosideが指定された \jlreq@DeclareOption{oneside}{\@twosidefalse\@mparswitchfalse\jlreq@option@twosidetrue} \jlreq@DeclareOption{twoside}{\@twosidetrue\@mparswitchtrue\jlreq@option@twosidetrue} @@ -465,7 +494,7 @@ \jlreq@DeclareOption{fleqn}{\input{fleqn.clo}} \newcommand*{\jlreq@warning}[1]{} -\jlreq@DeclareOption{jlreq_warnings}{\renewcommand*{\jlreq@warning}[1]{\ClassWarningNoLine{jlreq}{(JLREQ warning) ##1}}} +\jlreq@DeclareOption{jlreq_warnings}{\renewcommand*{\jlreq@warning}[1]{\ClassWarningNoLine{jlreq}{(JLReq warning) ##1}}} \ExecuteOptionsX{article_type=article,paper=a4,fontsize=10pt,open_bracket_pos=zenkaku_tentsuki,reference_mark=inline,footnotetext_indent=one,endnote_position=headings,onecolumn,final} % \@removeelementを一旦置き換えてから\ProcessOptionsXを実行する @@ -524,7 +553,9 @@ % http://oku.edu.mie-u.ac.jp/tex/mod/forum/discuss.php?d=1508&parent=8435 \if@tate\AtEndPreamble{\par}\fi \fi -\def\jlreq@tategumi@message{《縦組モード》} +\if@tate + \AtBeginDocument{\tate\message{《縦組モード》}\adjustbaseline} +\fi % \jlreq@gol(Gyo Okuri Length), \jlreq@mol (Moji Okuri Length)を定義 \if@tate @@ -560,15 +591,11 @@ \fi % 現在行の残りを得る. -\RequirePackage[savepos]{zref} -\newcount\jlreq@rest@linewidth@count -\jlreq@rest@linewidth@count=0 - \ifx l\jlreq@engine % 以下のコードはおかしい. \newcommand*{\jlreq@calc@current@linewidth}{% - \dimexpr\zposx{jlreq@rest@width.pos.\the\jlreq@rest@linewidth@count} sp - \@totalleftmargin - - \ifodd\zref@extractdefault{jlreq@rest@width.page.\the\jlreq@rest@linewidth@count}{page}{\c@page}% + \dimexpr\zposx{jlreq@rest@width.pos.\the\jlreq@zref@reference@count} sp - \@totalleftmargin - + \ifodd\jlreq@currentpage \oddsidemargin \else \evensidemargin @@ -579,8 +606,8 @@ \newcommand*{\jlreq@calc@current@linewidth}{% \dimexpr \jlreq@ifydir{% - \zposx{jlreq@rest@width.pos.\the\jlreq@rest@linewidth@count} sp - \hoffset - \ifodd\zref@extractdefault{jlreq@rest@width.page.\the\jlreq@rest@linewidth@count}{page}{\c@page}% + \zposx{jlreq@rest@width.pos.\the\jlreq@zref@reference@count} sp - \hoffset + \ifodd\jlreq@currentpage - \oddsidemargin \else - \evensidemargin @@ -592,7 +619,7 @@ \pdfpageheight \fi - \topmargin - \headheight - \headsep - \voffset - - \zposy{jlreq@rest@width.pos.\the\jlreq@rest@linewidth@count} sp + - \zposy{jlreq@rest@width.pos.\the\jlreq@zref@reference@count} sp }% - \@totalleftmargin - 1in \relax @@ -604,13 +631,13 @@ % この命令以降,次にこの命令を実行する前まで\jlreq@rest@linewidth/\jlreq@rest@linewidthで % この場所における残り長さが取得できる. \newcommand*{\jlreq@savepos@for@rest@linewidth}{% - \global\advance\jlreq@rest@linewidth@count by 1\relax - \zsavepos{jlreq@rest@width.pos.\the\jlreq@rest@linewidth@count}% - \zref@labelbyprops{jlreq@rest@width.page.\the\jlreq@rest@linewidth@count}{page}% - \jlreq@current@linewidth=\jlreq@calc@current@linewidth - \jlreq@rest@linewidth=\dimexpr\linewidth - \jlreq@current@linewidth\relax + \jlreq@setcurrentpage + \global\advance\jlreq@zref@reference@count by 1\relax + \zsavepos{jlreq@rest@width.pos.\the\jlreq@zref@reference@count}% + \global\jlreq@current@linewidth=\jlreq@calc@current@linewidth + \global\jlreq@rest@linewidth=\dimexpr\linewidth - \jlreq@current@linewidth\relax + \edef\jlreq@savepos@iflabelundefined{\noexpand\zref@ifrefundefined{jlreq@rest@width.pos.\the\jlreq@zref@reference@count}}% } -\def\jlreq@savepos@iflabelundefined{\@ifundefined{\ZREF@RefPrefix @jlreq@rest@width.pos.\the\jlreq@rest@linewidth@count}} %. 基本設定 % 和文文字,欧文文字の設定(とりあえずLuaTeX-jaのデフォルトのまま) @@ -904,12 +931,11 @@ %.. フォント関連 \newdimen\jlreq@fontsize \ifx l\jlreq@engine - \jlreq@tempdima=0.25mm \setlength{\jlreq@fontsize}{% \dimexpr\directlua{ local act = string.char(92) local s = [[\jlreq@option@fontsize]] - s = s:gsub("Q",act .. "jlreq@tempdima") + s = s:gsub("Q",act .. "dimexpr 0.25mm" .. act .. "relax") tex.print(s) }\relax }% @@ -917,38 +943,6 @@ \setlength{\jlreq@fontsize}{\dimexpr\jlreq@option@fontsize\relax} \fi -% JFMに関連する設定 -\ifx l\jlreq@engine - % この値は後でjfm-jlreq内で読む - \directlua{jlreq.open_bracket_pos = [[\jlreq@open@bracket@pos]]} - \ifjlreq@burasage\directlua{jlreq.burasage = true} - \else\directlua{jlreq.burasage = false}\fi -\else - % 非LuaTeXの場合はJFMの入れ替えと\everyparでの処理で対処. - \def\jlreq@jfmname@prefix{} - \def\jlreq@openbreackets@list{(〔[{〈《「『【} - \ifx u\jlreq@engine\edef\jlreq@openbreackets@list{\jlreq@openbreackets@list {⦅〘〖«〝‘“}}\fi - % \jlreq@jfmnameにJFMの名前を入れる - \ifjlreq@burasage\edef\jlreq@jfmname@prefix{b\jlreq@jfmname@prefix}\fi - \ifthenelse{\equal{\jlreq@open@bracket@pos}{zenkakunibu_nibu}}{\edef\jlreq@jfmname@prefix{\jlreq@jfmname@prefix z}}{} - \ifx u\jlreq@engine\edef\jlreq@jfmname@prefix{u\jlreq@jfmname@prefix}\fi - \edef\jlreq@jfmname{\jlreq@jfmname@prefix jlreq} - \edef\jlreq@jfmnameg{\jlreq@jfmname@prefix jlreqg} - % JFM glueの伸び縮みで行頭括弧が揃わないのを防ぐために常に\inhibitglueを入れる. - \ifthenelse{\equal{\jlreq@open@bracket@pos}{nibu_tentsuki}}{ - \def\jlreq@openbracket@hook{\jlreq@ifintokenlist{\jlreq@nextchar}{\jlreq@openbreackets@list}{\hskip -.5\jlreq@mol\inhibitglue}{}} - }{% zenkakunibu_nibu,zenkaku_tentsuki - \def\jlreq@openbracket@hook{\jlreq@ifintokenlist{\jlreq@nextchar}{\jlreq@openbreackets@list}{\inhibitglue}{}} - } - \AtBeginDocument{\PushPostHook{par}{\futurelet\jlreq@nextchar\jlreq@openbracket@hook}} -\fi -% 開き括弧の幅が全角の場合は,ベタ組にするために補正が必要 -\ifthenelse{\equal{\jlreq@open@bracket@pos}{zenkakunibu_nibu}}{ - \def\jlreq@open@bracket@before@space{\hskip -.5\jlreq@mol} -}{ - \def\jlreq@open@bracket@before@space{} -} - %. フォント \RequirePackage{lmodern} @@ -989,6 +983,38 @@ \DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal} %.. 和文 +% JFMに関連する設定 +\ifx l\jlreq@engine + % この値は後でjfm-jlreq内で読む + \directlua{jlreq.open_bracket_pos = [[\jlreq@open@bracket@pos]]} + \ifjlreq@burasage\directlua{jlreq.burasage = true} + \else\directlua{jlreq.burasage = false}\fi +\else + % 非LuaTeXの場合はJFMの入れ替えと\everyparでの処理で対処. + \def\jlreq@jfmname@prefix{} + \def\jlreq@openbreackets@list{(〔[{〈《「『【} + \ifx u\jlreq@engine\edef\jlreq@openbreackets@list{\jlreq@openbreackets@list {⦅〘〖«〝‘“}}\fi + % \jlreq@jfmnameにJFMの名前を入れる + \ifjlreq@burasage\edef\jlreq@jfmname@prefix{b\jlreq@jfmname@prefix}\fi + \ifthenelse{\equal{\jlreq@open@bracket@pos}{zenkakunibu_nibu}}{\edef\jlreq@jfmname@prefix{\jlreq@jfmname@prefix z}}{} + \ifx u\jlreq@engine\edef\jlreq@jfmname@prefix{u\jlreq@jfmname@prefix}\fi + \edef\jlreq@jfmname{\jlreq@jfmname@prefix jlreq} + \edef\jlreq@jfmnameg{\jlreq@jfmname@prefix jlreqg} + % JFM glueの伸び縮みで行頭括弧が揃わないのを防ぐために常に\inhibitglueを入れる. + \ifthenelse{\equal{\jlreq@open@bracket@pos}{nibu_tentsuki}}{ + \def\jlreq@openbracket@hook{\jlreq@ifintokenlist{\jlreq@nextchar}{\jlreq@openbreackets@list}{\hskip -.5\jlreq@mol\inhibitglue}{}} + }{% zenkakunibu_nibu,zenkaku_tentsuki + \def\jlreq@openbracket@hook{\jlreq@ifintokenlist{\jlreq@nextchar}{\jlreq@openbreackets@list}{\inhibitglue}{}} + } + \AtBeginDocument{\PushPostHook{par}{\futurelet\jlreq@nextchar\jlreq@openbracket@hook}} +\fi +% 開き括弧の幅が全角の場合は,ベタ組にするために補正が必要 +\ifthenelse{\equal{\jlreq@open@bracket@pos}{zenkakunibu_nibu}}{ + \def\jlreq@open@bracket@before@space{\hskip -.5\jlreq@mol} +}{ + \def\jlreq@open@bracket@before@space{} +} + \ifx l\jlreq@engine \RequirePackage{luatexja-adjust} \ltjenableadjust[lineend=extended,priority=true] @@ -996,14 +1022,14 @@ \ltjsetparameter{shrink_priority={kanjiskip=0,xkanjiskip=0}} \fi -\ifx u\jlreq@engine - \def\jlreq@yokokanjiencoding{JY2} - \def\jlreq@tatekanjiencoding{JT2} -\fi \ifx p\jlreq@engine \def\jlreq@yokokanjiencoding{JY1} \def\jlreq@tatekanjiencoding{JT1} \fi +\ifx u\jlreq@engine + \def\jlreq@yokokanjiencoding{JY2} + \def\jlreq@tatekanjiencoding{JT2} +\fi \ifx l\jlreq@engine \def\jlreq@yokokanjiencoding{JY3} \def\jlreq@tatekanjiencoding{JT3} @@ -1040,6 +1066,17 @@ \DeclareFontShape{\jlreq@tatekanjiencoding}{mc}{bx}{it}{<->ssub*gt/m/n}{} \DeclareFontShape{\jlreq@tatekanjiencoding}{mc}{bx}{sl}{<->ssub*gt/m/n}{} +% 和文ファミリと欧文ファミリの連動 +\DeclareRobustCommand\rmfamily{% + \not@math@alphabet\rmfamily\mathrm + \romanfamily\rmdefault\kanjifamily\mcdefault\selectfont} +\DeclareRobustCommand\sffamily{% + \not@math@alphabet\sffamily\mathsf + \romanfamily\sfdefault\kanjifamily\gtdefault\selectfont} +\DeclareRobustCommand\ttfamily{% + \not@math@alphabet\ttfamily\mathtt + \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont} + % 数式フォント設定 \ifx l\jlreq@engine\else \DeclareSymbolFont{mincho}{\jlreq@yokokanjiencoding}{mc}{m}{n} @@ -1061,12 +1098,11 @@ \setlength{\jlreq@baselineskip}{\dimexpr 17\jlreq@fontsize/10\relax}% \else \ifx l\jlreq@engine - \jlreq@tempdima=0.25mm \setlength{\jlreq@baselineskip}{% \dimexpr\directlua{ local act = string.char(92) local s = [[\jlreq@option@baselineskip]] - s = s:gsub("Q",act .. "jlreq@tempdima"):gsub("zh",act .. "zh"):gsub("zw",act .. "zw") + s = s:gsub("Q",act .. "dimexpr 0.25mm" .. act .. "relax"):gsub("zh",act .. "zh"):gsub("zw",act .. "zw") tex.print(s) }\relax }% @@ -1367,11 +1403,11 @@ {label_format}{\def\jlreq@label@format{##1}} {format}{\def\jlreq@format####1####2{##1}} {pagestyle}{\def\jlreq@pagestyle{##1}} - {type}[han,naka]{ + {type}[han,naka]{% \jlreq@switch{##1}{ {han}{\def\jlreq@heading@clearpage{\clearpage}} {naka}{\def\jlreq@heading@clearpage{\cleardoublepage}} - } + }% } }{#3}% \ifx\jlreq@format\@undefined @@ -1390,7 +1426,7 @@ }% }{}% \edef\jlreq@do{% - \expandonce{\jlreq@addtodo}% + \expandonce{\jlreq@addtodo}% \noexpand\def\expandonce{\csname jlreq@TobiraHeading@start@#1\endcsname}[####1]####2{% \unexpanded{\ifnum#2>\c@secnumdepth\else}% \unexpanded{\refstepcounter{#1}}% @@ -1432,12 +1468,12 @@ } %.. 別行見出し -% \jlreq@startBlockHeading{1 = 命令名}{2 = レベル}{3 = 字下げ}{4 = 前空き}{5 = 後ろ空き}{6 = トータル行数}{7 = フォーマット関連}*{見出し}[副題] +% \jlreq@startBlockHeading{1 = 命令名}{2 = レベル}{3 = スペース関連}{4 = フォーマット関連}*{見出し}[副題] % 字下げはa:**だと追加する値(ページ行頭には入らない),s:**も追加だがページ行頭でも入る, % r:**だとその値に強制する. -\newcommand{\jlreq@startBlockHeading}[7]{% - \edef\jlreq@startBlockHeading@format{\unexpanded{#7}}% - \jlreq@startBlockHeading@{#1}{#2}{{#3}{#4}{#5}{#6}}% +\newcommand{\jlreq@startBlockHeading}[4]{% + \edef\jlreq@startBlockHeading@format{\unexpanded{#4}}% + \jlreq@startBlockHeading@{#1}{#2}{#3}% } % {1 = 命令}{2 = レベル}{3 = スペース関連} \newcommand{\jlreq@startBlockHeading@}[3]{% @@ -1448,37 +1484,42 @@ \@ifnextchar[{\jlreq@startBlockHeading@@@{#1}{#2}{#3}{#4}{#5}{#6}}{\jlreq@startBlockHeading@@@{#1}{#2}{#3}{#4}{#5}{#6}[]}% } -% {1 = レベル}{2 = ラベルフォーマット}{3 = 本体フォーマット}{4 = 副題フォーマット}{5 = *}{6 = 見出し}{7 = 副題} -\long\def\jlreq@startBlockHeading@setformat#1#2#3#4#5#6#7{% +% {1 = ラベルフォーマット}{2 = 見出し文字列フォーマット}{3 = 見出し文字列フォーマット(ラベル無し)}{4 = 副題フォーマット}{5 = 副題フォーマット(ラベル無し)}{6 = 全体フォーマット}{7 = *}{8 = 見出し}{9 = 副題} +\long\def\jlreq@startBlockHeading@setformat#1#2#3#4#5#6#7#8#9{% % \jlreq@tempaに{ラベル}{見出し}{副題}という形のものを入れる - \ifnum0\jlreq@ifempty{#5}{}{1}\ifnum #1>\c@secnumdepth 1\fi>0 - \def\jlreq@tempa{{}{#6}}% - \else - \def\jlreq@tempa{{#2}{#6}}% - \fi \jlreq@ifempty{#7}{% - \appto\jlreq@tempa{{}}% + % ラベルあり + \def\jlreq@tempa{#1}% + \long\def\jlreq@tempb##1{#2}% + \jlreq@ifempty{#9}{\def\jlreq@tempc##1{}}{\long\def\jlreq@tempc##1{#4}}% }{% - \long\def\jlreq@tempb##1{#4}% - \expandafter\appto\expandafter\jlreq@tempa\expandafter{\expandafter{\jlreq@tempb{#7}}}% + \def\jlreq@tempa{}% + \long\def\jlreq@tempb##1{#3}% + \jlreq@ifempty{#9}{\def\jlreq@tempc##1{}}{\long\def\jlreq@tempc##1{#5}}% }% - \long\def\jlreq@tempb##1##2##3{#3}% + \edef\jlreq@tempa{{\expandonce{\jlreq@tempa}}{\expandonce{\jlreq@tempb{#8}}}{\expandonce{\jlreq@tempc{#9}}}}% + \long\def\jlreq@tempb##1##2##3{#6}% \edef\jlreq@tempa{\unexpanded{\expandafter\def\expandafter\jlreq@result\expandafter}{\noexpand\jlreq@tempb\expandonce{\jlreq@tempa}}}% \jlreq@tempa } % {1 = 命令}{2 = レベル}{3 = スペース関連}{4 = *}{5 = running head}{6 = 見出し}[7 = 副題] \def\jlreq@startBlockHeading@@@#1#2#3#4#5#6[#7]{% - \ifnum0\jlreq@ifempty{#4}{}{1}\ifnum #2>\c@secnumdepth 1\fi>0\else + \ifnum0\jlreq@ifempty{#4}{}{1}\ifnum #2>\c@secnumdepth 1\fi>0 + \def\jlreq@tempb{*}% + \else \refstepcounter{#1}% + \def\jlreq@tempb{}% \fi % 後で呼び出す\jlreq@startBlockHeading@addtocontentslineを定義する - \long\def\jlreq@tempa##1##2##3{\def\jlreq@tempa{##1}}% + \long\def\jlreq@tempa##1##2##3##4##5##6##7{% + \def\jlreq@tempa{##1}% 素のラベルのフォーマットを取り出す + \edef\jlreq@tempb{\unexpanded{{##2}{##3}{##4}{##5}{##6}{##7}}{\expandonce{\jlreq@tempb}}}% 残り + }% \expandafter\jlreq@tempa\jlreq@startBlockHeading@format \edef\jlreq@startBlockHeading@addtocontentsline{% \expandonce{\csname jlreq@heading@maketoc@#1\endcsname}{\unexpanded{#4}}{\expandonce{\jlreq@tempa}}{\unexpanded{#5}}% }% - \def\jlreq@do{\jlreq@startBlockHeading@setformat{#2}}% - \expandafter\jlreq@do\jlreq@startBlockHeading@format{#4}{#6}{#7}% + \expandafter\jlreq@startBlockHeading@setformat\jlreq@tempb{#6}{#7}% \def\jlreq@do{\jlreq@startBlockHeading@@@@#3}% \expandafter\jlreq@do\expandafter{\jlreq@result}% } @@ -1494,26 +1535,33 @@ }% } -% {1 = 字下げ}{2 = 前空き}{3 = 後ろ空き}{4 = トータル行数}{5 = 出力} -\long\def\jlreq@startBlockHeading@@@@#1#2#3#4#5{% +% {1 = 字下げ}{2 = 字上げ}{3 = 前空き}{4 = 後ろ空き}{5 = トータル行数}{6 = afterindent}{7 = 偶数ページ改ページ}{8 = 出力} +\long\def\jlreq@startBlockHeading@@@@#1#2#3#4#5#6#7#8{% \if@noskipsec\leavevmode\fi - \setbox\jlreq@tempboxa=\vbox{% - \jlreq@ifempty{#1}{}{\hsize=\dimexpr\hsize - #1\relax}% - \noindent #5}% \par - \@afterindenttrue + \jlreq@ifempty{#7}{}{\jlreq@setcurrentpage}% + \setbox\jlreq@tempboxa=\vbox{\noindent + \jlreq@tempafalse % 中央寄せするか + \ifthenelse{\equal{#1}{center}}{\jlreq@tempatrue}{% + \jlreq@ifempty{#1}{}{\hsize=\dimexpr\hsize - #1\relax}% + }% + \ifthenelse{\equal{#2}{center}}{\jlreq@tempatrue}{% + \jlreq@ifempty{#2}{}{\hsize=\dimexpr\hsize - #2\relax}% + }% + \ifjlreq@tempa\hfil\fi + #8}% % \jlreq@tempskip(a/b)に前/後ろに入れるべき値を入れる - % #2がa:ならばその値は\jlreq@tempskipaには入れず\jlreq@tempskipcに入れておく + % #3がa:ならばその値は\jlreq@tempskipaには足さず\jlreq@tempskipcに入れておく \jlreq@tempskipc=0pt - \jlreq@startBlockHeading@analyzespace#2:\jlreq@endmark + \jlreq@startBlockHeading@analyzespace#3:\jlreq@endmark \setbox\jlreq@tempboxb=\vbox{ }% - \jlreq@ifempty{#4}{% + \jlreq@ifempty{#5}{% \ifx\jlreq@startBlockHeading@space\@empty\else \jlreq@tempskipa=\glueexpr\jlreq@startBlockHeading@space\relax \fi \jlreq@tempskipb=0pt\relax }{% - \jlreq@tempskipb=\glueexpr(\baselineskip*(#4 + 1) - \ht\jlreq@tempboxb - \dp\jlreq@tempboxb - \ht\jlreq@tempboxa - \dp\jlreq@tempboxa)/2\relax + \jlreq@tempskipb=\glueexpr(\baselineskip*(#5 + 1) - \ht\jlreq@tempboxb - \dp\jlreq@tempboxb - \ht\jlreq@tempboxa - \dp\jlreq@tempboxa)/2\relax \ifx\jlreq@startBlockHeading@space\@empty \jlreq@tempskipa=\jlreq@tempskipb \else @@ -1526,7 +1574,7 @@ \fi \ifx r\jlreq@startBlockHeading@spacetype \jlreq@tempskipa=\glueexpr\jlreq@startBlockHeading@space\relax% - \jlreq@tempskipb=\glueexpr(\baselineskip*(#4 + 1) - \ht\jlreq@tempboxb - \dp\jlreq@tempboxb - \ht\jlreq@tempboxa - \dp\jlreq@tempboxa) - \jlreq@startBlockHeading@space\relax + \jlreq@tempskipb=\glueexpr(\baselineskip*(#5 + 1) - \ht\jlreq@tempboxb - \dp\jlreq@tempboxb - \ht\jlreq@tempboxa - \dp\jlreq@tempboxa) - \jlreq@startBlockHeading@space\relax \fi \fi }% @@ -1537,14 +1585,16 @@ \setbox\jlreq@tempboxa=\vbox{% \ifdim\jlreq@tempskipa=0pt\else\vskip\jlreq@tempskipa\fi \noindent - \jlreq@ifempty{#1}{}{\hskip #1}% - \box\jlreq@tempboxa\nopagebreak}% + \ifthenelse{\equal{#1}{center}}{}{\jlreq@ifempty{#1}{}{\hskip #1}}% + \box\jlreq@tempboxa}% \dp\jlreq@tempboxa=\dimexpr\dp\jlreq@tempboxa + \ht\jlreq@tempboxa\relax \ht\jlreq@tempboxa=0pt +% \showbox\jlreq@tempboxa \box\jlreq@tempboxa - \par\nobreak + \par + \jlreq@ifempty{#7}{\ifodd\jlreq@currentpage\nobreak\fi}{\nobreak}% \prevdepth=0pt - \jlreq@startBlockHeading@analyzespace#3:\jlreq@endmark + \jlreq@startBlockHeading@analyzespace#4:\jlreq@endmark \jlreq@tempskipb=\glueexpr\jlreq@tempskipb + \ht\jlreq@tempboxb - \baselineskip\relax \ifx\jlreq@startBlockHeading@space\@empty\else \ifx a\jlreq@startBlockHeading@spacetype @@ -1554,20 +1604,11 @@ \fi \fi \ifdim\jlreq@tempskipb=0pt\else\vspace{\jlreq@tempskipb}\fi + #6% \@afterheading } % \DeclareBlockHeading{命令名}{レベル}{設定} -% 行取り(4.1.6) -% a: lines=<何行取りか> -% b,d: before_lines, after_lines -% c: before_space, after_space -% f: beforeやafterを省略する -% font=<見出しフォント>, labelfont=<ラベルフォント>, subtitle_font=<副題フォント> -% indent=<全体のインデント> -% pagebreak=clearpage/cleardoublepage/newcolumn/nariyuki -% なお,これ以外に見出しの前後に記号を付ける,あるいは罫線を見出しの前後に配置する,罫線で見出しを囲むなどといったことも行われている. -% 縦組の偶数ページの場合は,ページ末に見出しを配置する. \newcommand{\DeclareBlockHeading}[3]{% \appto{\jlreq@heading@allheadings}{,#1}% \expandafter\def\csname jlreq@heading@level@#1\endcsname{#2}% @@ -1591,50 +1632,148 @@ \def\jlreq@after@space{}% \def\jlreq@before@lines{}% \def\jlreq@after@lines{}% - \def\jlreq@font{\normalsize}% - \def\jlreq@subtitle@font{\normalsize}% - \def\jlreq@indent{0}% - \let\jlreq@format=\@undefined + \def\jlreq@font{}% + \def\jlreq@subtitle@font{}% + \def\jlreq@indent{0\jlreq@mol}% + \def\jlreq@end@indent{0\jlreq@mol}% + \edef\jlreq@format{\unexpanded{##1##2##3}}% + \edef\jlreq@heading@text@format{\unexpanded{##1}}% \def\jlreq@pagebreak{}% - \let\jlreq@label@format=\@undefined - \let\jlreq@subtitle@format=\@undefined - \def\jlreq@pagetop@space{a}% + \def\jlreq@label@format{\@seccntformat{#1}}% + \newif\ifjlreq@hang\jlreq@hangtrue + \def\jlreq@after@label@space{1\jlreq@mol}% + \def\jlreq@second@heading@text@indent@wlabel{0pt}% + \def\jlreq@second@heading@text@indent@wolabel{0pt}% + \edef\jlreq@subtitle@format{\unexpanded{---##1---}}% + \def\jlreq@subtitle@indent{1\jlreq@mol}% + \def\jlreq@afterindent{\@afterindenttrue}% + \def\jlreq@allowbreak@evenpage{*}% 偶数ページでも改ページを許可するならば空,そうでないなら* + \newif\ifjlreq@subtitle@break\jlreq@subtitle@breaktrue + \def\jlreq@subtitle@indent{1\jlreq@mol}% + % 先頭が*なら\jlreq@resultをtrueにする.*を除いた部分を\jlreq@resultに入れる. + \def\jlreq@ifstar##1{% + \jlreq@iffirsttoken{##1}{*}{% + \jlreq@resulttrue + \expandafter\def\expandafter\jlreq@result\expandafter{\@gobble##1}% + }{% + \jlreq@resultfalse + \def\jlreq@result{##1}% + }% + }% + % a,bみたいなのをaとbにわける.カンマがなければbは空.引数を{a}{b}として##2を呼び出す. + \def\jlreq@parsecomma##1##2{% + \def\jlreq@tempa####1####2{##2}% + \def\@tempa####1,####2\jlreq@endmark{% + \jlreq@ifempty{####2}{% + \def\@tempa{}% + }{% + \def\@tempa########1,\jlreq@endmark{\def\@tempa{########1}}% + \@tempa####2\jlreq@endmark + }% + \edef\@tempa{\unexpanded{\jlreq@tempa{####1}}{\expandonce{\@tempa}}}% + \edef\jlreq@do{\expandafter\expandafter\expandafter\unexpanded\expandafter\expandafter\expandafter{\@tempa}}% + }% + \@tempa##1,\jlreq@endmark + \jlreq@do + }% \jlreq@parsekeyval[BlockHeading]{ {lines}{\def\jlreq@lines{##1}} {before_space}{\def\jlreq@before@space{##1}} {after_space}{\def\jlreq@after@space{##1}} - {before_lines}{\def\jlreq@before@lines{##1}} + {before_lines}{% + \jlreq@ifstar{##1}% + \edef\jlreq@before@lines{% + \ifjlreq@result s:\else a:\fi + \expandonce{\jlreq@result}% + }% + } {after_lines}{\def\jlreq@after@lines{##1}} {font}{\def\jlreq@font{##1}} {subtitle_font}{\def\jlreq@subtitle@font{##1}} {indent}{\def\jlreq@indent{##1}} + {end_indent}{\def\jlreq@end@indent{##1}} {format}{\edef\jlreq@format{\unexpanded{##1}}} + {after_label_space}{\def\jlreq@after@label@space{##1}} + {second_heading_text_indent}{% + \jlreq@parsecomma{##1}{% + \jlreq@ifstar{####1}% + \ifjlreq@result\jlreq@hangfalse\else\jlreq@hangtrue\fi + \let\jlreq@second@heading@text@indent@wlabel=\jlreq@result + \jlreq@ifempty{####2}{% + \let\jlreq@second@heading@text@indent@wolabel=\jlreq@second@heading@text@indent@wlabel + }{% + \def\jlreq@second@heading@text@indent@wolabel{####2}% + }% + }% + } {label_format}{\edef\jlreq@label@format{\unexpanded{##1}}} {subtitle_format}{\edef\jlreq@subtitle@format{\unexpanded{##1}}} - *{pagetop_space}{\def\jlreq@pagetop@space{s}}% ページ頭でもスペースを入れる - {pagebreak}[clearpage,cleardoublepage,clearcolumn,nariyuki]{ + {subtitle_indent}{\def\jlreq@subtitle@indent{##1}} + {subtitle_break}[true,false]{\csname jlreq@subtitle@break##1\endcsname} + {afterindent}[true,false]{\edef\jlreq@afterindent{\expandonce{\csname @afterindent##1\endcsname}}} + {allowbreak_if_evenpage}[true,false]{% + \jlreq@switch{##1}{ + {true}{\def\jlreq@allowbreak@evenpage{}} + {false}{\def\jlreq@allowbreak@evenpage{*}} + }% + } + {pagebreak}[clearpage,cleardoublepage,clearcolumn,nariyuki]{% \jlreq@switch{##1}{ {clearpage}{\def\jlreq@pagebreak{\clearpage}} {cleardoublepage}{\def\jlreq@pagebreak{\cleardoublepage}} {clearcolumn}{\if@twocolumn\def\jlreq@pagebreak{\newpage}\else\def\jlreq@pagebreak{}\fi} {nariyuki}{\def\jlreq@pagebreak{}} - } + }% } }{#3}% - \ifx\jlreq@format\@undefined + \ifx\jlreq@font\@empty\else \edef\jlreq@format{% - \expandonce{\jlreq@font}\unexpanded{##1}\unexpanded{##2}% - \unexpanded{##3}% + \expandonce{\jlreq@font}\expandonce{\jlreq@format}% }% \fi - \ifx\jlreq@label@format\@undefined - \def\jlreq@label@format{\@seccntformat{#1}}% - \fi - \ifx\jlreq@subtitle@format\@undefined - \edef\jlreq@subtitle@format{{\unexpanded{\nobreak\par\hspace*{4\jlreq@mol}}\expandonce{\jlreq@subtitle@font}---\unexpanded{##1}---}}% - \fi + \edef\jlreq@label@format@modified{% + \noexpand\noindent + \unexpanded{\setbox\jlreq@tempboxa=\hbox}{\expandonce{\jlreq@label@format}}% + \unexpanded{\hangindent=}% + \ifjlreq@hang + \wd\jlreq@tempboxa + \else + 0pt + \unexpanded{\edef\jlreq@startBlockHeading@labellength{\the\wd\jlreq@tempboxa}}% + \fi + \unexpanded{\hangindent=\dimexpr\hangindent + }(\expandonce{\jlreq@after@label@space}) + (\expandonce{\jlreq@second@heading@text@indent@wlabel})\noexpand\relax + \box\jlreq@tempboxa + \hskip0pt\relax + }% + \edef\jlreq@heading@text@format@wlabel{% + \ifdim\jlreq@after@label@space=0pt\else + \noexpand\hspace*{\noexpand\dimexpr\expandonce{\jlreq@after@label@space}\noexpand\relax}% + \fi + \expandonce{\jlreq@heading@text@format}% + }% + \edef\jlreq@heading@text@format@wolabel{% + \ifdim\dimexpr\jlreq@second@heading@text@indent@wolabel\relax=0pt\else + \noexpand\hangindent=\noexpand\dimexpr\expandonce{\jlreq@second@heading@text@indent@wolabel}\noexpand\relax + \fi + \expandonce{\jlreq@heading@text@format}% + }% + \def\jlreq@make@subtitle@format##1##2{% + \edef##1{% + \ifjlreq@subtitle@break\unexpanded{{\par}\nobreak\noindent\global\hangafter=0}\fi + \unexpanded{\global\hangindent=\dimexpr\hangindent + }(\expandonce{\jlreq@subtitle@indent}) ##2\noexpand\relax + \ifdim\jlreq@subtitle@indent=0pt\else + \ifjlreq@subtitle@break\else\unexpanded{\hspace*}{\expandonce{\jlreq@subtitle@indent}}\fi + \fi + {\ifx\jlreq@subtitle@font\@empty\else\expandonce{\jlreq@subtitle@font}\fi\expandonce{\jlreq@subtitle@format}}% + }% + }% + \jlreq@make@subtitle@format\jlreq@subtitle@format@wlabel{% + - (\expandonce{\jlreq@second@heading@text@indent@wlabel})% + \ifjlreq@hang\else + (\noexpand\jlreq@startBlockHeading@labellength)\fi + }% + \jlreq@make@subtitle@format\jlreq@subtitle@format@wolabel{- (\expandonce{\jlreq@second@heading@text@indent@wolabel})}% \def\jlreq@addtodo{}% - \@ifundefined{l@#1}{ + \@ifundefined{l@#1}{% % 長さは適当に計測する \begingroup % ちょっと大きめで計測しておく @@ -1651,17 +1790,23 @@ }{}% % before/after_lines優先 \ifx\jlreq@before@space\@empty\else\edef\jlreq@before@space{r:\expandonce{\jlreq@before@space}}\fi - \ifx\jlreq@before@lines\@empty\else\edef\jlreq@before@space{\expandonce{\jlreq@pagetop@space}:\expandonce{\jlreq@before@lines}\baselineskip}\fi + \ifx\jlreq@before@lines\@empty\else\edef\jlreq@before@space{\expandonce{\jlreq@before@lines}\baselineskip}\fi \ifx\jlreq@after@space\@empty\else\edef\jlreq@after@space{r:\expandonce{\jlreq@after@space}}\fi \ifx\jlreq@after@lines\@empty\else\edef\jlreq@after@space{a:\expandonce{\jlreq@after@lines}\baselineskip}\fi - \ifx\jlreq@indent\@empty\else\edef\jlreq@indent{\expandonce{\jlreq@indent}\jlreq@mol}\fi \edef\jlreq@do{% \expandonce{\jlreq@addtodo}% \noexpand\edef\expandonce{\csname #1\endcsname}{\noexpand\unexpanded{% \noexpand\jlreq@hook@beforeheadings{#1}% \expandonce{\jlreq@pagebreak}% - \unexpanded{\jlreq@startBlockHeading{#1}{#2}}{\expandonce{\jlreq@indent}}{\expandonce{\jlreq@before@space}}{\expandonce{\jlreq@after@space}}{\expandonce{\jlreq@lines}}{{\expandonce{\jlreq@label@format}}{\expandonce{\jlreq@format}}{\expandonce{\jlreq@subtitle@format}}% - }}}% + \unexpanded{\jlreq@startBlockHeading{#1}{#2}}% + {{\expandonce{\jlreq@indent}}{\expandonce{\jlreq@end@indent}}{\expandonce{\jlreq@before@space}}{\expandonce{\jlreq@after@space}}{\expandonce{\jlreq@lines}}{\expandonce{\jlreq@afterindent}}{\expandonce{\jlreq@allowbreak@evenpage}}}% + {% + {\expandonce{\jlreq@label@format}}{\expandonce{\jlreq@label@format@modified}}% + {\expandonce{\jlreq@heading@text@format@wlabel}}{\expandonce{\jlreq@heading@text@format@wolabel}}% + {\expandonce{\jlreq@subtitle@format@wlabel}}{\expandonce{\jlreq@subtitle@format@wolabel}}% + {\expandonce{\jlreq@format}}% + }% + }}% }% \expandafter\endgroup \jlreq@do @@ -1689,21 +1834,27 @@ \@ifundefined{l@#1}{\expandafter\def\csname l@#1\endcsname{\@dottedtocline{#2}{0\jlreq@mol}{2\jlreq@gol}}}{}% \begingroup \def\jlreq@font{\normalfont\normalsize}% - \def\jlreq@indent{0}% + \def\jlreq@indent{0\jlreq@mol}% \def\jlreq@mark{}% + \def\jlreq@label@font{}% + \def\jlreq@after@space{1\jlreq@mol}% \jlreq@parsekeyval[RuninHeading]{% {font}{\def\jlreq@font{##1}} {indent}{\def\jlreq@indent{##1}} {mark}{\def\jlreq@mark{##1}} + {after_space}{% + \ifdim##1<0pt\ClassWarning{jlreq}{after_space in Runin Heading #1 should be positive}\fi + \def\jlreq@after@space{##1}% + } }{#3}% - % \@startsection{#1}{#2}{*fontsize}{0pt}{-fontsize}{font} + % \@startsection{#1}{#2}{indent}{0pt}{-after_space}{font} \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}\noexpand\jlreq@mol}{0pt}{-1\jlreq@fontsize}{\expandonce{\jlreq@font}}% + \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}\noexpand\jlreq@mol}{0pt}{-1\jlreq@fontsize}{\noexpand\kern\expandonce{\jlreq@indent}\noexpand\jlreq@mol\expandonce{\jlreq@mark}\noexpand\kern-\expandonce{\jlreq@indent}\noexpand\jlreq@mol\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}}% }% }% }% @@ -1742,7 +1893,7 @@ \else\def\jlreq@CutinHeading@linecount{1}\fi\fi % \@tempdimaが実際の一行の長さに近い \divide\@tempdima by \jlreq@CutinHeading@linecount - % \jlreq@resultboxに見出し部分を,\jlreq@CutinHeading@linecountに何行使うかを入れる + % \jlreq@resultboxに見出し部分を,\jlreq@CutinHeading@linecountに見出し自身に何行使うかを入れる \ifnum\jlreq@CutinHeading@linecount=1\relax \setbox\jlreq@resultbox=\vbox{\parindent=0pt\rightskip=0pt\leftskip=0pt\hbox{#1#6}}% \def\jlreq@CutinHeading@linecount{2}% @@ -1757,10 +1908,10 @@ \dp\@tempboxa=\dp\jlreq@tempboxa \@tempdima=\wd\@tempboxa % \hang****を設定 - \hangindent=\dimexpr#2\jlreq@mol + \@tempdima + #3\relax\hangafter=-\jlreq@CutinHeading@linecount + \hangindent=\dimexpr#2 + \@tempdima + #3\relax\hangafter=-\jlreq@CutinHeading@linecount \jlreq@hangindent=\hangindent\jlreq@wraplinecount=\hangafter - \hspace*{#2\jlreq@mol}% - \kern-\dimexpr\@tempdima + #3 + \parindent\relax + \hspace*{#2}% + \kern-\dimexpr\hangindent + \parindent\relax \box\@tempboxa \hspace*{#3}% % 改段落が起こっても\hang****をキープするように\parを書き換えておく(終わったら元に戻す). @@ -1791,18 +1942,21 @@ \def\jlreq@fontcommand{\headfont}% \def\jlreq@onelinemax{6\jlreq@fontsize}% \def\jlreq@twolinemax{20\jlreq@fontsize}% - \def\jlreq@indent{0}% - \def\jlreq@afterindent{1\jlreq@mol}% + \def\jlreq@indent{0\jlreq@mol}% + \def\jlreq@after@space{1\jlreq@mol}% \jlreq@parsekeyval[CutinHeading]{ {font}{\def\jlreq@fontcommand{##1}} {onelinemax}{\def\jlreq@onelinemax{##1}} {twolinemax}{\def\jlreq@twolinemax{##1}} {indent}{\def\jlreq@indent{##1}} - {afterindent}{\def\jlreq@afterindent{##1}} + {after_space}{\def\jlreq@after@space{##1}} }{#3}% + \ifthenelse{\lengthtest{\jlreq@after@space < 0.99\jlreq@mol} \OR \lengthtest{\jlreq@after@space > 2.01\jlreq@mol}}{% + \jlreq@warning{窓見出しと本文との空き量は,基本版面の文字サイズの全角以上,2倍未満とする(4.1.10.c)}%& + }{}% \edef\jlreq@do{% \noexpand\def\expandonce{\csname #1\endcsname}{% - \noexpand\jlreq@CutinHeading@start{#1}{\expandonce{\jlreq@fontcommand}}{\expandonce{\jlreq@indent}}{\expandonce{\jlreq@afterindent}}{\expandonce{\jlreq@onelinemax}}{\expandonce{\jlreq@twolinemax}}% + \noexpand\jlreq@CutinHeading@start{#1}{\expandonce{\jlreq@fontcommand}}{\expandonce{\jlreq@indent}}{\expandonce{\jlreq@after@space}}{\expandonce{\jlreq@onelinemax}}{\expandonce{\jlreq@twolinemax}}% }% }% \expandafter\endgroup @@ -1830,7 +1984,7 @@ } % 見出し#1をマクロ#2に保存する \newcommand{\SaveHeading}[2]{% - \@ifundefined{jlreq@heading@setting@#1}{\ClassError{jlreq}{Unknown heading: #1}{\@ehc}}% + \@ifundefined{jlreq@heading@setting@#1}{\ClassError{jlreq}{Unknown heading: #1}{\@ehc}}{}% \begingroup \edef\jlreq@do{% \unexpanded{\edef#2}{% @@ -1852,20 +2006,6 @@ \jlreq@do } -\setcounter{secnumdepth}{3} -\newcounter{part} -\jlreq@switch{\jlreq@article@type}{ - {article}{\newcounter{section}} - {\newcounter{chapter}\newcounter{section}[chapter]}% book, report -} -\newcounter{subsection}[section] -\newcounter{subsubsection}[subsection] -\newcounter{paragraph}[subsubsection] -\newcounter{subparagraph}[paragraph] -\renewcommand*{\@seccntformat}[1]{\csname the#1\endcsname\hspace{1\jlreq@mol}} -\newcommand*{\headfont}{\gtfamily\sffamily} - - \newcommand*\jlreq@HeadingType[1]{% \expandafter\ifx\csname jlreq@heading@type@#1\endcsname\relax UndefinedHeading \else @@ -1880,7 +2020,47 @@ \expandafter\expandafter\expandafter\ifx\csname jlreq@heading@type@#1\endcsname#2\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi } +% 全ての見出しにマクロ#1を適用する. +\def\jlreq@heading@execmacro@toallheadings#1{% + \begingroup + \def\jlreq@do{}% + \ifx\jlreq@heading@allheadings\@undefined + \jlreq@heading@execmacro@toallheadings@{#1}{chapter,part,section,subsection,subsubsection,paragraph,subparagraph}% + \else + \def\@tempa{\jlreq@heading@execmacro@toallheadings@{#1}}% + \expandafter\@tempa\expandafter{\jlreq@heading@allheadings}% + \fi + \expandafter\endgroup + \jlreq@do +} + +\def\jlreq@heading@execmacro@toallheadings@#1#2{ + \@for\jlreq@tempa:=#2\do{% + \@ifundefined{\jlreq@tempa}{}{% + \eappto\jlreq@do{\noexpand#1{\expandonce{\jlreq@tempa}}}% + }% + }% +} +\def\jlreq@clearheadingmarks#1{% + \@ifundefined{#1mark}{}{% + \expandafter\let\csname#1mark\endcsname=\@gobble + }% +} + %.. 各種定義 +\setcounter{secnumdepth}{3} +\newcounter{part} +\jlreq@switch{\jlreq@article@type}{ + {article}{\newcounter{section}} + {\newcounter{chapter}\newcounter{section}[chapter]}% book, report +} +\newcounter{subsection}[section] +\newcounter{subsubsection}[subsection] +\newcounter{paragraph}[subsubsection] +\newcounter{subparagraph}[paragraph] +\renewcommand*{\@seccntformat}[1]{\csname the#1\endcsname} +\newcommand*{\headfont}{\sffamily\bfseries} + \if@tate \renewcommand{\thepart}{\Kanji{part}} \ifthenelse{\equal{\jlreq@article@type}{article}}{}{\renewcommand{\thechapter}{\Kanji{chapter}}} @@ -1894,18 +2074,23 @@ (\rensuji{\@arabic\c@subparagraph})} \ifthenelse{\equal{\jlreq@article@type}{article}}{ - \NewBlockHeading{part}{0}{font={\jlreq@keepbaselineskip{\LARGE\headfont}},indent=4,lines=4} + \NewBlockHeading{part}{0}{font={\jlreq@keepbaselineskip{\LARGE\headfont}},indent=4\zh,lines=4,after_label_space=1\zh,second_heading_text_indent={-1\zh,1\zh},subtitle_font={\jlreq@keepbaselineskip{\large}}} + \if@twoside\ModifyHeading{part}{allowbreak_if_evenpage=true}\fi } {% book, report \NewTobiraHeading{part}{-1}{label_format={第\thepart 部\hspace*{1\jlreq@mol}},format={\null\vfill {\Huge\headfont \hspace*{2\jlreq@mol}#1#2}\vspace*{2\jlreq@gol}}} - \NewBlockHeading{chapter}{0}{indent=2,lines=6,label_format={第\thechapter 章\hspace*{1\jlreq@gol}},font={\huge\headfont}} + \NewBlockHeading{chapter}{0}{indent=2\zh,lines=6,label_format={第\thechapter 章},font={\huge\headfont},after_label_space=1\zh,second_heading_text_indent={-1\zh,1\zh},subtitle_font={\jlreq@keepbaselineskip{\Large}}} + \if@twoside\ModifyHeading{chapter}{allowbreak_if_evenpage=true}\fi \renewcommand{\thechapter}{\Kanji{chapter}} } - \NewBlockHeading{section}{1}{font={\jlreq@keepbaselineskip{\Large\headfont}},indent=6,lines=3} - \NewBlockHeading{subsection}{2}{font={\jlreq@keepbaselineskip{\large\headfont}},indent=8,lines=2} - \NewBlockHeading{subsubsection}{3}{font={\jlreq@keepbaselineskip{\normalsize\headfont}},indent=10,lines=1,before_lines=1} + \NewBlockHeading{section}{1}{font={\jlreq@keepbaselineskip{\Large\headfont}},indent=6\zh,lines=3,after_label_space=1\zh,second_heading_text_indent={-1\zh,1\zh},subtitle_font={\jlreq@keepbaselineskip{\normalsize}}} + \if@twoside\ModifyHeading{section}{allowbreak_if_evenpage=true}\fi + \NewBlockHeading{subsection}{2}{font={\jlreq@keepbaselineskip{\large\headfont}},indent=8\zh,lines=2,after_label_space=1\zh,second_heading_text_indent={-1\zh,1\zh},subtitle_font={\jlreq@keepbaselineskip{\small}}} + \if@twoside\ModifyHeading{subsection}{allowbreak_if_evenpage=true}\fi + \NewBlockHeading{subsubsection}{3}{font={\jlreq@keepbaselineskip{\normalsize\headfont}},indent=10\zh,lines=1,before_lines=1,subtitle_break=false,after_label_space=1\zh,second_heading_text_indent={-1\zh,1\zh},,subtitle_font={\jlreq@keepbaselineskip{\scriptsize}}} + \if@twoside\ModifyHeading{subsubsection}{allowbreak_if_evenpage=true}\fi \NewRuninHeading{paragraph}{4}{font={\jlreq@keepbaselineskip{\normalsize\headfont}}} - \NewRuninHeading{subparagraph}{5}{font={\jlreq@keepbaselineskip{\normalsize\headfont}},indent=1} + \NewRuninHeading{subparagraph}{5}{font={\jlreq@keepbaselineskip{\normalsize\headfont}},indent=1\zh} \else \renewcommand{\thepart}{\Roman{part}} \renewcommand{\thesubsection}{\thesection .\arabic{subsection}} @@ -1913,7 +2098,7 @@ \renewcommand{\theparagraph}{\thesubsubsection .\arabic{paragraph}} \renewcommand{\thesubparagraph}{\theparagraph .\arabic{subparagraph}} \ifthenelse{\equal{\jlreq@article@type}{article}}{ - \NewBlockHeading{part}{0}{font={\jlreq@keepbaselineskip{\LARGE\headfont}},label_format={第\thepart 部\hspace{1\jlreq@mol}},lines=4} + \NewBlockHeading{part}{0}{font={\jlreq@keepbaselineskip{\LARGE\headfont}},label_format={第\thepart 部},lines=4,after_label_space=1\zw,second_heading_text_indent={-1\zw,1\zw},subtitle_font={\jlreq@keepbaselineskip{\large}}} \renewcommand{\thesection}{\arabic{section}} } {% book, report @@ -1921,7 +2106,8 @@ \NewBlockHeading{chapter}{0}{% format={{\jlreq@keepbaselineskip{\huge\headfont} #1#2}#3}, label_format={第\thechapter 章\quad}, - lines=5} + lines=5,after_label_space=1\zw,second_heading_text_indent={-1\zw,1\zw}, + subtitle_font={\jlreq@keepbaselineskip{\Large}}} \renewcommand{\thechapter}{\arabic{chapter}} \renewcommand{\thesection}{\thechapter.\arabic{section}} \ifthenelse{\equal{\jlreq@article@type}{book}}{ @@ -1930,11 +2116,11 @@ \ModifyHeading{chapter}{pagebreak=clearpage} } } - \NewBlockHeading{section}{1}{font={\jlreq@keepbaselineskip{\Large\headfont}},lines=3} - \NewBlockHeading{subsection}{2}{font={\jlreq@keepbaselineskip{\large\headfont}},lines=2} - \NewBlockHeading{subsubsection}{3}{font={\jlreq@keepbaselineskip{\normalsize\headfont}},lines=1,before_lines=1} - \NewRuninHeading{paragraph}{4}{font={\jlreq@keepbaselineskip{\normalsize\headfont}},indent=1} - \NewRuninHeading{subparagraph}{5}{font={\jlreq@keepbaselineskip{\normalsize\headfont}},indent=2} + \NewBlockHeading{section}{1}{font={\jlreq@keepbaselineskip{\Large\headfont}},lines=3,after_label_space=1\zw,second_heading_text_indent={-1\zw,1\zw},subtitle_font={\jlreq@keepbaselineskip{\normalsize}}} + \NewBlockHeading{subsection}{2}{font={\jlreq@keepbaselineskip{\large\headfont}},lines=2,after_label_space=1\zw,second_heading_text_indent={-1\zw,1\zw},subtitle_font={\jlreq@keepbaselineskip{\small}}} + \NewBlockHeading{subsubsection}{3}{font={\jlreq@keepbaselineskip{\normalsize\headfont}},lines=1,before_lines=1,subtitle_break=false,after_label_space=1\zw,second_heading_text_indent={-1\zw,1\zw},subtitle_font={\jlreq@keepbaselineskip{\scriptsize}}} + \NewRuninHeading{paragraph}{4}{font={\jlreq@keepbaselineskip{\normalsize\headfont}},indent=1\zw} + \NewRuninHeading{subparagraph}{5}{font={\jlreq@keepbaselineskip{\normalsize\headfont}},indent=2\zw} \fi \ifthenelse{\equal{\jlreq@article@type}{article}}{}{% book, report @@ -2174,7 +2360,7 @@ \expandafter\@tempa\jlreq@tempa\jlreq@endmark \edef\jlreq@tempc{\jlreq@tempc,\jlreq@result} \else - \ClassError{jlreq}{invalid value \jlreq@tempa\space in endnote_position}{\@ehc} + \ClassError{jlreq}{Invalid value \jlreq@tempa\space in endnote_position}{\@ehc} \fi } } @@ -2206,22 +2392,35 @@ \setlength{\marginparsep}{2\jlreq@mol} % フォントサイズ×2(4.2.7:特に問題に~e) {% \footnotesize - \setlength{\jlreq@tempdima}{\dimexpr \paperwidth - \textwidth - 1in - \oddsidemargin - \marginparsep\relax} + % \jlreq@tempdimaにマージン最小値を入れる + \if@tate + \setlength{\jlreq@tempdima}{\dimexpr\paperheight - \topmargin - \headheight - \headsep - \voffset - 1in - \textwidth\relax} + \if@twocolumn + \ifdim\jlreq@tempdima>\dimexpr\paperheight - \jlreq@tempdima - \textwidth\relax + \setlength{\jlreq@tempdima}{\dimexpr\paperheight - \jlreq@tempdima - \textwidth\relax} + \fi + \fi + \else + \setlength{\jlreq@tempdima}{\dimexpr \paperwidth - \textwidth - 1in - \oddsidemargin - \marginparsep\relax} + \ifdim\jlreq@tempdima>\dimexpr\oddsidemargin + 1in\relax + \setlength{\jlreq@tempdima}{\dimexpr\oddsidemargin + 1in\relax} + \fi + \fi \ifx\jlreq@option@sidenote@width\@empty - \setlength{\marginparwidth}{\dimexpr\jlreq@tempdima-2\jlreq@fontsize\relax} + \setlength{\marginparwidth}{\dimexpr\jlreq@tempdima - 2\jlreq@fontsize - \marginparsep\relax} + % 4.7.2.b: 並列中の行長は15文から20字程度 + \ifdim\marginparwidth>20\jlreq@mol + \global\marginparwidth=20\jlreq@mol + \fi \else \setlength{\marginparwidth}{\jlreq@speciallength{\jlreq@option@sidenote@width}} \ifnum\marginparwidth>\jlreq@tempdima \ClassWarningNoLine{jlreq}{sidenote_width is greater than the width of the margin} \fi \fi - \ifdim\marginparwidth>18\jlreq@mol - \global\marginparwidth=18\jlreq@mol - \else - \@tempdima=1\zw% 1\jlreq@mol - \global\divide\marginparwidth\@tempdima - \global\multiply\marginparwidth\@tempdima - \fi + \@tempdima=1\zw% 1\jlreq@mol + \global\divide\marginparwidth\@tempdima + \global\multiply\marginparwidth\@tempdima \global\setlength{\marginparpush}{.5\@tempdima} % 同上:g } @@ -2620,7 +2819,7 @@ {mark_format}{\edef\jlreq@mark@format{\unexpanded{##1}}} {command}{\edef\jlreq@command{\unexpanded{##1}}} {gap}{\def\jlreq@gap{##1}} - *{no_clear_mark}{\jlreq@clearmarkfalse} + {clear_mark}[true,false]{\csname jlreq@clearmark##1\endcsname} }{#2}% \ifthenelse{\( \boolean{@tate} \AND \( @@ -2747,7 +2946,7 @@ {left}{\def\jlreq@tempe{right}} }% \edef##1{{\expandafter\@firstoftwo##1}{\jlreq@tempe}}% - } + }% \getoppositeposition\jlreq@nombre@position \getoppositeposition\jlreq@running@head@position % 上と同じことをする @@ -2783,33 +2982,6 @@ \jlreq@do } -% 全ての見出しにマクロ#1を適用する. -\def\jlreq@heading@execmacro@toallheadings#1{% - \begingroup - \def\jlreq@do{}% - \ifx\jlreq@heading@allheadings\@undefined - \jlreq@heading@execmacro@toallheadings@{#1}{chapter,part,section,subsection,subsubsection,paragraph,subparagraph}% - \else - \def\@tempa{\jlreq@heading@execmacro@toallheadings@{#1}}% - \expandafter\@tempa\expandafter{\jlreq@heading@allheadings}% - \fi - \expandafter\endgroup - \jlreq@do -} - -\def\jlreq@heading@execmacro@toallheadings@#1#2{ - \@for\jlreq@tempa:=#2\do{% - \@ifundefined{\jlreq@tempa}{}{% - \eappto\jlreq@do{\noexpand#1{\expandonce{\jlreq@tempa}}}% - }% - }% -} -\def\jlreq@clearheadingmarks#1{% - \@ifundefined{#1mark}{}{% - \expandafter\let\csname#1mark\endcsname=\@gobble - }% -} - \newcommand*{\NewPageStyle}[2]{% \expandafter\@ifdefinable\csname ps@#1\endcsname{\DeclarePageStyle{#1}{#2}}% } @@ -2845,8 +3017,8 @@ \ModifyPageStyle{headings}{mark_format={_chapter={第\thechapter 章\quad #1}}} } \if@tate - \RenewPageStyle{plain}{nombre=\thepage,odd_running_head={},even_running_head={},no_clear_mark} - \NewPageStyle{myheadings}{nombre=\thepage,odd_running_head=\rightmark,even_running_head=\leftmark,no_clear_mark} + \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} \if@twoside \ModifyPageStyle{plain}{nombre_position={top-left}} \ModifyPageStyle{headings}{nombre=\thepage,nombre_position=bottom-left,running_head_position=top-left} @@ -2857,9 +3029,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},no_clear_mark} + \RenewPageStyle{plain}{nombre=\thepage,odd_running_head={},even_running_head={},nombre_position={bottom-center},clear_mark=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,no_clear_mark} + \NewPageStyle{myheadings}{nombre=\thepage,nombre_position=bottom-center,running_head_position=top-center,odd_running_head=\rightmark,even_running_head=\leftmark,clear_mark=false} \fi %. フロート関連 @@ -3081,7 +3253,7 @@ \null\vfil \@beginparpenalty\@lowpenalty \begin{center}% - {\bfseries\gtfamily\abstractname}% + {\sffamily\bfseries\abstractname}% \@endparpenalty\@M \end{center}% \par @@ -3109,15 +3281,31 @@ \small \parindent=1\jlreq@mol \begin{center}% - {\bfseries\abstractname}% + {\sffamily\bfseries\abstractname}% \end{center}% - \quotation + \list{}{% + \listparindent\parindent + \itemindent\listparindent + \labelwidth\z@ + \labelsep\z@ + \leftmargin=2\jlreq@mol + \rightmargin\leftmargin + \@tempdima=1\zw + \@tempdimb=\dimexpr\linewidth - \@totalleftmargin - \leftmargin - \rightmargin\relax + \@tempdimc=\@tempdimb + \divide\@tempdimb by \@tempdima\multiply\@tempdimb by \@tempdima + \ifdim\@tempdimb=\@tempdimc\else\@tempdimb=\dimexpr\@tempdimb - 1\jlreq@mol\relax\fi + \leftmargin=\dimexpr\leftmargin + (\@tempdimc - \@tempdimb)/2\relax + \rightmargin=\dimexpr\rightmargin + (\@tempdimc - \@tempdimb)/2\relax + \parsep\z@ \@plus.1\jlreq@gol + }% + \item\relax \else \section*{\abstractname}% \fi }{% \ifnum0\if@twocolumn\else1\fi\ifjlreq@preamble1\fi>0 - \endquotation + \endlist \egroup \vspace{\baselineskip}% \if@twocolumn @@ -3199,7 +3387,7 @@ \renewcommand{\theenumi}{\Kanji{enumi}} \renewcommand{\theenumii}{\rensuji{\@arabic\c@enumii}} \renewcommand{\theenumiii}{\rensuji{\@arabic\c@enumiii}} - \renewcommand{\theenumiv}{\rensuji{\@arabc\c@enumiv}} + \renewcommand{\theenumiv}{\rensuji{\@arabic\c@enumiv}} \fi \newcommand{\labelenumi}{\theenumi} \newcommand{\labelenumii}{\theenumii} @@ -3227,23 +3415,47 @@ \listparindent\itemindent \labelwidth\z@ \labelsep\z@ - \leftmargin=2\jlreq@mol - \rightmargin\leftmargin \advance\leftmargin 2\jlreq@mol}% + \leftmargin=\jlreq@speciallength{\jlreq@quote@indent}% + \addtolength{\leftmargin}{2\jlreq@mol}% + \rightmargin=\jlreq@speciallength{\jlreq@quote@end@indent}% + \csname\jlreq@quote@fontsize\endcsname + \@tempdima=1\zw + \@tempdimb=\dimexpr\linewidth - \@totalleftmargin - \leftmargin - \rightmargin\relax + \@tempdimc=\@tempdimb + \divide\@tempdimb by \@tempdima\multiply\@tempdimb by \@tempdima + \topsep=\jlreq@speciallength{\jlreq@quote@beforeafter@space}% + \leftmargin=\dimexpr\leftmargin + \@tempdimc - \@tempdimb\relax}% \item\relax}{\endlist} \newenvironment{quotation} - {\list{}{\listparindent\parindent + {\list{}{% + \leftmargin=\jlreq@speciallength{\jlreq@quote@indent}% + \rightmargin=\jlreq@speciallength{\jlreq@quote@end@indent}% + \csname\jlreq@quote@fontsize\endcsname + \@tempdima=1\zw + \@tempdimb=\dimexpr\linewidth - \@totalleftmargin - \leftmargin - \rightmargin\relax + \@tempdimc=\@tempdimb + \divide\@tempdimb by \@tempdima\multiply\@tempdimb by \@tempdima + \leftmargin=\dimexpr\leftmargin + \@tempdimc - \@tempdimb\relax + \listparindent\parindent \itemindent\listparindent \labelwidth\z@ \labelsep\z@ - \leftmargin=2\jlreq@mol - \rightmargin\leftmargin + \topsep=\jlreq@speciallength{\jlreq@quote@beforeafter@space}% \parsep\z@ \@plus.1\jlreq@gol}% \item\relax}{\endlist} \newenvironment{quote} {\list{}{% - \rightmargin\leftmargin + \leftmargin=\jlreq@speciallength{\jlreq@quote@indent}% + \rightmargin=\jlreq@speciallength{\jlreq@quote@end@indent}% + \csname\jlreq@quote@fontsize\endcsname + \@tempdima=1\zw + \@tempdimb=\dimexpr\linewidth - \@totalleftmargin - \leftmargin - \rightmargin\relax + \@tempdimc=\@tempdimb + \divide\@tempdimb by \@tempdima\multiply\@tempdimb by \@tempdima + \leftmargin=\dimexpr\leftmargin + \@tempdimc - \@tempdimb\relax \labelwidth\z@ - \leftmargin=2\jlreq@mol + \itemindent\z@ + \topsep=\jlreq@speciallength{\jlreq@quote@beforeafter@space}% \listparindent\z@}% \item\relax}{\endlist} @@ -3429,7 +3641,7 @@ \ifthenelse{\equal{\jlreq@article@type}{book}}{ \newif\if@mainmatter \@mainmattertrue - \newcommand*\frontmatter{% + \newcommand*{\frontmatter}{% \if@openright \cleardoublepage \else @@ -3437,13 +3649,11 @@ \fi \@mainmatterfalse \let\jlreq@pagestyle@atmain\jlreq@current@pagestyle - \ifthenelse{\equal{\jlreq@article@type}{article}}{}{%book, report - \SaveHeading{chapter}{\jlreq@heading@chapter@atmain}% - \ModifyHeading{chapter}{label_format={}}% - }% + \SaveHeading{chapter}{\jlreq@heading@chapter@atmain}% + \ModifyHeading{chapter}{label_format={}}% \pagestyle{plain}% \pagenumbering{roman}} - \newcommand*\mainmatter{% + \newcommand*{\mainmatter}{% \cleardoublepage \@mainmattertrue \@ifundefined{jlreq@pagestyle@atmain}{}{% @@ -3452,7 +3662,7 @@ \@ifundefined{jlreq@heading@chapter@atmain}{}{\jlreq@heading@chapter@atmain}% \setcounter{chapter}{0}% \pagenumbering{arabic}} - \newcommand*\backmatter{% + \newcommand*{\backmatter}{% \if@openright \cleardoublepage \else @@ -3466,7 +3676,7 @@ \@mainmatterfalse \setcounter{chapter}{0}} }{} -\newcommand*\appendix{\par +\newcommand*{\appendix}{\par \setcounter{section}{0}% } @@ -3530,9 +3740,11 @@ %. 定理環境 \def\jlreq@theorem@abovebelowspace{1\baselineskip}%とりあえず前後に一行分のアキ +\let\jlreq@original@@begintheorem=\@begintheorem \def\@begintheorem#1#2{\topsep=\jlreq@theorem@abovebelowspace \trivlist\labelsep=1\jlreq@mol \item[\hskip \labelsep{\headfont #1\ #2}]} +\let\jlreq@original@@opargbegintheorem=\@opargbegintheorem \def\@opargbegintheorem#1#2#3{\topsep=\jlreq@theorem@abovebelowspace \trivlist\labelsep=1\jlreq@mol \item[\hskip \labelsep{\headfont #1\ #2(#3)}]} -- cgit v1.2.3