No me hagan abortar manualmente una compilación de LaTeX cuando hay un error
-
09-09-2019 - |
Pregunta
aquí , latexmk
es una forma práctica para compilar continuamente su documento siempre la fuente cambia. Pero a menudo cuando se trabaja en un documento que va a terminar con errores y luego latex
va a entrar en pánico y esperar a la entrada del usuario antes de continuar. Eso puede ser muy molesto, especialmente cuando recientemente hackeado algo para compilar latex
directamente de un documento rel="noreferrer"> Etherpad , lo que ahorra de forma continua a medida que tipo.
¿Hay un ajuste de latex
o latexmk
para que sea simplemente aborta con un mensaje de error si no se puede compilar? O, si es necesario, ¿cómo iba a establecer algún tipo de secuencia de comandos para esperar-despedir automóviles quejas de látex?
(que había pensado opción pdflatex
de -halt-on-error
haría el truco, pero parece que no.)
Bono pregunta: descremada en Mac OS X es un buen visor de PDF que autorefreshes cuando cambia el pdf (a diferencia de vista previa), excepto que cada vez que hay un error de látex que hace que vuelva a confirmar que desea autorefreshing. Texniscope no tienen este problema, pero tuve que abandonar Texniscope para otras razones . ¿Hay una manera de hacer descremada siempre AUTOREFRESH, o hay otro visor que recibe este derecho?
AÑADIDO: mini-tutorial sobre latexmk
basado en la respuesta a esta pregunta:
-
Get
latexmk
aquí: http: //www.phys .psu.edu / ~ Collins / software / latexmk-CCM / -
Añadir lo siguiente a su archivo
~/.latexmkrc
:$pdflatex = 'pdflatex -interaction=nonstopmode';
(Para OS X con leche descremada)
$pdf_previewer = "open -a /Applications/Skim.app";
-
Durante la edición del archivo de origen,
foo.tex
, ejecute lo siguiente en un terminal:latexmk -pvc -pdf foo.tex
-
descremada u otro visor de PDF en tiempo real para ver foo.pdf. Para descremada, basta con ver la pestaña “Sincronizar” en las preferencias del descremada y configurarlo para su editor.
Voila! Golpear a ahorrar en foo.tex
causará ahora foo.pdf
para actualizar sin tocar nada.
Solución
Con MikTeX, pdflatex
tiene esta opción de línea de comandos:
-interaction=MODE Set the interaction mode; MODE must be one
of: batchmode, nonstopmode, scrollmode,
errorstopmode.
Editar sugerido por @ 9999years:
Estos valores son equivalentes a un conjunto de \commands
LaTeX que proporcionan la misma funcionalidad.
Los modos hacen TeX se comporta de la siguiente manera:
errorstopmode
se detiene en todos los errores, ya sean acerca de los errores en la código fuente o ficheros que no existen.
scrollmode
no se detiene en los errores en la fuente, pero solicita una entrada cuando el error más grave como se produce como un archivo que falta.En el
nonstopmode
algo mal llamada, TeX no solicita entrada después de errores graves, pero se detiene completamente.
batchmode
evita que toda la producción, además de que (para uso en scripts automatizados). En todos los casos, todos los errores se escriben en el archivo de registro (Yourtexfile.log).
Otros consejos
También se puede poner \nonstopmode
o \batchmode
en el comienzo mismo de su archivo tex; a continuación, que va a trabajar con cualquier versión de TeX, no sólo pdflatex
. Para obtener más información sobre estos y comandos relacionados ver la muy buena referencia rel="noreferrer"> . Especialmente el comando de la depuración familia podría ser de interés aquí.
Otra posible truco es simplemente usar:
yes x | latexmk source.tex
Siempre se puede crear un alias para 'sí X | latexmk' si vas a utilizar esta opción lotes. La principal ventaja de este que puedo ver por encima de las otras sugerencias es que es muy rápido para cuando se desea de vez en cuando latexmk a comportarse de esta manera.
Mehmet
También hay un comando \batchmode
puede hacer el trabajo.