目录中的点到页码

目录中的点到页码

我正在尝试制作一个带有从文本到页码的虚线的目录。

我用过这个

\cftsetpnumwidth{\widthof{0}}

直到页码大于 100 时,它才能正常工作。

问题看起来像这样

在此处输入图片描述

因此,当我将宽度更改为

\cftsetpnumwidth{\widthof{00}}

问题是虚线直到页码才出现

在此处输入图片描述

如何解决这些问题?

答案1

第一个键用于在目录中\addtocontents更改。(这将需要更多的工作来处理等。)\@pnumwidth\listoffigures

第二种是使用 \AddToHook{shipout/after}` 自动在第 99 页进行更改。

\documentclass{book}

\makeatletter
\sbox0{\normalsize\normalfont 22}%
\edef\@pnumwidth{\the\wd0}
\sbox0{\normalsize\normalfont 222}%
\edef\@pnumplus{\the\wd0}

\AddToHook{shipout/after}{\ifnum\value{page}=99\relax
  \addtocontents{toc}{\string\let\string\@pnumwidth\string\@pnumplus}%
\fi}
\makeatother

\begin{document}
\tableofcontents
\newpage

\setcounter{page}{99}
\chapter{Not Zero}
\section{Yadda Yadda}
\newpage

\section{OMG It worked!}
\end{document}

答案2

这不是一个常规答案,但评论太长了。

在普通类别(book等)中,虚线末端和页码之间有一个空格,与页码的长度无关。页码也设置在固定宽度框的右侧。这意味着虚线末端和页码之间会有一个空格。页码越长,这个空格就越小。

正常结果将如第二张图所示,而不是第一张图所示。

为什么您认为虚线应该一直延伸到页码?

也许您可以使用该tocloft\renewcommand{\cftpnumalign{l}让所有页码左对齐,这样虚线末尾和页码之间就会有一个固定的间距。

\documentclass...如果您能提供一份我们可以编译的 MWE(从到\end{document}),显示您所做的事情以及问题是什么,那将会非常有帮助。

相关内容