我在org-mode中使用我以前的emacs主题生成的乳胶碎片,现在我切换了我的主题,旧的乳胶碎片仍然有旧的背景颜色而不是新的颜色。如何清除它们并重新生成它们(linux)?
答案 0 :(得分:1)
C-c C-x C-l
绑定到org-toggle-latex-fragment
。做一次去除叠加并再次执行以重新生成叠加。根据您在缓冲区中的位置以及是使用一个C-u
还是两个C-u
还是不使用C-u
来调用它,它将执行不同的操作(影响当前的乳胶片段,所有碎片都在一个子树,或缓冲区中的所有片段)。你应该用
C-h C-f org-toggle-latex-fragment RET
答案 1 :(得分:0)
乳胶碎片存储在名为“ltximg”的文件夹中,该文件夹位于org文件所在的文件夹中。要重新创建片段,请删除该文件夹,重新启动emacs并再次执行org-toggle-latex-fragment。
答案 2 :(得分:0)
以下是一种解决方案,当您调用load-theme
时,它将自动更改缓存文件夹。它将也更新图像。为避免不必要的操作,此操作仅在已调用org-toggle-latex-fragment
的缓冲区中完成。
一旦加载了新主题,就会为整个缓冲区计算LaTeX片段,但是您可以在下面的最后一个函数中删除'(16)
,那样就不会发生。取而代之的是,仅更新当前部分(只需删除缓冲区其余部分中的乳胶图像)。
确保将乳胶碎片选项转移到my/org-latex-set-options
。这是因为如果使用org-mode-hook
,则将这些选项保留在#+STARTUP: latexpreview
内是无效的。
(defun my/org-latex-set-options ()
(setq org-format-latex-options (plist-put org-format-latex-options :scale 1.5)))
(defvar my/org-latex-toggle-fragment-has-been-called nil
"Tracks if org-toggle-latex-fragment has ever been called (updated locally).")
(defadvice org-toggle-latex-fragment (before my/latex-fragments-advice activate)
"Keep Org LaTeX fragments in a directory with background color name."
(if (not my/org-latex-toggle-fragment-has-been-called) (my/org-latex-set-options))
(setq-local my/org-latex-toggle-fragment-has-been-called t)
(my/org-latex-set-directory-name-to-background))
(defadvice load-theme (after my/load-theme-advice-for-latex activate)
"Conditionally update Org LaTeX fragments for current background."
(if my/org-latex-toggle-fragment-has-been-called (my/org-latex-update-fragments-for-background)))
(defadvice disable-theme (after my/disable-theme-advice-for-latex activate)
"Conditionally update Org LaTeX fragments for current background."
(if my/org-latex-toggle-fragment-has-been-called (my/org-latex-update-fragments-for-background)))
(defun my/org-latex-set-directory-name-to-background ()
"Set Org LaTeX directory name to background color name: c_Red_Green_Blue."
(setq org-preview-latex-image-directory
(concat "ltximg/c"
(let ((color (color-values (alist-get 'background-color (frame-parameters)))))
(apply 'concat (mapcar (lambda (x) (concat "_" x)) (mapcar 'int-to-string color))))
"/")))
(defun my/org-latex-update-fragments-for-background ()
"Remove Org LaTeX fragment layout, switch directory for background, turn fragments back on."
;; removes latex overlays in the whole buffer
(org-remove-latex-fragment-image-overlays)
;; background directory switch
(my/org-latex-set-directory-name-to-background)
;; recreate overlay
;; Argument '(16) is same as prefix C-u C-u,
;; means create images in the whole buffer instead of just the current section.
;; For many new images this will take time.
(org-toggle-latex-fragment '(16)))
答案 3 :(得分:0)
我正在使用Doom Emacs,我的预览被缓存在以下目录中:
~/.emacs.d/.local/cache/org-latex/
我需要删除文件夹,以确保使用新的前景色重新生成预览。