代码之家  ›  专栏  ›  技术社区  ›  Amandasaurus

LaTeX-使用PDF文档向节/子节添加可单击的链接

  •  12
  • Amandasaurus  · 技术社区  · 14 年前

    我正在用乳胶做PDF。我有几个小节。我想把一个指向文档顶部的链接,以便在PDF中有人可以点击它,它将转到该节/小节。我知道有可能有一个可链接的目录,但我不想做一个目录,我需要更多的控制。

    4 回复  |  直到 14 年前
        1
  •  35
  •   lunaryorn    14 年前

    包括 \usepackage{hyperref} 在你文件的序言里。为分区指定适当的标签,并使用 \ref{} . 当使用pdflatex创建pdf时,这些引用将变成可单击的链接。

        2
  •  13
  •   Norman Gray    14 年前

    这个 hyperref

    注意事项和建议:hyperref是一个很大的包,而且(在必要的情况下)它用乳胶的内脏玩了一些相当肮脏的把戏。最后加载hyperref包,如果您的文档突然变得怪异,那么请将该包注释掉,然后删除 .out .aux 文件,然后重试以查看问题是否消失。如果有,那么。。。想想办法。

    这个 hypertex 包可以做一些相同的事情,而且更轻一点。但我的记忆是,它有点脆弱,可能没有太多的维护了。

        3
  •  12
  •   Community rohancragg    7 年前

    正如其他答案所指出的,您可以使用 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
    }
    

    \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

        4
  •  1
  •   David    6 年前

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

    \usepackage[hidelinks]{hyperref}