在目录(titletoc)中,如何确保虚线不会被错误地抑制?

在目录(titletoc)中,如何确保虚线不会被错误地抑制?

编辑

我已经重新表述了这个问题,并根据这里一位回答者的建议,我将其作为新问题发布,这里

最初的问题

请考虑下面的目录:

在此处输入图片描述

请注意,中间的目录条目缺少虚线。同时,目录中的第一个和最后一个条目与中间条目略有不同,但这些微小的差异足以导致虚线正常生成。

此 ToC 由以下 MWE 生成:

\documentclass[12pt]{report}
\usepackage[paper=letterpaper,left=1.25in,right=1in]{geometry}
\usepackage{titletoc}
\contentsmargin[140bp]{10pt}
\titlecontents{section}[1in]{}{}{}{\titlerule*[3.3pt]{.}\contentspage}
% the same issue occurs if, instead of the \titlecontents command
% above, we use \dottedcontents{section}[1in]{}{2em}{3.3pt} .
% This is not surprising given that \dottedcontents is defined
% using \titlecontents
\begin{document}
\tableofcontents
\section{Verifying a noninterpretable magenta soundness\ }
\section{Verifying a noninterpretable magenta soundness}
\section{Verifying a noninterpretable magenta source}
\end{document}

\titlecontents如果我们调整和/或中的某些长度参数\contentsmargin,虚线将重新出现在中间条目中(但它可能会消失在另外两个条目中!)。

但所有这些黑客行为都非常烦人。首先,在一篇足够长的文档中,你很可能会调整长度参数来修复一个目录条目中的虚线,结果却发现现在另一个条目中的虚线已经消失了。是的,你也可以保留长度参数,而是通过重新措辞或在末尾添加额外的空格来调整章节标题。但这也很烦人,因为它仍然需要人工干预。

有什么方法可以让虚线“表现”得正确吗?解决方案应该与兼容titletoc

注 1:在我的实际文档中,我也在使用titlesec。因此,我不应该切换到toctofl,因为不建议一起使用toctofl和。titlesec

注 2:切换到memoir类是不切实际的,因为我的实际文档有大量其他格式和自定义,如果要进行切换,我将不得不重新访问它们。

编辑

如果我解释一下我真正想要实现的目标,可能会有所帮助。具体如下:

在此处输入图片描述

即:

  1. 部分名称的右边距比点的右边距大得多(即,它远离左边距)。

  2. 但是,圆点不是从章节名称的右边距开始的。相反,它们从每个章节标题结束的地方开始,通常位于标题右边距的左侧。圆点以它们自己的右边距结束,这个右边距要小得多(即它更靠右,几乎一直到页码)。

  3. 这种效果应该是自动生成的,无需调整长度参数titletoc或章节标题本身,无论(在合理范围内)标题的右边距是多少,无论(在合理范围内)点的右边距是多少,也无论(在合理范围内)章节标题是什么。

(例如,为了生成此示例,我必须调整可选参数\contentsmargin;我最终使用的参数是

\contentsmargin[160bp]{15pt}
\dottedcontents{section}[1in]{}{2em}{3.3pt}

最初我使用的175bp是 而不是160bp,这导致第一个条目丢失了虚线并且其页码显示在最左边 - 与我原始示例的中间条目存在同样的问题。)

答案1

\contentmargin需要一个强制参数。它用于为目录中的页码分配空间。

通常它用于允许使用粗体页码,页码超过 100。此示例的合理选择是\contentsmargin{4ex}

a2

% !TeX TS-program = pdflatex

\documentclass[12pt]{report}
\usepackage[paper=letterpaper,left=1.25in,right=1in,showframe]{geometry} % changed to show margins
\usepackage{titletoc}

\contentsmargin{4ex}%  space for page numbers <<<<<<<<<<<
        
\titlecontents{section}[1in]{}{}{}{\,\titlerule*[3.3pt]{.}{\bfseries\contentspage}} % changed: bold page numbers <<<<
    
\begin{document}
    \tableofcontents

    \newpage    
    \section{Verifying a noninterpretable magenta soundness\ }
    \section{Verifying a noninterpretable magenta soundness}        
    
    \newpage\setcounter{page}{100} % added <<<<<<<<<<<<
    \section{Verifying a noninterpretable magenta source}
    %\section{Verifying a noninterpretable magenta source xxx xxx xxx xxx xxx xxx}
\end{document}

有一个可选参数\contentsmargin

\contentsmargin[<correction>]{<space>}

(小的) 校正长度用于处理特殊情况,即有一行文本比最后一个点长,通过将其添加到<space>

例如添加

\section{Verifying a noninterpretable magenta source xxx xxx xxx xxx xxx xxx}

b

使用时 \contentsmargin[10pt]{4ex}

C

相关内容