目录中页码位置不规则

目录中页码位置不规则

我对目录中页码的位置有疑问,它们在左边而不是在右边:

例子

这种行为的 MWE(不要介意最后一个词,我不得不玩弄标题的长度):

\documentclass[a4paper, 12pt]{book}
\begin{document}
\tableofcontents
\part{Regulating two-sided markets of electronic commu}
Lorem ipsum
\end{document}

有什么方法可以纠正这个问题吗?

答案1

这似乎是 中内容行的标准打印命令的一个缺陷book.cls。每个级别都有一个这样的命令。默认情况下,您将获得部分标题,后跟\hfil、可拉伸空格,后跟页码。但是,\hfil如果此时发生换行符, 将被 tex 吞没。以下是标准定义的替代:

示例输出

\documentclass[a4paper, 12pt]{book}

\makeatletter
\renewcommand*\l@part[2]{%
  \ifnum \c@tocdepth >-2\relax
    \addpenalty{-\@highpenalty}%
    \addvspace{2.25em \@plus\p@}%
    \setlength\@tempdima{3em}%
    \begingroup
      \parindent \z@ \rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      {\leavevmode
       \large \bfseries #1\hfil\vadjust{}\nobreak\hfil\hb@xt@\@pnumwidth{\hss #2}}\par
       \nobreak
         \global\@nobreaktrue
         \everypar{\global\@nobreakfalse\everypar{}}%
    \endgroup
  \fi}
\makeatother

\begin{document}

\contentsline {part}{I\hspace {1em}Regulating two-sided markets of electronic commu}{3}

\end{document}

该代码替换\hfil

\hfil\vadjust{}\nobreak\hfil

这是 TeXBook p393 上的技巧:\vadjust{}不执行任何操作,但不会在换行符处被吞掉,因此\hfil之后仍会存在。

您可能希望省略其中的第一个\hfil。在给定的示例中,页码将与部分标题显示在同一行上。

相关内容