42

The problem

Throughout the years I have come across several packages that fix issues in (La)TeX. It seems like it would be a good idea to load these by default. However, I could not find an authoritative list giving a qualified recommendation for which packages one should load. With this question, I would like you to fill that gap.

What to answer

Please give a list that is as complete as possible. You could mention:

  • Package name
  • The problems it addresses
  • In which context it should be used
  • Possible caveats

A first start

Core fixes

Just for a head start, here are a few packages that I know of:

  • fixltx2e
    • Problems addressed: Fixes some fundamental bugs in LaTeX that cannot be included in the core version because they could break backwards compatibility
    • Use in: Any LaTeX document
    • Caveats: Load amsthm before this package; load footmisc after this package
  • mparhack
    • Problems addressed: Fixes a problem where marginpars sometimes appear on the wrong side
    • Use in: Any LaTeX document (that uses marginpars)
    • Caveats: ???

Fixes to document classes

  • scrhack
    • Problems addressed: Fixes several conflicts with other packages
    • Use in: Any document written with KOMA script classes (scrartcl, etc.)
    • Caveats: ???

Math fixes

  • mathtools
    • Problems addressed: Fixes several issues in amsmath and introduces new commands. Load instead of amsmath
    • Use in: Any document with mathematics
    • Caveats: ???
  • lualatex-math
    • Problems addressed: Fixes some problems that can occur when typesetting mathematics with LuaLaTeX
    • Use in: Documents that contain mathematics and are compiled with LuaLaTeX
    • Caveats: ???

Fonts

  • fix-cm
    • Problems addressed: Fixes issues with the original computer modern fonts
    • Use in: Documents use the old computer modern fonts
    • Caveats: Do not use in new files, use it only for compatibility. Use lmodern instead.

Potentially helpful / best practices

  • nag
    • Problems addressed: Gives warnings for bad practices
    • Use in: Any document
    • Caveats: Can annoy you if you use old commands
4
  • 1
    Regarding caveats, the order in which those packages are loaded may matter.
    – jub0bs
    Jan 30, 2014 at 13:43
  • @GonzaloMedina, in the deed, that is what I meant. Sorry for the mix up!
    – Ingo
    Jan 30, 2014 at 14:14
  • 5
    Personally, I don't like having packages in my preamble for reasons I don't understand. Each of my documents has a minimally required preamble with possibly no unused packages. So I never load fixltx2e because I don't know what it does, and its manual is quite cryptic. However it is implicitly loaded by many other packages I use, and they hopefully know why they load it.
    – marczellm
    Jan 30, 2014 at 15:26
  • @marczellm: I put \RequirePackage{fixltx2e} before \documentclass{revtex} in order to compile my doucment with xelatex or lualatex since otherwise revtex class conflicts with those new engines. Feb 5, 2014 at 12:53

1 Answer 1

2

Generally I share the opinion, that you should not include as many extensions as you can get. Use them sparely and only incase you really need them. I suggest this because:

  • the more packages you use, the longer it probably needs to generate the document
  • the less packages you use, the higher are chances to compile it on other systems, which might not have installed those special packages you might not actually using.
  • the more packages you use, the more difficult it becomes to read the preamble
  • the more packages you use, the chance of package-conflicts may increase. In a certain package renews commands, other packages rely on but having workarounds, those workarounds might fail.

However, I share your opinion, that it sometimes is (nonetheless) useful to include packages you will use in every file, like inputenc with UTF-8. Have a look here for some candidates: What packages do people load by default in LaTeX?

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .