From: Bruno Tavernier <tavernier.bruno@gmail.com>
To: emacs-orgmode@gnu.org
Subject: Re: [PATCH] Compiling multiple times the LaTeX output
Date: Wed, 06 Oct 2010 18:36:42 +0900 [thread overview]
Message-ID: <87mxqrek7p.fsf@gmail.com> (raw)
In-Reply-To: <21895.1285949541@alphaville.usa.hp.com> (Nick Dokos's message of "Fri, 01 Oct 2010 12:12:21 -0400")
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
next prev parent reply other threads:[~2010-10-06 10:05 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-29 14:25 Compiling multiple times the LaTeX output Sébastien Vauban
2010-09-29 15:17 ` Noorul Islam K M
2010-09-30 13:27 ` [PATCH] " Sébastien Vauban
2010-09-30 15:39 ` Nick Dokos
2010-09-30 16:55 ` Sébastien Vauban
2010-10-01 15:32 ` Thomas S. Dye
2010-10-01 21:17 ` Sébastien Vauban
2010-10-04 7:41 ` Carsten Dominik
2010-10-04 10:36 ` Scot Becker
2010-10-05 12:46 ` Sébastien Vauban
2010-10-05 14:17 ` Carsten Dominik
2010-10-05 14:30 ` Matthew Leifer
2010-10-05 15:02 ` Indraneel Majumdar
2010-10-05 16:26 ` Carsten Dominik
2010-10-05 18:55 ` Achim Gratz
2010-10-05 21:12 ` Carsten Dominik
2010-10-06 8:21 ` Sébastien Vauban
2010-10-05 18:24 ` Achim Gratz
2010-10-01 16:12 ` Nick Dokos
2010-10-06 9:36 ` Bruno Tavernier [this message]
2010-10-06 20:39 ` Matthew Leifer
2010-10-07 2:09 ` Bruno Tavernier
2010-10-13 7:49 ` Olivier Schwander
2010-10-13 12:34 ` Carsten Dominik
2010-10-06 21:54 ` Scot Becker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87mxqrek7p.fsf@gmail.com \
--to=tavernier.bruno@gmail.com \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).