Better dvisvgm latex preview

This commit is contained in:
Zelong Kuang
2026-04-03 15:12:01 +11:00
parent 204c683083
commit 4607880ca4

View File

@@ -232,20 +232,41 @@ the element after the #+HEADER: tag."
:ensure nil :ensure nil
:hook (org-mode . org-latex-preview-mode) :hook (org-mode . org-latex-preview-mode)
:hook (org-latex-preview-mode . org-latex-preview-center-mode) :hook (org-latex-preview-mode . org-latex-preview-center-mode)
:bind ("C-c C-x SPC" . org-latex-preview-clear-cache)
:config :config
;; Higher resolution when using dvipng ;; Higher resolution when using dvipng
(plist-put org-latex-preview-appearance-options :page-width 1.0) (plist-put org-latex-preview-appearance-options :zoom 0.85)
;; (plist-put org-latex-preview-appearance-options :margin 1) ;; (plist-put org-latex-preview-appearance-options :margin 1)
(plist-put org-latex-preview-appearance-options :scale 2.0)
;; ;; Block C-n, C-p etc from opening up previews when using `org-latex-preview-mode'
;; (setq org-latex-preview-mode-ignored-commands
;; '(next-line previous-line mwheel-scroll
;; scroll-up-command scroll-down-command))
;; Add margin and rescale display math
(defvar my/org-latex-display-math-scale 0.8)
(defvar my/org-latex-display-math-margin 8)
(defun my/org-latex-preview-add-margin-advice (ov _path-info)
(save-excursion
(goto-char (overlay-start ov))
(when-let* ((elem (org-element-context))
((or (eq (org-element-type elem) 'latex-environment)
(string-match-p "^\\\\\\[" (org-element-property :value elem))))
(img (overlay-get ov 'preview-image))
((and (consp img) (eq (car img) 'image))))
(let* ((plist (copy-sequence (cdr img)))
(height (plist-get plist :height)))
(when (and (consp height) (numberp (car height)))
(setq plist
(plist-put plist :height
(cons (* my/org-latex-display-math-scale (car height))
(cdr height)))))
(setq plist (plist-put plist :margin my/org-latex-display-math-margin))
(let ((new-img (cons 'image plist)))
(overlay-put ov 'preview-image new-img)
(when (overlay-get ov 'display)
(overlay-put ov 'display new-img)))))))
(advice-add 'org-latex-preview--update-overlay :after
#'my/org-latex-preview-add-margin-advice)
(setq org-latex-preview-numbered t) (setq org-latex-preview-numbered t)
(setq org-latex-preview-mode-display-live t) (setq org-latex-preview-mode-display-live t)
(setq org-latex-preview-process-default 'dvipng) (setq org-latex-preview-process-default 'dvisvgm)
(setq org-latex-preview-mode-update-delay 0.25) (setq org-latex-preview-mode-update-delay 0.25)
(defun my/org-latex-preview-uncenter (ov) (defun my/org-latex-preview-uncenter (ov)
(overlay-put ov 'before-string nil)) (overlay-put ov 'before-string nil))