Hi Rasmus, Thanks a lot for the great comments. Here is an updated patch, with some comments on your comments for the thing I did not change.
On 2015-11-25 10:57, Rasmus <ras...@gmx.us> writes: >> + \\begin{listing} >> + \\begin{minted}{ocaml} >> + <src block body> >> + \\end{minted} >> + \\caption{<caption>} >> + \\label{<label>} >> + \\end{listing}") > > Nitpick: label should be inside caption in the example to be consistent > with how captions are normally formatted by ox-latex. Either way is fine > though. I chose this example because it's the code in the minted manual. > Also, you need to denote that the defcustom was changed. > > :version "25.1" > :package-version '(Org . "9.0") > > When you are at it, please add the missing tags, :group and :type. It's not a defcustom but a defvar. (But maybe it should be a defcustom …)
From 527635c2e674fe1f3ab9d5d3de96e238d0debf7b Mon Sep 17 00:00:00 2001 From: Alan Schmitt <alan.schm...@polytechnique.org> Date: Wed, 25 Nov 2015 08:48:58 +0100 Subject: [PATCH] ox-latex: Extend custom-lang-environments * ox-latex.el (org-latex-custom-lang-environments): Extend the documentation string. * ox-latex.el (org-latex-src-block): Allow a custom language environment to be a format string to be directly inserted. --- lisp/ox-latex.el | 58 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 46 insertions(+), 12 deletions(-) diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el index bbf7f41..0a9f7d4 100644 --- a/lisp/ox-latex.el +++ b/lisp/ox-latex.el @@ -1025,17 +1025,44 @@ block-specific options, you may use the following syntax: "Alist mapping languages to language-specific LaTeX environments. It is used during export of src blocks by the listings and minted -latex packages. For example, +latex packages. The environment may either be a simple string, +composed of only letters and numbers. In this case, the string is +directly the name of the latex environment to use. The environment +may also be a format string. In this case the format string will be +directly exported. This format string may contain these elements: + + %s for the formatted source + %c for the caption + %f for the float attribute + %l for an appropriate label + +For example, (setq org-latex-custom-lang-environments - '((python \"pythoncode\"))) + '((python \"pythoncode\") + (ocaml \"\\\\begin{listing} +\\\\begin{minted}{ocaml} +%s\\\\end{minted} +\\\\caption{%c} +\\\\label{%l}\"))) -would have the effect that if org encounters begin_src python -during latex export it will output +would have the effect that if org encounters a Python source block +during LaTeX export it will produce \\begin{pythoncode} <src block body> - \\end{pythoncode}") + \\end{pythoncode} + +and if org encounters an Ocaml source block during LaTeX export it +will produce + + \\begin{listing} + \\begin{minted}{ocaml} + <src block body> + \\end{minted} + \\caption{<caption>} + \\label{<label>} + \\end{listing}") ;;;; Compilation @@ -2756,13 +2783,20 @@ contextual information." (org-export-format-code-default src-block info)))))) ;; Case 2. Custom environment. (custom-env - (let ((caption-str (org-latex--caption/label-string src-block info))) - (format "\\begin{%s}\n%s\\end{%s}\n" - custom-env - (concat (and caption-above-p caption-str) - (org-export-format-code-default src-block info) - (and (not caption-above-p) caption-str)) - custom-env))) + (let ((caption-str (org-latex--caption/label-string src-block info)) + (formatted-src (org-export-format-code-default src-block info))) + (if (org-string-match-p "\\`[a-zA-Z0-9]+\\'" custom-env) + (format "\\begin{%s}\n%s\\end{%s}\n" + custom-env + (concat (and caption-above-p caption-str) + formatted-src + (and (not caption-above-p) caption-str)) + custom-env) + (format-spec custom-env + `((?s . ,formatted-src) + (?c . ,caption) + (?f . ,float) + (?l . ,(org-latex--label src-block info))))))) ;; Case 3. Use minted package. ((eq listings 'minted) (let* ((caption-str (org-latex--caption/label-string src-block info)) -- 2.6.3
Best, Alan -- OpenPGP Key ID : 040D0A3B4ED2E5C7 Athmospheric CO₂ (Updated November 22, 2015, Mauna Loa Obs.): 400.35 ppm
signature.asc
Description: PGP signature