From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bruno Tavernier Subject: Re: [PATCH] Compiling multiple times the LaTeX output Date: Wed, 06 Oct 2010 18:36:42 +0900 Message-ID: <87mxqrek7p.fsf@gmail.com> References: <87zkv0pqyi.fsf@mundaneum.com> <87r5gcshnf.fsf@noorul.maa.corp.collab.net> <874od7uzsa.fsf_-_@mundaneum.com> <30671.1285861145@gamaville.dokosmarshall.org> <87vd5njhm8.fsf@mundaneum.com> <21895.1285949541@alphaville.usa.hp.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from [140.186.70.92] (port=57288 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1P3Qru-0001yj-CX for emacs-orgmode@gnu.org; Wed, 06 Oct 2010 06:05:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1P3QkQ-0001Es-4H for emacs-orgmode@gnu.org; Wed, 06 Oct 2010 05:57:19 -0400 Received: from mail-px0-f169.google.com ([209.85.212.169]:58585) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1P3QkP-0001Ej-VP for emacs-orgmode@gnu.org; Wed, 06 Oct 2010 05:57:18 -0400 Received: by pxi5 with SMTP id 5so4657768pxi.0 for ; Wed, 06 Oct 2010 02:57:16 -0700 (PDT) In-Reply-To: <21895.1285949541@alphaville.usa.hp.com> (Nick Dokos's message of "Fri, 01 Oct 2010 12:12:21 -0400") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Just tried the texi2dvi command that is nice, one problem though, it only makes use of pdflatex. In certain situations, I like to use latex+ps2pdf (some journals ask for .eps image file) or xelatex when mixing several fonts and writing in UTF-8 is mandatory, for example French + Japanese, Chinese, Hindi, etc. Currently I used the function below that I hook to the org-export-latex process. AFAIK, providing one use few packages, a .tex file to be used with pdflatex can be similar to one to be used with xelatex. The content of the document (UTF-8 characters) will make the difference. To circumvent this problem, considering pdflatex as the default option, I add to the org file a: "#+LATEX_CMD: xelatex" or "#+LATEX_CMD: latex" Note: bibtex and glossaries compilation are detected by their call, e.g. \bibliography How about introducing a "#+LATEX_CMD:" option in org-mode? (and default to pdflatex) ,---- | ; Perform a 2 or 3 xe/pdf/latex compilation | ; tex: tex + (glossaries) + (bibtex + tex) + tex | | (defun my-auto-tex-cmd () | "Automatically select the tex command to apply." | (let ((texcmd) (bibtexcmd) (glossariescmd) (dvi2pdfcmd)) | ; default command | (setq texcmd "pdflatex -interaction nonstopmode %f;") | ; latex -> .dvi (for .eps images) | (if (string-match "LATEX_CMD: latex" (buffer-string)) | (progn | (setq texcmd "latex -interaction nonstopmode %f;") | (setq dvi2pdfcmd "dvips %b.dvi; ps2pdf %b.ps")) | ; xelatex -> .pdf | (if (string-match "LATEX_CMD: xelatex" (buffer-string)) | (setq texcmd "xelatex -interaction nonstopmode %f;"))) | ; first tex compilation command | (setq org-latex-to-pdf-process (list texcmd)) | ; look for glossaries call | (if (string-match "\\\\makeglossaries" (buffer-string)) | (progn | (setq glossariescmd "makeindex -s %b.ist -t %b.glg -o %b.gls %b.glo;") | (setq org-latex-to-pdf-process | (nconc org-latex-to-pdf-process (list glossariescmd))))) | ; look for bibtex call | (if (string-match "\\\\bibliography" (buffer-string)) | (progn | (setq bibtexcmd (concat "bibtex %b; " texcmd)) | (setq org-latex-to-pdf-process | (nconc org-latex-to-pdf-process (list bibtexcmd))))) | ; last tex compilation command | (setq org-latex-to-pdf-process | (nconc org-latex-to-pdf-process (list texcmd))) | ; dvi -> pdf | (if dvi2pdfcmd | (setq org-latex-to-pdf-process | (nconc org-latex-to-pdf-process (list dvi2pdfcmd)))))) | | (add-hook 'org-export-latex-after-initial-vars-hook 'my-auto-tex-cmd) `---- That also allow for customisation of the export of packages, for instance: ,---- | ; Default packages | (setq org-export-latex-packages-alist | '(("" "graphicx" t) | ("" "longtable" nil) | ("" "amssymb" t) | ("" "color" t) | ("pdfborder=0" "hyperref" nil) | ("" "float" nil))) | | ; Custom packages | (defun my-auto-tex-parameters () | "Automatically select the tex packages." | ; Default pdflatex | (setq org-export-latex-default-packages-alist | '(("AUTO" "inputenc" t))) | ; Look for xelatex call | (if (string-match "LATEX_CMD: xelatex" (buffer-string)) | (setq org-export-latex-default-packages-alist | '(("" "fontspec" t)))) | | (add-hook 'org-export-latex-after-initial-vars-hook 'my-auto-tex-parameters) `---- -- Bruno