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

时间:2010-07-14 09:18:59

标签: pdf latex hyperlink pdf-generation typesetting

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

4 个答案:

答案 0 :(得分:30)

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

答案 1 :(得分:13)

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

注意事项和建议:hyperref是一个很大的包,并且(必要时)它会与LaTeX的胆量发挥一些相当肮脏的技巧。最后加载hyperref包,如果您的文档突然变得怪异,则将该包注释掉,从目录中删除.out.aux文件,然后再次尝试查看问题是否消失。如果确实如此,那么......想一想。

hypertex包可以做一些相同的事情,并且更轻一些。但我的回忆是,它有点脆弱,可能不再维护得很多。

您可以使用PDF特价(请参阅pdftex手册)来完成这些内容,但这需要一点点硬核,并且需要您对PDF有所了解。

答案 2 :(得分:9)

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

\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
}

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

enter image description here

要解决此问题,add

\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

enter image description here

答案 3 :(得分:1)

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

\usepackage[hidelinks]{hyperref}