【分享】在 org-mode 和 latex-mode 中美化公式预览

加了xenops之后,我日常使用emacsclient总是加载不出来,但是直接从命令行启动emacs却没问题。

一顿排查之后,定位到一行(add-hook 'org-mode-hook #'xenops-mode),去掉这一行一切正常,自己进了org-mode之后也可以正常手动开启xenops-mode。百思不得其解。

后来发现,我设置了initial-major-modeorg-mode,去掉这个设置之后,就可以挂hook自动启用xenops-mode了。

另外,有两个踩的坑也做一个记录:

  • (setq xenops-reveal-on-entry t)之后的行为其实也和org-fragtog不太一致,我在试的时候发现无论怎么在预览上面上下移动,都不会进入公式编辑环境,一度以为是不是我用了iscroll-mode,previous-line next-line被iscroll版本替代了的原因。后来发现,所谓的“entry”,得是左右移动进入才能算。
  • 我自己上面提到的

借鉴了

我自己做了个advice的版本

  (defun xenops-math-reveal-alt (element)
    (xenops-element-overlays-delete element)
    (if current-prefix-arg
        (delete-file (xenops-math-get-cache-file element)))
    (let ((element-type (plist-get element :type))
          (begin-content (plist-get element :begin-content)))
      (goto-char (if (eq element-type 'block-math)
                     (1+ begin-content)
                   begin-content))))
  (advice-add #'xenops-math-reveal :override #'xenops-math-reveal-alt)

不过仍然有个从上方离开公式环境时预览显示不正确的问题,不过无伤大雅。

a