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}