2010-07-14 14 views
10

Estoy haciendo PDF con LaTeX. Tengo algunas secciones y subsecciones. Quiero poner un enlace hacia la parte superior del documento para que en el PDF alguien pueda hacer clic en él y vaya a esa sección/subsección. Sé que es posible tener esto con una tabla de contenido enlazable, pero no quiero hacer una tabla de contenidos, necesito más control.LaTeX - Agregar enlaces seleccionables a una sección/subsección con un documento PDF

+0

Un enlace en la parte superior del documento es de lo que se trata precisamente una tabla de contenido. ¿Cómo se diferencia su enlace de un ToC? – Philipp

+0

Philipp, quiero un diseño más personalizado en lugar de una lista como el ToC predeterminado. Tengo ese diseño hecho ahora, y creo que agregar enlaces sería más fácil que hacer que un ToC parezca como quiero. – Rory

Respuesta

27

Incluya \usepackage{hyperref} en el preámbulo de su documento. Asigne etiquetas apropiadas a sus secciones y haga referencia a estas etiquetas usando \ref{}. Estas referencias se convertirán en enlaces seleccionables al crear archivos PDF con pdflatex.

+2

¡Tenga en cuenta que para usar hyperref, no puede tener la opción 'borrador' en su' documentclass'! – Cerran

13

El paquete hyperref tiene un amplio soporte para este tipo de cosas (como se indicó en una respuesta anterior).

Notas y consejos: hyperref es un gran paquete, y (por necesidad) juega algunos trucos bastante sucios con las entrañas de LaTeX. Cargue el paquete hyperref al último, y si su documento de repente se vuelve extraño, comente ese paquete, elimine los archivos .out y .aux de su directorio y vuelva a intentar ver si el problema desaparece. Si lo hace, entonces ... piensa en algo.

El paquete hypertex puede hacer algunas de las mismas cosas, y es un poco más liviano. Pero mi recuerdo es que es un poco frágil y puede que ya no se mantenga mucho.

Puede hacer algunas de estas cosas con las ofertas de PDF (consulte el manual de pdftex), pero eso se está volviendo un poco duro, y requiere que sepa bastante sobre PDF.

6

Como se señaló en las otras respuestas, puede usar el hyperref package. Sin embargo, la configuración predeterminada es bastante malo (que añade una caja que la mayoría considera fea alrededor de cada enlace), por lo que aquí es un fragmento de código típico para personalizar los ajustes más útiles:

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

Además, en caso de utilizar el natlib paquete (\usepackage{natbib}), hyperref producirá dos enlaces:

enter image description here

Para solucionar este problema, 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 

Cuestiones relacionadas