在目录中添加带星号的章节标题后出现问题

在目录中添加带星号的章节标题后出现问题

我的文档中有带星号和不带星号的版本,我想将这两种类型都添加到目录中。我使用的是 titletoc,并尝试按如下方式解决:

\titleformat{\section}[hang]
{\Large\bfseries}
{}{0em}{\MakeUppercase{#1}}

\titleformat{name=\section,numberless}[block]
{\large\filcenter\bfseries}
{}{0em}{#1\addcontentsline{toc}{section}{#1}}

\titlecontents*{section}[0em]{\normalsize}{}{}{~\thecontentspage}
[, ][.\vspace{0.5em}]

除了两个问题外,这几乎按我想要的方式工作:

  1. 当我在文档中使用 \section* 时,收到以下警告:

软件包 hyperref 警告:书签的锚点和其父级的锚点不能 (hyperref) 相同。在输入行 160 处添加了一个新锚点。

  1. 有时在生成的目录中,章节标题末尾和将其与下一个标题分开的逗号之间有一个空格,如下所示:

第 1 部分:部分标题 1

一个部分标题 1,一个带星号的部分标题 1,另一个部分标题 1。

我尝试将 titlecontents 定义的结尾更改为:

[\unskip, ][.\vspace{0.5em}]

这确实消除了一些不需要的空间,但不是全部。我不知道是什么导致了额外的空间的产生。救命!

答案1

我建议您创建自己的分段命令:

\newcommand{\nonumsection}[1]{\section*{#1}%
\addcontentsline{toc}{section}{#1}}

您需要为 nonum-chapter、-subsection 等创建一个命令。我一直都是这么做的。

答案2

好的,经过反复尝试,我终于找到了解决方案。

要摆脱超链接警告:使用 \phantomsection:

\titleformat{name=\section,numberless}[block]                                             
% how to handle \section*
{\large\filcenter\bfseries}
{}{0em}{#1\phantomsection\addcontentsline{toc}{section}{#1}}

要删除目录中出现 section* 条目时逗号分隔符前的空格:

即使我没有显示目录中的子部分或更低部分:

\protect\setcounter{tocdepth}{1}

仍然需要为 subsection 和 subsubsection 定义一个 \titlecontents 行。然后神秘的空格就消失了。

相关内容