J'appelle pdflatex depuis mon programme (C++) en utilisant system (), inutile de dire que toutes les ordures que pdflatex met à l'écran sont un peu irritantes dans ce cas.
Alors ... comment puis-je encourager pdflatex à renoncer aux longues sorties? Ce serait encore mieux si seules des erreurs étaient visibles ...
Pour ignorer simplement toutes les sorties, redirigez pdflatex stdout vers/dev/null:
system("pdflatex yourdocument >/dev/null");
Vous voudrez peut-être ajouter \nonstopmode
au début de votre document pour demander à tex de continuer même en cas d'erreurs.
Pour obtenir les messages d'erreur, dirigez la sortie de pdflatex vers votre programme et recherchez les erreurs autour des lignes commençant par !
, par exemple.
FILE *outputf = popen("pdflatex yourdocument", "r");
// ... read and analyze output from outputf ...
pclose(outputf);
Malheureusement (La) TeX ne respecte pas vraiment les règles de stdout
et sterr
, en raison (je suppose) de ses origines au début des années 80. Mais vous pouvez invoquer certains commutateurs pour modifier la quantité d'informations affichées.
Exécutez latex
avec le -interaction=nonstopmode
ou -interaction=batchmode
bascule pour un comportement sans interruption même en cas d'erreur de syntaxe. nonstopmode
affichera toutes les lignes habituelles, mais ne s'arrêtera pas. batchmode
supprimera tout sauf une poignée de lignes déclaratives ("c'est pdfTeX v3.14 ...").
Celles-ci peuvent également être appelées à partir du document avec \batchmode
et \nonstopmode
, mais cela est moins utile pour la situation que vous décrivez.