LaTeX Skill
1. Overview
LaTeX is a markup language and typesetting system for producing high-quality documents. It excels at structured documents with complex formatting, mathematics, cross-references, and bibliographies.
When to use LaTeX:
- Academic papers, journal submissions
- Theses and dissertations
- Technical documentation
- CVs and résumés
- Presentations (Beamer)
- Books, reports, letters
Key concepts:
| Concept | Description |
|---|
| Preamble | Everything before \begin{document} — class, packages, settings |
| Document body | Content between \begin{document} and \end{document} |
| Commands | Start with \, e.g. \textbf{bold}. Optional args in [], required in {} |
| Environments | \begin{name}...\end{name} blocks for scoped formatting |
| Packages | Extensions loaded with \usepackage{name} in the preamble |
2. Document Structure
Document Classes
\documentclass[options]{class}
| Class | Use case |
|---|
article | Short documents, papers, assignments |
report | Longer documents with chapters |
book | Books (front/back matter, chapters) |
beamer | Presentations/slides |
letter | Formal letters |
memoir | Flexible — replaces article/report/book |
Common Class Options
\documentclass[12pt,a4paper,twocolumn,draft]{article}
| Option | Values |
|---|
| Font size | 10pt, 11pt, 12pt |
| Paper | a4paper, letterpaper, a5paper |
| Columns | onecolumn, twocolumn |
| Sides | oneside, twoside |
| Draft | draft (shows overfull boxes, skips images) |
Minimal Document
\documentclass[12pt,a4paper]{article}
% === PREAMBLE ===
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath, amssymb}
\usepackage{graphicx}
\usepackage{hyperref}
\title{My Document}
\author{Author Name}
\date{\today}
% === BODY ===
\begin{document}
\maketitle
\tableofcontents
\section{Introduction}
Content here.
\end{document}
3. Text Formatting
Style Commands
| Command | Result |
|---|
\textbf{text} | bold |
\textit{text} | italic |
\underline{text} | underlined |
\emph{text} | emphasis (italic, or upright if already italic) |
\texttt{text} | monospace |
\textsc{text} | SMALL CAPS |
\textsf{text} | sans-serif |
Font Sizes
Smallest to largest:
\tiny \scriptsize \footnotesize \small \normalsize
\large \Large \LARGE \huge \Huge
Use as: {\large This text is large.} or as environment.
Font Families
| Command | Declaration | Family |
|---|
\textrm{} | \rmfamily | Serif (Roman) |
\textsf{} | \sffamily | Sans-serif |
\texttt{} | \ttfamily | Monospace |
Alignment
\begin{center} Centered text. \end{center}
\begin{flushleft} Left-aligned. \end{flushleft}
\begin{flushright} Right-aligned. \end{flushright}
Or inline: \centering, \raggedright, \raggedleft
Spacing
\vspace{1cm} % vertical space
\hspace{2em} % horizontal space
\vfill % stretch vertical
\hfill % stretch horizontal
\\[0.5cm] % line break with extra space
\setlength{\parskip}{0.5em} % paragraph spacing
\setlength{\parindent}{0pt} % remove paragraph indent
\noindent % suppress indent for one paragraph
Line spacing (requires setspace package):
\usepackage{setspace}
\onehalfspacing % or \doublespacing, \singlespacing
Special Characters
These characters must be escaped:
| Character | LaTeX | Character | LaTeX |
|---|
% | \% | $ | \$ |
& | \& | # | \# |
_ | \_ | { | \{ |
} | \} | ~ | \textasciitilde |
^ | \textasciicircum | \ | \textbackslash |
4. Document Organization
Sectioning
\part{Part Title} % only in report/book
\chapter{Chapter Title} % only in report/book
\section{Section}
\subsection{Subsection}
\subsubsection{Subsubsection}
\paragraph{Paragraph}
\paragraphsub{Subparagraph}
Starred versions (\section*{}) suppress numbering and TOC entry.
Table of Contents
\tableofcontents % requires two compilations
\listoffigures
\listoftables
Lists
% Bulleted
\begin{itemize}
\item First item
\item Second item
\end{itemize}
% Numbered
\begin{enumerate}
\item First
\item Second
\end{enumerate}
% Labeled
\begin{description}
\item[Term] Definition here.
\end{description}
Customize with enumitem package:
\usepackage{enumitem}
\begin{enumerate}[label=(\alph*), start=1]
Cross-References
\section{Methods}\label{sec:methods}
See Section~\ref{sec:methods} on page~\pageref{sec:methods}.
With hyperref, use \autoref{sec:methods} for automatic "Section 2" text.
Rule: Always place \label after \caption (in floats) or after the sectioning command.
Footnotes
This has a footnote.\footnote{Footnote text here.}
5. Mathematics
Inline vs Display
Inline: $E = mc^2$ or \(E = mc^2\)
Display:
\[ E = mc^2 \]
% Numbered equation:
\begin{equation}\label{eq:einstein}
E = mc^2
\end{equation}
Essential Packages
\usepackage{amsmath} % align, cases, matrices, etc.
\usepackage{amssymb} % extra symbols (ℝ, ℤ, etc.)
\usepackage{mathtools} % extends amsmath (dcases, coloneqq, etc.)
Common Constructs
% Fractions
\frac{a}{b} \dfrac{a}{b} (display-size)
% Roots
\sqrt{x} \sqrt[3]{x}
% Sub/superscripts
x_{i} x^{2} x_{i}^{2} a_{i,j}
% Sums, products, integrals
\sum_{i=1}^{n} x_i \prod_{i=1}^{n} x_i
\int_{0}^{\infty} f(x)\,dx
\lim_{x \to \infty} f(x)
% Brackets (auto-sized)
\left( \frac{a}{b} \right)
\left[ ... \right]
\left\{ ... \right\}
Matrices
\begin{pmatrix} a & b \\ c & d \end{pmatrix} % (a b; c d)
\begin{bmatrix} a & b \\ c & d \end{bmatrix} % [a b; c d]
\begin{vmatrix} a & b \\ c & d \end{vmatrix} % |a b; c d| (determinant)
\begin{Bmatrix} a & b \\ c & d \end{Bmatrix} % {a b; c d}
Aligned Equations
\begin{align}
f(x) &= x^2 + 2x + 1 \label{eq:f} \\
g(x) &= x^3 - 1 \label{eq:g}
\end{align}
% No numbering:
\begin{align*}
a &= b + c \\
d &= e + f
\end{align*}
Cases
f(x) = \begin{cases}
x^2 & \text{if } x \geq 0 \\
-x^2 & \text{if } x < 0
\end{cases}
Greek Letters
| Lower | Command | Upper | Command |
|---|
| α | \alpha | Α | A |
| β | \beta | Β | B |
| γ | \gamma | Γ | \Gamma |
| δ | \delta | Δ | \Delta |
| ε | \epsilon, \varepsilon | Ε | E |
| θ | \theta | Θ | \Theta |
| λ | \lambda | Λ | \Lambda |
| μ | \mu | — | — |
| π | \pi | Π | \Pi |
| σ | \sigma | Σ | \Sigma |
| φ | \phi, \varphi | Φ | \Phi |
| ω | \omega | Ω | \Omega |
Common Math Symbols
| Symbol | Command | Symbol | Command |
|---|
| ≤ | \leq | ≥ | \geq |
| ≠ | \neq | ≈ | \approx |
| ± | \pm | × | \times |
| ÷ | \div | · | \cdot |
| ∈ | \in | ∉ | \notin |
| ⊂ | \subset | ⊆ | \subseteq |
| ∪ | \cup | ∩ | \cap |
| ∞ | \infty | ∂ | \partial |
| ∇ | \nabla | ∀ | \forall |
| ∃ | \exists | → | \to, \rightarrow |
| ⇒ | \Rightarrow | ⇔ | \Leftrightarrow |
| ℝ | \mathbb{R} | ℤ | \mathbb{Z} |
| … | \dots, \ldots, \cdots | | |
6. Tables
Basic Table
\begin{table}[htbp]
\centering
\caption{Results summary}\label{tab:results}
\begin{tabular}{lcrp{4cm}}
\toprule
Name & Count & Score & Description \\
\midrule
Alpha & 10 & 95.2 & First entry \\
Beta & 20 & 87.1 & Second entry \\
\bottomrule
\end{tabular}
\end{table}
Column Specifiers
| Spec | Alignment |
|---|
l | Left |
c | Center |
r | Right |
p{width} | Paragraph (top-aligned, fixed width) |
m{width} | Middle-aligned paragraph (requires array) |
| ` | ` |
Key Packages
\usepackage{booktabs} % \toprule, \midrule, \bottomrule (professional rules)
\usepackage{multirow} % \multirow{nrows}{width}{text}
\usepackage{longtable} % tables spanning multiple pages
\usepackage{tabularx} % auto-width X columns
Multi-column/row
\multicolumn{3}{c}{Spanning header} \\
\multirow{2}{*}{Tall cell}
7. Figures and Images
\usepackage{graphicx}
\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{images/photo.png}
\caption{A descriptive caption.}\label{fig:photo}
\end{figure}
includegraphics Options
| Option | Example |
|---|
width | width=0.5\textwidth |
height | height=5cm |
scale | scale=0.75 |
angle | angle=90 |
trim | trim=1cm 2cm 1cm 2cm, clip (left bottom right top) |
Float Placement
| Specifier | Meaning |
|---|
h | Here (approximately) |
t | Top of page |
b | Bottom of page |
p | Dedicated float page |
! | Override internal limits |
H | Exactly here (requires float package) |
Subfigures
\usepackage{subcaption}
\begin{figure}[htbp]
\centering
\begin{subfigure}[b]{0.48\textwidth}
\includegraphics[width=\textwidth]{img1.png}
\caption{First}\label{fig:sub1}
\end{subfigure}
\hfill
\begin{subfigure}[b]{0.48\textwidth}
\includegraphics[width=\textwidth]{img2.png}
\caption{Second}\label{fig:sub2}
\end{subfigure}
\caption{Both images}\label{fig:both}
\end{figure}
8. Bibliographies and Citations
BibTeX Workflow
- Create
references.bib:
@article{smith2023,
author = {Smith, John and Doe, Jane},
title = {An Important Paper},
journal = {Journal of Examples},
year = {2023},
volume = {42},
pages = {1--15},
doi = {10.1234/example}
}
@book{knuth1984,
author = {Knuth, Donald E.},
title = {The {\TeX}book},
publisher = {Addison-Wesley},
year = {1984}
}
- In document:
\usepackage{natbib} % or use biblatex
\bibliographystyle{plainnat}
As shown by \citet{smith2023}... % Smith and Doe (2023)
This is known \citep{smith2023}. % (Smith and Doe, 2023)
\bibliography{references}
- Compile:
pdflatex → bibtex → pdflatex → pdflatex
BibLaTeX Workflow (Modern)
\usepackage[backend=biber, style=authoryear]{biblatex}
\addbibresource{references.bib}
\textcite{smith2023} % Smith and Doe (2023)
\parencite{smith2023} % (Smith and Doe, 2023)
\printbibliography
Compile: pdflatex → biber → pdflatex → pdflatex
natbib vs biblatex
| Feature | natbib | biblatex |
|---|
| Backend | BibTeX | Biber (recommended) |
| Flexibility | Limited styles | Highly customizable |
| Unicode | Poor | Full support |
| Recommendation | Legacy projects | New projects |
9. Code Listings
verbatim
\begin{verbatim}
def hello():
print("Hello, world!")
\end{verbatim}
Inline: \verb|some_code()|
listings Package
\usepackage{listings}
\usepackage{xcolor}
\lstdefinestyle{mystyle}{
basicstyle=\ttfamily\small,
keywordstyle=\color{blue},
commentstyle=\color{gray},
stringstyle=\color{red},
numbers=left,
numberstyle=\tiny,
frame=single,
breaklines=true
}
\begin{lstlisting}[language=Python, style=mystyle, caption={Example}]
def factorial(n):
"""Compute factorial."""
if n <= 1:
return 1
return n * factorial(n - 1)
\end{lstlisting}
minted Package (Prettier, Requires Pygments)
\usepackage{minted}
\begin{minted}[linenos, frame=lines, fontsize=\small]{python}
def factorial(n):
if n <= 1:
return 1
return n * factorial(n - 1)
\end{minted}
Compile with: pdflatex -shell-escape document.tex
10. Presentations (Beamer)
\documentclass{beamer}
\usetheme{Madrid} % or: Berlin, Warsaw, Metropolis, etc.
\usecolortheme{default} % or: beaver, crane, dolphin, etc.
\title{My Presentation}
\author{Author}
\date{\today}
\begin{document}
\begin{frame}
\titlepage
\end{frame}
\begin{frame}{Outline}
\tableofcontents
\end{frame}
\section{Introduction}
\begin{frame}{Introduction}
\begin{itemize}
\item<1-> First point (appears on slide 1+)
\item<2-> Second point (appears on slide 2+)
\item<3-> Third point
\end{itemize}
\end{frame}
\begin{frame}{With Columns}
\begin{columns}
\begin{column}{0.5\textwidth}
Left content
\end{column}
\begin{column}{0.5\textwidth}
Right content
\end{column}
\end{columns}
\end{frame}
\end{document}
Popular themes: Madrid, Berlin, Metropolis (modern, clean), Warsaw, CambridgeUS
Overlay Commands
| Command | Effect |
|---|
\pause | Show content incrementally |
\onslide<2>{text} | Show on slide 2 only |
\only<1>{text} | Only on slide 1 (no space reserved) |
\visible<2->{text} | Visible from slide 2 onward |
\alert<2>{text} | Highlighted on slide 2 |
11. Page Layout
Margins (geometry)
\usepackage[margin=2.5cm]{geometry}
% or:
\usepackage[top=3cm, bottom=3cm, left=2cm, right=2cm]{geometry}
Headers and Footers (fancyhdr)
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} % clear all
\fancyhead[L]{Left Header}
\fancyhead[R]{\rightmark} % current section
\fancyfoot[C]{\thepage} % page number center
\renewcommand{\headrulewidth}{0.4pt}
Page Numbering
\pagenumbering{roman} % i, ii, iii (for front matter)
\pagenumbering{arabic} % 1, 2, 3 (for main content)
\thispagestyle{empty} % no number on this page
Multi-Column
\usepackage{multicol}
\begin{multicols}{2}
Content in two columns...
\end{multicols}
12. Common Packages Reference
| Package | Purpose |
|---|
amsmath | Enhanced math environments |
amssymb | Extra math symbols (ℝ, ℤ, etc.) |
mathtools | Extensions to amsmath |
graphicx | Image inclusion |
hyperref | Clickable links, PDF metadata |
geometry | Page margins and dimensions |
booktabs | Professional table rules |
multirow | Multi-row table cells |
longtable | Multi-page tables |
tabularx | Auto-width table columns |
xcolor | Color support |
listings | Code listings |
minted | Syntax-highlighted code (needs Pygments) |
tikz | Programmatic graphics and diagrams |
pgfplots | Data plots (built on TikZ) |
fancyhdr | Custom headers/footers |
setspace | Line spacing |
enumitem | Customize list environments |
subcaption | Subfigures and subtables |
float | Extra float control ([H] placement) |
babel | Language/hyphenation support |
inputenc | Input encoding (utf8) |
fontenc | Font encoding (T1) |
microtype | Microtypographic enhancements |
cleveref | Smart cross-references (\cref) |
siunitx | SI units and number formatting |
algorithm2e | Algorithm pseudocode |
natbib | Citation management |
biblatex | Modern bibliography management |
csquotes | Context-sensitive quotation marks |
url | Typeset URLs |
caption | Customize caption formatting |
appendix | Appendix management |
Load order tip: Load hyperref last (or near-last). Exceptions: cleveref goes after hyperref.
13. Compilation
Engines
| Engine | Use when |
|---|
pdflatex | Default. Most compatible. ASCII/Latin input. |
xelatex | System fonts (TTF/OTF), full Unicode |
lualatex | System fonts + Lua scripting, full Unicode |
Compilation Sequence
# Basic document
pdflatex document.tex
# With bibliography (BibTeX)
pdflatex document.tex
bibtex document
pdflatex document.tex
pdflatex document.tex
# With bibliography (Biber/BibLaTeX)
pdflatex document.tex
biber document
pdflatex document.tex
pdflatex document.tex
# Automated (recommended)
latexmk -pdf document.tex # pdflatex
latexmk -xelatex document.tex # xelatex
latexmk -lualatex document.tex # lualatex
latexmk -pdf -pvc document.tex # continuous preview
Common Errors and Fixes
| Error | Cause | Fix |
|---|
Undefined control sequence | Typo or missing package | Check spelling; add \usepackage |
Missing $ inserted | Math symbol outside math mode | Wrap in $...$ |
Missing \begin{document} | Error in preamble | Check preamble for typos |
File not found | Wrong path or missing file | Check filename/path, check extension |
Overfull \hbox | Line too wide | Rephrase, add \allowbreak, or use \sloppy |
Undefined citation | Missing bib entry or no bibtex run | Run bibtex/biber, check .bib keys |
Too many unprocessed floats | Too many figures queued | Add \clearpage or use [H] |
Dimension too large | Image scaling issue | Check width/height values |
Package clash | Two packages conflict | Load one, check docs for compatibility |
Reading Log Files
- Look at the
.log file for full error context
- Errors show as
! lines
- Warnings show as
LaTeX Warning: or Package xyz Warning:
Rerun to get cross-references right → compile again
14. Tips and Best Practices
- Multi-file projects: Use
\input{chapters/intro} (inserts inline) or \include{chapters/intro} (adds \clearpage, enables \includeonly)
- Custom preamble: Move package loading to
preamble.sty or preamble.tex, then \input{preamble}
- Label after caption:
\caption{...}\label{fig:x} — never the reverse
- Non-breaking spaces:
Figure~\ref{fig:x}, Section~\ref{sec:y} — prevents linebreak before number
- Draft mode:
\documentclass[draft]{article} — speeds compilation, shows overfull boxes
- Use
\centering not center inside floats (avoids extra vertical spacing)
- Avoid
\\ for paragraph breaks — use blank lines instead
- Use
booktabs — never \hline and vertical lines for professional tables
- Use
microtype — improves typography with zero effort
- Use
cleveref — \cref{fig:x} auto-generates "Figure 1" text
- Version control: LaTeX is plain text — use Git
- One sentence per line — makes diffs cleaner in version control
15. Quick Reference
Most Common Commands
| Task | Command |
|---|
| Bold | \textbf{text} |
| Italic | \textit{text} |
| Monospace | \texttt{text} |
| Section | \section{Title} |
| Reference | \ref{label} |
| Citation | \cite{key} |
| Footnote | \footnote{text} |
| Image | \includegraphics[width=\textwidth]{file} |
| URL | \url{https://...} or \href{url}{text} |
| List item | \item |
| New page | \newpage or \clearpage |
| Comment | % comment |
| Math inline | $E=mc^2$ |
| Math display | \[ E=mc^2 \] |
| Fraction | \frac{a}{b} |
Math Operators
| Command | Symbol | Command | Symbol |
|---|
\sin | sin | \cos | cos |
\tan | tan | \log | log |
\ln | ln | \exp | exp |
\min | min | \max | max |
\lim | lim | \sum | Σ |
\prod | Π | \int | ∫ |
Arrows
| Command | Symbol |
|---|
\rightarrow, \to | → |
\leftarrow | ← |
\leftrightarrow | ↔ |
\Rightarrow | ⇒ |
\Leftarrow | ⇐ |
\Leftrightarrow | ⇔ |
\mapsto | ↦ |
\uparrow | ↑ |
\downarrow | ↓ |
References