我有一个大型文档,其索引通过 编译makeindex
,并包含在我的源中,.tex
如下所示:
\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{Index}
\printindex
但是,\addcontentsline
没有正确地将索引添加到目录或生成的 PDF 中的书签列表中。
参考书目....................................................................................................................................................................................330
一个解决方案是写入新命令,,\immediateaddcontentsline
这会将索引添加到目录和书签列表中。书签链接正常工作。但在目录中,页码现在以罗马数字“xvi”而不是“349”列出。
参考书目....................................................................................................................................................................................330
索引....................................................................................................................................................................................................................................................... xvi
“xvi” 是当前页面,所以看起来有些事情非常混乱。这可能与新 TOC 命令的即时性有关。
是否有可能将索引列在目录中?还是我必须使用不同的索引制作器?
答案1
无需修改\addcontentsline
,只需加载我的idxlayout
带有选项的包totoc
。 (idxlayout
与标准类、KOMA-Script 类和兼容memoir
。)
\documentclass{report}
\usepackage{makeidx}
\makeindex
\usepackage[totoc]{idxlayout}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\chapter{foo}
Some text.\index{Text}
\printindex
\end{document}
答案2
假设\printindex
触发器\chapter*
和章节总是从右侧页面开始,尝试插入\cleardoublepage
然后\addcontentsline
。如果章节可以从右侧页面或左侧页面开始,\clearpage
就足够了。
答案3
另外还有tocbibind
包以包含目录、参考书目和目录中的索引。如果您只想包含索引,请使用
\usepackage[nottoc,notbib]{tocbibind}
\phantomsection
并在索引之前放置一个,这样超链接就不会针对索引之前的某些内容。
答案4
颠倒这些行的顺序可能会有效果,例如,
\printindex
\addcontentsline{toc}{chapter}{Index}
至少,当我遇到与 bibtex 书目类似的问题时,它确实如此,
\bibliography{references}
\addcontentsline{toc}{section}{References}