Re: [O] adding options to the minted environment of exported source blocks in latex

2014-03-25 Thread Nicolas Goaziou
Hello,

Alan Schmitt alan.schm...@polytechnique.org 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 n.goaz...@gmail.com
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
+@vindex 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 buffer@footnote{This 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
 
+@vindex org-latex-listings-options
+@vindex 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
+@code{org-latex-minted-options} variables, which see.
+
+@example
+#+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
+@end 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)))
-	  

Re: [O] adding options to the minted environment of exported source blocks in latex

2014-03-25 Thread Alan Schmitt
Nicolas Goaziou n.goaz...@gmail.com writes:

 Hello,

 Alan Schmitt alan.schm...@polytechnique.org writes:

 Using attr_latex would be great.

 Here is the patch. WDYT?

It's working great, thanks a lot!

Alan



Re: [O] adding options to the minted environment of exported source blocks in latex

2014-03-25 Thread Nicolas Goaziou
Alan Schmitt alan.schm...@polytechnique.org writes:

 It's working great, thanks a lot!

Applied, then.


Regards,

-- 
Nicolas Goaziou



Re: [O] adding options to the minted environment of exported source blocks in latex

2014-02-12 Thread Alan Schmitt
Hello Nicolas,

Nicolas Goaziou n.goaz...@gmail.com writes:

 Anyway :latex_options would be redundant on an #+attr_latex: line. I'll
 have a look at it when I get some spare time.

Using attr_latex would be great.

Thanks,

Alan



Re: [O] adding options to the minted environment of exported source blocks in latex

2014-02-11 Thread Alan Schmitt
Nicolas Goaziou n.goaz...@gmail.com writes:

 Hello,

 Alan Schmitt alan.schm...@polytechnique.org writes:

 Nicolas Goaziou n.goaz...@gmail.com writes:

 It is also possible to do something in-between, i.e., tell Org about
 a few selected keywords and stuff the others into :options. This is what
 is done for images. Org knows about :height and :width and uses :options
 for everything else.

 The latter would be great. The option I'm considering does not exist in
 minted, I add it in my preamble.

 Then the next question is: what would be the blessed keywords known by
 Org? They need to be supported in both listings and minted (but not
 necessarily under the same name internally).

It is a good questions. I don't use listings, so I cannot comment about
it. I usually tweak the frame and fontsize options for minted.

Maybe the simplest approach is to have no blessed keyword, and have them
in :latex_options (as these are latex specific, the option name could be
called that).

Alan



Re: [O] adding options to the minted environment of exported source blocks in latex

2014-02-11 Thread Nicolas Goaziou
Hello,

Alan Schmitt alan.schm...@polytechnique.org writes:

 Nicolas Goaziou n.goaz...@gmail.com writes:

 Alan Schmitt alan.schm...@polytechnique.org writes:

 Nicolas Goaziou n.goaz...@gmail.com writes:

 It is also possible to do something in-between, i.e., tell Org about
 a few selected keywords and stuff the others into :options. This is what
 is done for images. Org knows about :height and :width and uses :options
 for everything else.

 The latter would be great. The option I'm considering does not exist in
 minted, I add it in my preamble.

 Then the next question is: what would be the blessed keywords known by
 Org? They need to be supported in both listings and minted (but not
 necessarily under the same name internally).

 It is a good questions. I don't use listings, so I cannot comment about
 it. I usually tweak the frame and fontsize options for minted.

 Maybe the simplest approach is to have no blessed keyword, and have them
 in :latex_options (as these are latex specific, the option name could be
 called that).

I must have misunderstood your answer then.

Anyway :latex_options would be redundant on an #+attr_latex: line. I'll
have a look at it when I get some spare time.


Regards,

-- 
Nicolas Goaziou



Re: [O] adding options to the minted environment of exported source blocks in latex

2014-02-10 Thread Nicolas Goaziou
Hello,

Alan Schmitt alan.schm...@polytechnique.org writes:

 Nicolas Goaziou n.goaz...@gmail.com writes:

 It is also possible to do something in-between, i.e., tell Org about
 a few selected keywords and stuff the others into :options. This is what
 is done for images. Org knows about :height and :width and uses :options
 for everything else.

 The latter would be great. The option I'm considering does not exist in
 minted, I add it in my preamble.

Then the next question is: what would be the blessed keywords known by
Org? They need to be supported in both listings and minted (but not
necessarily under the same name internally).


Regards,

-- 
Nicolas Goaziou



Re: [O] adding options to the minted environment of exported source blocks in latex

2014-02-09 Thread Alan Schmitt
Hi Nicolas,

Nicolas Goaziou n.goaz...@gmail.com writes:

 At the moment, there is no Org way to add arbitrary options to listings
 or minted on a per block basis.

 There are basically two ways to implement this. Either we add
 an :options keyword and stuff options there:

   #+attr_latex: :options a=b,c=d
   #+begin_src ...

 Another option is to turn options into keywords:

   #+attr_latex: :a b :c d
   #+begin_src ...

 The latter is more elegant, but it requires to know about every
 minted/listings options.

 It is also possible to do something in-between, i.e., tell Org about
 a few selected keywords and stuff the others into :options. This is what
 is done for images. Org knows about :height and :width and uses :options
 for everything else.

The latter would be great. The option I'm considering does not exist in
minted, I add it in my preamble.

Best,

Alan



[O] adding options to the minted environment of exported source blocks in latex

2014-02-07 Thread Alan Schmitt
Hello,

I use and abuse the `org-latex-minted-options' when exporting source
blocks in latex, but I'm stumped by a usage pattern. I need to change
the list of options for one given source block (adding a belowskip
option to it). I tried the following, but it did not do anything:

--8---cut here---start-8---
#+attr_latex: :belowskip 1cm
#+BEGIN_SRC ocaml
#load graphics.cma;;
Graphics.open_graph ;;
#+END_SRC
--8---cut here---end---8---

I guess that I can only put some specific options for attr_latex. Is
there a way to put arbitrary options in the exported minted environment?

Thanks a lot,

Alan



Re: [O] adding options to the minted environment of exported source blocks in latex

2014-02-07 Thread Nicolas Goaziou
Hello,

Alan Schmitt alan.schm...@polytechnique.org writes:

 I use and abuse the `org-latex-minted-options' when exporting source
 blocks in latex, but I'm stumped by a usage pattern. I need to change
 the list of options for one given source block (adding a belowskip
 option to it). I tried the following, but it did not do anything:

 #+attr_latex: :belowskip 1cm
 #+BEGIN_SRC ocaml
 #load graphics.cma;;
 Graphics.open_graph ;;
 #+END_SRC

 I guess that I can only put some specific options for attr_latex. Is
 there a way to put arbitrary options in the exported minted
 environment?

At the moment, there is no Org way to add arbitrary options to listings
or minted on a per block basis.

There are basically two ways to implement this. Either we add
an :options keyword and stuff options there:

  #+attr_latex: :options a=b,c=d
  #+begin_src ...

Another option is to turn options into keywords:

  #+attr_latex: :a b :c d
  #+begin_src ...

The latter is more elegant, but it requires to know about every
minted/listings options.

It is also possible to do something in-between, i.e., tell Org about
a few selected keywords and stuff the others into :options. This is what
is done for images. Org knows about :height and :width and uses :options
for everything else.


Regards,

-- 
Nicolas Goaziou