Ne m'obligez pas à abandonner manuellement une compilation LaTeX en cas d'erreur
-
09-09-2019 - |
Question
Comme suggéré ici, latexmk
est un moyen pratique de compiler continuellement votre document chaque fois que la source change.Mais souvent, lorsque vous travaillez sur un document, vous vous retrouvez avec des erreurs, puis latex
va paniquer et attendre l'entrée de l'utilisateur avant de continuer.Cela peut devenir très ennuyeux, surtout récemment lorsque j'ai piraté quelque chose à compiler. latex
directement d'un Ethernet document, qui est enregistré en continu au fur et à mesure que vous tapez.
Y a-t-il un paramètre pour latex
ou latexmk
pour le faire abandonner avec un message d'erreur s'il ne peut pas compiler ?Ou, si nécessaire, comment configurer une sorte de script Expect pour rejeter automatiquement les plaintes de LaTeX ?
(J'ai pensé pdflatex
le choix -halt-on-error
ferait l'affaire mais apparemment pas.)
Question bonus:Skim sur Mac OSX est un joli visualiseur de PDF qui s'actualise automatiquement lorsque le PDF change (contrairement à Aperçu), sauf que chaque fois qu'il y a une erreur latex, cela vous fait reconfirmer que vous souhaitez une actualisation automatique.Texniscope n'a pas ce problème, mais j'ai dû abandonner Texniscope pour autres raisons.Existe-t-il un moyen d'actualiser automatiquement Skim, ou existe-t-il un autre visualiseur qui comprend correctement ?
AJOUTÉE:Mini-tutoriel sur latexmk
basé sur la réponse à cette question:
Obtenir
latexmk
ici: http://www.phys.psu.edu/~collins/software/latexmk-jcc/Ajoutez ce qui suit à votre
~/.latexmkrc
déposer:$pdflatex = 'pdflatex -interaction=nonstopmode';
(Pour OS X avec Skim)
$pdf_previewer = "open -a /Applications/Skim.app";
Lors de l'édition de votre fichier source,
foo.tex
, exécutez ce qui suit dans un terminal :latexmk -pvc -pdf foo.tex
Utiliser Parcourir ou une autre visionneuse PDF en temps réel pour afficher foo.pdf.Pour Skim, regardez simplement l'onglet « Sync » dans les préférences de Skim et configurez-le pour votre éditeur.
Voilà !Cliquer sur Enregistrer sur foo.tex
va maintenant causer foo.pdf
se rafraîchir sans rien toucher.
La solution
Avec MikTeX, pdflatex
a cette option de ligne de commande :
-interaction=MODE Set the interaction mode; MODE must be one
of: batchmode, nonstopmode, scrollmode,
errorstopmode.
Modification suggérée par @9999years :
Ces valeurs sont équivalentes à un ensemble de LaTeX \commands
qui offrent la même fonctionnalité.
Depuis Conseils d'utilisation de TeX:
Les modes font que TeX se comporte de la manière suivante :
errorstopmode
s'arrête sur toutes les erreurs, qu'il s'agisse d'erreurs dans le code source ou des fichiers inexistants.
scrollmode
Ne s'arrête pas sur les erreurs dans la source mais demande l'entrée lorsqu'une erreur plus grave comme comme un fichier manquant se produit.Dans le nom quelque peu mal nommé
nonstopmode
, Tex ne demande pas la contribution après de graves erreurs mais s'arrête complètement.
batchmode
Empêche toute sortie en plus de celle (destinée à une utilisation dans les scripts automatisés).Dans tous les cas, toutes les erreurs sont écrites dans le fichier journal (yourtexfile.log).
Autres conseils
Vous pouvez aussi mettre \nonstopmode
ou \batchmode
au début de votre fichier tex; alors il va travailler avec une version TeX, pas seulement pdflatex
. Pour plus d'informations sur ces derniers et les commandes associées voir la très bonne sur les commandes TeX (brut) par David Bausum . En particulier, la commande de la famille pourrait être mise au point d'intérêt ici.
Une autre astuce possible consiste simplement à utiliser:
yes x | latexmk source.tex
Vous pouvez toujours créer un alias pour « oui x | latexmk » si vous allez utiliser ce beaucoup d'options. Le principal avantage de ce que je peux voir au-dessus des autres suggestions est qu'il est très rapide quand vous voulez de temps en temps latexmk à se comporter comme ça.
Mehmet
Il y a aussi une commande \batchmode
peut faire le travail.