typography — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited typography (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A single-page reference. Each rule cites the package or canonical source.
Always load it. Even when its features are partly disabled by the engine.
\usepackage{microtype}| Engine | Features active | Source |
|---|---|---|
| pdflatex | protrusion, expansion, ligature toggling, kerning, interword spacing — all of them | https://www.tug.org/docs/latex/microtype/microtype.pdf |
| lualatex | protrusion, expansion, ligature toggling | same |
| xelatex | protrusion only (≥ v0.9997) | same |
Rule: load microtype after hyperref (older guidance to load before is outdated). Source: microtype PDF §10 (Loading order).
For thesis-grade tuning:
\usepackage[
protrusion=true, expansion=true, factor=1100,
stretch=10, shrink=10, final
]{microtype}final overrides class draft mode (otherwise microtype turns off).
align/align* for multi-line equations. equation/equation* for single. Never eqnarray — its column spacing is wrong.\(...\) over $...$ (catches more errors).\[...\] over $$...$$ (plain TeX $$ skips \everydisplay, breaking amsmath features).\sin, \log, \max, \arg\max — never roman text in math (\text{arg max} is wrong; use \operatorname{arg\,max} or load \DeclareMathOperator{\argmax}{arg\,max} once).\, (thin), \: (medium), \; (thick), \! (negative). For "d" in differentials: \mathrm{d}x. For unit spacing: use siunitx (\SI{3.5}{\meter\per\second}).equation numbering; for sub-equations: subequations env from amsmath.Source: https://ctan.org/pkg/amsmath and amsldoc PDF.
article, report, book) sectioning is fine for most journals. Don't redefine \section formatting unless the journal requires it — most journals provide their own class.\paragraph{} and \subparagraph{} sparingly. They are unnumbered runs-in.titlesec — but check the journal class first.tocloft for fine-grained ToC formatting; usually overkill.\usepackage{caption} % core caption control
\usepackage{subcaption} % for subfigures (newer than subfig)
\captionsetup{font=small, labelfont=bf, format=plain}Convention: caption above tables, below figures. Most journal classes already enforce this.
For long captions in floats, separate the short version (in ToC/listoftables) from the full caption: \caption[short]{long full description.}.
Source: https://ctan.org/pkg/caption.
cleveref produces "Figure 3" / "Figures 3, 4 and 5" automatically based on label-prefix conventions:
\usepackage[capitalize, noabbrev]{cleveref}Load cleveref AFTER hyperref. Use \Cref{label} (capitalized for sentence start) and \cref{label} (lowercase mid-sentence). Multiple: \Cref{a,b,c}.
\widowpenalty=10000 and \clubpenalty=10000 in the preamble for journal-grade output. (Default: 150 — too tolerant.)\sloppy and \fussy. Default is fussy. Use \begin{sloppypar}...\end{sloppypar} for one bad paragraph instead of global \sloppy.hy\-phen\-ate to allow specific breaks; \hyphenation{long-word an-other-word} in preamble for global.[t] (top of page) and [b] (bottom) explicitly. [h] ("here") is a hint, often ignored. [!] overrides float-counter limits.\begin{figure}[H] (H from float package) unless absolutely necessary — it hurts page balance.\topfraction, \bottomfraction, \textfraction cautiously.% LuaLaTeX/XeLaTeX:
\usepackage{fontspec}
\setmainfont{TeX Gyre Pagella} % free, widely available, Palatino-like
\setsansfont{TeX Gyre Heros} % Helvetica-like
\setmonofont{TeX Gyre Cursor} % Courier-like
% Or for Computer Modern in Unicode:
\setmainfont{Latin Modern Roman}For pdflatex (T1 8-bit world):
\usepackage{lmodern} % Latin Modern as default
% or
\usepackage{newtxtext, newtxmath} % Times-like, with proper math
% or
\usepackage{mathpazo} % Palatino + matching mathStick with one consistent family per document. Source: https://tug.org/FontCatalogue/.
\usepackage{siunitx}
\sisetup{detect-all} % match surrounding font
% Use:
\SI{3.5}{\meter\per\second\squared}
\num{1.234e-5}
\ang{30}Source: https://ctan.org/pkg/siunitx.
\usepackage{enumitem}
\begin{itemize}[leftmargin=*, itemsep=2pt, topsep=4pt]
\item ...
\end{itemize}Source: https://ctan.org/pkg/enumitem.
\usepackage[hidelinks, breaklinks=true, bookmarksnumbered=true, pdfusetitle]{hyperref}hidelinks: no colored boxes/underlines (most journal classes set this).breaklinks: long URLs break across lines.pdfusetitle: sets PDF metadata from \title/\author.Load after most packages, before cleveref. See https://ctan.org/pkg/hyperref for the famously long option list.
Defer to the journal's official class file. If it sets \captionsetup or redefines \section, do not override. The class is the authority for that publication.
For package-specific fine points not covered here, invoke /academic-latex:docs-lookup.
2026-05-09 — TUG, CTAN, microtype PDF, amsldoc.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.