昨日に引き続き、同人誌制作の振り返り。
今日は索引の作り方について。
なお、とは区別せずに扱っている。
参考にしたのは以下:
LaTeX2ε辞典 増補改訂版 (DESKTOP REFERENCE)
- 作者: 吉永徹美
- 出版社/メーカー: 翔泳社
- 発売日: 2018/08/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
あと、索引から参照されるべき単語については以下を参照:
索引の作り方
索引を作るにはmendexなどを使う。
自分はupmendexを使用した。
そして以下のようにする:
- 索引のスタイルファイルを用意する
makeidx
パッケージを追加して\makeindex
を呼び出す\index
で参照されるべき単語にインデックスを追加する\printindex
で索引を出力する
索引のスタイルファイル
索引をどう出力するか指定するためのスタイルファイル(拡張子は.ist)を用意してupmendexなどに引数で渡す。
(latexmkを使っている場合、.latexmkrc
にオプションを書いておく)
スタイルファイルに何を書けるのかは以下のようにオンラインマニュアルを見れば分かる:
$ man upmendex
自分は以下のようなスタイルファイルをindex.ist
という名前で用意した:
% 頭文字の出力 lethead_flag 1 % 頭文字の出力フラグ (0: 出力しない, -1: 小文字出力, 1: 大文字出力) letter_head 1 % 日本語の頭文字の出力フラグ (0: 出力しない, 1: カタカナ, 2: ひらがな) lethead_prefix "\\idxgrphead{" % 頭文字の前につける文字列 lethead_suffix "}" % 頭文字の後につける文字列 % エントリと最初のページ番号との間の区切り文字列 (0: 主, 1: サブ, 2: サブサブ) delim_0 "\\quad " delim_1 "\\quad " delim_2 "\\quad "
頭文字というのは「A」とか「あ」とかの見出し。
lethead_prefix
とlethead_suffix
を指定しているけど、これで\idxgrphead{あ}
のように呼び出されることになるので、\idxgrphead
を定義することで頭文字のスタイルを変えることが出来るようにしている。
「主」「サブ」「サブサブ」というのは、索引を入れ子にすると関係してくる。
(例えば「オイラーの公式」「オイラー数」を入れ子にすると、主:「オイラー」、サブ:「ーーの公式」「ーー数」みたいになる)
他にもページ番号間の区切り文字を指定したりなども出来る。
インデックスを追加するマクロ
インデックスの追加は以下のように\index
命令を使う:
...ショーダウン\index{ショーダウン}というのは...
漢字の読みも指定する場合は以下のようにする:
...期待値\index{きたいち@期待値}とは...
ただ、見ての通り基本的には同じ単語をその場で使ってるので、\index
で索引を追加するのは二度手間・・・
そこで\addindex
と\addindexyomi
というマクロを用意した:
% インデックスの追加 \newcommand{\addindex}[1]{#1\index{#1}} \newcommand{\addindexyomi}[2]{#1\index{#2@#1}}
これを使えば次のように書ける:
...\addindex{ショーダウン}というのは... ...\addindexyomi{期待値}{きたいち}とは...
索引のデザインのカスタマイズ
あとは索引のデザインのカスタマイズ。
まずはスタイルファイルに書いていた\idxgrphead
を定義しておく:
% 索引のグループの見出し \newcommand{\idxgrphead}[1]{% #1: 頭文字 \par% \vspace{\baselineskip}% \hfil{\bfseries #1}\hfil% \vspace{\baselineskip}\par}
上下に一行分の空きを入れて中央寄せした感じ。
あと参考文献と同じように目次に追加されるときに\protect\numberline{\null}
が入るようにした:
\makeatletter %%% 索引のスタイルをカスタマイズ % 目次でのインデントを合わせる \renewenvironment{theindex}{% 索引を3段組で出力する環境 \if@twocolumn \onecolumn\@restonecolfalse \else \clearpage\@restonecoltrue \fi \columnseprule.4pt \columnsep 2\jsZw \ifx\multicols\@undefined \twocolumn[\@makeschapterhead{\indexname}% \addcontentsline{toc}{chapter}{\protect\numberline{\null}\indexname}]%ここを修正 \else \ifdim\textwidth<\fullwidth \setlength{\evensidemargin}{\oddsidemargin} \setlength{\textwidth}{\fullwidth} \setlength{\linewidth}{\fullwidth} \begin{multicols}{3}[\chapter*{\indexname}% \addcontentsline{toc}{chapter}{\protect\numberline{\null}\indexname}]%ここを修正 \else \begin{multicols}{2}[\chapter*{\indexname}% \addcontentsline{toc}{chapter}{\protect\numberline{\null}\indexname}]%ここを修正 \fi \fi \@mkboth{\indexname}{}% \plainifnotempty% \thispagestyle{plain} \parindent\z@ \parskip\z@ \@plus .3\p@\relax \let\item\@idxitem \raggedright \footnotesize\narrowbaselines }{ \ifx\multicols\@undefined \if@restonecol\onecolumn\fi \else \end{multicols} \fi \clearpage } \makeatother
章まで出すとかいう余計なことをしなければこんな修正は不要なんだけどねぇ(^^;
索引の作り方については以上。
ちなみに『Math Poker Girl』はBOOTHで販売しているのでよろしくお願いします!
今日はここまで!