latex
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
.logfile for full error context - Errors show as
!lines - Warnings show as
LaTeX Warning:orPackage 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.styorpreamble.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
\centeringnotcenterinside floats (avoids extra vertical spacing) - Avoid
\\for paragraph breaks — use blank lines instead - Use
booktabs— never\hlineand 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
More from igbuend/grimbard
tikz
LaTeX TikZ/PGF package for programmatic vector graphics and diagrams. Use when helping users draw flowcharts, trees, graphs, automata, circuits, geometric figures, or any custom diagram in LaTeX.
91pgfplots
LaTeX pgfplots package for data visualization and plotting. Use when helping users create line plots, bar charts, scatter plots, histograms, 3D surfaces, or any scientific/data plot in LaTeX.
31biblatex
LaTeX biblatex/biber packages for modern bibliography management. Use when helping users cite references, manage .bib files, choose citation styles, or troubleshoot bibliography compilation.
24ethical-hacking-ethics
Legal and ethical guidelines for bug bounties, pentesting, and security research. Use when conducting authorized security testing.
12codebase-discovery
Generate security-focused DISCOVERY.md for code review and threat modeling. Use when assessing unfamiliar codebases.
11weak-encryption-anti-pattern
Security anti-pattern for weak encryption (CWE-326, CWE-327). Use when generating or reviewing code that encrypts data, handles encryption keys, or uses cryptographic modes. Detects DES, ECB mode, static IVs, and custom crypto implementations.
11