Alex Rivera | Logout

Don't make me manually abort a LaTeX compile when there's an error

Asked 2009-04-10T20:20:39.527
76

As suggested here, latexmk is a handy way to continually compile your document whenever the source changes. But often when you're working on a document you'll end up with errors and then latex will panic and wait for user input before continuing. That can get very annoying, especially recently when I hacked up something to compile latex directly from an etherpad document, which saves continuously as you type.

Is there a setting for latex or latexmk to make it just abort with an error message if it can't compile? Or, if necessary, how would I set up some kind of Expect script to auto-dismiss LaTeX's complaints?

(I had thought pdflatex's option -halt-on-error would do the trick but apparently not.)

Bonus question: Skim on Mac OSX is a nice pdf viewer that autorefreshes when the pdf changes (unlike Preview), except that whenever there's a latex error it makes you reconfirm that you want autorefreshing. Texniscope doesn't have this problem, but I had to ditch Texniscope for other reasons. Is there a way to make Skim always autorefresh, or is there another viewer that gets this right?


ADDED: Mini-tutorial on latexmk based on the answer to this question:

  1. Get latexmk here: http://www.phys.psu.edu/~collins/software/latexmk-jcc/

  2. Add the following to your ~/.latexmkrc file:

    $pdflatex = 'pdflatex -interaction=nonstopmode';
    

    (For OS X with Skim)

    $pdf_previewer = "open -a /Applications/Skim.app";
    
                        
                        
                        
    Edit
    Report

1 Answer

3

Another possible hack is simply to use:

yes x | latexmk source.tex

You could always create an alias for 'yes x | latexmk' if you're going to use this option lots. The main advantage of this that I can see above the other suggestions is that it is very quick for when you occasionally want latexmk to behave like this.

Mehmet

answered 2010-07-21T11:30:20.147

Your Answer