当我回答的时候图表/表格列表 - 消除点?我发现了一些奇怪的行为;本文件:
\documentclass[aps,pra,reprint]{revtex4-1}
\begin{document}
\listoffigures
\listoftables
\tableofcontents
\section{Test Section}
\subsection{Test Subsection}
\section{Another Test Section}
\end{document}
产生预期的结果:
但一旦\tableofcontents
放在其他两个列表之前,就像
\documentclass[aps,pra,reprint]{revtex4-1}
\begin{document}
\tableofcontents
\listoffigures
\listoftables
\section{Test Section}
\subsection{Test Subsection}
\section{Another Test Section}
\end{document}
生成的文档在目录中显示出一些问题;章节编号及其标题重叠:
造成该问题的原因是什么?如何解决?
答案1
问题
问题是,所有 toc 生成命令都有通用代码,可以扩展为类似如下的内容(参见\@starttoc
中的定义ltxutil.dtx
):
\toc@pre % Loads previously saved \tocmax@section etc. and sets
% \tocdim@section etc. to a fixes small value (5pt)
...
\@input{\jobname.#1} % Formats the toc, lof etc. but only
% computes \tocdim@section etc. if the
% .toc is loaded
...
\toc@post % Saves \tocdim@section etc. as \tocmax@section in .aux
\tocdim@section
只有在实际目录中才能正确计算这些值(lof 和 lot 不包含节线)。如果 lof 或 lot 出现在目录之后,则\toc@pre
重置这些值并\toc@post
保存重置的值,然后在下次读取和使用。
按照书写方式,此代码正常工作的唯一方法是确保\tableofcontents
命令最后出现。
快速解决
禁止排版\tocmax@*
后重置写入各种信息:\tableofcontents
\tableofcontents
\makeatletter
\let\toc@pre\relax
\let\toc@post\relax
\makeatother
\listoffigures
\listoftables