Matt Huszagh <huszaghm...@gmail.com> writes: > I've created a patch to allow adjusting the scale factor used for inline > latex image fragments. This involves a customizable variable that can > either be set to a scale factor (defaults to 1.0) or a function that > evaluates to a scale factor. > > This feature is in addition to the existing scale factor adjustment > capability provided by `org-preview-latex-process-alist' through > `:image-size-adjust'. Wherease image-size-adjust performs scaling at the > time of image generation, the new change performs it during > display. This can lead to significant time saving and suffers no loss of > quality for vector graphics. > > As an example of use, I have several functions for changing frame > scaling. I've added > > (if (eq major-mode 'org-mode) > (progn > (org-clear-latex-preview) > ;; 16 corresponds to the C-u C-u arg prefix. > (org-latex-preview 16))) > > to these functions so that changing the frame scaling also > correspondingly changes the latex preview/fragment scaling to match the > new size of the surrounding text. Because of this new feature, this > change is effectively instantaneous for reasonably numbers of > overlays. Obviously, something similar could be done for > `text-scale-adjust' (e.g., through `advice-add'). > > Feedback appreciated.
Apologies, the patch I sent is slightly wrong. The line numbers also reflect an earlier patch I made. Here is a corrected version.
>From 3c0e74a8659edb52c1200a02f8a20216b348c4ac Mon Sep 17 00:00:00 2001 From: Matt Huszagh <huszaghm...@gmail.com> Date: Sun, 10 Oct 2021 21:20:31 -0700 Subject: [PATCH] org.el: Allow customizing overlay-put scale factor * lisp/org.el (org-latex-fragment-scale): Add customizable variable that is equal to or evaluates to a scale factor used to scale inline latex fragments. (org--make-preview-overlay): Adjust latex fragment overlay generation to account for the new custom scale factor. --- lisp/org.el | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lisp/org.el b/lisp/org.el index 405f0f0f9..052212efb 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -320,6 +320,15 @@ identifier." :version "24.1" :group 'org-id) +(defcustom org-latex-fragment-scale 1.0 + "Scaling factor used for LaTeX image fragments. +This can either be a number or a function that takes the image +data and image type as parameters and evaluates to a number. The +function can be useful for context-aware scaling, such as setting +the scale factor to be consistent with the surrounding text size." + :type '(number function) + :group 'org) + ;;; Version (org-check-version) @@ -15936,7 +15945,13 @@ as a string. It defaults to \"png\"." (delete-overlay o)))) (overlay-put ov 'display - (list 'image :type imagetype :file image :ascent 'center)))) + (list 'image + :type imagetype + :file image + :ascent 'center + :scale (if (functionp org-latex-fragment-scale) + (funcall org-latex-fragment-scale image imagetype) + org-latex-fragment-scale))))) (defun org-clear-latex-preview (&optional beg end) "Remove all overlays with LaTeX fragment images in current buffer. -- 2.31.1