Run pdflatex quietly [closed]
Solution 1:
Unfortunately (La)TeX doesn't really abide by the rules of stdout
and sterr
, owing (I assume) to its origins in the early 80s. But there are some switches you can invoke to alter the amount of information being shown.
Execute latex
with either the -interaction=nonstopmode
or -interaction=batchmode
switches for non-halting behaviour even in the case of a syntax error. nonstopmode
will print all usual lines, it just won't stop. batchmode
will suppress all but a handful of declarative lines ("this is pdfTeX v3.14...").
These can also be invoked from within the document with \batchmode
and \nonstopmode
, but this is less useful for the situation you're describing.
Solution 2:
To simply ignore all output, redirect pdflatex stdout to /dev/null:
system("pdflatex yourdocument >/dev/null");
You may want to add \nonstopmode
at the beginning of your document to instruct tex to keep going even when encountering errors.
To get the error messages, pipe pdflatex output to your program and look for errors around rows starting with !
, e.g.
FILE *outputf = popen("pdflatex yourdocument", "r");
// ... read and analyze output from outputf ...
pclose(outputf);