![使用“titletoc”重现“book”类的标准布局](https://linux22.com/image/296907/%E4%BD%BF%E7%94%A8%E2%80%9Ctitletoc%E2%80%9D%E9%87%8D%E7%8E%B0%E2%80%9Cbook%E2%80%9D%E7%B1%BB%E7%9A%84%E6%A0%87%E5%87%86%E5%B8%83%E5%B1%80.png)
是否有参考资料可以显示如何使用titletoc
命令(\titlecontents
等)来近似标准类中目录的布局book
?
特别是,我想了解如何对包括\part
和在内的所有分段命令执行此操作\chapter
。
答案1
我找不到任何关于如何使用来定义标准类的布局的参考titletoc
。
查找它的一个地方是类文件本身,对于报告和书籍类中的一章,我们得到以下定义。
\newcommand*\l@chapter[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\vskip 1.0em \@plus\p@
\setlength\@tempdima{1.5em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\penalty\@highpenalty
\endgroup
\fi}
经过一番尝试,我仍然无法得到令人满意的结果。
\documentclass{book}
\usepackage{titletoc}
\titlecontents{chapter}[0pt]{\vspace{1em}\bfseries}{\thecontentslabel\enspace}{}{\hfill\contentspage}[\vspace{2pt}]
\usepackage{blindtext}
\usepackage{showframe}
\begin{document}
\tableofcontents
\blinddocument
\backmatter
\blinddocument
\end{document}
包裹仍在α但尽管如此,非常有用的是,包中tocstyle
没有钩子方法titletoc
想要阻止。这使得更改小部件的外观变得相对容易。
例如,如果你出于非常奇怪的原因想要只是页码更大并且没有衬线,您可以执行以下操作。
\documentclass{book}
\usepackage{blindtext}
\usepackage{showframe}
\usepackage{tocstyle}
\usetocstyle{standard}
\settocfeature{pagenumberhook}{\Large\sffamily}
\begin{document}
\tableofcontents
\blinddocument
\backmatter
\blinddocument
\end{document}
很好地阐明了观点,但不适合放在自己的文档中。
答案2
对于chapter
目录中的样式,以下代码似乎比 Johannes_B 的代码更准确地重现了书籍类样式:
\documentclass{book}
\usepackage{titletoc}
\usepackage{blindtext}
\usepackage{showframe}
\titlecontents{chapter}
[1.5em]
{\addvspace{1em}\bfseries}
{\contentslabel{1.3em}}
{\hspace*{-1.3em}}
{\titlerule*[.5pc]{}\contentspage}
% code by Johannes_B:
%\titlecontents{chapter}
% [0pt]
% {\vspace{1em}\bfseries}
% {\thecontentslabel\enspace}
% {}
% {\hfill\contentspage}[\vspace{2pt}]
\begin{document}
\tableofcontents
\blinddocument
\backmatter
\blinddocument
\end{document}