章节/部分标题内的目录/书签和超链接

章节/部分标题内的目录/书签和超链接

这是关于章节/节标题内的超链接 关于生成的 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}

相关内容