仅超链接目录中的章节编号

仅超链接目录中的章节编号

我试图让我的目录仅超链接章节编号和页码,如下所示:

目录示例

但我只设法获取了链接的页码

 linktocpage = true

有人能帮忙把章节编号(但不是标题)也加到超链接吗?谢谢。

答案1

我无法弄清楚如何将章节与章节区别对待,即使参数 #1 包含“章节”或“节”(或“部分”或...)。字符串比较不起作用。如果您还想链接页码,请告诉我。

\documentclass{book}

\let\stdnumberline\numberline
\let\stdcontentsline\contentsline
\usepackage{hyperref}

\begin{document}
\renewcommand{\contentsline}[4]%
{\bgroup
  \edef\anchorname{#4}
  \def\numberline#1{\stdnumberline{\hyperlink{\anchorname}{#1}}}
  \stdcontentsline{#1}{#2}{#3}
\egroup}

\tableofcontents

\chapter{One}

\section{First section}

\section{Second section}

\end{document}

答案2

\documentclass{article}
\usepackage[hidelinks, colorlinks=true, allcolors=blue,linktoc=page]{hyperref}
\usepackage{lipsum}
\makeatletter
\def\numberline#1{%
 \ifx\Hy@tocdestname\ltx@empty
  \hb@xt@\@tempdima{#1\hfil}%
 \else
 \hb@xt@\@tempdima{\hyper@linkstart{link}{\Hy@tocdestname}#1\hyper@linkend\hfil}%
 \fi}
\makeatother

\begin{document}
\tableofcontents

\section{First}
\lipsum[66]

\subsection{First first}
\lipsum[66]

\section{Second}
\lipsum[66]

\subsection{Second second}
\lipsum[66]
\end{document}

答案3

设置超链接:

\usepackage{hyperref}
\hypersetup{linktoc = all}

将每个 \section、\subsection 等纳入目录,如下所示

\section[\textcolor{black}{NAME}]{NAME}

要以这种方式为您的文本着色,您将需要

\usepackage{xcolor}

目录中的文本在视觉上与普通文本没有区别,但仍是链接的一部分,即可点击。这是一个非常荒谬的黑客行为,因为选项应该,但不包含在 hyperref 中,例如

\hypersetup{linktoc = numpage}

点(如果包含在目录中)在任何情况下都不是链接的一部分,没有明显的自定义功能。Hyperref 还有改进的空间。

相关内容