2010-07-14 12 views
10

Ich mache PDF mit LaTeX. Ich habe ein paar Abschnitte und Unterabschnitte. Ich möchte einen Link zum oberen Rand des Dokuments einfügen, so dass jemand im PDF darauf klicken kann und es zu diesem Abschnitt/Unterabschnitt geht. Ich weiß, dass es möglich ist, dies mit einem verknüpfbaren Inhaltsverzeichnis zu haben, aber ich möchte kein Inhaltsverzeichnis erstellen, ich brauche mehr Kontrolle.LaTeX - Hinzufügen anklickbarer Links zu einem Abschnitt/Unterabschnitt mit einem PDF-Dokument

+0

Ein Link am Anfang des Dokuments ist sehr genau, worum es in einem Inhaltsverzeichnis geht. Wie würde sich Ihr Link von einem ToC unterscheiden? – Philipp

+0

Philipp, ich möchte ein benutzerdefiniertes Layout statt einer Liste wie die Standard-ToC. Ich habe dieses Layout jetzt gemacht, und ich denke, das Hinzufügen von Links wäre einfacher, als ein ToC so aussehen zu lassen, wie ich es möchte. – Rory

Antwort

27

Enthalten Sie \usepackage{hyperref} in der Präambel Ihres Dokuments. Ordnen Sie den Abschnitten die richtigen Beschriftungen zu und verweisen Sie auf diese Beschriftungen mit \ref{}. Diese Referenzen werden dann in anklickbare Links umgewandelt, wenn PDFs mit pdflatex erstellt werden.

+2

Beachten Sie, dass Sie die Option 'draft' in Ihrer' Dokumentklasse' nicht verwenden können, um hyperref zu verwenden! – Cerran

13

Das hyperref Paket hat umfangreiche Unterstützung für diese Art von Sache (wie in einer früheren Antwort erwähnt).

Hinweise und Ratschläge: hyperref ist ein großes Paket, und (unbedingt) spielt es ein paar ziemlich schmutzige Tricks mit den Eingeweiden von LaTeX. Laden Sie das Hyperref-Paket zuletzt, und wenn Ihr Dokument plötzlich merkwürdig wird, dann kommentieren Sie das Paket aus, entfernen Sie die Dateien .out und .aux aus Ihrem Verzeichnis und versuchen Sie erneut zu sehen, ob das Problem verschwindet. Wenn es so ist, dann ... denke an etwas.

Das hypertex Paket kann einige der gleichen Dinge tun, und ist ein wenig leichter. Aber meine Erinnerung ist, dass es ein bisschen zerbrechlich ist und vielleicht nicht mehr sehr gepflegt wird.

Sie können einige dieser Dinge mit PDF-Specials erledigen (siehe das pdftex-Handbuch), aber das wird ein wenig hardcore und erfordert, dass Sie einiges über PDF wissen.

6

Wie in den anderen Antworten darauf hingewiesen, können Sie die hyperref package verwenden. Allerdings sind die Standardeinstellungen ziemlich schlecht (es eine Box fügt hinzu, dass die meisten um jeden Link hässlich betrachten), so ist hier ein typischer Code-Schnipsel, die nützlichsten Einstellungen anpassen:

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

Auch im Fall verwenden Sie die Paket natlib (\usepackage{natbib}) wird hyperref zwei Verbindungen produzieren:

enter image description here

Um dies zu beheben, add:

\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 

Verwandte Themen