请考虑以下示例:
\documentclass{article}
\usepackage{titletoc}
\titlecontents{section}
[2em]
{\normalfont}
{\contentslabel{1.5em}}
{\hspace*{-1.5em}}
{\titlerule*[1em]{.}\contentspage}
\pagenumbering{roman}
\begin{document}
\tableofcontents
\section{}
\clearpage
\section{}
\clearpage
\setcounter{page}{88}
\section{}
\end{document}
结果如下:
这里最后一个页码的结果是Overfull \hbox
。我应该如何正确配置 ,\titlecontents
以便无论页码长度如何,都可以右对齐?
答案1
您可以通过重新定义来调整页码宽度\@pnumwidth
:
\makeatletter
\renewcommand*{\@pnumwidth}{4em}
\makeatother
平均能量损失
\documentclass{article}
\usepackage{titletoc}
\titlecontents{section}
[2em]
{\normalfont}
{\contentslabel{1.5em}}
{\hspace*{-1.5em}}
{\titlerule*[1em]{.}\contentspage}
\makeatletter
\renewcommand*{\@pnumwidth}{4em}
\makeatother
\pagenumbering{roman}
\begin{document}
\tableofcontents
\section{}
\clearpage
\section{}
\clearpage
\setcounter{page}{88}
\section{}
\end{document}
答案2
感谢@DavidPurton 在问题评论中提出的链接,扩大\contentsmargin
(或者可能是内部扩大\@pnumwidth
)是一种解决方案。但是,为了让其他条目看起来更好,最好在本地进行更改(这应该在内容页码稳定时的最终运行中进行)。
\addtocontents{toc}{\bgroup\contentsmargin{...}}
...
\addtocontents{toc}{\egroup}
完整代码:
\documentclass{article}
\usepackage{titletoc}
\titlecontents{section}
[2em]
{\normalfont}
{\contentslabel{1.5em}}
{\hspace*{-1.5em}}
{\titlerule*[1em]{.}\contentspage}
\pagenumbering{roman}
\begin{document}
\tableofcontents
\section{}
\clearpage
\section{}
\clearpage
\setcounter{page}{88}
\addtocontents{toc}{\bgroup\contentsmargin{1.5cm}}
\section{}
\addtocontents{toc}{\egroup}
\end{document}