使用 \tableofcontents 时将目录项左对齐

使用 \tableofcontents 时将目录项左对齐

我有一个目录,其中大多数项目的排版都很好。但是,在某些情况下,某些项目(特别是part项目)似乎完全对齐,从而产生了可怕的间距。在我的文档中,只有当行中有几个非常长的单词时才会发生这种情况。间距很差的“第二部分”示例,带有填充文本:

TOC 项目的对齐

我想将所有目录项(包括part)左对齐,而不是使它们完全对齐,这样就不会出现此类间距问题,而不管其他因素,例如\\目录项中的手动换行符()等。重要的是,只有实际文本(如“第二部分:本部分的标题”)才向左对齐:\dotfill并且如果它们确实出现(如 MWE 中的章节项目),则应该保留页码位置。我曾尝试使用raggedright甚至flushleft内部环境\addcontentsline,但这些都会产生错误并且无法编译。

我尝试为这个问题创建 MWE,但“第二部分”的排版方式很大程度上取决于我对页面尺寸、文本大小、所用字体和单词长度的设置,我无法创建能够重现问题的 MWE,而不需要太多细节,我认为这不会影响解决方案。而且这样的 MWE 对遇到同样问题的人没有多大用处。

因此我创建了 MWE,它不会重现问题,但会显示我用于 TOC 的基本设置和我用于添加 TOC 项目的命令,希望能提供足够的信息来回答这个问题:

\documentclass[final,12pt]{book}
\usepackage{tocloft}
\renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}}
\renewcommand{\cftchapfont}{\mdseries}
\renewcommand{\cftchappagefont}{\mdseries}
\cftpagenumbersoff{part}
\begin{document}
\tableofcontents

\addcontentsline{toc}{part}{Part Two: Bbbbbbbbbb Cccccccccc, A~Dddddddddd Bbbbbbbbbb ww Baaa}

\addcontentsline{toc}{chapter}{Chapter Five: Some chapter title}%

\addcontentsline{toc}{chapter}{Chapter Six: Very long chapter title that goes to the next line in my set up}%

\end{document}

有没有办法让所有目录项始终向左对齐,同时保留页面右侧的页码位置?我知道我可以使用表格和标签“手动”创建目录作为页码参考,在这种情况下更容易实现对齐,但我希望有解决方案允许使用命令生成目录来实现这一点\tableofcontents

\chapter*附言:我使用由、\part*和命令组成的自定义宏\addcontentsline*,但我只将其包含\addcontentsline在此 MWE 中,因为其他内容似乎与该特定问题无关。

答案1

宏可以\raggedright通过调整 来工作\rightskip,这已被 tocloft 使用。更重要的是,您无法在一行中间更改值。

下面将使用\raggedright(或多或少)每个标题,而不仅仅是部分。

\documentclass[final,12pt]{book}
\usepackage{tocloft}
\renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}}
\renewcommand{\cftchapfont}{\mdseries}
\renewcommand{\cftchappagefont}{\mdseries}
\cftpagenumbersoff{part}

\makeatletter
\bgroup
\advance\@flushglue by \@tocrmarg
\xdef\@tocrmarg{\the\@flushglue}%
\egroup
\makeatother

\begin{document}
\cftchapnumwidth=0pt % removes hanging indentation
\tableofcontents

\addcontentsline{toc}{part}{Part Two: Bbbbbbbbbb Cccccccccc, A~Dddd Bbbbbbbbbb ww Baaa}

\addcontentsline{toc}{chapter}{Chapter Five: Some chapter title}%

\addcontentsline{toc}{chapter}{Chapter Six: Very long chapter title that goes to the next line in my set up}%

\end{document}

\raggedright tocloft

相关内容