我对目录中页码的位置有疑问,它们在左边而不是在右边:
这种行为的 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
。在给定的示例中,页码将与部分标题显示在同一行上。