1.昔々ある処にお爺さんとお婆さんが住んでいました.お爺さ んは山へ芝刈りに,お婆さんは川へ洗濯に行きました.お婆 さんが川で洗濯していると・・・ |
1.昔々ある処にお爺さんとお婆さんが住んでいました.お爺さ んは山へ芝刈りに,お婆さんは川へ洗濯に行きました.お婆さ んが川で洗濯していると・・・ |
enumerate 環境のカスタマイズ例は以前「list環境前後の空白を調整する方法」でもやった.この環境のベースになっているのは list 環境なので,list 環境関連のパラメータを設定しなおす必要がある.list 環境のカスタマイズについては吉永徹美の LaTeX 研究室の例も参考になる.
list 環境で使用されるパラメータは下表の通りであるが,重要なのは,これらのパラメータを本文中で
\setlength{\itemsep}{1zw}
のように設定しても反映されないということ.プレアンブルで list 環境を再定義する必要がある(他にも方法があるのかどうか私は知らない).
パラメータ | 説明 |
\itemindent | ラベルの前に入るスペース。 |
\labelsep | ラベル右端から項目までの長さ。負の値も可。 |
\labelwidth | ラベルを含めたボックス幅。 |
\listparindent | 一項目内の、第2段落以降で用いられるインデント量。 |
\leftmargin | 左マージンから項目内容までの長さ。負の値は不可。 |
\rightmargin | 右マージンから項目内容までの長さ。負の値は不可。 |
\parsep | 各段落間のスペース。 |
\itemsep | 新規項目の前に\parsepと共に入る行間スペース。 |
\parskip | 段落の前に入る縦方向スペース。デフォルトは、ゼロ。 |
\topsep | 前の段落と第一項目までの距離、次の段落と最後の項目までの距離。 |
\partopsep | \parskipと\topsepを加えた長さ。 |
いずれも \setlength,\addtolength により値を設定する.
上表は以下の情報を参考に作成.pLaTeX2e handbook,熊澤先生のページ
図にすると,こんな感じ↓になるんではなかろうか.なお,解釈が間違えているかも知れないので悪しからず.
それでは,実際のカスタマイズ結果.
jsarticle.cls ではlist 環境を次のように定義している.
ここには \itemindent,\listparindent などが設定されていないので,それを追記した上で,プレアンブルに書いておけばよい.例を示す.\def\@listi{\leftmargin\leftmargini \parsep \z@ \topsep 0.5\baselineskip \itemsep \z@ \relax} \let\@listI\@listi \@listi
\def\@listi{\leftmargin\leftmargini
\itemindent 1zw % 追加
\parindent\itemindent % 追加
\listparindent\parindent % 追加
\parsep \z@
\topsep 0.5\baselineskip
\itemsep \z@ \relax}
\let\@listI\@listi
\@listi
なお,理由は不明だが \labelsep は本文中で設定した値がちゃんと反映されるので,上の例では list 環境の定義内では値を設定しなかった.
この定義を用いると
1.昔々ある処にお爺さんとお婆さんが住んでいました.お爺さ んは山へ芝刈りに,お婆さんは川へ洗濯に行きました.お婆さ んが川で洗濯していると・・・ |
1.昔々あるところにお爺さんとお婆さんが住んでいました.お爺
さんは山へ芝刈りに,お婆さんは川へ洗濯に行きました.お婆さ
んが川で洗濯していると・・・
しかし,これで話は終わらない.list環境をプレアンブルで再定義しても,それが small環境内のenumerate環境には反映されないことが発覚したのだ. jsarticle.cls を覗いて small 環境の定義を見てみて驚いた.
\newcommand{\small}{%
\ifnarrowbaselines
\@setfontsize\small\@ixpt{11}%
\else
\@setfontsize\small\@ixpt{13}%
\fi
\abovedisplayskip 9\p@ \@plus3\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayskip \abovedisplayskip
\belowdisplayshortskip \belowdisplayskip
\def\@listi{\leftmargin\leftmargini
\topsep \z@
\parsep \z@
\itemsep \parsep}}
となっているのだ.なんと,smallの定義内で list環境が独自に定義されているではないか.これにはやられた.footnotesizeについても同様だった.何ゆえ一々定義するのか不明だが,そうなっている以上, small 環境内の list 環境をカスタマイズしたければ small 環境も再定義するしかない.先と同様に
\itemindent 1zw % 追加
\parindent\itemindent % 追加
\listparindent\parindent % 追加
の三行を追加することにより,問題が解決した.
それにしても何故,jsarticle では文字サイズを変えるたびに list 環境を再定義してあるのだろうか(jarticle.cls の場合どうなっているのかは面倒だから確認していない).謎である.
0 件のコメント:
コメントを投稿