web-dev-qa-db-fra.com

Ne me faites pas abandonner manuellement un latex compilé quand il y a une erreur

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 retrouverez avec des erreurs, puis latex va paniquer et attendre la saisie de l'utilisateur avant de continuer. Cela peut devenir très gênant, surtout récemment lorsque j'ai piraté quelque chose pour compiler latex directement à partir d'un document eTherPad , qui enregistre en permanence à mesure que vous tapez.

Y a-t-il un paramètre pour latex ou latexmk pour le rendre juste avortement avec un message d'erreur s'il ne peut pas compiler? Ou, si nécessaire, comment puis-je configurer une sorte d'attendre de l'écriture pour rejeter automatiquement les plaintes de Latex?

(J'avais pensé pdflatex 's option -halt-on-error ferait l'affaire mais apparemment pas.)

Question bonus: Skim sur Mac OSX est un joli spectateur PDF que AutOuteFreshes lorsque le PDF change (contrairement à la prévisualisation), sauf que chaque fois qu'il y a une erreur de latex, elle fait Vous devez reconfirmer que vous voulez avoir de l'autoréfreshing. Texniscope n'a pas ce problème, mais je devais abandonner Texniscope pour autres raisons . Existe-t-il un moyen de faire écrémer toujours Autorefresh ou existe-t-il un autre spectateur qui obtient ce droit?


Ajouté: mini-tutoriel sur latexmk basé sur la réponse à cette question:

  1. Obtenez latexmk ICI: http://www.phys.psu.edu/~collins/software/latexmk-jcc/

  2. Ajoutez ce qui suit à votre ~/.latexmkrc déposer:

    $pdflatex = 'pdflatex -interaction=nonstopmode';
    

    (Pour OS X avec SKIM)

    $pdf_previewer = "open -a /Applications/Skim.app";
    
  3. Lors de la modification de votre fichier source, foo.tex, exécutez ce qui suit dans un terminal:

    latexmk -pvc -pdf foo.tex
    
  4. Utilisez SKIM ou un autre Viewer PDF en temps réel pour voir FOO.PDF. Pour Skim, regardez simplement l'onglet "Sync" dans les préférences de Skim et définissez-la pour votre éditeur.

Voilà! Frapper économiser sur foo.tex va maintenant causer foo.pdf Pour rafraîchir sans toucher une chose.

65
dreeves

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.

Modifier suggéré par @ 9999Years:

Ces valeurs sont équivalentes à un ensemble de latex \commands qui fournissent la même fonctionnalité.

De Conseils d'utilisation Tex :

Les modes rendent TEX se comportent 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 la saisie lorsqu'une erreur plus grave comme un fichier manquant a lieu.

  • Dans le quelque peu nonstopmode, Tex ne demande pas d'entrée après de graves erreurs, mais cesse complètement.

  • batchmode Empêche toute la sortie en plus de celle (destinée à être utilisée dans des scripts automatisés). Dans tous les cas, toutes les erreurs sont écrites dans le fichier journal (yourtexfile.log).

38
Bastien Léonard

Vous pouvez également mettre \nonstopmode ou \batchmode au tout début de votre fichier Tex; Ensuite, cela fonctionnera avec n'importe quelle version TEX, pas seulement pdflatex. Pour plus d'informations sur ces commandes et les commandes associées, voir la très bonne référence sur (RAW) TEX Commandes de David Bausum . Surtout la commande de la famille de débogage pourrait être d'intérêt ici.

6
Elmar Zander

Un autre hack possible est simplement d'utiliser:

yes x | latexmk source.tex

Vous pouvez toujours créer un alias pour 'oui x | latexmk 'Si vous allez utiliser cette option lots. L'avantage principal de cela que je peux voir au-dessus des autres suggestions est qu'il est très rapide lorsque vous voulez de temps en temps la latexmk de se comporter comme ceci.

Mehmet

4
Mehmet

Il y a aussi \batchmode commande peut faire le travail.

0
Grissiom