revtex4-1 中的 \tableofcontents 问题

revtex4-1 中的 \tableofcontents 问题

当我回答的时候图表/表格列表 - 消除点?我发现了一些奇怪的行为;本文件:

\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

相关内容