文書構造・見出し・目次

本文を \section\chapter といった命令で区切ると、LaTeX が見出しの体裁・番号・目次を自動でそろえてくれます。このページでは、見出しの階層、番号の付き方とその制御、付録や前付け・後付けの切り替え、そして目次の作り方までを通して見ます。

見出しの階層

見出しは命令ひとつで作ります。たとえば \section{はじめに} と書けば、「1 はじめに」のように番号付きの節見出しが、クラスで定めた書体・前後の空きで組まれます。見出しには 階層(レベル) があり、上位から下位へ \part\chapter\section\subsection\subsubsection\paragraph\subparagraph の 7 段です。各レベルには整数の level 値 が割り当てられ、この数値が後で見る番号付けや目次の深さ制御の基準になります。

重要な注意がひとつ。\chapter は **bookreport クラスにしかありません**。article クラスには章という単位がないため、article での最上位の見出しはふつう \section です。\part はどのクラスでも使えますが、article では level 0、bookreport では \chapter の上の level −1 になります。

命令level 値区分使えるクラス
\part−1(book/report), 0(article)すべて
\chapter0book / report のみ
\section1すべて
\subsection2小節すべて
\subsubsection3小々節すべて
\paragraph4段落見出し(本文に続けて組まれる)すべて
\subparagraph5小段落見出し(本文に続けて組まれる)すべて

\part から \subsubsection までは独立した行の見出しになりますが、\paragraph\subparagraph は性格が違い、見出しのあとに改行を入れず そのまま本文が続く 「行内見出し(run-in heading)」です。短い小見出しを段落の頭に置きたいときに使います。

document.tex
\documentclass{report}   % \chapter が使える
\begin{document}
\chapter{序論}
\section{背景}
\subsection{先行研究}
\paragraph{要点}\ ここから本文が続きます。
\end{document}

番号の付き方を制御する

見出しの番号は LaTeX が自動で振ります。どの深さまで番号を付けるかを決めるのが **secnumdepth** というカウンタです。これは「番号を付ける最下位レベルの level 値」を表し、たとえば secnumdepth が 1 なら \section(level 1)までは番号が付き、\subsection(level 2)以下は番号なしの見出しになります。既定値は **article で 3、bookreport で 2** で、変更は \setcounter{secnumdepth}{3} のようにプリアンブルで行います(book で小々節にも番号を付けたいときの定番です)。

ひとつの見出しだけ番号を消したいなら、命令の 星付き形式 を使います。\section*{謝辞} のように * を付けると、その見出しは 番号が付かず、しかも目次にも載りません。「はじめに」「謝辞」「結論」など、番号になじまない見出しでよく使われます。

もうひとつ覚えておきたいのが オプション引数 です。\section[目次用の短い題]{本文に出る長い題} と書くと、本文の見出しには長いほうが、目次やヘッダには [ ] 内の短いほうが使われます。長い見出しを目次でコンパクトに見せたいときに便利です。

latex
\setcounter{secnumdepth}{3}        % 小々節まで番号を付ける
\section{結果と考察}                 % 番号付き:例「3 結果と考察」
\section*{謝辞}                      % 番号なし・目次にも出ない
\section[手法]{提案手法の詳細な定式化}  % 目次には「手法」と出る

付録と前付け・本文・後付け

本文のあとに付録を置くときは、付録に入る位置で **\appendix と一度書きます。これは見出しを作る命令ではなく 番号付けの切り替えスイッチ** で、これ以降の章・節番号がリセットされ、表示が ABC … という英字に変わります。\appendix のあとは、これまでどおり \chapter\section で付録の見出しを書くだけです。

book クラスには、本を三つの部分に分ける専用の命令があります。**\frontmatter は前付け(序文・目次など)で、ページ番号を小文字ローマ数字(i, ii, …)にし、章には番号を付けません(章の題は目次には載ります)。\mainmatter で本文に入り、ページ番号をアラビア数字に戻して 1 から振り直し、章番号も復活します。\backmatter** は後付け(参考文献・索引など)で、ページ番号はそのまま続け、章には再び番号を付けません。

document.tex
\documentclass{book}
\begin{document}
\frontmatter            % i, ii, … 章は番号なし
\tableofcontents
\mainmatter             % 1, 2, … 章を番号付きで
\chapter{序論}
\appendix               % 以降の章は A, B, …
\chapter{記号一覧}
\backmatter             % 参考文献・索引など
\end{document}

目次を作る

目次は **\tableofcontents** を置くだけで生成されます。仕組みはこうです。LaTeX は処理中に各見出しの情報を補助ファイル .toc に書き出し、次回の処理でそれを読み込んで目次を組みます。そのため 正しい目次を得るには最低 2 回コンパイルする 必要があります(1 回目では目次がまだ空、もしくは古い状態です)。latexmk のようなビルドツールは必要な回数を自動で繰り返してくれます。

どの深さまで目次に載せるかは **tocdepth** カウンタが決めます。意味は secnumdepth と同じで、「目次に載せる最下位レベルの level 値」です。たとえば \setcounter{tocdepth}{1} とすると、\section(level 1)までは目次に並びますが \subsection(level 2)以下は省かれます。既定値はやはり **article で 3、bookreport で 2** です。番号付けの secnumdepth と目次の tocdepth は別々に設定できる点に注意してください。

図と表の一覧も同じ流れで作れます。**\listoffigures は図目次を、\listoftables** は表目次を生成し、それぞれ .lof.lot という補助ファイルを使います(やはり複数回のコンパイルが必要)。

星付き見出しのように自動では載らない項目を 手動で目次に足す には、**\addcontentsline{ext}{unit}{text}** を使います。第 1 引数 ext は対象ファイルの拡張子(目次なら toc、図目次なら lof、表目次なら lot)、第 2 引数 unit は項目の種類(sectionchapterfigure など)、第 3 引数 text は載せる文字列です。さらに、行ではない任意の素材(空きなど)を差し込みたいときは **\addtocontents{ext}{text}** を使います。

latex
\tableofcontents
\setcounter{tocdepth}{2}                       % 小節まで目次に載せる

\section*{はじめに}                            % 星付きは自動では載らない
\addcontentsline{toc}{section}{はじめに}        % 手動で目次に追加

\listoffigures                                % 図目次
\addtocontents{lof}{\protect\vspace{2ex}}      % 図目次に空きを差し込む