我正在撰写我的论文。
中间是 LaTeX 代码,右侧面板是 PDF 文件,左侧面板是 Adobe Reader 中看到的导航面板。
TeX 代码中的顺序为 Chapter1-AppendixQ-Chapter2,左侧面板中保留了该顺序。但是,PDF 文件的目录中的第 2 章和附录 Q 是颠倒的。(2.5 数据分析和 2.6 结论是第 2 章中的章节,A1 和 A2 是“appendicex”中的章节。使用\addcontentsline
命令插入“AppendixQ”,因为目录中没有显示附录标题。
我不明白为什么\include{chapter2}
早于\addcontentsline{toc}{chapter}{AppendixQ}
答案1
问题在于延迟写入和立即写入文件的混淆.aux
。目录中的条目首先收集到文件中.aux
。在下次解析文件时,条目将以与文件中相同的顺序.aux
写入文件。.toc
.aux
\addcontentsline
或者\addtocontents
延迟并在页面发货时写入,此时页面的页码已知。相反,\include
立即写入.aux
现在.aux
包含的 TeX 文件的文件。示例:
\include{chapter_foobar}
写道
\@input{chapter_foobar.aux}
在主.aux
文件中。
问题分析
主.tex
文件:
\documentclass{report}
\usepackage[hidelinks]{hyperref}
\usepackage{bookmark}
\begin{document}
\tableofcontents
\clearpage % \include{chap1} calls \clearpage at the begin and end
\addcontentsline{toc}{chapter}{AppendixQ}
\include{chap2}
\end{document}
chap2.tex
:
\chapter{My 2nd paper}
\addcontentsline
在开始新页面时调用“AppendixQ”的 。但是,当\clearpage
被以下 调用时,没有新页面的材料\include
。因此,\@input{chap2}
会立即被 写入\include{chap2}
。然后,稍后,当输出下一页时,“AppendixQ”的条目将写入文件中.aux
。
主.aux
文件:
\@input{chap2.aux}
...
\@writefile{toc}{\contentsline {chapter}{AppendixQ}{2}{chapter*.1}}
chap2.aux
包含:
\@writefile{toc}{\contentsline {chapter}{\numberline {1}My 2nd paper}{2}{chapter.1}}
解决方案
解决方案是移至\addcontentsline
以下文件chap2.tex
:
\addcontentsline{toc}{chapter}{AppendixQ}
\chapter{My 2nd paper}
主.tex
文件:
\documentclass{report}
\usepackage[hidelinks]{hyperref}
\usepackage{bookmark}
\begin{document}
\tableofcontents
\clearpage % by \include{chap1}
\include{chap2}
\end{document}
现在,主.aux
文件包含
\@input{chap2.aux}
并按chap2.aux
正确的顺序包含目录条目:
\@writefile{toc}{\contentsline {chapter}{AppendixQ}{2}{chapter*.1}}
\@writefile{toc}{\contentsline {chapter}{\numberline {1}My 2nd paper}{2}{chapter.1}}