LaTeX - 添加可点击链接到带有PDF文档的部分/子部分

Ror*_*ory 12 pdf latex pdf-generation typesetting hyperlink

我正在用LaTeX制作PDF.我有几个部分和小节.我想在文档的顶部放置一个链接,以便在PDF中有人可以点击它,它将转到该部分/子部分.我知道有可能使用可链接的目录,但我不想制作目录,我需要更多的控制.

lun*_*orn 29

包含\usepackage{hyperref}在文档的序言中.为您的部分指定适当的标签,并使用参考这些标签\ref{}.在使用pdflatex创建PDF时,这些引用将转换为可单击的链接.

  • 请注意,要使用hyperref,您的`documentclass`中不能有`draft`选项! (2认同)

Nor*_*ray 13

hyperref软件包对这类内容提供了广泛的支持(如前面的答案中所述).

注意事项和建议:hyperref是一个很大的包,并且(必要时)它会与LaTeX的胆量一起玩一些非常肮脏的技巧.最后装入包hyperref宏,如果你的文档突然变得怪异,然后评论说包出来,摆脱.out.aux从目录中的文件,并再次尝试看看问题是否会消失.如果确实如此,那么......想一想.

hypertex软件包可以做一些相同的东西,是一个小更轻便.但我的回忆是,它有点脆弱,可能不再维护得多.

你可以做一些这方面的东西用PDF特价(见Pdftex提供手册),但是这开始有点硬派,并要求您知道了很多关于PDF.


Fra*_*urt 9

正如其他答案中所指出的,您可以使用hyperref包.但是,默认设置非常糟糕(它添加了一个大多数人认为每个链接都很难看的框),所以这里有一个典型的代码片段来自定义最有用的设置:

\usepackage{hyperref}
\hypersetup{
  colorlinks   = true,    % Colours links instead of ugly boxes
  urlcolor     = blue,    % Colour for external hyperlinks
  linkcolor    = blue,    % Colour of internal links
  citecolor    = red      % Colour of citations
}
Run Code Online (Sandbox Code Playgroud)

此外,如果您使用包natlib(\usepackage{natbib}),hyperref 将生成两个链接:

在此输入图像描述

要解决此问题,请添加:

\usepackage{etoolbox}

\makeatletter

\pretocmd{\NAT@citex}{%
  \let\NAT@hyper@\NAT@hyper@citex
  \def\NAT@postnote{#2}%
  \setcounter{NAT@total@cites}{0}%
  \setcounter{NAT@count@cites}{0}%
  \forcsvlist{\stepcounter{NAT@total@cites}\@gobble}{#3}}{}{}
\newcounter{NAT@total@cites}
\newcounter{NAT@count@cites}
\def\NAT@postnote{}

% include postnote and \citet closing bracket in hyperlink
\def\NAT@hyper@citex#1{%
  \stepcounter{NAT@count@cites}%
  \hyper@natlinkstart{\@citeb\@extra@b@citeb}#1%
  \ifnumequal{\value{NAT@count@cites}}{\value{NAT@total@cites}}
    {\ifNAT@swa\else\if*\NAT@postnote*\else%
     \NAT@cmt\NAT@postnote\global\def\NAT@postnote{}\fi\fi}{}%
  \ifNAT@swa\else\if\relax\NAT@date\relax
  \else\NAT@@close\global\let\NAT@nm\@empty\fi\fi% avoid compact citations
  \hyper@natlinkend}
\renewcommand\hyper@natlinkbreak[2]{#1}

% avoid extraneous postnotes, closing brackets
\patchcmd{\NAT@citex}
  {\ifNAT@swa\else\if*#2*\else\NAT@cmt#2\fi
   \if\relax\NAT@date\relax\else\NAT@@close\fi\fi}{}{}{}
\patchcmd{\NAT@citex}
  {\if\relax\NAT@date\relax\NAT@def@citea\else\NAT@def@citea@close\fi}
  {\if\relax\NAT@date\relax\NAT@def@citea\else\NAT@def@citea@space\fi}{}{}

\makeatother
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


小智 5

除了 Franck 关于超链接样式的评论之外,还可以通过添加 hidelinks 选项来删除所有标记。

\usepackage[hidelinks]{hyperref} 
Run Code Online (Sandbox Code Playgroud)