Function: org-latex-generate-engraved-preamble
org-latex-generate-engraved-preamble is a byte-compiled function
defined in ox-latex.el.gz.
Signature
(org-latex-generate-engraved-preamble INFO)
Documentation
Generate the preamble to setup engraved code.
The result is constructed from the :latex-engraved-preamble and
:latex-engraved-options export options, the default values of
which are given by org-latex-engraved-preamble and
org-latex-engraved-options respectively.
Source Code
;; Defined in /usr/src/emacs/lisp/org/ox-latex.el.gz
(defun org-latex-generate-engraved-preamble (info)
"Generate the preamble to setup engraved code.
The result is constructed from the :latex-engraved-preamble and
:latex-engraved-options 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))
(engraved-theme (plist-get info :latex-engraved-theme))
(engraved-themes
(mapcar
#'intern
(cl-delete-duplicates
(org-element-map
(plist-get info :parse-tree)
'(src-block inline-src-block)
(lambda (src)
(plist-get
(org-export-read-attribute :attr_latex src)
:engraved-theme))
info))))
(gen-theme-spec
(lambda (theme)
(if (eq engrave-faces-latex-output-style 'preset)
(engrave-faces-latex-gen-preamble theme)
(engrave-faces-latex-gen-preamble-line
'default
(alist-get 'default
(if theme
(engrave-faces-get-theme (intern theme))
engrave-faces-current-preset-style)))))))
(when (stringp engraved-theme)
(setq engraved-theme (intern engraved-theme)))
(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)))
(concat
"\n% Setup for code blocks [1/2]\n\n"
engraved-preamble
"\n\n% Setup for code blocks [2/2]: syntax highlighting colors\n\n"
(if (require 'engrave-faces-latex nil t)
(if engraved-themes
(concat
(mapconcat
(lambda (theme)
(format
"\n\\newcommand{\\engravedtheme%s}{%%\n%s\n}"
(replace-regexp-in-string "[^A-Za-z]" "" (symbol-name theme))
(replace-regexp-in-string
"newcommand" "renewcommand"
(replace-regexp-in-string
"#" "##"
(funcall gen-theme-spec theme)))))
engraved-themes
"\n")
"\n\n"
(cond
((memq engraved-theme engraved-themes)
(concat "\\engravedtheme"
(replace-regexp-in-string
"[^A-Za-z]" "" engraved-theme)
"\n"))
(t (funcall gen-theme-spec engraved-theme))))
(funcall gen-theme-spec engraved-theme))
(message "Cannot engrave source blocks. Consider installing `engrave-faces'.")
"% WARNING syntax highlighting unavailable as engrave-faces-latex was missing.\n")
"\n")))