ob-latex: New custom option `org-babel-latex-process-alist'

* lisp/ob-latex.el (org-babel-latex-process-alist): New variable.
(org-babel-execute:latex): Override `org-preview-latex-process-alist'
when generating png output, making sure that the process yields an
actual png image, even when `org-preview-latex-default-process' is
non-default.
* etc/ORG-NEWS (=ob-latex= now uses a new option
~org-babel-latex-process-alist~ to generate png output): Announce the
change.

Reported-by: Ihor Radchenko <yantar92@posteo.net>
Link: https://orgmode.org/list/87cyretut7.fsf@localhost
This commit is contained in:
Ihor Radchenko 2024-05-05 13:39:43 +03:00
parent e09ad15a71
commit 43ba00b2b1
No known key found for this signature in database
GPG Key ID: 6470762A7DA11D8B
2 changed files with 29 additions and 2 deletions

View File

@ -710,6 +710,19 @@ any more. Run ~org-ctags-enable~ to setup hooks and advices:
#+end_src #+end_src
** New and changed options ** New and changed options
*** =ob-latex= now uses a new option ~org-babel-latex-process-alist~ to generate png output
Previously, =ob-latex= used ~org-preview-latex-default-process~ from
~org-preview-latex-process-alist~ to produce png output. Now, the
process settings are separated into a new dedicated option
~org-babel-latex-process-alist~.
The default value is pulled from =dvipng= process type from
~org-preview-latex-process-alist~, preserving the existing behavior.
However, the output is now immune to changes in
~org-preview-latex-default-process~ and can be customized
independently of the image preview settings.
*** ~org-babel-lua-multiple-values-separator~ *** ~org-babel-lua-multiple-values-separator~
The string that separates the values of multi-valued results returned The string that separates the values of multi-valued results returned

View File

@ -52,6 +52,7 @@
(defvar org-format-latex-options) ; From org.el (defvar org-format-latex-options) ; From org.el
(defvar org-latex-default-packages-alist) ; From org.el (defvar org-latex-default-packages-alist) ; From org.el
(defvar org-latex-packages-alist) ; From org.el (defvar org-latex-packages-alist) ; From org.el
(defvar org-preview-latex-process-alist) ; From org.el
(defvar org-babel-default-header-args:latex (defvar org-babel-default-header-args:latex
'((:results . "latex") (:exports . "results")) '((:results . "latex") (:exports . "results"))
@ -128,6 +129,18 @@ exporting the literal LaTeX source."
:group 'org-babel :group 'org-babel
:type '(repeat (string))) :type '(repeat (string)))
(defcustom org-babel-latex-process-alist
`(,(cons 'png (alist-get 'dvipng org-preview-latex-process-alist)))
"Definitions of external processes for LaTeX result generation.
See `org-preview-latex-process-alist' for more details.
The following process symbols are recognized:
- `png' :: Process used to produce .png output."
:group 'org-babel
:package-version '(Org . "9.7")
:type '(alist :tag "LaTeX to image backends"
:value-type (plist)))
(defun org-babel-expand-body:latex (body params) (defun org-babel-expand-body:latex (body params)
"Expand BODY according to PARAMS, return the expanded body." "Expand BODY according to PARAMS, return the expanded body."
(mapc (lambda (pair) ;; replace variables (mapc (lambda (pair) ;; replace variables
@ -169,9 +182,10 @@ This function is called by `org-babel-execute-src-block'."
((and (string-suffix-p ".png" out-file) (not imagemagick)) ((and (string-suffix-p ".png" out-file) (not imagemagick))
(let ((org-format-latex-header (let ((org-format-latex-header
(concat org-format-latex-header "\n" (concat org-format-latex-header "\n"
(mapconcat #'identity headers "\n")))) (mapconcat #'identity headers "\n")))
(org-preview-latex-process-alist org-babel-latex-process-alist))
(org-create-formula-image (org-create-formula-image
body out-file org-format-latex-options in-buffer))) body out-file org-format-latex-options in-buffer 'png)))
((string= "svg" extension) ((string= "svg" extension)
(with-temp-file tex-file (with-temp-file tex-file
(insert (concat (funcall org-babel-latex-preamble params) (insert (concat (funcall org-babel-latex-preamble params)