Compile latex
Use when compiling a LaTeX paper, debugging LaTeX errors, building a paper PDF, or when a .tex file fails to produce output. Handles engine detection (xelatex vs pdflatex), bibliography systems (biber vs bibtex), and multi-pass compilation.From its SKILL.md
npx -y skills add brycewang-stanford/Auto-Empirical-Research-Skills --skill compile-latexAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
SKILL.md
3.6 KB, 807 tokens by cl100k_base, as published. Nobody here has run it
Compile LaTeX
Overview
This skill compiles LaTeX documents correctly with the right engine and bibliography system, handles multi-pass compilation, and parses errors to suggest fixes. It ships with a wrapper script (scripts/compile.sh) that detects everything automatically and can be invoked directly.
When to Use
- Compiling any
.texfile - "The paper won't compile"
- LaTeX error messages appearing in output
- Generating the final PDF for submission
- CI or automated builds of a paper
- Verifying that cross-references and citations resolve correctly
Mandatory Steps
-
Detect the engine from the preamble. Look for
\usepackage{fontspec}. If present, usexelatex. Otherwise usepdflatex. The wrapper script does this automatically. -
Detect the bibliography system.
\usepackage{biblatex}in the preamble implies biber.\bibliography{...}at the end of the document implies bibtex. Neither implies no bibliography pass. -
Prefer
latexmkif available. It handles multi-pass logic automatically and is more robust than running passes manually. -
If
latexmkis unavailable, run the manual sequence: engine → bib (if applicable) → engine → engine. -
On error, parse the log file (
<base>.log). Extract lines starting with!, report the line number and file, and suggest a likely fix from the error table below. -
Verify the PDF was produced after successful compilation and that it is non-empty.
Using the Wrapper Script
Invoke the compile script directly:
./skills/compile-latex/scripts/compile.sh paper/paper.tex
The script detects engine and bibliography system, runs latexmk if available, falls back to manual multi-pass otherwise, and exits non-zero on failure. All detection and pass logic is handled internally — no flags needed beyond the path to the .tex file.
Common Errors and Fixes
| Error | Cause | Fix |
|---|---|---|
Undefined control sequence \foo | Missing package | Add \usepackage{pkg} providing \foo |
File 'x.sty' not found | Missing package | Install TeX package (tlmgr install x) |
Citation 'X' undefined | Bib pass not run | Run biber or bibtex, then re-run engine |
Missing \begin{document} | Preamble typo | Check brace balance in preamble |
Package fontspec Error | Used pdflatex instead of xelatex | Switch engine |
Overfull \hbox | Typographical warning | Usually safe to ignore, or rephrase the offending line |
LaTeX Error: File 'x.tex' not found | Missing \input{} target | Verify path relative to the main file |
Anti-Patterns
- Running
pdflatexon a document that needsxelatex - Ignoring
Citation undefinedwarnings — they mean the bibliography is broken - Single-pass compilation when cross-references exist (
\ref,\cite,\label) - Committing
.aux,.log,.bbl,.out,.toc,.fls,.fdb_latexmkauxiliary files to git - Ignoring errors and just "running it again" until it compiles
Verification Before Completion
- Engine detected matches preamble requirements
- Bibliography system correctly identified
- Multi-pass executed when needed (engine → bib → engine → engine)
- Exit code 0 from the compile step
-
<base>.pdfexists and is non-empty - No
Undefinedwarnings in the final log - Auxiliary files not staged in git
What ships with it: 1 file
2.0 KB alongside SKILL.md, 1 of them executable
scripts/
- compile.shruns2.0 KB