A curated list of packages organized by purpose. Every package listed here is actively maintained and available in TeX Live.
Essential (Load in Every Document)
-
Package:
amsmath| Purpose: Advanced math environments (align,gather,cases, etc.) -
Package:
amssymb| Purpose: Extended math symbols (\( \mathbb{R} \), \( \therefore \), etc.) -
Package:
graphicx| Purpose: Image inclusion (\includegraphics) -
Package:
hyperref| Purpose: Clickable links and PDF bookmarks -
Package:
xcolor| Purpose: Color support -
Package:
microtype| Purpose: Micro-typographic refinementsMath
-
Package:
mathtools| Purpose: Extendsamsmathwith fixes and extra features -
Package:
amsthm| Purpose: Theorem environments (theorem,proof) -
Package:
bm| Purpose: Bold math symbols -
Package:
cancel| Purpose: Cancellation marks in equations -
Package:
siunitx| Purpose: SI units and number formatting -
Package:
physics| Purpose: Physics notation shortcuts -
Package:
tikz-cd| Purpose: Commutative diagrams -
Package:
nicematrix| Purpose: Enhanced matrix environmentsFonts (XeLaTeX / LuaLaTeX)
-
Package:
fontspec| Purpose: System font loading (OpenType/TrueType) -
Package:
unicode-math| Purpose: Unicode math fonts -
Package:
microtype| Purpose: Character protrusion and font expansionFonts (pdfLaTeX)
-
Package:
newtxtext/newtxmath| Purpose: Times-like text and math -
Package:
libertinus| Purpose: Libertinus text and math -
Package:
mathpazo| Purpose: Palatino math -
Package:
lmodern| Purpose: Latin Modern (improved Computer Modern)Page Layout
-
Package:
geometry| Purpose: Page margins and dimensions -
Package:
fancyhdr| Purpose: Custom headers and footers -
Package:
titlesec| Purpose: Section title formatting -
Package:
titletoc| Purpose: Table of contents formatting -
Package:
setspace| Purpose: Line spacing -
Package:
multicol| Purpose: Multi-column layouts -
Package:
parskip| Purpose: Paragraph spacing (no indentation)Tables
-
Package:
booktabs| Purpose: Professional table rules (\toprule,\midrule) -
Package:
tabularx| Purpose: Full-width tables with flexible columns -
Package:
longtable| Purpose: Tables spanning multiple pages -
Package:
multirow| Purpose: Cells spanning multiple rows -
Package:
array| Purpose: Extended column types -
Package:
colortbl| Purpose: Cell background colorsFigures and Graphics
-
Package:
tikz| Purpose: Programmatic vector graphics -
Package:
pgfplots| Purpose: Plots and charts (built on TikZ) -
Package:
caption| Purpose: Caption customization -
Package:
subcaption| Purpose: Sub-figures (a), (b), (c) -
Package:
wrapfig| Purpose: Text wrapping around figures -
Package:
float| Purpose: Extra float placement options ([H]) -
Package:
svg| Purpose: Direct SVG inclusion (via Inkscape)Code and Listings
-
Package:
listings| Purpose: Code listings with syntax highlighting -
Package:
minted| Purpose: Advanced syntax highlighting (via Pygments) -
Package:
fancyvrb| Purpose: Enhanced verbatim environments -
Package:
algorithm2e| Purpose: Algorithm pseudocode -
Package:
algpseudocode| Purpose: Algorithm pseudocode (alternative)Boxes and Styling
-
Package:
tcolorbox| Purpose: Feature-rich colored boxes (tips, warnings, code) -
Package:
mdframed| Purpose: Framed environments (simpler alternative) -
Package:
framed| Purpose: Basic framed boxesLists
-
Package:
enumitem| Purpose: Full control over list formatting -
Package:
tasks| Purpose: Multi-column exercise listsReferences and Citations
-
Package:
biblatex| Purpose: Modern bibliography system (use with Biber) -
Package:
natbib| Purpose: Author-year citations (legacy, widely used) -
Package:
cleveref| Purpose: Smart cross-references (\crefauto-adds “Figure”, “Equation”) -
Package:
varioref| Purpose: Page-aware references (“on the next page”)Utilities
-
Package:
qrcode| Purpose: QR code generation -
Package:
pdfpages| Purpose: Include pages from external PDFs -
Package:
makeidx| Purpose: Index generation -
Package:
glossaries| Purpose: Glossary and acronym management -
Package:
todonotes| Purpose: Margin and inline TODO notes -
Package:
comment| Purpose: Block comments -
Package:
lipsum| Purpose: Dummy text for testing layoutsTip: Start with the essentials. Add packages only when you need them. Every package you load increases compilation time and the chance of conflicts. A document with 5 well-chosen packages is better than one with 30 “just in case” imports.