LaTeX-добавление кликабельных ссылок в раздел / подраздел с PDF-документом

Я делаю PDF с LaTeX. У меня есть несколько разделов и подразделов. Я хочу поместить ссылку в верхнюю часть документа, чтобы в PDF кто-то мог нажать на нее, и она перейдет в этот раздел/подраздел. Я знаю, что это возможно с помощью связываемого оглавления, но я не хочу составлять оглавление, мне нужно больше контроля.

4 ответов


включить \usepackage{hyperref} в преамбуле документа. Назначьте правильные метки своим разделам и ссылайтесь на эти метки, используя \ref{}. Эти ссылки затем будут превращены в кликабельные ссылки при создании PDF-файлов с pdflatex.


на hyperref пакет имеет обширную поддержку для такого рода вещей (как отмечалось в предыдущем ответе).

примечания и советы: hyperref-большой пакет, и (по необходимости) он играет некоторые довольно грязные трюки с кишками латекса. Загрузите пакет hyperref последним, и если ваш документ внезапно станет странным, то прокомментируйте этот пакет, избавьтесь от .out и .aux файлы из вашего каталога и повторите попытку, чтобы увидеть, исчезает ли проблема. Если так, тогда ... думать чего-то.

на hypertex пакет может делать некоторые из тех же вещей, и немного более легкий. Но я помню, что он немного хрупкий и, возможно, его уже не так много поддерживают.

вы можете сделать некоторые из этих вещей с PDF specials (см. руководство pdftex), но это становится немного жестким, и требует, чтобы вы знали совсем немного о PDF.


как указано в других ответах, вы можете использовать пакет 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
}

кроме того, если вы используете пакет natlib (\usepackage{natbib}), hyperref создаст две ссылки:

enter image description here

исправить это, добавить:

\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


в дополнение к комментарию Франка о стилях гиперссылки можно удалить всю разметку, добавив опцию hidelinks.

\usepackage[hidelinks]{hyperref}