使用“titletoc”重现“book”类的标准布局

使用“titletoc”重现“book”类的标准布局

是否有参考资料可以显示如何使用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}

经过一番尝试,我仍然无法得到令人满意的结果。

jukkaToctitle

\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}

很好地阐明了观点,但不适合放在自己的文档中。

jukkaTocstyle

答案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}

相关内容