长页码在目录中未正确右对齐

长页码在目录中未正确右对齐

请考虑以下示例:

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

相关内容