在回答这个问题时:法语章节编号使用 bis、ter 等,我意识到当您\addcontentsline
使用“非常规编号”(在我的情况下为 2 bis、2 ter 等)将某些内容添加(使用)到 ToC 时,该部分的标题几乎与通常的章节标题左对齐,但并不完全对齐。
例如,以下 MWE
\documentclass{book}
\usepackage[explicit]{titlesec}
\usepackage{lipsum}
\begin{document}
\tableofcontents
\section{First section header}
\lipsum[1]
\section{Second section header}
\lipsum[2]
\section*{Third section header}
\addcontentsline{toc}{section}{\numberline{2 bis} Bis section test}
\end{document}
生产
我认为这可以通过重新定义 来管理\l@section
。事实上,在 LaTeX Companion 中,提到 的第三个参数\@dottetocline
是包含节号的框的宽度。但是,将以下代码添加到我的序言中不会改变任何东西。
\makeatletter
\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.5em}}
\makeatother
知道为什么会发生这种情况吗?如何解决此问题?
答案1
在将内容写入目录时,您应该意识到宏可能会被扩展以显示其内部工作原理。这种扩展可能会导致问题。以下是查看文件时在您的实例中发生的情况.toc
:
\contentsline {section}{\numberline {0.1}First section header}{1}
\contentsline {section}{\numberline {0.2}Second section header}{1}
\contentsline {section}{\hbox to\@tempdima {2 bis\hfil }Bis section test}{1}
请注意,即使指定了,手动写入的条目也.toc
有\hbox to\@tempdima{..}
而不是。因此,当读取文件进行打印时(调用),可能具有与传统调用时不同的含义。\numberline
\numberline
.toc
\tableofcontents
\@tempdima
\numberline
\protect
通过离子扩展可以提供一种解决方案:
\documentclass{book}
%\usepackage[explicit]{titlesec}
\usepackage{lipsum}
\begin{document}
\tableofcontents
\section{First section header}
\lipsum[1]
\section{Second section header}
\lipsum[2]
\section*{Third section header}
\addcontentsline{toc}{section}{\protect\numberline{2 bis}Bis section test}
\end{document}
该.toc
文件现在类似于:
\contentsline {section}{\numberline {0.1}First section header}{1}
\contentsline {section}{\numberline {0.2}Second section header}{1}
\contentsline {section}{\numberline {2 bis}Bis section test}{1}
对于\numberline
宽度的一般调整,请考虑阅读目录中的罗马数字变得“太宽”。
答案2
如果您不使用该titlesec
包或者使用titlesec
不带explicit
选项的包,则重新定义\l@section
可以正常工作。