我正在尝试使用以下内容从目录创建到相应部分的链接超链接。
但是,我注意到,如果第一个条目是未编号的部分(\section*
),则链接只会将我带到目录。
这里有一个小例子来说明我的意思。请注意,第二个未编号的部分有效,而第一个无效。此外,使用编号的部分作为第一个条目可以解决该问题。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{hyperref}
\hypersetup{
colorlinks=true,
linktoc=all,
linkcolor=black,
}
\begin{document}
\tableofcontents
\newpage
\addcontentsline{toc}{section}{Unnumbered section 1}
\section*{Unnumbered section 1}
\addcontentsline{toc}{section}{Unnumbered section 2}
\section*{Unnumbered section 2}
\end{document}
我怎样才能获得第一个链接以便它指向正确的页面?
答案1
我发现使用\addcontentsline
just after\section*
可以解决问题。
因此更正后的代码如下
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{hyperref}
\hypersetup{
colorlinks=true,
linktoc=all,
linkcolor=black,
}
\begin{document}
\tableofcontents
\newpage
\section*{Unnumbered section 1}
\addcontentsline{toc}{section}{Unnumbered section 1}
\section*{Unnumbered section 2}
\addcontentsline{toc}{section}{Unnumbered section 2}
\end{document}
正如@daleif 指出的那样,如果您使用 hyperref,则应该\phantomsection
在前面添加\addcontentsline
。
就像
\phantomsection
\addcontentsline{toc}{section}{Name}
\section{Name}