Articles LaTeX packages

20 Essential LaTeX Packages Every Academic Should Know

The 20 essential LaTeX packages for academic writing, what each one fixes, and the loading order and conflicts that trip people up. From amsmath and booktabs to hyperref and biblatex.

inscrive.io · Feb 11, 2025 · 14 min read
20 Essential LaTeX Packages Every Academic Should Know

20 Essential LaTeX Packages Every Academic Should Know

The LaTeX ecosystem holds thousands of packages, and most of them you will never need. A smaller set shows up in nearly every serious academic document. This guide covers 20 essential LaTeX packages worth knowing by name, what each one fixes, and the gotchas around loading order and conflicts. If you spend time wrestling LaTeX into shape, a few of these will save you that fight.

Foundation Packages: The Non-Negotiables

These belong in almost every document.

1. inputenc & fontenc (character encoding)

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

inputenc tells LaTeX how to read accented and non-ASCII characters in your source. fontenc controls how those characters come out in the PDF, including proper hyphenation of accented words. Without T1 encoding, “café” and most European names render badly or break across lines wrong. (On modern engines like LuaLaTeX or XeLaTeX you can skip both and use fontspec instead.)

2. babel (language support)

\usepackage[english]{babel}
% Multilingual:
\usepackage[english,french,german]{babel}

Handles hyphenation patterns, date formats, and language-specific typography. List your main language last; that becomes the document default.

3. amsmath, amssymb, amsthm (math)

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}

The core math packages from the American Mathematical Society. amsmath gives you align, cases, proper operators, and better spacing. amssymb adds symbols like \mathbb and \lesssim. amsthm provides theorem environments. If your document has equations, load these. For technique, see LaTeX Math Mode Mastery.

Document Enhancement Packages

4. graphicx (images)

\usepackage{graphicx}

\includegraphics[width=0.8\textwidth]{figure.png}

The standard way to include images. Sizing relative to \textwidth keeps figures sensible when margins change.

5. hyperref (clickable links and references)

\usepackage[colorlinks=true,linkcolor=blue]{hyperref}

Turns cross-references, citations, URLs, and the table of contents into clickable links. It also writes PDF metadata. One catch: it rewrites a lot of internal commands, so it almost always loads last.

6. cleveref (smart cross-references)

\usepackage{cleveref}

% Instead of: see Figure~\ref{fig:example}
% Use: see \cref{fig:example}

\cref inserts the right word (“Figure”, “Table”, “Equation”) automatically, so changing a float type doesn’t strand a wrong label. Load it after hyperref.

Formatting and Layout Packages

7. geometry (page layout)

\usepackage[margin=1in,a4paper]{geometry}

One clean interface for margins and page size, instead of poking at low-level length registers.

8. fancyhdr (headers and footers)

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead[L]{Chapter \thechapter}
\fancyhead[R]{\leftmark}

Custom running heads and footers. Standard equipment for theses and reports.

9. setspace (line spacing)

\usepackage{setspace}
\doublespacing

Some journals and graduate schools still require double spacing in submissions. This is the clean way to do it without breaking math spacing.

Table and List Packages

10. booktabs (professional tables)

\usepackage{booktabs}

\begin{tabular}{@{}lcc@{}}
\toprule
Method & Accuracy & Speed \\
\midrule
Our Method & 95\% & Fast \\
Their Method & 60\% & Slow \\
\bottomrule
\end{tabular}

Replaces ugly vertical rules with \toprule, \midrule, and \bottomrule. The convention in published tables is no vertical lines and minimal horizontal ones. booktabs makes that the easy path.

11. tabularx (flexible column widths)

\usepackage{tabularx}

\begin{tabularx}{\textwidth}{lXr}
% X columns stretch to fill the width
\end{tabularx}

For tables that need to hit an exact width, with one or more columns wrapping text to absorb the slack.

12. enumitem (list customization)

\usepackage{enumitem}

\begin{enumerate}[label=(\alph*)]
\item First item
\item Second item
\end{enumerate}

Fine control over labels, spacing, and indentation. Useful when you need (a), (b), (c) or want to tighten vertical space between items.

Citation and Bibliography Packages

13. natbib or biblatex (citations)

% Traditional, with BibTeX:
\usepackage{natbib}
\citep{smith2020} % (Smith, 2020)
\citet{smith2020} % Smith (2020)

% Modern, with Biber:
\usepackage{biblatex}
\addbibresource{references.bib}

natbib is the long-standing choice for author-year styles and remains widely required by journal templates. biblatex is more flexible and handles complex bibliographies better, but expects the Biber backend. Pick one per document. For the full comparison, see LaTeX Bibliography Management.

14. csquotes (proper quotation marks)

\usepackage{csquotes}

\enquote{This quote uses the right marks for your language.}

Renders quotation marks according to language conventions and nests them correctly. biblatex also recommends it.

Code and Algorithm Packages

15. listings or minted (code highlighting)

% listings: no external dependencies
\usepackage{listings}
\lstset{language=Python,basicstyle=\ttfamily}

% minted: nicer output, needs Python Pygments
\usepackage{minted}
\begin{minted}{python}
def hello():
    print("Hello, LaTeX!")
\end{minted}

listings is pure LaTeX and works everywhere. minted produces better highlighting but calls out to Pygments, which means compiling with shell escape enabled. If your editor or build setup blocks shell escape, stick with listings.

16. algorithm2e (algorithms)

\usepackage{algorithm2e}

\begin{algorithm}
\SetAlgoLined
\KwData{Training set $\mathcal{D}$}
\KwResult{Trained model}
\While{not converged}{
  Update weights\;
}
\end{algorithm}

Clean pseudocode with keyword formatting and line numbering. Note that several algorithm packages exist (algorithmic, algpseudocode, algorithm2e) and they don’t mix well, so commit to one.

Utility Packages

17. siunitx (units and numbers)

\usepackage{siunitx}

\SI{3.14159}{\meter\per\second}
\num{1234567.89}

Consistent formatting for numbers and physical units, including the spacing rules SI actually requires. It also aligns numeric table columns on the decimal point. Essential for experimental work.

18. subcaption (subfigures)

\usepackage{subcaption}

\begin{figure}
  \begin{subfigure}{0.5\textwidth}
    \includegraphics[width=\textwidth]{fig1}
    \caption{First result}
  \end{subfigure}
  \begin{subfigure}{0.5\textwidth}
    \includegraphics[width=\textwidth]{fig2}
    \caption{Second result}
  \end{subfigure}
  \caption{Comparison of results}
\end{figure}

Side-by-side figures with their own labels, each referenceable. This is the current package; the old subfigure package is deprecated.

19. xcolor (color)

\usepackage{xcolor}

\textcolor{red}{Important}
\definecolor{myblue}{RGB}{0,102,204}

Named colors plus custom definitions. Many other packages (including hyperref and listings) load it under the hood, so it is rarely missing.

20. lipsum (placeholder text)

\usepackage{lipsum}

\lipsum[1-3]

Lorem Ipsum on demand. Handy for testing a layout before the real text exists.

Package Management That Saves You Pain

Loading Order Matters

Some packages must load in a particular order:

% Encoding first
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}

% General packages
\usepackage{graphicx}
\usepackage{amsmath}

% hyperref near the end
\usepackage{hyperref}

% cleveref after hyperref
\usepackage{cleveref}

The two rules to remember: hyperref loads late, and cleveref loads after it.

Conflict Resolution

A few pairs don’t coexist:

  • subfigure vs subcaption: use subcaption (it’s the maintained one)
  • cite vs natbib: choose a single citation package
  • competing algorithm packages: pick one and stop

Package Options

Many packages change behavior entirely through options:

\usepackage[colorlinks=true,
            linkcolor=blue,
            citecolor=green,
            urlcolor=red]{hyperref}

\usepackage[letterpaper,margin=0.75in]{geometry}

Curated Sets by Field

Thesis writers:

\usepackage{geometry}
\usepackage{setspace}
\usepackage{fancyhdr}
\usepackage{hyperref}
\usepackage{cleveref}
\usepackage{biblatex}

Mathematicians:

\usepackage{amsmath,amssymb,amsthm}
\usepackage{mathtools}
\usepackage{thmtools}
\usepackage{tikz}

Computer scientists:

\usepackage{algorithm2e}
\usepackage{listings}
\usepackage{tikz}
\usepackage{pgfplots}

A Word on Compilation Speed

Every package adds work at compile time. tikz, pgfplots, and minted are the usual culprits behind slow builds. Three habits help: load only what you use, externalize heavy TikZ figures so they compile once, and reach for built-in commands when a package would be overkill.

Finding New Packages

When you need something not listed here:

  • CTAN hosts essentially every package, each with its own documentation
  • Read the package manual before guessing at options
  • TeX Stack Exchange has a working answer for most specific problems

Skip the Local Install

Managing a full TeX distribution, keeping packages updated, and chasing “file not found” errors is its own chore. A browser-based editor sidesteps it: packages are already installed and current, so \usepackage just works.

inscrive.io is a collaborative online LaTeX editor with a free tier (€0, no credit card) that ships templates pre-configured with common packages, plus PDF export, version history, and a 60-second compile window. It is hosted in the EU on Hetzner servers in Germany and Finland, in ISO 27001-certified data centers, with a signed DPA available for institutions that need one. If your projects compile-heavy documents with TikZ and minted, Pro (€7/month) raises the compile limit to 480 seconds.

For new LaTeX users, pair this package list with our LaTeX beginner guide. To compare the online editors, see Online LaTeX Editors Compared.

Tired of local package management? Try inscrive.io and write with these packages already installed, for free.

Sign up for our newsletter

Roadmap progress, announcements and exclusive discounts — straight to your inbox.

We care about the protection of your data. Read our privacy policy.