Я делаю PDF с LaTeX. У меня есть несколько разделов и подразделов. Я хочу поместить ссылку на верхнюю часть документа, чтобы в 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 будет создавать две ссылки:
Чтобы исправить это, добавить:
\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