这是关于章节/节标题内的超链接 关于生成的 pdf 的目录和书签部分的显示。
\documentclass[twoside]{book}
\usepackage[pdftex,pagebackref=true]{hyperref}
\begin{document}
\tableofcontents
\chapter{documentation for link to Section 1}
\chapter{documentation for link to \mbox{\protect\hyperlink{sec1}{Section 1}}}
\chapter{documentation for link to \hyperref[sec1]{Section 1}}
\hypertarget{sec1}{}\section{Section 1 Reference}
\label{sec1}\index{ref1@{ref1}}
\hypertarget{sec2}{}\section{Section 2 Reference}
documentation for \hyperlink{sec1}{Section 1}
\end{document}
以及书签部分:
在目录页中,我们在第 2 章和第 3 章(\protect
以及\hyperref
实施)的“第 1 节”文本前看到一个额外的垂直红条,这是一个额外的超链接,单击“链接文档”时,我们会跳转到相关章节,但单击“第 1 节”部分时,我们会跳转到子节。我认为在目录部分,根据单击行的位置进行不同的跳转并不好。
查看书签部分,我们在第 2 章和第 3 章中看到文本“sec1Section”和“[sec1]Section”,因此有额外的“sec1”和“[sec1]”。
我如何才能获得“干净”的目录/书签部分?
答案1
\texorpdfstring
您可以将 TeX 内容放在其第一个参数中,将属于 PDF 书签的内容放在第二个参数中:
\documentclass[twoside]{book}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\chapter{documentation for link to Section 1}
\chapter{documentation for link to
\texorpdfstring{\hyperref[sec1]{Section \ref*{sec1}}}{Section \ref{sec1}}}
\section{Section 1 Reference}
\label{sec1}
\section{Section 2 Reference}
documentation for \autoref{sec1}
\end{document}
目录就是一个例子,说明为什么应避免在章节/节标题中使用链接。嵌套链接“第 1 节”让人不清楚目标应该转到外部链接、章节/节标题还是内部链接的链接目标。
解决方法A:linktocpage
包选项用于hyperref
将页码而不是章节/部分标题制作成链接。
解决方法B:
\documentclass[twoside]{book}
\usepackage[pagebackref=true]{hyperref}
\newif\ifInToc
\DeclareRobustCommand*{\notoclink}[1]{%
\ifInToc
\begin{NoHyper}#1\end{NoHyper}%
\else
#1%
\fi
}
\begin{document}
\InToctrue
\tableofcontents
\InTocfalse
\chapter{documentation for link to Section 1}
\chapter{documentation for link to
\texorpdfstring{%
\notoclink{\hyperref[sec1]{Section \ref*{sec1}}}%
}{Section \ref{sec1}}}
\section{Section 1 Reference}
\label{sec1}\index{ref1@{ref1}}
\section{Section 2 Reference}
documentation for \autoref{sec1}
\end{document}