Ejecutar pdflatex silenciosamente [cerrado]
Estoy llamando a pdflatex desde mi programa (C++) usando system(), no hace falta decir que toda la basura que pdflatex pone en pantalla es un poco irritante en este caso.
So...¿cómo animo a pdflatex a renunciar a los resultados largos? Sería aún mejor si solo los errores fueran visibles...
2 answers
Para simplemente ignorar toda la salida, redirija pdflatex stdout a / dev/null:
system("pdflatex yourdocument >/dev/null");
Es posible que desee agregar \nonstopmode
al principio de su documento para indicar a tex que siga adelante incluso cuando encuentre errores.
Para obtener los mensajes de error, canalice la salida de pdflatex a su programa y busque errores alrededor de las filas que comienzan con !
, por ejemplo,
FILE *outputf = popen("pdflatex yourdocument", "r");
// ... read and analyze output from outputf ...
pclose(outputf);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-24 12:21:13
Desafortunadamente (La)TeX no cumple realmente con las reglas de stdout
y sterr
, debido (supongo) a sus orígenes a principios de los 80, pero hay algunos interruptores que puede invocar para alterar la cantidad de información que se muestra.
Ejecute latex
con los conmutadores -interaction=nonstopmode
o -interaction=batchmode
para un comportamiento no detenido incluso en el caso de un error de sintaxis. nonstopmode
imprimirá todas las líneas habituales, simplemente no se detendrá. batchmode
suprimirá todas menos un puñado de líneas declarativas ("esto es pdfTeX v3.14...").
También se pueden invocar desde dentro del documento con \batchmode
y \nonstopmode
, pero esto es menos útil para la situación que está describiendo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-29 00:14:27