latex-toolkit
Skill5 starsChanged 4 months agoMITView on GitHub
Set up, build, and debug a LaTeX thesis: project layout with one file per chapter, latexmk builds, biblatex or natbib bibliography wiring, university template adoption, compile-error diagnosis from the .log (undefined control sequence, missing $, overfull boxes, undefined citations), cross-references, figures and tables, and the packages worth using. Use when starting a LaTeX thesis, when a build fails, when references show as question marks, or when adopting a department template.
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 0 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 27
Use latexmk; it runs pdflatex/biber/pdflatex the right number of times:
- Very specific: line 43
Prefer pdflatex unless the template needs xelatex/lualatex (system fonts, Arabic or CJK text).
- Very specific: line 60
Always fix the first error.
- Very specific: line 75
When the log is huge, filter: grep -n -A3 '^!' main.log | head -40.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
LaTeX problems fall into two kinds: a build that fails (read the log, fix the first error, rebuild) and a document that builds wrong (question marks, misplaced floats, broken references). Both are diagnosed from the .log, never by guessing at the source.
Project layout
thesis/
main.tex \documentclass, packages, \input of chapters
preamble.tex packages and macros, nothing else
chapters/01-introduction.tex ...
figures/ vector PDFs or high-dpi PNGs, one per figure
tables/ generated .tex tables (from scripts, never hand-typed numbers)
references.bib the bibliography (bibtex-manager owns it)
latexmkrc build settings
.gitignore *.aux *.bbl *.blg *.log *.out *.toc *.lof *.lot *.fls *.fdb_latexmk *.synctex.gzOne file per chapter, \input{chapters/01-introduction} from main.tex. \includeonly{chapters/04-results} speeds up iteration on one chapter.
Build
Use latexmk; it runs pdflatex/biber/pdflatex the right number of times:
latexmk -pdf -interaction=nonstopmode -file-line-error main.tex
latexmk -pdf -pvc main.tex # rebuild on save
latexmk -C # clean everythinglatexmkrc:
$pdf_mode = 1;
$bibtex_use = 2; # run biber/bibtex when needed
$pdflatex = 'pdflatex -interaction=nonstopmode -file-line-error -synctex=1 %O %S';Prefer pdflatex unless the template needs xelatex/lualatex (system fonts, Arabic or CJK text); then $pdf_mode = 5 (xelatex) or 4 (lualatex).
Bibliography
biblatex with biber is the modern default and handles Unicode, DOIs, and URLs cleanly:
\usepackage[backend=biber,style=ieee,sorting=none]{biblatex} % or style=apa, authoryear
\addbibresource{references.bib}
...
\printbibliographynatbib (\citep, \citet, \bibliographystyle{plainnat}, \bibliography{references}) when the template requires it. Never mix the two. Question marks for citations mean biber/bibtex has not run or the key is missing: run the full latexmk build, then check main.blg for "I didn't find a database entry for".
Reading the log
Always fix the first error; later ones are usually consequences. Search the .log for ! at line start, or use -file-line-error so errors read ./chapters/03-method.tex:42: Undefined control sequence.
| Message | Usual cause | Fix |
Undefined control sequence | typo in a macro, or the package providing it is not loaded | check spelling; add \usepackage{...}; look at the line shown |
Missing $ inserted | math symbol (_, ^, \alpha) outside math mode, or an unescaped _ in text/URL | wrap in $...$ or escape \_; use \url{} for URLs |
File ... not found | wrong path or extension for \input, \includegraphics, \addbibresource | paths are relative to main.tex; omit the extension for \input |
LaTeX Error: Environment ... undefined | missing package (algorithmic, subcaption, listings) | load it in the preamble |
Citation ... undefined (warning) | key not in .bib, or bibliography step not run | run latexmk fully; citation-guard catches missing keys |
Reference ... undefined (warning) | \ref before the label, or a label inside a float before its \caption | put \label after \caption; rebuild twice |
Overfull \hbox (warning) | a long word, URL, or table wider than the text width | \sloppy locally, \url, \resizebox, tabularx, or rephrase |
Too many unprocessed floats | many figures in a row with no text | \clearpage, or [H] from float sparingly |
Package biblatex Warning: Please (re)run Biber | stale .bbl | latexmk does this; if by hand, biber main then pdflatex twice |
! LaTeX Error: Option clash for package | same package loaded twice with different options | load once, in the preamble, before the template's own load |
When the log is huge, filter: grep -n -A3 '^!' main.log | head -40.
Packages worth loading
geometry (margins per template), graphicx, booktabs (tables that look printed), siunitx (numbers and units, aligned decimals), subcaption, cleveref (\cref{} writes "Figure 3" for you; load last), hyperref (load before cleveref, after everything else), microtype, csquotes (with biblatex), listings or minted (code; minted needs -shell-escape and Pygments), algorithm2e or algpseudocode, todonotes (drafting only), glossaries or acronym (acronyms defined once).
Templates
Department templates come as a .cls or a .sty plus an example. Keep the template unmodified in the repo, put customisations in preamble.tex, and check what the class already loads (grep RequirePackage thesis.cls) before loading packages again. If the template hard-codes bibtex, use natbib; do not fight it a week before submission.
Figures and tables
- Figures as PDF (vector) from matplotlib (
savefig('x.pdf')) or SVG converted withinkscape --export-type=pdf; PNG at 300 dpi only for raster content. - Width in text units:
\includegraphics[width=0.8\linewidth]{figures/x.pdf}. - Tables generated by scripts into
tables/*.texand\input;booktabsrules (\toprule,\midrule,\bottomrule), no vertical lines, units in headers,siunitxScolumns for numbers. - Captions below tables and figures alike unless the template differs;
\labelafter\caption.
Word count and progress
texcount -inc -total main.tex counts words excluding markup; thesis-progress uses it.
Overleaf
Overleaf projects sync with git (git clone https://git.overleaf.com/<id>). Keep the same layout; Overleaf runs latexmk with the main file set in the menu. Keep references.bib as the source of truth in git and let Overleaf read it; do not let two people edit the .bib in the browser.
Attribution
The error table draws on awesome-latex-skills (MIT); the layout and build conventions are this repository's.
In this repository89 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- site/llms-full.txtllms.txt
- site/llms.txtllms.txt
- improveSkill
- academic-writingSkill
- benchmark-reportingSkill
- bibtex-managerSkill
- citation-graphSkill
- citation-verifierSkill
- design-science-methodologySkill
- docx-thesisSkill
- experiment-reproducibilitySkill
- literature-searchSkill
- lit-review-synthesisSkill
- paper-readerSkill
- proofread-academicSkill
- research-figuresSkill
- research-methodologySkill
- research-questionSkill
- statistics-advisorSkill
- supervisor-updateSkill
- systematic-reviewSkill
- thesis-proposalSkill
- coolify-image-appSkill
- coolify-vps-baselineSkill
- deploy-verificationSkill
- express-prisma-coolify-imageSkill
- ghcr-coolify-pipelineSkill
- live-domain-cutoverSkill
- nextjs-coolify-imageSkill
- proxy-client-addressSkill
- vps-ops-toolkitSkill
- adr-writingSkill
- openapi-specSkill
- readme-writingSkill
- technical-writingSkill
- adversarial-reviewerSkill
- api-design-reviewSkill
- code-review-responseSkill
- create-agentSkill
- create-commandSkill
- create-hookSkill
- create-skillSkill
- db-migration-safetySkill
- dependency-upgradeSkill
- dockerfile-best-practicesSkill
- error-handling-patternsSkill
- executing-plansSkill
- explain-codebaseSkill
- fix-ciSkill
- github-actions-pipelineSkill
- grill-with-docsSkill
- incident-postmortemSkill
- logging-and-observabilitySkill
- parallel-agentsSkill
- performance-optimizationSkill
- refactoring-recipesSkill
- solid-principlesSkill
- systematic-debuggingSkill
- test-driven-developmentSkill
- The first 60 shown.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

