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.
This commit is contained in:
parent
9973fbc347
commit
ea097c25dd
22
doc/org.texi
22
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
|
||||
|
|
|
@ -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}"
|
||||
|
|
Loading…
Reference in New Issue