Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

This isn't a real question, so I'm marking it community wiki.

When I was new to LaTeX, I thought that the \usepackage command worked much like the #include command of the C language: just put whatever you need in the preamble, in whatever order you like.

But then bugs began to bite me and I realised, with growing horror, that commutative packages seem to be the exception rather than the rule.

They appear so often that I think it would be useful to have a list here of problematic interactions between pairs of packages, and their correct order.

Also, a question for amusement:

I want to know if there exists three packages A, B and C, such that A has to be included before B and B needs to be included before C, but C needs to be included before A.

share|improve this question
    
Is that last sentence a question if three such packages exist? –  TH. Sep 15 '10 at 3:59
    
Hmm. Better reword it. –  Mateus Araújo Sep 15 '10 at 4:11
1  
\usepackage does work like the #include directive, and if you could overwrite existing definitions in C, you'd run into the same issues that LaTeX has. –  Philipp Sep 15 '10 at 9:42
2  
At least in theory, you could have just two packages that don't "play nice": If both package foo and package bar both redefine two commands, \jedi and \sith, and you want foo's \jedi but bar's \sith, then no order of package loading will get you both... –  Seamus Sep 15 '10 at 10:51
6  
As much as I like using math terminology for non-math situations, this question seemed to be a bit hard to find for non-math people. I changed the title to something more directly descriptive. –  Caramdir Oct 24 '10 at 23:24
show 3 more comments

1 Answer

up vote 21 down vote accepted

Freek Dijkstra has put together a nice wiki of Latex package conflicts. Hyperref is the one he singles out for criticism: it has the nasty property that sometimes it conflicts when it is put earlier, sometimes when it is put later than other widely used packages, encouraging cargo-cult document headers.

He's had less trouble with inputenc conflicts that others, judging from complaints that I've seen, mostly, I guess, because he uses Xetex.

share|improve this answer
2  
Of course you have less trouble with inputenc in XeLaTeX, simply because you never load inputenc. –  Philipp Sep 15 '10 at 9:43
3  
Regarding hyperref: it's not the hyperref package that is to be criticized, but rather the LaTeX2e kernel, which seems to combine every possible software development antipattern in a single package. –  Philipp Sep 15 '10 at 9:44
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.