我在使用 hyperref 包时遇到了一些问题。我想创建一个没有编号的简介章节,因此我使用\chapter*{Introduction}
和\addcontentsline{toc}{chapter}{Introduction}
因为我希望它出现在目录中(参见示例)。
但是我的 PDF 查看器中的链接却出错了,而且自动创建的页眉也不再正确(见图)。目录显示正确的页码(第 1 页),但链接也是错误的。
我这里犯了什么错误?
\documentclass{scrbook}
\usepackage{hyperref}
\usepackage{blindtext}
\usepackage{glossaries}
\makeglossaries
\newacronym{eg}{e.g.}{%
for example
}
\begin{document}
\frontmatter
% abstract before the table of contents
\chapter*{Abstract}
\addcontentsline{toc}{chapter}{Abstract}
\blindtext
\tableofcontents
% chapter with acronyms
\cleardoublepage \phantomsection
\printglossary[type=\acronymtype]
\addcontentsline{toc}{chapter}{Glossary}
\cleardoublepage
\mainmatter
\phantomsection
% \chapter{Introduction} % with this everything is correct but I don't want the number
\chapter*{Introduction}
\addcontentsline{toc}{chapter}{Introduction}
\blindtext
\pagebreak
\blindtext
% first chapter
\chapter{Chapter1}
\gls{eg}
\blindtext
\pagebreak
\blindtext
\end{document}
答案1
KOMA-Script 为几乎所有可能的情况提供了非常强大的命令。正如您所注意到的,标题显示上一章,并且\chapter*
与一起使用时超链接无法正常工作addcontentsline
。
该命令\addchap
负责处理此问题。它将未编号的章节添加到目录中,并进行\markboth
相应设置。此外,它还确保以正确的方式设置超链接,甚至确保小章节间隙在图表和表格列表中。
如果由于某种原因您想要不同的目录条目,只需使用您习惯的可选命令即可。
如果您希望未编号的章节缩进,就像有数字一样,请使用 documentclass 选项toc=indentunnumbered
。这将影响每一个已使用文档中addxcontentsline
(或任何更高级别的) 命令设置的章节。当然,使用\addchap
是可行的方法。
还有一种带星号的变体,它不创建目录条目并清除标题。这样,上一章的标题就消失了。
还提供了用于未编号部分的命令,这些命令是\addsec
(带有其可选参数)和\addsec*
。
\documentclass{scrbook}
\usepackage{blindtext}
\usepackage{hyperref}
\newcommand{\filler}{\blindtext[7]}
\begin{document}
\tableofcontents
\addchap{addchap}
\filler
\addchap[ToC entry]{Heading?}
\filler
\chapter{Chapter}
\filler
\addchap*{No ToC Entry, header cleared}
\filler
\end{document}
标准类不提供这些命令,但可以轻松实现如下所述的基本功能如何处理未编号的章节?
答案2
正如 Johannes_B 在评论中指出的那样
\addchap{Introduction}
代替
\chapter*{Introduction}
\addcontentsline{toc}{chapter}{Introduction}
解决了问题。