Packages for typesetting
These days, Lua$\TeX$ is the
officially recommended engine over pdf$\TeX$, primarily due to the Unicode support and tagging features it offers.
I use Lua$\LaTeX$ whenever possible, so keep that in mind when reading this list.
For users of pdf$\LaTeX$ who would like to match the feature set of unicode-math, take a look at the second section.
Package listing
Below is an alphabetical list of packages I use with sufficient regularity to suggest:
amsthm- Used for defining customizable theorem-like environments
\newtheorem
biber- A UTF-8 supporting backend for Bib$\LaTeX$ that reads and processes entries
biblatex- Provides Unicode-aware formatting of bibliographies entirely controlled by $\LaTeX$ macros
booktabs- Publication-quality tables
\bottomrule,\cmidrule,\midrule,\toprule
cancel- Places lines through cancelled terms in math equations
\cancel,\cancelto
caption- Improves caption alignment and allows for bold labels
cleveref- Automatic referencing for equations, figures, tables, and sections
\cref,\crefrange
derivative- Simple and nice-looking derivatives and differentials
\adif,\odif,\odv,\mdv,\pdv
enumitem- Provides additional numbering and structuring control over the enumerate, itemize, and description environments
fancyhdr- Provides tools for constructing headers and footers with all kinds of customizable options
\fancyfoot,\fancyhead
float- Sometimes necessary for the placement of stubborn figures and tables
fontsetup- A wrapper package which loads
fontspec,unicode-math, and a font of your choice - Only supports Lua$\LaTeX$
- A wrapper package which loads
geometry- Changes page dimensions and removes the unnecessarily large default margins
graphicx- Allows for graphics, images, etc. to be added
\includegraphics,\resizebox
hyperref- Support for external hyperlinks and internal document references
\href,\url
mathtools- An extension to
amsmathwith various fixes and improvements \cases*,\DeclarePairedDelimiterX
- An extension to
minted- Syntax highlighting for all sorts of source code using the Pygments library
\mintinline
mhchem- Provides commands for typesetting chemical molecular formulae and equations
\ce
multirow- Creates cells that span more than one row in a table
\multirow
natex- My package for mathematics, physics, and engineering macros
- Separate implementations for Lua$\LaTeX$ and pdf$\LaTeX$
pagecolor- Recolors the page background and text
\color,\pagecolor
pgf- Essential for creating great-looking
.pgfplots with Matplotlib and friends
- Essential for creating great-looking
pgfplots- Draws high-quality function plots using the TikZ interface
- Automatically loads
tikz
physics2- Provides a submodule for automatic braces
\ab
siunitx- A comprehensive SI unit package that includes macros for scientific notation
\ang,\num,\unit,\qty,\qtyrange
tcolorbox- Nicely formatted and customizable boxes for examples and worked problems
tikz- A user-friendly frontend for
pgfthat adds support for native diagram and graph creation - Automatically loads
pgf
- A user-friendly frontend for
threeparttable- Provides “footnotes” for tables
\tnote
unicode-math- A comprehensive implementation of Unicode math for Lua$\LaTeX$
\setmathfont- Only supports Lua$\LaTeX$
xcolor- Allows for defining and using colors
\color,\definecolor
Packages for pdf$\LaTeX$ only
When using the Lua$\TeX$ engine with unicode-math and a supported math font like
New Computer Modern , the following packages are not necessary since their features are already implemented.
Additionally, the Unicode variants are often much nicer since they can be directly copied into a browser or text editor and are supported by screen readers.
If you must use pdf$\LaTeX$, these are nice-to-haves.
amsfonts- Adds blackboard math and Fraktur fonts
\mathbb,\mathfrak
amssymb- Provides an extended symbol collection and loads
amsfonts; if the heirarchy of AMS packages is confusing, check this thread out \Box
- Provides an extended symbol collection and loads
bm- Bold symbols in math mode that are safer than those from
\boldsymbol \bm
- Bold symbols in math mode that are safer than those from
esint- Necessary for surface, volume, and direction contour integrals
\iiint,\oiint,\ointclockwise
mathrsfs- Adds Raph Smith’s Formal Script font to math mode
\mathscr
Notes on feature parity with Unicode math
Commands provided by amssymb, but technically not by unicode-math:
\Box,\Diamond,\leadsto- Note that
unicode-mathcan use the following symbols instead: □, ◇, ⇝
Commands provided by both amssymb and unicode-math:
\barwedge,\boxdot,\boxminus,\boxplus,\boxtimes,\Cap,\Cup
Commands provided by both amsfonts and unicode-math:
\mathbb,\mathfrak
Commands provided by both mathrsfs and unicode-math:
\mathscr
Commands provided only by unicode-math:
\mathbffrak,\mathbfscr,\symbfcal