根据使用 \addcontentsline 添加的章节未出现在目录中,第 2 节未显示在目录中的原因是它是一个空白页。但是,即使我添加了图像,目录仍然不包含第 2 节。我猜是因为同样的原因(页面中有空文本)。有办法解决这个问题吗?仅供参考,我能够将文本添加到第 2 节中,并且效果很好,但我只想知道一种简洁的方法。
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\tableofcontents
blub
\addcontentsline{toc}{section}{section 1}
\newpage
%empty page
\begin{figure}[t]
\centering
\includegraphics[width=0.9\textwidth]{pic.jpg}
\caption{pic A}
\label{picA}
\end{figure}
\addcontentsline{toc}{section}{section 2} %lost
\end{document}
答案1
免责声明
此解决方案在某些情况下会产生错误的页码!请谨慎使用!
解决方案
真正的问题是,如果\write
( 使用的\addcontentsline
) 毕竟是文档中的材料,它就会丢失。如果我们将其设为\immediate\write
,它会进入目录,但可能带有错误的页码,即展开的页码,而不是排版周围文本的页码。
\documentclass{article}
\usepackage{graphicx}
\makeatletter
\let\orig@write\write
% xacl = extra add contents line
% USE WITH CAUTION!!!
\def\xacl{\def\write{\immediate\orig@write}}
\makeatother
\begin{document}
\tableofcontents
blub
\addcontentsline{toc}{section}{section 1}
\newpage
%empty page
\begin{figure}[t]
\centering
\includegraphics[width=0.9\textwidth]{pic.jpg}
\caption{pic A}
\label{picA}
\end{figure}
\begingroup
\xacl % locally make `\write -> \immediate@write`
\addcontentsline{toc}{section}{section 2} %lost
\endgroup
\end{document}