The `hyperref` documentation says: "Make sure it comes last of your loaded packages". The reason is that it redefines many LaTeX commands. It's a rule of thumb that helps to avoid errors.

However, there are exceptions, for instance the `amsrefs` user's guide notes that `amsrefs` has to be loaded after `hyperref`.

To avoid problems when adding hypertext functionality: do you know further such exceptions?

-
Someone should write a package that takes a set of package names and loads them in the best order. Not me, though. –  Jim Hefferon Feb 9 '12 at 1:02
My template (foundry.supelec.fr/gf/project/latextemplate) tries to do exactly this. It is full of `\ExecuteAfterPackage`sequences. Although I have to check with all the packages meantioned here! –  Matthias Pospiech Apr 25 '12 at 18:25
@JimHefferon: Done by mhelvens: tex.stackexchange.com/q/123174/4918 –  Tobi Mar 7 at 1:38

• `cleveref`

Many others are documented in section 6 of the `hyperref` README. Some are more complex than simply loading after `hyperref`. Here are some more common ones...

• `amsrefs`
• `float` before `hyperref` before `algorithm`
• `chappg`
• `sidecap`
• `linguex`
-
Thanks, also for pointing to the README. hyperref has an extensive README. Though, some packages like cleveref, breakurl and others mentioned here weren't listed there. I'll check and perhaps send a note to the author, perhaps he would like to add them. –  Stefan Kottwitz Aug 17 '10 at 10:56
Good idea to contact the author. Heiko is generally very responsive about this things. –  Lev Bishop Aug 17 '10 at 16:56
Thanks for improving my answer by adding the packages with options! (I already gave +1 to your answer, thus I cannot "more-upvote" here.) –  Stephen Feb 9 '12 at 18:50
As a note, sidecap no longer has to be loaded after hyperref (as of 2002/05/24 v1.5h according to the linked document.) –  Canageek Mar 28 '12 at 22:41
I really think that this is an example of one of the weaknesses of LaTex. Very frustrating behavior. –  Nicholas Hamilton Dec 9 '12 at 5:31

`geometry`: From the manual:

With `mag <> 1000`, no `truedimen` and `hyperref`, `hyperref` should be loaded before `geometry`. Otherwise the resulted PDF size will become wrong.

`robustindex`

`attachfile`

`showframe`, `showidx` (which disables the `\href`s in the index but in this loading order at least documents compile at all)

`uri`, [`pageslts`][(http://www.ctan.org/pkg/pageslts), `regstats`

and probably also further packages with `\RequirePackage{hyperref}`. A quick search in TeX Live 2011 resulted in this list:

Packages with `\RequirePackage[<some option(s)>]{hyperref}`:

-
According to `texdoc geometry`, it should read: With `mag <> 1000`... I have edited the reply. –  krlmlr Mar 21 '12 at 13:19
@user946850: Yes, there is a "not equal" sign in the pdf which died during copy & paste. Thanks for the correction! –  Stephen Mar 22 '12 at 19:11
This may not be necessary any more for `showkeys`, as `hyperref` now has support for `showkeys`. See pages 207-208 of `hyperref.pdf`. –  Ari Brodsky Feb 26 at 21:02
Well, I'm partly wrong. `\bibitem` doesn't show its key if `showkeys` is loaded before `hyperref`. On the other hand, `\autopageref` gets broken if `showkeys` comes after `hyperref`. What to do? Maybe a bug report. –  Ari Brodsky Feb 26 at 21:42

Other common ones include

• `bookmark`
• `glossaries`
-
Thanks! glossaries isn't even mentioned in manual or README. bookmark is recommended in the manual though without telling the loading order. –  Stefan Kottwitz Aug 17 '10 at 11:02
Hi Stefan, although `glossaries` can be loaded before `hyperref`, you have to jump through extra hoops to make it work quite as well. Nicola isn't terribly explicit about this in her `glossaries` manual, although in her only coded snippet involving `hyperref` she loads `glossaries` 2nd of all (see p. 69). For me, I've achieved much better results with glossary autohyperlinks loading the two packages in this order too. –  Geoffrey Jones Aug 17 '10 at 11:34
@Stefan: Actually, the glossaries manual has this to say: “If you load the hyperref or html packages prior to loading the glossaries package, commands such as `\glslink` and `\gls` […] will automatically have hyperlinks …” –  Konrad Rudolph Aug 17 '10 at 12:02
So it's been made clear by Nicola, thanks! –  Stefan Kottwitz Aug 17 '10 at 16:57

The tabularx package is definitely one of the candidates. Otherwise links to footnotes are prevented.

-
`tabularx` should be loaded after or before hyperref? I'm loading it before and doesn't seem to give me any errors, and both documentations say nothing about it... –  Mario S. E. Apr 24 '13 at 8:37

I experienced problem with the package `ellipsis` when loaded before `hyperref`.

In addition, as Joseph Wright writes here, http://tex.stackexchange.com/a/64605/9632, `cmap` has to be loaded after `hyperref`.

-

`cleveref` is one.

-

One more is

Allows `hyperref` package and the natbib package with options `numbers` and `sort&compress` to work together. This means that multiple sequential citations (e.g [3,2,1]) will be compressed to [1-3], where the '1' and the '3' are (color-)linked to the bibliography.

-
As far as I can tell, hypernat is obsolete. You shouldn't load it either after or before hyperref. With modern versions of natbib and hyperref the sort&compress works and is linked without loading any other packages. –  Lev Bishop Aug 23 '10 at 9:03
You're right... that's one less package I can load now. –  Simon Sep 1 '10 at 4:47

Although not mentioned in its manual,

• `footnotebackref`

loads `hyperref` without options before beginning its work. On that account, it might make better sense in documents to load `footnotebackref` second of the two.

-
I had some funny behaviour with `pgfpages` until I moved it after `hyperref`, but I'm not sure exactly what the issue was. I'm trying to replicate it, but I can't seem to get it to work at all now!