Packages for typesetting
Package listing
These days, Lua$\LaTeX$ is the officially recommended compiler over PDF$\LaTeX$, primarily due to the Unicode and tagging support it offers. I use Lua$\LaTeX$ whenever possible, so keep that in mind when reading this list. For users of PDF$\LaTeX$, take a look at the second section.
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- Create PostScript and PDF graphics in $\TeX$, great for Matplotlib plots
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
pgfadds 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$\LaTeX$ compiler 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
- Bold symbols in math mode that are safer than those from
esint- Necessary for surface, volume, and direction contour integrals when using PDF$\LaTeX$
\iiint,\oiint,\ointclockwise
mathrsfs- Adds Raph Smith’s Formal Script font to math mode
\mathscr
Select commands and the relationship between select packages
Commands provided by amssymb, but technically not 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