From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sebastien Vauban Subject: Re: [PATCH] Add catch-up all LaTeX errors Date: Wed, 26 Mar 2014 19:55:37 +0100 Message-ID: <8638i4aixi.fsf@somewhere.org> References: <87vc14i5wp.fsf@somewhere.org> <87siq5gh6w.fsf@somewhere.org> <87zjkdt3le.fsf@gmail.com> <87mwgdgea9.fsf@somewhere.org> <87vbv1szuv.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org-mXXj517/zsQ@public.gmane.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org-mXXj517/zsQ@public.gmane.org To: emacs-orgmode-mXXj517/zsQ@public.gmane.org Nicolas Goaziou wrote: > "Francesco Pizzolante" writes: > >>> IOW, it cannot tell the difference between a successful export and an >>> export failure with an already existing PDFFILE. >> >> This is not true as this code checks for the `errors' variable in all >> cases. With an already existing PDFFILE, you will end up with this >> message: 'Process completed with errors: ...'. > > If "file.pdf" exists before the export, you will always get "Process > completed", even if the current export was a total failure (e.g., no > file produced). > > IIUC, you're really looking after a way to know if a pdf file was really > produced. Reporting "Process completed with errors : [unknown error]" > will certainly not help on this you because some errors are not fatal > (i.e., they are skipped and the pdf file is still produced). > >> From my point of view, the issue comes from the fact that the `errors' >> variable is not correctly filled in with errors from the LaTeX log file. > > [...] > >> While the wikibooks reference >> (http://en.wikibooks.org/wiki/LaTeX/Errors_and_Warnings) tells that to >> be sure to catch *all* errors, we have to check for any line beginning >> with '!'. > > I agree, but this is not sufficient, see below. > >> Then, in the case where the `errors' variable would effectively contain >> any error from the log file, the code you mention above would work in >> any case. >> >> That's why I started with this patch (*and it works*): > > It depends on what you define as "working". We're talking about two > different things. I think a better error system should report: > > 1. a PDF file not produced (or updated), > 2. a PDF file produced with errors, > 3. a PDF file produced with warnings (maybe), > 4. a PDF file produced cleanly. > > 4 already works. Your patch improves 2, but 1 is still wrong. FWIW, I'm using this in some export code I have: --8<---------------cut here---------------start------------->8--- (let* ((orgfile (buffer-file-name)) (base-name (file-name-base orgfile)) (htmlfile (concat base-name ".html")) (pdffile (concat base-name ".pdf"))) ... (when (file-exists-p pdffile) (if (file-newer-than-file-p orgfile pdffile) (org-latex-export-to-pdf) (message "PDF is up to date with Org file")))) --8<---------------cut here---------------end--------------->8--- That way, we know if the PDF file has been (re-)produced: it must be newer than the Org file... Best regards, Seb -- Sebastien Vauban