emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] adding options to the minted environment of exported source bloc


From: Nicolas Goaziou
Subject: Re: [O] adding options to the minted environment of exported source blocks in latex
Date: Tue, 25 Mar 2014 16:04:36 +0100

Hello,

Alan Schmitt <address@hidden> writes:

> Using attr_latex would be great.

Here is the patch. WDYT?


Regards,

-- 
Nicolas Goaziou
>From c56bd2754030fd999d50d349ee5282a6c16ba832 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <address@hidden>
Date: Tue, 25 Mar 2014 15:58:41 +0100
Subject: [PATCH] ox-latex: Allow :options in LaTeX attributes

* lisp/ox-latex.el (org-latex-src-block): Allow to add options to
  listings or minted block-wise.
(org-latex-listings-options, org-latex-minted-options): Update
docstring.

* doc/org.texi (@LaTeX{} specific attributes): Document feature.
---
 doc/org.texi     | 22 +++++++++++++++--
 lisp/ox-latex.el | 72 +++++++++++++++++++++++++++++++++++---------------------
 2 files changed, 65 insertions(+), 29 deletions(-)

diff --git a/doc/org.texi b/doc/org.texi
index 2abfa66..2330835 100644
--- a/doc/org.texi
+++ b/doc/org.texi
@@ -9842,6 +9842,7 @@ Here is an example
 @end example
 
 @cindex formatting source code, markup rules
address@hidden org-latex-listings
 If the example is source code from a programming language, or any other text
 that can be marked up by font-lock in Emacs, you can ask for the example to
 look like the fontified Emacs address@hidden works automatically for
@@ -11833,8 +11834,10 @@ that environment.
 @cindex source blocks, in @LaTeX{} export
 
 In addition to syntax defined in @ref{Literal examples}, names and captions
-(@pxref{Images and tables}), source blocks also accept a @code{:float}
-attribute.  You may set it to:
+(@pxref{Images and tables}), source blocks also accept two additional
+attributes: @code{:float} and @code{:options}.
+
+You may set the former to
 @itemize @minus
 @item
 @code{t}: if you want to make the source block a float.  It is the default
@@ -11854,6 +11857,21 @@ Code that may not fit in a single page.
 #+END_SRC
 @end example
 
address@hidden org-latex-listings-options
address@hidden org-latex-minted-options
+The latter allows to specify options relative to the package used to
+highlight code in the output (e.g., @code{listings}).  This is the local
+counterpart to @code{org-latex-listings-options} and
address@hidden variables, which see.
+
address@hidden
+#+ATTR_LATEX: :options commentstyle=\bfseries
+#+BEGIN_SRC emacs-lisp
+  (defun Fib (n)                          ; Count rabbits.
+    (if (< n 2) n (+ (Fib (- n 1)) (Fib (- n 2)))))
+#+END_SRC
address@hidden example
+
 @subsubheading Special blocks in @LaTeX{} export
 @cindex special blocks, in @LaTeX{} export
 @cindex abstract, in @LaTeX{} export
diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 4616574..fdf1008 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -770,7 +770,13 @@ will typeset the code in a small size font with 
underlined, bold
 black keywords.
 
 Note that the same options will be applied to blocks of all
-languages."
+languages.  If you need block-specific options, you may use the
+following syntax:
+
+  #+ATTR_LATEX: :options key1=value1,key2=value2
+  #+BEGIN_SRC <LANG>
+  ...
+  #+END_SRC"
   :group 'org-export-latex
   :type '(repeat
          (list
@@ -817,7 +823,13 @@ will result in src blocks being exported with
 \\begin{minted}[bgcolor=bg,frame=lines]{<LANG>}
 
 as the start of the minted environment. Note that the same
-options will be applied to blocks of all languages."
+options will be applied to blocks of all languages.  If you need
+block-specific options, you may use the following syntax:
+
+  #+ATTR_LATEX: :options key1=value1,key2=value2
+  #+BEGIN_SRC <LANG>
+  ...
+  #+END_SRC"
   :group 'org-export-latex
   :type '(repeat
          (list
@@ -2279,14 +2291,17 @@ contextual information."
                (format
                 "\\begin{minted}[%s]{%s}\n%s\\end{minted}"
                 ;; Options.
-                (org-latex--make-option-string
-                 (if (or (not num-start)
-                         (assoc "linenos" org-latex-minted-options))
-                     org-latex-minted-options
-                   (append
-                    `(("linenos")
-                      ("firstnumber" ,(number-to-string (1+ num-start))))
-                    org-latex-minted-options)))
+                (concat
+                 (org-latex--make-option-string
+                  (if (or (not num-start)
+                          (assoc "linenos" org-latex-minted-options))
+                      org-latex-minted-options
+                    (append
+                     `(("linenos")
+                       ("firstnumber" ,(number-to-string (1+ num-start))))
+                     org-latex-minted-options)))
+                 (let ((local-options (plist-get attributes :options)))
+                   (and local-options (concat "," local-options))))
                 ;; Language.
                 (or (cadr (assq (intern lang) org-latex-minted-langs)) lang)
                 ;; Source code.
@@ -2328,23 +2343,26 @@ contextual information."
           ;; Options.
           (format
            "\\lstset{%s}\n"
-           (org-latex--make-option-string
-            (append
-             org-latex-listings-options
-             (cond
-              ((and (not float) (plist-member attributes :float)) nil)
-              ((string= "multicolumn" float) '(("float" "*")))
-              ((and float (not (assoc "float" org-latex-listings-options)))
-               `(("float" ,org-latex-default-figure-position))))
-             `(("language" ,lst-lang))
-             (when label `(("label" ,label)))
-             (when caption-str `(("caption" ,caption-str)))
-             (cond ((assoc "numbers" org-latex-listings-options) nil)
-                   ((not num-start) '(("numbers" "none")))
-                   ((zerop num-start) '(("numbers" "left")))
-                   (t `(("numbers" "left")
-                        ("firstnumber"
-                         ,(number-to-string (1+ num-start)))))))))
+           (concat
+            (org-latex--make-option-string
+             (append
+              org-latex-listings-options
+              (cond
+               ((and (not float) (plist-member attributes :float)) nil)
+               ((string= "multicolumn" float) '(("float" "*")))
+               ((and float (not (assoc "float" org-latex-listings-options)))
+                `(("float" ,org-latex-default-figure-position))))
+              `(("language" ,lst-lang))
+              (when label `(("label" ,label)))
+              (when caption-str `(("caption" ,caption-str)))
+              (cond ((assoc "numbers" org-latex-listings-options) nil)
+                    ((not num-start) '(("numbers" "none")))
+                    ((zerop num-start) '(("numbers" "left")))
+                    (t `(("numbers" "left")
+                         ("firstnumber"
+                          ,(number-to-string (1+ num-start))))))))
+            (let ((local-options (plist-get attributes :options)))
+              (and local-options (concat "," local-options)))))
           ;; Source code.
           (format
            "\\begin{lstlisting}\n%s\\end{lstlisting}"
-- 
1.9.1


reply via email to

[Prev in Thread] Current Thread [Next in Thread]