TeXの見出し、目次、相互参照について

【2023-10-08加筆】

jsbookで\chapter, \section, \subsectionを使って原稿を書き、bibtexで参考文献を挿入している。

また文章内では\chaplabel, \chapref, \seclabel, \secref, \subseclabel, \subsecrefで相互参照をしている。

見出し、目次、相互参照に関して躓いたところをメモする。

(1) 一部の章から番号を除くことに関わる問題

デフォルトだと、それぞれ第1章、1.1、1.1.1のように見出しが表示され、目次にも同じように反映される。

序論と結論のように、第X章という見出しをつけたくない\chapterが部分的に存在する場合、\chapter*{章の題名}のようにする。

しかし、そうすると三つの問題が発生する。

(1.1) 番号を除いた章が目次に表示されない問題

これを解決するには、\chapter*{章の題名}の次に以下を加える。

\addcontentsline{toc}{chapter}{章の題名}

これは\frontmatterの\listoftablesや\listoffiguresを目次に追加するためにも使える。

(1.2) 序論の番号を除くと、その下にある\section以下が0.1, 0.1.1のように表示される問題

解決策として、まずは\sectionと\subsectionの見出しの形式を第1節、第1項のように変更することを考えた。

そのためには、プリアンブルに以下のように記述する。

\renewcommand\thesection{第\arabic{section}節}
\renewcommand\thesubsection{第\arabic{subsection}項}

当初は上記の対応が最適だと思っていたのだが、そうすると違う\sectionの下の\subsectionを\subsecrefで相互参照をする際に、\secrefまで書かなければいけないという問題が出てくることに気づいた。

それは面倒くさいので、\chapter, \section, \subsectionがそれぞれ第1章、1、1.1のように表示される方がやりやすい。

つまりjsbookのデフォルトの設定からの微修正である。

そこで以下のようにプリアンブルに記述することにした。

\renewcommand\thesection{\arabic{section}}
\renewcommand\thesubsection{\thesection.\arabic{subsection}}

(1.3) 結論の番号を除くと、その下にある\section以下がその前の章の\sectionの続きであると認識されてしまい、第1節から始まってくれない問題

これを解決するには、最初の\sectionの直前に以下を追加する。

\setcounter{section}{0}

(2) 相互参照の書式自動化

相互参照は、そのままやると\chapter, \section, \subsectionの数字が出てくるだけで、読者には何のことだか伝わらない。

そこで、自分で「第\secref{}節」などと入力するわけだが、これは手間である。

そこで書式を自動化するために、refstyleパッケージを使う。

以下では\chapref, \secref, \subsecref, \figref, \tabrefについて指定している。

\usepackage{refstyle}
\newref{chap}{refcmd={{第\ref{#1}章}}
\newref{sec}{refcmd={{第\ref{#1}節}}
\newref{subsec}{refcmd={{第\ref{#1}節}}
\newref{fig}{refcmd={{図\ref{#1}}}
\newref{tab}{refcmd={{表\ref{#1}}}

こうすると、例えば\secref{}と書くだけで、「第X節」と表示してくれる。

ちなみに上記で\secrefも\subsecrefも両方「節」なのは、前述したように\subsectionの見出しを「1.1」のようにしているので、「第1節」と「第1.1節」で区別できるからである。

(3) 参考文献リストに関わる問題

bibtexで自動的に参考文献リストを文末に表示してくれるのだが、そのままでは目次に参考文献リストが表示されない。

そのため、プリアンブルに以下を追加する。

\usepackage[nottoc,notlot,notlof]{tocbibind}