目次でsubsectionの項目だけを2段組みで表示させてみました。
目次を作るときにchapterとsectionが含まれるのは当然としても、subsectionも表示させるか迷うところです。
どのレベルまで目次に表示させるかは
\setcounter{tocdepth}{2}
で値を指定します。jbook.clsはこの価が2でsubsectionまで表示、jsbook.clsは値が1なのでsectionまでの表示です。
\tableofcontentsを使って生成される*.tocファイルに
\contentsline {subsection}{\numberline {1.1.1}サブセクション}{3}
の行があったとすると、これを実現するために呼ばれるマクロは\l@subsectionです。chapterなら\l@chapterです。
2段組みの実現はjbook.clsに手を加えて2段組みになるようにしてみました。スイッチで左と右を判断しているだけの単純な仕組みです。
\rlapを使って左のsubsectionを出力しても描画ポイントが移動しないようにしました。
\newif\ifTocSubsecLeft % subsectionが左側にくるかどうか
\TocSubsecLefttrue
\newcommand*{\l@chapter}[2]{%
\TocSubsecLefttrue % subsectionの連続が終わったのでリセットしてる
\ifnum \c@tocdepth >\m@ne
...
\newcommand*{\l@section}{\TocSubsecLefttrue % ここでもリセット
\@dottedtocline{1}{1.5em}{2.3em}}
\newcommand*{\l@subsection}[2] {%
\def\numberline##1{##1\hskip1zw}%
% 左と右を交互に繰り返すように
\ifTocSubsecLeft
\noindent\hskip3.8em\rlap{#1\hskip1em #2}%
\TocSubsecLeftfalse
\else
\TocSubsecLefttrue
\noindent\hskip50mm #1\hskip1em #2\par
\fi}
コメント