使用 \addcontentsline 手动添加 \dotfill

使用 \addcontentsline 手动添加 \dotfill

我正在使用自定义文档类(基于JHEP),其中目录中没有小节的点。我正在手动将章节名称添加到目录中。是否可以以某种方式将目录添加\dotfill到目录中,例如

\addcontentsline{toc}{subsection}{Section name\dotfill}

这不起作用,点达不到页码。它们只到达行的一半左右...

此外,tocloft包出现错误,无法使用它。

梅威瑟:

\documentclass{JHEP}
\author{A.U. Thor}
\title{Dotty}
\abstract{Not enough dots}

\usepackage{hyperref}
\begin{document}
\tableofcontents
\addcontentsline{toc}{subsection}{Section name\dotfill}
\end{document}

在此处输入图片描述

答案1

以下补丁(通过etoolbox)重新插入已删除的 ToC 点 - 是的,文档类专门重新定义\@tocline并删除了这些点:

在此处输入图片描述

\documentclass{JHEP}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@tocline}{\hfill}{%
  \leaders\hbox{$\m@th
    \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
  mu$}\hfill}{}{}
\makeatother
\author{A.U. Thor}
\title{Dotty}
\abstract{Not enough dots}

\usepackage{hyperref}
\begin{document}
\tableofcontents
\addcontentsline{toc}{subsection}{Section name}
\end{document}

上述补丁将在目录中为\subsection\subsubsection和插入点\paragraph\subparagraph取决于 的值tocdepth),但不会插入\section。为此,您可以添加

\makeatletter
\patchcmd{\l@section}{\hfil}{%
  \leaders\hbox{$\m@th
    \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
  mu$}\hfill}{}{}
\makeatother

序言部分也提到了这一点。有关领导者的更多信息,请参阅想要用重复的字符串填充行

相关内容