Re: 目次におけるリーダー線とページ番号の表示について

名前: しっぽ愛好家
日時: 2003-04-06 10:10:51
IPアドレス: 211.4.118.*

>>17993 \chapter と \chapter* のそれぞれに対応する目次項目を 同じ \l@chapter で整形するのではなく, 異なるマクロで整形すればいいのではありませんか? %%% 整形に用いるマクロを変える,というところですでに分岐しています. 例えば,``はじめに'' のところでは, \chapter*{はじめに} \addcontentsline{chapter*}{はじめに} と記述し(本来なら,\@schatpter の定義に \addcontentsline{chapter*}{...} を 追加するところです(*)),\l@chapter* を次のように定義します. \@namedef{chapter*}#1#2{% \ifnum \c@tocdepth >\m@ne \addpenalty{-\@highpenalty}% \addvspace{1.0em \@plus\p@}% \begingroup \parindent\z@ \rightskip\@pnumwidth \parfillskip-\rightskip \leavevmode\TocChapterFont% %% \TocChapterFont 98/11/10 \setlength\@lnumwidth{3.7zw}% \advance\leftskip\@lnumwidth \hskip-\leftskip #1\nobreak\tocchapterline\nobreak\TocSectionFont\hbox to\@pnumwidth{\hss#2}\par% %%% \hfil を \tocchapterline に変更 %%% オリジナル % #1\nobreak\hfil\nobreak\TocNumChapterFont\hbox to\@pnumwidth{\hss#2}\par% \penalty\@highpenalty \endgroup \fi} %%% (*) thebibliography 環境などで暗黙のうちに \chapter* が用いられていて, %%% かつ,それらに対する項目を目次に出力する必要がなければ, %%% 該当する \chapter* を適宜書き換えます. 一方,\l@chapter の定義では,無条件に #2(ページ番号)を用いないことにして \def\l@chapter#1#2{% \ifnum \c@tocdepth >\m@ne \addpenalty{-\@highpenalty}% \addvspace{1.0em \@plus\p@}% \begingroup \parindent\z@ \rightskip\@pnumwidth \parfillskip\@flushglue%%% ページ番号部分を置かないので,通常の値を使用. \leavevmode\TocChapterFont% %% \TocChapterFont 98/11/10 \setlength\@lnumwidth{3.7zw}% \advance\leftskip\@lnumwidth \hskip-\leftskip #1\par %%% 上の行の #2 を使用している部分を削除 \penalty\@highpenalty \endgroup \fi} なぜ,\addcontetsline{chapter*}{...} としたときに \l@chapter* を (\@namedef で)定義する必要があるか,という点については, 目次作成の機構について解説した文献を参照してください. %%% まあ,\addcontentsline{<category>}{<material>} に対応して, %%% toc ファイルに \contentsline{<category>}{<material>}{<page>} が %%% 書き出されることを確認すれば,あとは,\contentsline の定義 %%% \def\contensline#1{\csname l@#1\endcsname} %%% から,\l@<category> が必要となることは自明でしょう. [蛇足] >なお、リーダー線とページ番号は、 >すべて TocSectionFontでという要望が付きます。 ``要望'' とは? ``お仕事'' でやっていることですか? %%% それならば,上記のことはご自分でできるように %%% 勉強しておきましょう.

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)