見出しで直接使えないコマンド \section{... } のなかでいわゆる fragile なコマンド を使うと、エラーになります。これは、処理のタイミング の問題です ( 文献 [ 1 ] 、 20 ~ 21 ページ ) 。そのような場合 は、 \protect コマンドを用いて fragile なコマンドを保 護しなけれはなりません。そのうえで、 \string を使って 未文字をエスケープしたり、空白を \space コマンドな どて指定する必要があります。 章見出しをセンタリングしたい これには、 2 つのガ去があります。 1 つ目は文献 [ 3 ] にあったもので、 latex. tex のなかの 章見出しを定義するマクロ、 \def\@sect#1#2#3#4#5#6 [ # 7 ] # 8 { % \ifnum #2>\c@secnumdepth を変更します。たとえば、表 1 のレベル 1 の見出しをセン タリングしたいときは、次のようにします。 \ifdim \@tempskipa>\z@ \ifnum #2=1\begin{center}\e1se\fi % く一 \begingroup #6\re1ax \@hangfrom{\hskip#3\re1ax\@svsec}% {\interlinepenalty \@M #8\par} \ endgroup \ifnum #2=1\end{center}\e1se\fi % ← \csname #Imark\endcsname{#7}\addcontentsIine center 環境の前後にグルーが入るため、章見出しの上 下のスペースがすこし広くなってしまいます。 もう 1 つは、 art10. sty などにある \section の定義 を次のように変更する方法です (\@startsection コマ ンドについては、次の項で説明します ) 。 \def\section{\@startsection{section}% { 1 } { \ 29 } { ー 3.5ex plus—lex minus .2ex}% { 2.3ex plus. 2ex}% {\reset@font\center\Large\bf}} この例では、 \center コマンドを用いて見出しをセン タリングしています。 \center コマンド ( と center 環 境 ) は、 trivlist 環境を用いて定義されているため、前 UNIX MAGAZINE 1994.5 見出しについて スタイルファイル活用法ー 3 連載 後に余分なスペースが入ります。これを避けたいときは、 \center の代わりに \centering コマンドを使うとよい でしよう。 もう 1 つ簡便なガ去が、 ttn2n1. sty で用いられてい ます ( このスタイルファイルは、 rIbX Users Group の 'TbX and TUG NEWS" 用のものです ) 。このファイ ルでの定義を応用して、次のようなマクロを組みます。 \def\Section{\@ifstar{\@SECA}{\@SECB}} \def\@SECA#1{\section*{\centering#1}} \def\@SECB#1{\refstepcounter{section}% \addcontentsline{toc}{section}% {\protect\numberline{\thesection}#l}% \section*{\centering\thesection#l}} そして、 \section{... } とすると章見出しがセンタリ ングされます。 \section ではなく \section* を使って いる点に注意してください。したがって、 \thesection を出力し、そのうえで \refstepcounter コマンドを使 って節番号を 1 つ増やさなけれはなりません (\refstep- counter は section 番号を増やし、同時にそれ以下のレ ベルの subsection などの番号をリセットします ) 。 上の例では、 \Section と \Section* が \section コ マンドと同様に使えます。前者では、目次ファイルの出力 も可能です。 章見出しの前後のスペースを変更したい 章見出しの前後のスペースが広すぎる場合は、 art12. sty などのファイルで定義されている \section マクロ で各します。たとえば、 art10. sty では、 \def\section{\@startsection{section}% .2ex}% { 1 } { \ z@} { ー 3.5ex plus-lex minus { 2.3ex plus.2ex}{\reset@font\Large\bf}} となっています。 \@startsection は、次の 6 つの引数をとります。 \@startsection{name}{level}{indent}{before}{after} { s tyle} name は chapter や section などの見出しの種類、 level は表 1 に示した見出しレベル、 indent は左マージ ンから見出しの開始位置までのインデント、 be. 和は見出 しの上に挿入されるスペース、 after は見出しの下 ( また は後ろ ) に挿入されるスペースです。最後の style で見出 しの、、スタイル " を指定します ( 図 4 ) 。 95
ージすると同時にページ番号がリセットさアラビア数 字になります。こうすれば、タイトルや目次のページ数が 変わっても、本文のページ番号に景およびません。 もっとも、図版などを大量に含む文書を処理するよう な場合は、相互参照の関係で目次のページ番号カ躾際と異 なってしまうこともあるようです。もとはといえば、コン パイル時にページの変化があっても警告メッセージか表示 されないのか問題なのですが・ これがじ、配なときは、 処理するたびに . toc ファイルを別の名前で保存しておき、 処理後に作成された目次ファイルと上交して石忍してくだ 参考文献のページを目次に入れたい thebibliography 環上竟のなかに、次の 1 行を加えます。 \addcontentsline{toc}{section}{\refname} こて使っている \refname は、 NTT jl 独自のも のです。標準のスタイルファイルやアスキー日本語 では、 \refname の代わりに「参考文献」などと明示しな けれはなりません。目次にどのような形態で出力されるか は、 2 番目の引数に依存します ( この例では、 section と 同しレベルとして出力されます ) 。 目次に「第 1 章」のように出力したい NTT jIbX の j-report. sty では、章見出しは「第 1 章」という形式で出力されます ( アスキー日本語。で このように出力したいときは、あとで説明するガ去でいく つかの定義部分を変更します ) 。しかし、目次では章番号し か得られません。これを章見出しと同し形式にするには、 次の 2 カ所を変更する必要があります。 ます、 j ト ]rep10. sty など、文字サイズごとに異なるス タイルファイルのうち、 \@chapapp の部分を次のように 修正します。 \def\@chapter [ # 1 ] #2{\ifnum\c@secnumdepth>\m@ne \refstepcounter{chapter} \typeout{\@chapapp{\thechapter}.} \addcontentsline{toc}{chapter}{\protect \numberline{\@chapapp{\thechapter}}#l}\else \addcontentsline{toc}{chapter}{#l}\fi そして、 j ト ]report. sty で定義されている \l@chapter のパラメータを次のように変更します。 94 \def\1@chapter#1#2{\pagebreak [ 3 ] \vskip 1 .0em plus lpt \@tempdima 4.5em\begingroup \parindent \z@ \rightskip \@pnumwidth \l@chapter のパラメータは適当な数値を入れただけ なので、出力を見ながら調整したはうがよいと思います。 book. sty で葦ごとに目次を入れたい 複数の著者固別に書いた文章を集めて本を作るような 場合、各章ごとに目次があると便利でしよう。これを補助 してくれるのが minitoc. sty です。このスタイルファ イルを使うときは、オプション・スタイルとして指定しま す。基本的な使い方は以下のとおりです。 \documentstyle [minitoc] {book} \begin{document} \dominitoc \tableofcontents \chapter{ 金太郎と熊 } \minitoc \ chapter { サルカニ合戦における狐の位置 } \minitoc \tableofcontents の則に \dominitoc コマンドを かならす置かなければなりません。それ以外は、章目次を 出力したい位置に \minitoc コマンドを挿入するだけで す。 カウンタとして、 tocdepth に対応する minitoc- depth が用意されています。また、章目次をどのくらい 字下げして出力するかを指定する \mtcindent というパ ラメータ、利用するフォントを指定する \mtcfont コマン ドがあります 1 。それぞれの使い方は、スタイルファイル と一緒に配布されているマニュアルを参照してください。 なお、 minitoc. sty を使用する場合は、正しい出力を得 るためにすくなくとも 3 回は処理しなければなりません。 1 こ刎列は book. sty の場合です。 article. sty て使うときは、 \domini- toc と \minitoc が、それぞれ \dosectoc 、 \secttoc になります。 UNIX MAGAZINE 1994.5
図 3 表 1 スタイルファイル活用法ー 3 連載 タイトル部を変更した例 灰から桜を咲かせるガ去 From The Ashes to The Cherry Blossoms 花咲以①に 満灰大岩東学部園芸物斗 原材料に用意した灰を樹木に吹きつけ、桜として開花させた。 本稿では、その実現に用いた錬金勺手法の実際をする。 . K - e430 ds : ashes, cherry blossoms, alchemy, . ーヨ殳に、灰は一部樹木の生育に有効である が、それを桜に代表される花として開花させ るガ去は存在しないといわれてきた。 1. はじめに tocdepth 直 ・ part を吏わない場合 ・ part をイ吏う場合 0 1 2 3 4 5 chapter sectlon subsect ion subsubsect ion paragraph subparagraph 0 1 2 3 4 5 6 part chapter sect ion StIbSeCt ion subsubsection paragraph subparagraph 目次の出力には 3 回の里が必要 ? 目次を出力するときは、出力したい箇所に \ table 。 f ー contents コマンドを挿入しておきます。しかし、それ だけでは目次は得られません。 (j)latex コマンドで、一可可 か処理する必要があります。たとえは、次のような文書が \ chapter { カチカチ山伝説の誤謬 } \tableofcontents \maketitle \begin{document} \ date { 1994 年 1 月 1 日 } \author{ 狸左衛門 } \ title { 兎の本性について } \documentstyle{report} あったとします。 UNIX MAGAZINE 1994.5 がありませんから、タイトル、 chapter 、 ・・・の順で作成 この文書を最初に処理するときは目次ファイル (. toc) 灰を桜に転化させるためには、すくなくとも 1 匹の豆明晰な雑種大を用意せねばならない。 のローマ数字で出力されます。そして、目次の終りで改ペ この場合、タイトルと目次の部分のページ番号は小文字 \pagenumbering{arabic} \setcounter{page}{l} \vskip lem\hrule\pagebreak \end{quotation} \par} \tableofcontents \begin{quotation} \baselineskip=. 8\norma1base1ineskip {\par \maketitle\hrule \pagenumbering{roman} ます。 ようにしておくとよいでしよう。たとえば、次のようにし ルや目次などの部分と本文のページ番号を別個に処理する 長い文書などで目次か数ベージにおよふ場合は、タイト せん。 は、もう 1 回処理しなけれは正しいページ番号カ碍られま を含むべージが移動することもあります。そのようなとき 本文が目次のスペースぶん後ろべ屓に送ら見出しなど ルか読み込まれます。したがって、 chapter 以降の文書の 2 回目の処理では、 1 回目の処理で作られた目次ファイ 目次ファイルかできることになります。 せん。つまり、目次を言 t 算に入れずにページ番号を振った が、このファイルには目次用のスペースは央されていま されていきます。処理カ鮗ると目次ファイルが作られます 93