LaTeX project checklist before submission
19 checks, in the order worth doing them. Each says how to carry it out, so the list works by hand. Every item is tagged with what settles it: 10can be answered by reading the project’s source, several need a build, and a few need you. Leave the compile section until last and run it on a clean build — it is the part nothing else can do for you.
The project itself
Everything downstream assumes the project is complete and the right file is the root.
The root document is the one you think it is
SourceConfirm which file carries \documentclass and the \begin{document}. Projects accumulate abandoned roots — main.tex, thesis.tex, draft_final.tex — and checking the wrong one is a wasted afternoon.
Every included file is present
SourceFollow each \input and \include and confirm the file exists at that path. A chapter that silently vanished from an archive is missing from the PDF too.
The bibliography files are declared and present
SourceFind every \bibliography or \addbibresource and check the files resolve. A renamed .bib is the fastest way to lose every citation at once.
Nothing depends on files outside the project directory
SourceAbsolute paths and references to a figure sitting on your desktop work on your machine and nowhere else. This matters the moment anyone else builds it.
Citations
Undefined citations are warnings, not errors, so nothing stops you submitting with them.
Every cited key exists in the bibliography
SourceCompare the keys your project requests against the keys your .bib defines. The full method is in the citations guide.
No key is defined twice
SourceSort the entry keys and look for adjacent duplicates — common after merging exports from a reference manager.
Uncited entries are uncited on purpose
SourceResolve crossref parents first, then check what is left. Some styles omit uncited entries entirely, so a reference you meant to include can simply disappear.
Cross-references
The class of error that produces two question marks in a printed thesis.
Every reference resolves to a label
SourceCompare across the whole project, including the \eqref, \pageref, \autoref and \cref families, not just \ref.
No label is defined twice
SourceDuplicates resolve silently to the last definition, so the reference is wrong rather than broken.
Labels sit after their captions
YouInside a float, a \label before the \caption picks up the previous number. It resolves cleanly and points at the wrong thing.
The document as a piece of work
The requirements that come from your department rather than from TeX.
The word count is measured the way your rules define it
SourceCount the visible text of the expanded project, not the source — and check whether your rules exclude the bibliography, captions, footnotes or appendices.
Required sections and front matter are present
YouAbstract, declaration, acknowledgements, contents, references. Check against your institution's submission rules rather than the template you started from.
Figures and tables are all referred to in the text
YouAn unreferenced float reads as decoration, and in some disciplines it is a formal problem.
Compile, and read the log
The section nothing static replaces. Do this last, on a clean build, and read the log rather than the PDF.
It builds from clean
CompileDelete the .aux, .bbl, .bcf, .blg and .out files and build again. Stale auxiliary files hide missing bibliography entries and resolve references that no longer exist.
You ran enough passes
CompileCross-references and citations settle over multiple runs with the bibliography tool in between. A latexmk run, or the manual sequence, avoids reading warnings that would have gone away.
The log has no undefined citations or references left
CompileSearch the log for undefined-reference, undefined-citation and multiply-defined warnings. This is the authoritative list, and it comes from the engine rather than from any checker.
Overfull boxes are dealt with or accepted
CompileOverfull \hbox warnings mean text running into the margin. Not all matter; the ones on the page you are about to print do.
It builds with the engine your department expects
Compilepdflatex, xelatex and lualatex differ on fonts and encoding. If a submission specifies one, build with that one rather than assuming yours transfers.
You have read the PDF you are actually submitting
YouOpen the final file and check float placement, page breaks, that every figure appears, and that cross-reference numbers point where you meant. Nothing else finds a figure that landed three pages from its discussion.
Which of these can be automated
Everything tagged Sourceis decidable by reading the project, and StudyRef does those: it resolves the root document and the include graph, then reports citation keys with no entry, duplicate and case-mismatched keys, unused entries with crossref parents resolved first, missing and duplicate labels, and a word count taken from the expanded project’s visible text. If the project is incomplete or its structure could not be determined, the report says the analysis was incomplete and why, rather than returning a clean result with a hole in it.
Everything tagged Compile stays with your build. TeX has to run for those answers to exist, and no amount of reading the source substitutes for it. The items tagged You are judgement — whether the figure numbering makes sense, whether the front matter is what your department asked for.
Clear the source-level items in one pass
Upload the project as a .zip, including the bibliography files. Requires an account on a paid plan.
If an item needs more detail
- Citation keys against your .bib files — including what crossref does to the idea of an unused entry.
- Labels and cross-references across included files — and what a resolvable reference does not prove.
- The equivalent checklist for a Word document — if some of your work is not in LaTeX.