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")))