|
@@ -37,6 +37,8 @@
|
|
(defvar org-latex-packages-alist)
|
|
(defvar org-latex-packages-alist)
|
|
(defvar orgtbl-exp-regexp)
|
|
(defvar orgtbl-exp-regexp)
|
|
|
|
|
|
|
|
+(declare-function engrave-faces-latex-gen-preamble "ext:engrave-faces-latex")
|
|
|
|
+(declare-function engrave-faces-latex-buffer "ext:engrave-faces-latex")
|
|
|
|
|
|
|
|
|
|
;;; Define Back-End
|
|
;;; Define Back-End
|
|
@@ -125,6 +127,8 @@
|
|
(:latex-default-quote-environment nil nil org-latex-default-quote-environment)
|
|
(:latex-default-quote-environment nil nil org-latex-default-quote-environment)
|
|
(:latex-default-table-mode nil nil org-latex-default-table-mode)
|
|
(:latex-default-table-mode nil nil org-latex-default-table-mode)
|
|
(:latex-diary-timestamp-format nil nil org-latex-diary-timestamp-format)
|
|
(:latex-diary-timestamp-format nil nil org-latex-diary-timestamp-format)
|
|
|
|
+ (:latex-engraved-options nil nil org-latex-engraved-options)
|
|
|
|
+ (:latex-engraved-preamble nil nil org-latex-engraved-preamble)
|
|
(:latex-footnote-defined-format nil nil org-latex-footnote-defined-format)
|
|
(:latex-footnote-defined-format nil nil org-latex-footnote-defined-format)
|
|
(:latex-footnote-separator nil nil org-latex-footnote-separator)
|
|
(:latex-footnote-separator nil nil org-latex-footnote-separator)
|
|
(:latex-format-drawer-function nil nil org-latex-format-drawer-function)
|
|
(:latex-format-drawer-function nil nil org-latex-format-drawer-function)
|
|
@@ -937,22 +941,48 @@ The function should return the string to be exported."
|
|
"Non-nil means export source code using the listings package.
|
|
"Non-nil means export source code using the listings package.
|
|
|
|
|
|
This package will fontify source code, possibly even with color.
|
|
This package will fontify source code, possibly even with color.
|
|
-If you want to use this, you also need to make LaTeX use the
|
|
|
|
-listings package, and if you want to have color, the color
|
|
|
|
-package. Just add these to `org-latex-packages-alist', for
|
|
|
|
-example using customize, or with something like:
|
|
|
|
|
|
+There are four implementations of this functionality you may
|
|
|
|
+choose from (ordered from least to most capable):
|
|
|
|
+1. Verbatim (nil)
|
|
|
|
+2. Listings (t)
|
|
|
|
+3. Minted (minted)
|
|
|
|
+4. Engraved (engraved)
|
|
|
|
+
|
|
|
|
+The first two options provide basic syntax
|
|
|
|
+highlighting (listings), or none at all (verbatim).
|
|
|
|
+
|
|
|
|
+When using listings, you also need to make use of the LaTeX
|
|
|
|
+\"listings\" package. The \"color\" package is also needed if you
|
|
|
|
+would like color too. These can simply be added to
|
|
|
|
+`org-latex-packages-alist', using customise or something like:
|
|
|
|
|
|
(require \\='ox-latex)
|
|
(require \\='ox-latex)
|
|
(add-to-list \\='org-latex-packages-alist \\='(\"\" \"listings\"))
|
|
(add-to-list \\='org-latex-packages-alist \\='(\"\" \"listings\"))
|
|
(add-to-list \\='org-latex-packages-alist \\='(\"\" \"color\"))
|
|
(add-to-list \\='org-latex-packages-alist \\='(\"\" \"color\"))
|
|
|
|
|
|
-Alternatively,
|
|
|
|
|
|
+There are two further options for more comprehensive
|
|
|
|
+fontification. The first can be set with,
|
|
|
|
+
|
|
|
|
+ (setq org-latex-listings \\='engraved)
|
|
|
|
+
|
|
|
|
+which causes source code to be run through
|
|
|
|
+`engrave-faces-latex-buffer', which generates colorings using
|
|
|
|
+Emacs' font-lock information. This requires the engrave-faces
|
|
|
|
+package (availible from ELPA), and the fvextra LaTeX package be
|
|
|
|
+installed.
|
|
|
|
+
|
|
|
|
+The styling of the engraved result can customised with
|
|
|
|
+`org-latex-engraved-preamble' and `org-latex-engraved-options'.
|
|
|
|
+The default preamble also uses the tcolorbox LaTeX package in
|
|
|
|
+addition to fvextra.
|
|
|
|
+
|
|
|
|
+The second more comprehensive option can be set with,
|
|
|
|
|
|
(setq org-latex-listings \\='minted)
|
|
(setq org-latex-listings \\='minted)
|
|
|
|
|
|
-causes source code to be exported using the minted package as
|
|
|
|
-opposed to listings. If you want to use minted, you need to add
|
|
|
|
-the minted package to `org-latex-packages-alist', for example
|
|
|
|
|
|
+which causes source code to be exported using the minted package
|
|
|
|
+as opposed to listings. If you want to use minted, you need to
|
|
|
|
+add the minted package to `org-latex-packages-alist', for example
|
|
using customize, or with
|
|
using customize, or with
|
|
|
|
|
|
(require \\='ox-latex)
|
|
(require \\='ox-latex)
|
|
@@ -971,8 +1001,9 @@ URL `https://orgmode.org/worg/org-tutorials/org-latex-preview.html'."
|
|
:type '(choice
|
|
:type '(choice
|
|
(const :tag "Use listings" t)
|
|
(const :tag "Use listings" t)
|
|
(const :tag "Use minted" minted)
|
|
(const :tag "Use minted" minted)
|
|
|
|
+ (const :tag "Use engrave-faces-latex" engraved)
|
|
(const :tag "Export verbatim" nil))
|
|
(const :tag "Export verbatim" nil))
|
|
- :safe (lambda (s) (memq s '(t nil minted))))
|
|
|
|
|
|
+ :safe (lambda (s) (memq s '(t nil minted engraved))))
|
|
|
|
|
|
(defcustom org-latex-listings-langs
|
|
(defcustom org-latex-listings-langs
|
|
'((emacs-lisp "Lisp") (lisp "Lisp") (clojure "Lisp")
|
|
'((emacs-lisp "Lisp") (lisp "Lisp") (clojure "Lisp")
|
|
@@ -1142,6 +1173,151 @@ will produce
|
|
:version "26.1"
|
|
:version "26.1"
|
|
:package-version '(Org . "9.0"))
|
|
:package-version '(Org . "9.0"))
|
|
|
|
|
|
|
|
+(defcustom org-latex-engraved-preamble
|
|
|
|
+ "\\usepackage{fvextra}
|
|
|
|
+
|
|
|
|
+[FVEXTRA-SETUP]
|
|
|
|
+
|
|
|
|
+% Make line numbers smaller and grey.
|
|
|
|
+\\renewcommand\\theFancyVerbLine{\\footnotesize\\color{black!40!white}\\arabic{FancyVerbLine}}
|
|
|
|
+
|
|
|
|
+\\usepackage{xcolor}
|
|
|
|
+
|
|
|
|
+% In case engrave-faces-latex-gen-preamble has not been run.
|
|
|
|
+\\providecolor{EfD}{HTML}{f7f7f7}
|
|
|
|
+\\providecolor{EFD}{HTML}{28292e}
|
|
|
|
+
|
|
|
|
+% Define a Code environment to prettily wrap the fontified code.
|
|
|
|
+\\usepackage[breakable,xparse]{tcolorbox}
|
|
|
|
+\\DeclareTColorBox[]{Code}{o}%
|
|
|
|
+{colback=EfD!98!EFD, colframe=EfD!95!EFD,
|
|
|
|
+ fontupper=\\footnotesize\\setlength{\\fboxsep}{0pt},
|
|
|
|
+ colupper=EFD,
|
|
|
|
+ IfNoValueTF={#1}%
|
|
|
|
+ {boxsep=2pt, arc=2.5pt, outer arc=2.5pt,
|
|
|
|
+ boxrule=0.5pt, left=2pt}%
|
|
|
|
+ {boxsep=2.5pt, arc=0pt, outer arc=0pt,
|
|
|
|
+ boxrule=0pt, leftrule=1.5pt, left=0.5pt},
|
|
|
|
+ right=2pt, top=1pt, bottom=0.5pt,
|
|
|
|
+ breakable}
|
|
|
|
+
|
|
|
|
+[LISTINGS-SETUP]"
|
|
|
|
+ "Preamble content injected when using engrave-faces-latex for source blocks.
|
|
|
|
+This is relevant when `org-latex-listings' is set to `engraved'.
|
|
|
|
+
|
|
|
|
+There is quite a lot of flexibility in what this preamble can be,
|
|
|
|
+as long as it:
|
|
|
|
+- Loads the fvextra package.
|
|
|
|
+- Loads the package xcolor (if it is not already loaded elsewhere).
|
|
|
|
+- Defines a \"Code\" environment (note the capital C), which all
|
|
|
|
+ \"Verbatim\" environments (provided by fvextra) will be wrapped with.
|
|
|
|
+
|
|
|
|
+In the default value the colors \"EFD\" and \"EfD\" are provided
|
|
|
|
+as they are respectively the foreground and background colours,
|
|
|
|
+just in case they aren't provided by the generated preamble, so
|
|
|
|
+we can asume they are always set.
|
|
|
|
+
|
|
|
|
+Within this preamble there are two recognised macro-like placeholders:
|
|
|
|
+
|
|
|
|
+ [FVEXTRA-SETUP]
|
|
|
|
+
|
|
|
|
+ [LISTINGS-SETUP]
|
|
|
|
+
|
|
|
|
+Unless you have a very good reason, both of these placeholders
|
|
|
|
+should be included in the preamble.
|
|
|
|
+
|
|
|
|
+FVEXTRA-SETUP sets fvextra's defaults according to
|
|
|
|
+`org-latex-engraved-options', and LISTINGS-SETUP creates the
|
|
|
|
+listings environment used for captioned or floating code blocks,
|
|
|
|
+as well as defining \\listoflistings."
|
|
|
|
+ :group 'org-export-latex
|
|
|
|
+ :type 'string
|
|
|
|
+ :package-version '(Org . "9.6"))
|
|
|
|
+
|
|
|
|
+(defcustom org-latex-engraved-options
|
|
|
|
+ '(("commandchars" . "\\\\\\{\\}")
|
|
|
|
+ ("highlightcolor" . "white!95!black!80!blue")
|
|
|
|
+ ("breaklines" . "true")
|
|
|
|
+ ("breaksymbol" . "\\color{white!60!black}\\tiny\\ensuremath{\\hookrightarrow}"))
|
|
|
|
+ "Association list of options for the latex fvextra package when engraving code.
|
|
|
|
+
|
|
|
|
+These options are set using \\fvset{...} in the preamble of the
|
|
|
|
+LaTeX export. Each element of the alist should be a list or cons
|
|
|
|
+cell containing two strings: the name of the option, and the
|
|
|
|
+value. For example,
|
|
|
|
+
|
|
|
|
+ (setq org-latex-engraved-options
|
|
|
|
+ \\='((\"highlightcolor\" \"green\") (\"frame\" \"lines\")))
|
|
|
|
+ ; or
|
|
|
|
+ (setq org-latex-engraved-options
|
|
|
|
+ \\='((\"highlightcolor\" . \"green\") (\"frame\" . \"lines\")))
|
|
|
|
+
|
|
|
|
+will result in the following LaTeX in the preamble
|
|
|
|
+
|
|
|
|
+\\fvset{%
|
|
|
|
+ bgcolor=bg,
|
|
|
|
+ frame=lines}
|
|
|
|
+
|
|
|
|
+This will affect all fvextra environments. Note that the same
|
|
|
|
+options will be applied to all blocks. 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 '(alist :key-type (string :tag "option")
|
|
|
|
+ :value-type (string :tag "value")))
|
|
|
|
+
|
|
|
|
+(defun org-latex-generate-engraved-preamble (info syntax-colours-p)
|
|
|
|
+ "Generate the preamble to setup engraved code.
|
|
|
|
+The result is constructed from the :latex-engraved-preamble and
|
|
|
|
+:latex-engraved-optionsn export options, the default values of
|
|
|
|
+which are given by `org-latex-engraved-preamble' and
|
|
|
|
+`org-latex-engraved-options' respectively."
|
|
|
|
+ (let* ((engraved-options
|
|
|
|
+ (plist-get info :latex-engraved-options))
|
|
|
|
+ (engraved-preamble (plist-get info :latex-engraved-preamble)))
|
|
|
|
+ (when (string-match "^[ \t]*\\[FVEXTRA-SETUP\\][ \t]*\n?" engraved-preamble)
|
|
|
|
+ (setq engraved-preamble
|
|
|
|
+ (replace-match
|
|
|
|
+ (concat
|
|
|
|
+ "\\fvset{%\n "
|
|
|
|
+ (org-latex--make-option-string engraved-options ",\n ")
|
|
|
|
+ "}\n")
|
|
|
|
+ t t
|
|
|
|
+ engraved-preamble)))
|
|
|
|
+ (when (string-match "^[ \t]*\\[LISTINGS-SETUP\\][ \t]*\n?" engraved-preamble)
|
|
|
|
+ (setq engraved-preamble
|
|
|
|
+ (replace-match
|
|
|
|
+ (format
|
|
|
|
+ "%% Support listings with captions
|
|
|
|
+\\usepackage{float}
|
|
|
|
+\\floatstyle{%s}
|
|
|
|
+\\newfloat{listing}{htbp}{lst}
|
|
|
|
+\\newcommand{\\listingsname}{Listing}
|
|
|
|
+\\floatname{listing}{\\listingsname}
|
|
|
|
+\\newcommand{\\listoflistingsname}{List of Listings}
|
|
|
|
+\\providecommand{\\listoflistings}{\\listof{listing}{\\listoflistingsname}}\n"
|
|
|
|
+ (if (memq 'src-block org-latex-caption-above)
|
|
|
|
+ "plaintop" "plain"))
|
|
|
|
+ t t
|
|
|
|
+ engraved-preamble)))
|
|
|
|
+ (if syntax-colours-p
|
|
|
|
+ (concat
|
|
|
|
+ "\n% Setup for code blocks [1/2]\n\n"
|
|
|
|
+ engraved-preamble
|
|
|
|
+ "\n\n% Setup for code blocks [2/2]: syntax highlighting colors\n"
|
|
|
|
+ (if (require 'engrave-faces-latex nil t)
|
|
|
|
+ (engrave-faces-latex-gen-preamble)
|
|
|
|
+ (message "Cannot engrave source blocks. Consider installing `engrave-faces'.")
|
|
|
|
+ "% WARNING syntax highlighting unavailible as engrave-faces-latex was missing.\n")
|
|
|
|
+ "\n")
|
|
|
|
+ (concat
|
|
|
|
+ "\n% Setup for code blocks\n\n"
|
|
|
|
+ engraved-preamble
|
|
|
|
+ "\n"))))
|
|
|
|
|
|
;;;; Compilation
|
|
;;;; Compilation
|
|
|
|
|
|
@@ -1756,6 +1932,12 @@ holding export options."
|
|
(let ((template (plist-get info :latex-hyperref-template)))
|
|
(let ((template (plist-get info :latex-hyperref-template)))
|
|
(and (stringp template)
|
|
(and (stringp template)
|
|
(format-spec template spec)))
|
|
(format-spec template spec)))
|
|
|
|
+ ;; engrave-faces-latex preamble
|
|
|
|
+ (when (and (eq org-latex-listings 'engraved)
|
|
|
|
+ (org-element-map (plist-get info :parse-tree)
|
|
|
|
+ '(src-block inline-src-block) #'identity
|
|
|
|
+ info t))
|
|
|
|
+ (org-latex-generate-engraved-preamble info t))
|
|
;; Document start.
|
|
;; Document start.
|
|
"\\begin{document}\n\n"
|
|
"\\begin{document}\n\n"
|
|
;; Title command.
|
|
;; Title command.
|
|
@@ -2142,6 +2324,7 @@ contextual information."
|
|
(pcase (plist-get info :latex-listings)
|
|
(pcase (plist-get info :latex-listings)
|
|
('nil (org-latex--text-markup code 'code info))
|
|
('nil (org-latex--text-markup code 'code info))
|
|
('minted (org-latex-inline-src-block--minted info code lang))
|
|
('minted (org-latex-inline-src-block--minted info code lang))
|
|
|
|
+ ('engraved (org-latex-inline-src-block--engraved info code lang))
|
|
(_ (org-latex-inline-src-block--listings info code lang)))))
|
|
(_ (org-latex-inline-src-block--listings info code lang)))))
|
|
|
|
|
|
(defun org-latex-inline-src-block--minted (info code lang)
|
|
(defun org-latex-inline-src-block--minted (info code lang)
|
|
@@ -2157,6 +2340,11 @@ INFO, CODE, and LANG are provided by `org-latex-inline-src-block'."
|
|
mint-lang
|
|
mint-lang
|
|
code)))
|
|
code)))
|
|
|
|
|
|
|
|
+(defun org-latex-inline-src-block--engraved (_info code lang)
|
|
|
|
+ "Transcode an inline src block's content from Org to LaTeX, using engrave-faces.
|
|
|
|
+INFO, CODE, and LANG are provided by `org-latex-inline-src-block'."
|
|
|
|
+ (format "\\Verb{%s}" (org-latex-src--engrave-code code lang)))
|
|
|
|
+
|
|
(defun org-latex-inline-src-block--listings (info code lang)
|
|
(defun org-latex-inline-src-block--listings (info code lang)
|
|
"Transcode an inline src block's content from Org to LaTeX, using lstlistings.
|
|
"Transcode an inline src block's content from Org to LaTeX, using lstlistings.
|
|
INFO, CODE, and LANG are provided by `org-latex-inline-src-block'."
|
|
INFO, CODE, and LANG are provided by `org-latex-inline-src-block'."
|
|
@@ -2323,6 +2511,7 @@ CONTENTS is nil. INFO is a plist holding contextual information."
|
|
(cl-case (plist-get info :latex-listings)
|
|
(cl-case (plist-get info :latex-listings)
|
|
((nil) "\\listoffigures")
|
|
((nil) "\\listoffigures")
|
|
(minted "\\listoflistings")
|
|
(minted "\\listoflistings")
|
|
|
|
+ (engraved "\\listoflistings")
|
|
(otherwise "\\lstlistoflistings")))))))))
|
|
(otherwise "\\lstlistoflistings")))))))))
|
|
|
|
|
|
|
|
|
|
@@ -3017,6 +3206,9 @@ contextual information."
|
|
num-start retain-labels attributes float custom-env))
|
|
num-start retain-labels attributes float custom-env))
|
|
((eq listings 'minted)
|
|
((eq listings 'minted)
|
|
(org-latex-src-block--minted src-block info lang caption caption-above-p label
|
|
(org-latex-src-block--minted src-block info lang caption caption-above-p label
|
|
|
|
+ num-start retain-labels attributes float))
|
|
|
|
+ ((eq listings 'engraved)
|
|
|
|
+ (org-latex-src-block--engraved src-block info lang caption caption-above-p label
|
|
num-start retain-labels attributes float))
|
|
num-start retain-labels attributes float))
|
|
(t
|
|
(t
|
|
(org-latex-src-block--listings src-block info lang caption caption-above-p label
|
|
(org-latex-src-block--listings src-block info lang caption caption-above-p label
|
|
@@ -3133,6 +3325,88 @@ and FLOAT are extracted from SRC-BLOCK and INFO in `org-latex-src-block'."
|
|
;; Return value.
|
|
;; Return value.
|
|
(format float-env body)))
|
|
(format float-env body)))
|
|
|
|
|
|
|
|
+(defun org-latex-src--engrave-code (content lang)
|
|
|
|
+ "Engrave CONTENT to LaTeX in a LANG-mode buffer, and give the result."
|
|
|
|
+ (if (require 'engrave-faces-latex nil t)
|
|
|
|
+ (let* ((lang-mode (and lang (org-src-get-lang-mode lang)))
|
|
|
|
+ (engraved-buffer
|
|
|
|
+ (with-temp-buffer
|
|
|
|
+ (insert content)
|
|
|
|
+ (when lang-mode
|
|
|
|
+ (if (functionp lang-mode)
|
|
|
|
+ (funcall lang-mode)
|
|
|
|
+ (message "Cannot engrave code as %s. %s is undefined."
|
|
|
|
+ lang lang-mode)))
|
|
|
|
+ (engrave-faces-latex-buffer)))
|
|
|
|
+ (engraved-code
|
|
|
|
+ (with-current-buffer engraved-buffer
|
|
|
|
+ (buffer-string))))
|
|
|
|
+ (kill-buffer engraved-buffer)
|
|
|
|
+ engraved-code)
|
|
|
|
+ (user-error "Cannot engrave code as `engrave-faces-latex' is unavailible.")))
|
|
|
|
+
|
|
|
|
+(defun org-latex-src-block--engraved
|
|
|
|
+ (src-block info lang caption caption-above-p _label
|
|
|
|
+ num-start retain-labels attributes float)
|
|
|
|
+ "Transcode a SRC-BLOCK element from Org to LaTeX, using engrave-faces-latex.
|
|
|
|
+LANG, CAPTION, CAPTION-ABOVE-P, LABEL, NUM-START, RETAIN-LABELS, ATTRIBUTES
|
|
|
|
+and FLOAT are extracted from SRC-BLOCK and INFO in `org-latex-src-block'."
|
|
|
|
+ (let* ((caption-str (org-latex--caption/label-string src-block info))
|
|
|
|
+ (placement (or (org-unbracket-string "[" "]" (plist-get attributes :placement))
|
|
|
|
+ (plist-get info :latex-default-figure-position)))
|
|
|
|
+ (float-env
|
|
|
|
+ (cond
|
|
|
|
+ ((string= "multicolumn" float)
|
|
|
|
+ (format "\\begin{listing*}[%s]\n%s%%s\n%s\\end{listing*}"
|
|
|
|
+ placement
|
|
|
|
+ (if caption-above-p caption-str "")
|
|
|
|
+ (if caption-above-p "" caption-str)))
|
|
|
|
+ (caption
|
|
|
|
+ (format "\\begin{listing}[%s]\n%s%%s\n%s\\end{listing}"
|
|
|
|
+ placement
|
|
|
|
+ (if caption-above-p caption-str "")
|
|
|
|
+ (if caption-above-p "" caption-str)))
|
|
|
|
+ ((string= "t" float)
|
|
|
|
+ (concat (format "\\begin{listing}[%s]\n"
|
|
|
|
+ placement)
|
|
|
|
+ "%s\n\\end{listing}"))
|
|
|
|
+ (t "%s")))
|
|
|
|
+ (options (plist-get info :latex-engraved-options))
|
|
|
|
+ (content
|
|
|
|
+ (let* ((code-info (org-export-unravel-code src-block))
|
|
|
|
+ (max-width
|
|
|
|
+ (apply 'max
|
|
|
|
+ (mapcar 'string-width
|
|
|
|
+ (org-split-string (car code-info)
|
|
|
|
+ "\n")))))
|
|
|
|
+ (org-export-format-code
|
|
|
|
+ (car code-info)
|
|
|
|
+ (lambda (loc _num ref)
|
|
|
|
+ (concat
|
|
|
|
+ loc
|
|
|
|
+ (when ref
|
|
|
|
+ ;; Ensure references are flushed to the right,
|
|
|
|
+ ;; separated with 6 spaces from the widest line
|
|
|
|
+ ;; of code.
|
|
|
|
+ (concat (make-string (+ (- max-width (length loc)) 6)
|
|
|
|
+ ?\s)
|
|
|
|
+ (format "(%s)" ref)))))
|
|
|
|
+ nil (and retain-labels (cdr code-info)))))
|
|
|
|
+ (body
|
|
|
|
+ (format
|
|
|
|
+ "\\begin{Code}\n\\begin{Verbatim}[%s]\n%s\\end{Verbatim}\n\\end{Code}"
|
|
|
|
+ ;; Options.
|
|
|
|
+ (concat
|
|
|
|
+ (org-latex--make-option-string
|
|
|
|
+ (append
|
|
|
|
+ (when (and num-start (not (assoc "linenos" options)))
|
|
|
|
+ `(("linenos")
|
|
|
|
+ ("firstnumber" ,(number-to-string (1+ num-start)))))
|
|
|
|
+ (let ((local-options (plist-get attributes :options)))
|
|
|
|
+ (and local-options (list local-options))))))
|
|
|
|
+ (org-latex-src--engrave-code content lang))))
|
|
|
|
+ (format float-env body)))
|
|
|
|
+
|
|
(defun org-latex-src-block--listings
|
|
(defun org-latex-src-block--listings
|
|
(src-block info lang caption caption-above-p label
|
|
(src-block info lang caption caption-above-p label
|
|
num-start retain-labels attributes float)
|
|
num-start retain-labels attributes float)
|