我似乎遇到了 LaTeX 中有关目录的一个错误。显然,如果 a\addcontentsline
后面跟着\include
,则包含文件中的所有标题都会打印在 指定的标题之前\addcontentsline
。
以下是 MWE:
\documentclass{report}
\begin{document}
\tableofcontents
\chapter{Hello}
\part*{Unnumbered part}
\addcontentsline{toc}{part}{Unnumbered part}
% \chapter{How do you do?}
% The bug disappears if I uncomment the line above.
\include{bug_include}
% This include starts with a \chapter command. The rest of the file is irrelevant.
\end{document}
该文件bug_include.tex
以一个命令开始\chapter
,比如,\chapter{Goodbye}
并且可能包含其他头命令(\section
,等等)
经过两次编译后,我得到的是一个目录,其中包含
1. Hello
2. Goodbye
2.1 A section in bug_include
Unnumbered part
而我应该得到
1. Hello
Unnumbered part
2. Goodbye
2.1 A section in bug_include
请注意, 似乎\include
是错误的重要部分。如果主文件在 之后包含常规部分命令\addcontentsline
,则不会发生此错误。
\addcontentsline
我可以通过在命令前添加 来隐藏错误\part*
。但由于我通常也使用该hyperref
包,因此我获得正确链接的实际解决方法实际上是:
\cleardoublepage\phantomsection\addcontentsline{toc}{part}{Unnumbered part}
\part*{Unnumbered part}
我在 fedora 37 打包的 texlive 2001 和 fedora 38 打包的 texlive 2022 中发现了这个错误。
我是不是忽略了什么?这是一个众所周知的错误吗?我应该向某个地方报告吗?
注意:这个错误可能与所报告的错误相同485320,但另一个问题没有 MWE,因此很难说。