mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-09-29 21:37:50 +00:00
Work around a display bug when previewing LaTeX fragments
* lisp/org.el (org-format-latex): Change signature. (org-toggle-latex-fragment): * lisp/ox-html.el (org-html-format-latex): Apply signature change.
This commit is contained in:
parent
ecffcbcf1c
commit
2f2e6625ac
117
lisp/org.el
117
lisp/org.el
|
@ -19074,66 +19074,65 @@ for all fragments in the buffer."
|
|||
(when (display-graphic-p)
|
||||
(catch 'exit
|
||||
(save-excursion
|
||||
(let ((window-start (window-start)) msg)
|
||||
(save-restriction
|
||||
(cond
|
||||
((or (equal arg '(16))
|
||||
(and (equal arg '(4))
|
||||
(org-with-limited-levels (org-before-first-heading-p))))
|
||||
(if (org-remove-latex-fragment-image-overlays)
|
||||
(progn (message "LaTeX fragments images removed from buffer")
|
||||
(throw 'exit nil))
|
||||
(setq msg "Creating images for buffer...")))
|
||||
((equal arg '(4))
|
||||
(org-with-limited-levels (org-back-to-heading t))
|
||||
(let ((beg (point))
|
||||
(end (progn (org-end-of-subtree t) (point))))
|
||||
(if (org-remove-latex-fragment-image-overlays beg end)
|
||||
(progn
|
||||
(message "LaTeX fragment images removed from subtree")
|
||||
(throw 'exit nil))
|
||||
(setq msg "Creating images for subtree...")
|
||||
(narrow-to-region beg end))))
|
||||
((let ((datum (org-element-context)))
|
||||
(when (memq (org-element-type datum)
|
||||
'(latex-environment latex-fragment))
|
||||
(let* ((beg (org-element-property :begin datum))
|
||||
(end (org-element-property :end datum)))
|
||||
(if (org-remove-latex-fragment-image-overlays beg end)
|
||||
(progn (message "LaTeX fragment image removed")
|
||||
(throw 'exit nil))
|
||||
(narrow-to-region beg end)
|
||||
(setq msg "Creating image..."))))))
|
||||
(t
|
||||
(org-with-limited-levels
|
||||
(let ((beg (if (org-at-heading-p) (line-beginning-position)
|
||||
(outline-previous-heading)
|
||||
(point)))
|
||||
(end (progn (outline-next-heading) (point))))
|
||||
(if (org-remove-latex-fragment-image-overlays beg end)
|
||||
(progn
|
||||
(message "LaTeX fragment images removed from section")
|
||||
(let (beg end msg)
|
||||
(cond
|
||||
((or (equal arg '(16))
|
||||
(and (equal arg '(4))
|
||||
(org-with-limited-levels (org-before-first-heading-p))))
|
||||
(if (org-remove-latex-fragment-image-overlays)
|
||||
(progn (message "LaTeX fragments images removed from buffer")
|
||||
(throw 'exit nil))
|
||||
(setq msg "Creating images for section...")
|
||||
(narrow-to-region beg end))))))
|
||||
(let ((file (buffer-file-name (buffer-base-buffer))))
|
||||
(org-format-latex
|
||||
(concat org-latex-preview-ltxpng-directory
|
||||
(file-name-sans-extension (file-name-nondirectory file)))
|
||||
;; Emacs cannot overlay images from remote hosts.
|
||||
;; Create it in `temporary-file-directory' instead.
|
||||
(if (file-remote-p file) temporary-file-directory
|
||||
default-directory)
|
||||
'overlays msg 'forbuffer
|
||||
org-latex-create-formula-image-program)))
|
||||
;; Work around a bug that doesn't restore window's start
|
||||
;; when widening back the buffer.
|
||||
(set-window-start nil window-start)
|
||||
(setq msg "Creating images for buffer...")))
|
||||
((equal arg '(4))
|
||||
(org-with-limited-levels (org-back-to-heading t))
|
||||
(setq beg (point))
|
||||
(setq end (progn (org-end-of-subtree t) (point)))
|
||||
(if (org-remove-latex-fragment-image-overlays beg end)
|
||||
(progn
|
||||
(message "LaTeX fragment images removed from subtree")
|
||||
(throw 'exit nil))
|
||||
(setq msg "Creating images for subtree...")))
|
||||
((let ((datum (org-element-context)))
|
||||
(when (memq (org-element-type datum)
|
||||
'(latex-environment latex-fragment))
|
||||
(setq beg (org-element-property :begin datum))
|
||||
(setq end (org-element-property :end datum))
|
||||
(if (org-remove-latex-fragment-image-overlays beg end)
|
||||
(progn (message "LaTeX fragment image removed")
|
||||
(throw 'exit nil))
|
||||
(setq msg "Creating image...")))))
|
||||
(t
|
||||
(org-with-limited-levels
|
||||
(setq beg (if (org-at-heading-p) (line-beginning-position)
|
||||
(outline-previous-heading)
|
||||
(point)))
|
||||
(setq end (progn (outline-next-heading) (point)))
|
||||
(if (org-remove-latex-fragment-image-overlays beg end)
|
||||
(progn
|
||||
(message "LaTeX fragment images removed from section")
|
||||
(throw 'exit nil))
|
||||
(setq msg "Creating images for section...")))))
|
||||
(let ((file (buffer-file-name (buffer-base-buffer))))
|
||||
(org-format-latex
|
||||
(concat org-latex-preview-ltxpng-directory
|
||||
(file-name-sans-extension (file-name-nondirectory file)))
|
||||
beg end
|
||||
;; Emacs cannot overlay images from remote hosts. Create
|
||||
;; it in `temporary-file-directory' instead.
|
||||
(if (file-remote-p file) temporary-file-directory
|
||||
default-directory)
|
||||
'overlays msg 'forbuffer
|
||||
org-latex-create-formula-image-program))
|
||||
(message (concat msg "done")))))))
|
||||
|
||||
(defun org-format-latex
|
||||
(prefix &optional dir overlays msg forbuffer processing-type)
|
||||
"Replace LaTeX fragments with links to an image, and produce images.
|
||||
(prefix &optional beg end dir overlays msg forbuffer processing-type)
|
||||
"Replace LaTeX fragments with links to an image.
|
||||
|
||||
The function takes care of creating the replacement image.
|
||||
|
||||
Only consider fragments between BEG and END when those are
|
||||
provided.
|
||||
|
||||
When optional argument OVERLAYS is non-nil, display the image on
|
||||
top of the fragment instead of replacing it.
|
||||
|
@ -19147,11 +19146,11 @@ Some of the options can be changed using the variable
|
|||
(let* ((math-regexp "\\$\\|\\\\[([]\\|^[ \t]*\\\\begin{[A-Za-z0-9*]+}")
|
||||
(cnt 0)
|
||||
checkdir-flag)
|
||||
(goto-char (point-min))
|
||||
(goto-char (or beg (point-min)))
|
||||
;; Optimize overlay creation: (info "(elisp) Managing Overlays").
|
||||
(when (and overlays (memq processing-type '(dvipng imagemagick)))
|
||||
(overlay-recenter (point-max)))
|
||||
(while (re-search-forward math-regexp nil t)
|
||||
(overlay-recenter (or end (point-max))))
|
||||
(while (re-search-forward math-regexp end t)
|
||||
(unless (and overlays
|
||||
(eq (get-char-property (point) 'org-overlay-type)
|
||||
'org-latex-overlay))
|
||||
|
|
|
@ -2691,8 +2691,8 @@ a plist containing export properties."
|
|||
(setq latex-frag (concat latex-header latex-frag))))
|
||||
(with-temp-buffer
|
||||
(insert latex-frag)
|
||||
(org-format-latex cache-relpath cache-dir nil "Creating LaTeX Image..."
|
||||
nil processing-type)
|
||||
(org-format-latex cache-relpath nil nil cache-dir nil
|
||||
"Creating LaTeX Image..." nil processing-type)
|
||||
(buffer-string))))
|
||||
|
||||
(defun org-html-latex-environment (latex-environment contents info)
|
||||
|
|
Loading…
Reference in a new issue