skills/latex/SKILL.md
Comprehensive LaTeX reference for document creation, formatting, mathematics, tables, figures, bibliographies, and compilation. Use when helping users write, edit, debug, or compile LaTeX documents.
npx skillsauth add igbuend/grimbard latexInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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:
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 |
\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 |
\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) |
\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}
| 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 |
Smallest to largest:
\tiny \scriptsize \footnotesize \small \normalsize
\large \Large \LARGE \huge \Huge
Use as: {\large This text is large.} or as environment.
| Command | Declaration | Family |
|---------|-------------|--------|
| \textrm{} | \rmfamily | Serif (Roman) |
| \textsf{} | \sffamily | Sans-serif |
| \texttt{} | \ttfamily | Monospace |
\begin{center} Centered text. \end{center}
\begin{flushleft} Left-aligned. \end{flushleft}
\begin{flushright} Right-aligned. \end{flushright}
Or inline: \centering, \raggedright, \raggedleft
\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
These characters must be escaped:
| Character | LaTeX | Character | LaTeX |
|-----------|-------|-----------|-------|
| % | \% | $ | \$ |
| & | \& | # | \# |
| _ | \_ | { | \{ |
| } | \} | ~ | \textasciitilde |
| ^ | \textasciicircum | \ | \textbackslash |
\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.
\tableofcontents % requires two compilations
\listoffigures
\listoftables
% 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]
\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.
This has a footnote.\footnote{Footnote text here.}
Inline: $E = mc^2$ or \(E = mc^2\)
Display:
\[ E = mc^2 \]
% Numbered equation:
\begin{equation}\label{eq:einstein}
E = mc^2
\end{equation}
\usepackage{amsmath} % align, cases, matrices, etc.
\usepackage{amssymb} % extra symbols (ℝ, ℤ, etc.)
\usepackage{mathtools} % extends amsmath (dcases, coloneqq, etc.)
% 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\}
\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}
\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*}
f(x) = \begin{cases}
x^2 & \text{if } x \geq 0 \\
-x^2 & \text{if } x < 0
\end{cases}
| 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 |
| 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 | | |
\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}
| Spec | Alignment |
|------|-----------|
| l | Left |
| c | Center |
| r | Right |
| p{width} | Paragraph (top-aligned, fixed width) |
| m{width} | Middle-aligned paragraph (requires array) |
| | | Vertical line (avoid — use booktabs instead) |
\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
\multicolumn{3}{c}{Spanning header} \\
\multirow{2}{*}{Tall cell}
\usepackage{graphicx}
\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{images/photo.png}
\caption{A descriptive caption.}\label{fig:photo}
\end{figure}
| 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) |
| 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) |
\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}
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}
}
\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}
pdflatex → bibtex → pdflatex → pdflatex\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
| Feature | natbib | biblatex | |---------|--------|----------| | Backend | BibTeX | Biber (recommended) | | Flexibility | Limited styles | Highly customizable | | Unicode | Poor | Full support | | Recommendation | Legacy projects | New projects |
\begin{verbatim}
def hello():
print("Hello, world!")
\end{verbatim}
Inline: \verb|some_code()|
\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}
\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
\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
| 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 |
\usepackage[margin=2.5cm]{geometry}
% or:
\usepackage[top=3cm, bottom=3cm, left=2cm, right=2cm]{geometry}
\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}
\pagenumbering{roman} % i, ii, iii (for front matter)
\pagenumbering{arabic} % 1, 2, 3 (for main content)
\thispagestyle{empty} % no number on this page
\usepackage{multicol}
\begin{multicols}{2}
Content in two columns...
\end{multicols}
| 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.
| Engine | Use when |
|--------|----------|
| pdflatex | Default. Most compatible. ASCII/Latin input. |
| xelatex | System fonts (TTF/OTF), full Unicode |
| lualatex | System fonts + Lua scripting, full Unicode |
# 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
| 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 |
.log file for full error context! linesLaTeX Warning: or Package xyz Warning:Rerun to get cross-references right → compile again\input{chapters/intro} (inserts inline) or \include{chapters/intro} (adds \clearpage, enables \includeonly)preamble.sty or preamble.tex, then \input{preamble}\caption{...}\label{fig:x} — never the reverseFigure~\ref{fig:x}, Section~\ref{sec:y} — prevents linebreak before number\documentclass[draft]{article} — speeds compilation, shows overfull boxes\centering not center inside floats (avoids extra vertical spacing)\\ for paragraph breaks — use blank lines insteadbooktabs — never \hline and vertical lines for professional tablesmicrotype — improves typography with zero effortcleveref — \cref{fig:x} auto-generates "Figure 1" text| 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} |
| 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 | ∫ |
| Command | Symbol |
|---------|--------|
| \rightarrow, \to | → |
| \leftarrow | ← |
| \leftrightarrow | ↔ |
| \Rightarrow | ⇒ |
| \Leftarrow | ⇐ |
| \Leftrightarrow | ⇔ |
| \mapsto | ↦ |
| \uparrow | ↑ |
| \downarrow | ↓ |
development
Security anti-pattern for Cross-Site Scripting vulnerabilities (CWE-79). Use when generating or reviewing code that renders HTML, handles user input in web pages, uses innerHTML/document.write, or builds dynamic web content. Covers Reflected, Stored, and DOM-based XSS. AI code has 86% XSS failure rate.
development
Security anti-pattern for XPath injection vulnerabilities (CWE-643). Use when generating or reviewing code that queries XML documents, constructs XPath expressions, or handles user input in XML operations. Detects unescaped quotes and special characters in XPath queries.
development
Security anti-pattern for weak password hashing (CWE-327, CWE-759). Use when generating or reviewing code that stores or verifies user passwords. Detects use of MD5, SHA1, SHA256 without salt, or missing password hashing entirely. Recommends bcrypt, Argon2, or scrypt.
development
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.