|
カテゴリ:TeX Tips
center 環境,enumerate 環境などを使用したとき環境の前後に入る空白を制御する方法について述べる.
こういった環境が文字の表示に使用する基本ルーチンには幾つか異なったものが存在する.主要なものとして \trivlist :center,flushleft,flushright などの環境 \list :quote,quotatoin,itemize,enumerate などの環境 を挙げることができるが,それぞれ対処法は異なる. ■center 環境を再定義する方法ーー定義内に行詰めを組込む〈出典:日本語TeX情報 掲示板 #34583〉 次のように,center環境の前後で行詰めすれば体裁は整う. \vspace{-.5\baselineskip} \begin{center} <本文> \end{center} \vspace{-.5\baselineskip} そこで \vspace による行詰めをcenter環境の定義内に組込んでしまえば良い. ------ begin citation -------------------------------------------------------------------------- % pLaTeX2e \documentclass{jarticle} %% \let\orgcenter\center%% オリジナルの center 環境を退避 \let\orgendcenter\endcenter%% \def\center{\vspace{-.5\baselineskip}\orgcenter}%% 改変した center 環境の定義 \def\endcenter{\orgendcenter\vspace{-.5\baselineskip}}%% ---------------------------------------------------------------------------- end citation ------ 〈出典:日本語TeX情報 掲示板 #34583〉 この例では,center環境開始時の処理 \center と終了時の処理 \endcenter をコピーし,\vspace による行詰めを \center の前および \endcenter の後に追加したものをあらためて \center,\endcenter と再定義している. ちなみに,\center のもともとの定義は下記の通り. \def\center{\trivlist \centering\item\relax} \def\endcenter{\endtrivlist} これは \newenvironment{center}{\trivlist \centering\item\relax}{\endtrivlist} と同じ意味. ■center 環境を再定義する方法ーー定義内のパラメータ値をいじる〈参考記事:日本語TeX情報 掲示板 #34593〉 center 環境も含め「list 環境派生タイプ」の環境では,デフォルトで環境の前後に \topsep + \partopsep + \parskip の空白が入る.ここで \topsep : \partopsep :環境の前後に空白行があるとき追加されるアキ \parskip :段落間の通常の間隔 であり,\parskip に上乗せされる \topsep + \partopsep が環境の前後に入る余分な空白となる.したがって環境の定義内で,\topsep と \partopsep の値を所望の値に設定しておけばよい. ただし,list 環境で使用する \trivlist の定義は非常に複雑なので,それを書き換えるのは控え,個別の環境の定義内で \topsep と \partopsep の値をセットするように改変した方が良い. 具体的には次のようにする. ------ begin citation -------------------------------------------------------------------------- \newenvironment{Center} {\topsep=0pt \partopsep=0pt \trivlist \centering\item\relax}{\endtrivlist} ---------------------------------------------------------------------------- end citation ------ この例では \topsep と \partopsep の値をともに零とし,センタリング環境の上下に余分な空白が入らないように(すなわち環境前後の行間が通常の段落と同じになるように)している. 目的に応じて \topsep と \partopsep の値を書き換えれば良い. なお,\topsep と \partopsep の値を環境内部で変更しているので,他の環境には影響を与えない。 もちろん,\renewenvironment 命令を用いて center 環境自身を再定義することも可能. ■\list を使用する環境で上下に入る空白を制御する(for jsarticle) 《注》この項に示したコードは私用目的で作成したものであり,動作の保証は致しかねます.悪しからずご了承の程を. 筆者は奥村氏のjsarticleクラスを使っているので,このクラスの場合に限定して述べる. \list を使用する環境の場合は環境ごとに定義しなおすのはちょっと難しそうだ.\list の中で使う \@listi を再定義する方法を試したところうまくいった. プレアンブルに以下の命令を追加する.なお,\makeatletter と \makeatother の間に挟むこと. \def\@listi{\leftmargin\leftmargini \parsep \z@ \topsep 0.2\baselineskip \@plus 0.2\baselineskip \@minus 0.1\baselineskip \itemsep \z@ \relax} \let\@listI\@listi この例では \topsep をオリジナルの設定値から変更した.必要に応じて \parsep や \itemsep の値を書き換えることも可. お気に入りの記事を「いいね!」で応援しよう
Last updated
January 18, 2007 06:03:58 AM
コメント(0) | コメントを書く
[TeX Tips] カテゴリの最新記事
|