使用 titletoc 命令为不同章节级别创建不同的文本格式时\titlecontents
,页码会变得不对齐。例如
\documentclass{book}
\usepackage{titletoc}
\contentsmargin{2.55em}
\titlecontents{chapter}[0pt]{\scshape}{\thecontentslabel}{}{\hfill \contentspage[\bfseries \thecontentspage]}
\titlecontents{section}[2cm]{\bfseries}{\thecontentslabel}{}{\hfill \contentspage}
\begin{document}
\tableofcontents{}
\chapter{Lorem}
\section{Ipsum}
\end{document}
答案1
回答我自己的问题:
问题似乎特别在于使用格式化命令,例如\bfseries
命令的 before/above 部分。不知何故,它们最终会影响填充部分的工作方式。我发现的一个解决方案是\normalfont
首先使用填充部分,然后重新将任何格式应用于页码(如果需要)。示例:
\documentclass{book}
\usepackage{titletoc}
\contentsmargin{2.55em}
\titlecontents{chapter}[0pt]{\scshape}{\thecontentslabel}{}{\normalfont\hfill \contentspage[\bfseries \thecontentspage]}
\titlecontents{section}[2cm]{\bfseries}{\thecontentslabel}{}{\normalfont\hfill \contentspage[\bfseries \thecontentspage]}
\begin{document}
\tableofcontents{}
\chapter{Lorem}
\section{Ipsum}
\end{document}
这现在导致
然而,应该注意的是,这\contentsmargin
似乎也在这里发挥了一定作用,因为我需要将它添加到第一个示例中,以便至少获得明显明显的错位。我非常欢迎专家们提出想法和解释,为什么会这样。
答案2
\contentsmargin
是为了正确的目录的边距。此代码生成 1cm 的右边距:
\documentclass{book}
\usepackage[showframe]{geometry}%
\usepackage{titletoc}
\contentsmargin{1cm}
\titlecontents{chapter}[3em]{\scshape}{\contentslabel[\thecontentslabel]{2.8em}}{}{\hfill\bfseries\thecontentspage}
\titlecontents{section}[2cm]{\bfseries}{\contentslabel[\thecontentslabel]{\dimexpr2cm-2.6em}}{}{\hfill\thecontentspage}
\begin{document}
\tableofcontents
\chapter{Lorem}
\section{Ipsum}
\end{document}
更改为\contentsmargin{0cm}
:
答案3
我刚刚遇到了同样的问题。似乎只有在更改字体时才会发生这种情况\titlecontents
和以 em 为单位指定\contentsmargin
。由于 1em 的大小取决于字体大小,titletoc 将页码放在大小不正确的框中。最简单的解决方案是指定\contentsmargin
其他单位,例如
\contentsmargin{30pt}