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

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

Ответ 1

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

Ответ 2

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

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

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

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

Ответ 3

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

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

\usepackage{etoolbox}

\makeatletter

\pretocmd{\[email protected]}{%
  \let\[email protected]@\[email protected]@citex
  \def\[email protected]{#2}%
  \setcounter{[email protected]@cites}{0}%
  \setcounter{[email protected]@cites}{0}%
  \forcsvlist{\stepcounter{[email protected]@cites}\@gobble}{#3}}{}{}
\newcounter{[email protected]@cites}
\newcounter{[email protected]@cites}
\def\[email protected]{}

% include postnote and \citet closing bracket in hyperlink
\def\[email protected]@citex#1{%
  \stepcounter{[email protected]@cites}%
  \[email protected]{\@citeb\@[email protected]@citeb}#1%
  \ifnumequal{\value{[email protected]@cites}}{\value{[email protected]@cites}}
    {\[email protected]\else\if*\[email protected]*\else%
     \[email protected]\[email protected]\global\def\[email protected]{}\fi\fi}{}%
  \[email protected]\else\if\relax\[email protected]\relax
  \else\[email protected]@close\global\let\[email protected]\@empty\fi\fi% avoid compact citations
  \[email protected]}
\renewcommand\[email protected][2]{#1}

% avoid extraneous postnotes, closing brackets
\patchcmd{\[email protected]}
  {\[email protected]\else\if*#2*\else\[email protected]#2\fi
   \if\relax\[email protected]\relax\else\[email protected]@close\fi\fi}{}{}{}
\patchcmd{\[email protected]}
  {\if\relax\[email protected]\relax\[email protected]@citea\else\[email protected]@[email protected]\fi}
  {\if\relax\[email protected]\relax\[email protected]@citea\else\[email protected]@[email protected]\fi}{}{}

\makeatother

enter image description here