目录中的 Hyperref 没有页码

目录中的 Hyperref 没有页码

我正在为我的上一份实习做报告,并试图将其添加hyperref到我的 LaTeX pdf 中。我希望在我的目录中有一个用于介绍的链接。

如果没有hyperref,它也能正常工作:

\chapter*{Introduction}
\addtocontents{toc}{\contentsline{chapter}{\numberline{}Introduction}{}}

但是,当我使用时hyperref,我有这个:

! Argument of \contentsline has an extra }.
<inserted text>
\par
l.3 ...line{chapter}{\numberline{}Introduction}{}}
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.
Runaway argument?
! Paragraph ended before \contentsline was complete.
<to be read again>
\par
l.3 ...line{chapter}{\numberline{}Introduction}{}}
I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.
)

这里出了什么问题?

谢谢

答案1

hyperref重新定义\contentsline为采用四个参数,而不是通常的三个。此外,由于您正在处理与 ToC 相关的内容(写入文件),因此您需要小心扩展。按以下方式使用它:

\documentclass{report}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\chapter*{Introduction}
\addtocontents{toc}{\protect\contentsline{chapter}{\protect\numberline{}Introduction}{}{}}
\end{document}

第四个参数提供hyperref链接(或锚点)。由于它是空的,因此 ToC 条目不会被超链接。


添加超链接取决于链接的类型。对于您的情况,您可以使用以下内容:

\documentclass{report}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\clearpage\phantomsection
\chapter*{Introduction}
\addtocontents{toc}{\protect\contentsline{chapter}{\protect\numberline{}Introduction}{}{chapter*.\thepage}}
\end{document}

每一个都\chapter*可以使用 来访问chapter*.<current page>,它被传递给 的最后一个选项\contentsline。由于\phantomsection/mark 是在当前页面上制作的,chapter*.\thepage因此会导致当前 的适当扩展\chapter*

答案2

我找到了使用该包的另一种解决方案tocloft

\chapter*{Introduction}
\phantomsection
\addtocontents{toc}{\cftpagenumbersoff{chapter}} 
\addcontentsline{toc}{chapter}{Introduction}
\addtocontents{toc}{\cftpagenumberson{chapter}} 

相关内容