How to trace LaTeX errors efficiently?
I'm not sure you want to read this ...
Only the first error LaTeX throws is important because the first error very often causes following errors which vanish after you corrected the first one.
So if you have to find errors
- write only small parts of your code without compiling!
- compile,
- look only for the first error (usually located in the small part of new code),
- find it (okay, that could be a hard job, but you will be better with more experience) and
- correct it. Ignore the other errors. Now
- compile again (and you will have usually not only one error less),
- look only for the first error,
- ...
I am used to compile each time I am thinking about my next paragraph to write. So I have only a few lines with new code and be able to locate errors faster.
If you have a lot of code to correct insert after some lines \end{document}
, compile and check the errors. If everything is okay, move \end{document}
some lines down, recompile and so on.
As @HaraldHanche-Olsen said in his comment:
"If you suspect your error can be anywhere inside a large-ish block of code, performing a binary search is often useful. With the
\end{document}
trick, instead of moving\end{document}
by a few lines at a time, try putting it roughly halfway between the location which produces the error and one that doesn't.I often comment out a block using
\iffalse
…\fi
instead. Of course, with this technique, you must take care not to include part of an environment."
If you are using \input{...}
or \include{...}
in your document check with commenting it if it includes error(s). If so, you can use the macro \endinput
to achieve a similar effect to \end{document}
(see comment from @JuanA.Navarro).
If you need to use a version control for your TeX file please use a real system to use different versions like svn (subversion) ... Search this website for svn.
- Many editors can be convinced to jump automagically to the first error.
- If you don't understand the error message, just google it; at least, that's what I do.
- Quite often an error in the preamble causes a first error somewhere in the text. Examples: error within code to define a heading will show up after first pagebreake, error in code to change the section will often not be shown before the first section in the text occures. So if you stumble upon an unrelated error message, look whether around the line of the text which the error message provides a special element has been used, maybe for the first time. Go to its definitions in the preamble and search there.