hyperref — Hyperlinks, Cross-References & PDF Metadata
CTAN: https://ctan.org/pkg/hyperref
Manual: texdoc hyperref
Setup
% LOAD HYPERREF LAST (or near last) — it redefines many commands
\usepackage[
colorlinks=true,
linkcolor=blue,
citecolor=green!50!black,
urlcolor=blue!70!black,
pdftitle={My Document Title},
pdfauthor={Author Name},
]{hyperref}
% If using cleveref, load it AFTER hyperref:
\usepackage{cleveref}
Common Setup Options
| Option | Default | Description |
|---|
colorlinks | false | Color link text (vs boxes) |
linkcolor | red | Internal links (refs, TOC) |
citecolor | green | Citation links |
urlcolor | magenta | URL links |
filecolor | cyan | File links |
allcolors | — | Set all link colors at once |
hidelinks | — | No color, no boxes (for print) |
bookmarks | true | Generate PDF bookmarks |
bookmarksnumbered | false | Include section numbers in bookmarks |
bookmarksopen | false | Expand bookmarks by default |
pdfborder | {0 0 1} | Link border (set {0 0 0} to remove) |
breaklinks | true | Allow links to break across lines |
unicode | true (modern) | Unicode in bookmarks |
PDF Metadata Options
| Option | Description |
|---|
pdftitle | Document title |
pdfauthor | Author name(s) |
pdfsubject | Subject |
pdfkeywords | Keywords (comma-separated) |
pdfcreator | Creating application |
pdfproducer | PDF producer |
% Or set after loading:
\hypersetup{
pdftitle={My Paper},
pdfauthor={Jane Doe},
pdfsubject={LaTeX Tutorial},
pdfkeywords={LaTeX, hyperref, tutorial},
}
Link Commands
% External URL
\href{https://example.com}{Click here}
\href{mailto:user@example.com}{Email me}
\href{file:./report.pdf}{Local file}
% URL (typewriter, breakable)
\url{https://example.com/path?query=value}
% Internal reference with custom text
\hyperref[sec:intro]{see the introduction}
% Standard cross-references (auto-linked by hyperref)
\ref{fig:plot} % "3"
\pageref{tab:data} % "12"
\eqref{eq:main} % "(1)" — from amsmath
% Auto-named references
\autoref{fig:plot} % "Figure 3"
\autoref{tab:data} % "Table 2"
\autoref{sec:intro} % "section 1"
\autoref{eq:main} % "equation 1"
% Name reference (prints the title/caption)
\nameref{sec:intro} % "Introduction"
\autoref Names
| Counter | Default name |
|---|
figure | Figure |
table | Table |
equation | equation |
section | section |
chapter | chapter |
theorem | Theorem |
page | page |
Customize: \renewcommand{\sectionautorefname}{Section}
cleveref Integration
\usepackage{hyperref}
\usepackage{cleveref} % MUST be after hyperref
% Automatic type detection + ranges
\cref{fig:a} % "fig. 1"
\Cref{fig:a} % "Figure 1" (capitalized)
\cref{fig:a,fig:b,fig:c} % "figs. 1 to 3"
\cref{eq:1,eq:2} % "eqs. (1) and (2)"
\crefrange{fig:a}{fig:d} % "figs. 1 to 4"
% Customize names
\crefname{equation}{eq.}{eqs.}
\Crefname{equation}{Equation}{Equations}
\crefname{figure}{fig.}{figs.}
Bookmarks
% Manual bookmark entry
\pdfbookmark[level]{Text}{anchor}
\pdfbookmark[0]{Title Page}{title}
% Current bookmark (without section command)
\currentpdfbookmark{Appendix A}{appendixA}
% Bookmark with section:
\belowpdfbookmark{Subsection text}{anchor} % below current level
Link Appearance
% Colored text links (preferred for screen)
\hypersetup{colorlinks=true, allcolors=blue}
% Boxed links (default)
\hypersetup{colorlinks=false, pdfborder={0 0 1}}
% Hidden links (for print)
\hypersetup{hidelinks}
% Custom: colored + no underline
\hypersetup{
colorlinks=true,
linkcolor={blue!80!black},
citecolor={green!60!black},
urlcolor={red!70!black},
}
Common Patterns
Clickable TOC with Print-Friendly Style
\usepackage[
colorlinks=true,
linkcolor=black, % TOC/internal links in black
citecolor=blue!50!black,
urlcolor=blue!70!black,
bookmarks=true,
bookmarksnumbered=true,
]{hyperref}
Thesis/Dissertation Setup
\usepackage[
hidelinks, % clean for printing
bookmarks=true,
bookmarksnumbered=true,
bookmarksopen=true,
bookmarksopenlevel=2,
pdftitle={PhD Thesis},
pdfauthor={Name},
]{hyperref}
\usepackage{cleveref}
Back-References in Bibliography
\usepackage[backref=page]{hyperref}
% Adds "Cited on page(s) X, Y" to bibliography entries
Common Pitfalls
| Problem | Cause | Fix |
|---|
| Broken cross-references | hyperref loaded too early | Load hyperref last (before cleveref) |
\autoref says "section" lowercase | Default names | \renewcommand{\sectionautorefname}{Section} |
| Bookmark errors with math | Math in section titles | \texorpdfstring{$E=mc^2$}{E=mc2} |
| "Token not allowed" | Special chars in PDF strings | Use \texorpdfstring{LaTeX}{LaTeX} |
| Links in headers/footers | Fragile commands | Use \protect or \texorpdfstring |
| cleveref not working | Loaded before hyperref | Load order: hyperref → cleveref |
| Link boxes overlap text | Default border style | Use colorlinks=true or hidelinks |
\url breaks wrong | Long URLs | hyperref handles this; check breaklinks=true |
| Conflicts with other packages | Package redefines same commands | Load hyperref after most packages |
Load Order Guide
% Safe order (most common packages):
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{booktabs}
\usepackage{...} % other packages
\usepackage[options]{hyperref} % near last
\usepackage{cleveref} % very last
Tips
- Always use
colorlinks for screen PDFs; hidelinks for print
\texorpdfstring{LaTeX version}{plain text} for anything fancy in section titles
\phantomsection before \addcontentsline for correct hyperlinks in unnumbered sections
\hypersetup{} can be called multiple times to change settings mid-document
- Use
\nohyperpage in index entries to prevent hyperref page linking