2010-07-14 43 views
10

我使用LaTeX製作PDF。我有幾個部分和小節。我想在文檔頂部添加一個鏈接,以便在PDF中有人可以點擊它,它會轉到該部分/子部分。我知道這可以通過鏈接目錄來實現,但我不想製作目錄,我需要更多的控制。LaTeX - 使用PDF文檔添加可點擊的鏈接到部分/子部分

+0

文檔頂部的鏈接非常正好是目錄的內容。你的鏈接與ToC有什麼不同? – Philipp 2010-07-14 09:23:05

+0

Philipp,我想要一個更多的自定義佈局,而不是像默認的ToC這樣的列表。我現在已經完成了佈局,我認爲添加鏈接可能會比製作ToC看起來更容易。 – Rory 2010-07-14 10:13:53

回答

27

包括\usepackage{hyperref}在您的文檔的序言中。使用\ref{}爲您的部分分配正確的標籤並引用這些標籤。在使用pdflatex創建PDF時,這些引用將會變成可點擊的鏈接。

+2

請注意,要使用hyperref,您不能在'documentclass'中使用'draft'選項! – Cerran 2014-03-07 17:21:31

13

hyperref軟件包對此類事件有廣泛的支持(如前面的答案中所述)。

注意事項和建議:hyperref是一個很大的軟件包,並且(必要時)它會在LaTeX的內核中扮演一些非常骯髒的伎倆。最後載入hyperref包,如果文件突然變得很奇怪,那麼將該包註釋掉,從目錄中刪除.out.aux文件,然後再次嘗試查看問題是否消失。如果確實如此,那麼......想一想。

hypertex包可以做一些相同的事情,並且更輕量一些。但我的回憶是,它有點脆弱,可能不會再維持多久。

您可以使用PDF特色功能(請參閱pdftex手冊)來完成這些工作,但這會變得更加困難,並且需要您瞭解相當多的PDF。

6

正如在其他答案中指出的那樣,您可以使用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

爲了解決這個問題,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 

相關問題