项目分享: Org Mode 中 LaTeX 预览与导出的优化 (Improved LaTeX Preview).

平台是 macos 10.15.7

➜  ~  dvisvgm -V1
dvisvgm 3.0.4 (x86_64-apple-darwin19.6.0)
-----------------------------------------
brotli:   1.0.9
clipper:  6.2.1
freetype: 2.13.0
kpathsea: 6.3.6/dev
potrace:  1.16
xxhash:   0.8.1
zlib:     1.2.11

目前来看, 我们的平台应该类似, 你可以试一下我的做法:

brew install emacs-plus@30 --with-xwidgets --with-native-comp

然后克隆这个仓库. 在这里我把编译好的 Org Lisp 文件已经放在仓库内部了, 并且在 init.el 中正常加载了 Org 9.7. 唯一的不同是我是在 arm 架构的 M1 Mac 上编译的, 我不确定在你那边是否兼容, 总之可以一试.

注意: 我的仓库目前还没有进行客制化, 你可能会遇到找不到字体等 Error, 建议 Emacs 启动时开启 debug 模式, 然后修改原本的配置文件即可.

1 个赞

目前项目已经基本完善了, 项目目前在 mailinglist 中招募测试者并欢迎大家的贡献. 预计时间大概在今年年末发布.

1 个赞

嗯嗯谢谢大佬

1 个赞

Org 9.7还没有发布吧,想请问下,现在要怎么样安装Org 9.7这个可以使用org-preview这个插件的版本?

目前 带有 org-latex-preview 的 Org 项目根目录在 tec/org-mode: My personal patches-in-progress branch of Org. See https://git.tecosaur.net/mirrors/org-mode/compare/main..tec/org-mode:dev. - org-mode - Code by TEC

因此安装方式就是用上面链接中的 Org 替代本地的 Org 包. 具体安装方法见 项目分享: Org Mode 中 LaTeX 预览与导出的优化 (Improved LaTeX Preview). - #36,来自 Ilya.w

非常感谢你的回复!想再请问下,如果不再想使用这个实验中的Org版本了,想用回Emacs内置的Org版本,应该要怎么切换呢?

将那些安装 Org 9.7 测试版的代码删除 (或者注释掉) 就好. Emacs 会自己安装使用于当前版本的内置 Org.

好的。非常感谢你的指点。

我可以100% 复现出你的问题 :sunglasses:,公式是红色的,没有居中,序号是方块。

edit1: 破案了,要在org文件前面加 #+LATEX_HEADER: \usepackage{amsmath},并且要重新加载buffer一次。但是这样还是有序号方面的问题

image

edit2: 又破案了,你需要将org-latex-preview-numbered setq 成 t 才能看到序号

image

edit3: 我后来又研究(逛了逛discord群组)了一下,发现公式不够大,不居中,都可以通过设置变量来解决。

对于公式不够大,可以在custom界面搜索 org-latex-preview-options,修改zoom的数值,默认为1,可以调成1.25。

对于公式不居中,可以在custom界面搜索 org-latex-preview-process-alist,修改dvisvgm键低下的一个子键 image-converter, 将–exact-bbox 改成 --bbox=preview (但是这个有人反映,反而–exact-bbox可以做到居中,可能和dvisvgm版本有关)

当然以上两点也可以通过在init.el添加代码实现

  (use-package org
  :init
    (setq org-latex-preview-numbered t)
    (plist-put org-latex-preview-options :zoom 1.25)
    (let ((pos (assoc 'dvisvgm org-latex-preview-process-alist)))
      (plist-put (cdr pos) :image-converter '("dvisvgm --page=1- --optimize --clipjoin --relative --no-fonts --bbox=preview -o %B-%%9p.svg %f"))))

在做完这两项之后,进入你写tex的org文件中,把光标放在非公式处 M-x org-latex-preview-clear-cache, 然后再 C-c C-x C-l 生成公式,可以看到发生了改变。如果没有改变可以再清理一下cache。

做完修改后的效果大约是这样的

虽然仍然有一些瑕疵,但已经是可以舒适使用的状态了!

ps:我使用的是archlinux平台的pgtk 29.1版本

1 个赞

补充: 对于使用borg包管理器的用户,安装org 9.7 是相当简单的,而且可以无痛卸载 (?)

你只需要 把 org 9.7 add 成为 submodule 后,在.borgconfig 添加

  [submodule "org"]
          load-path = lisp
          build-step = make autoloads
          build-step = borg-update-autoloads
          build-step = borg-compile
          build-step = borg-maketexi
          build-step = borg-makeinfo

就可以开始体验 Org 9.7 了!

1 个赞

对于序号默认是菱形这一点,我认为并不是bug,这其中有性能的考虑。

比如你在一堆带序号的公式前面又添加一个带序号的公式,那么后面的所有公式都需要更新序号,这会带来比较大的开销,还有监听的成本在里面。(对于具体的实现,我不是很理解哈)

但是有没有可能用纯文本替代svg的序号呢?这样既可以减小svg的大小,又方便序号的更新。毕竟,我们是奔着预览公式,而不是预览序号来的。

我向几位开发者咨询了这一点,他们目前还没有回复我。


开发者的答复是这样的,显然他们比我考虑的更多

适用了包,体验非常好!只是似乎一个小问题:在使用 spacemacs-light 主题的时候,公式的背景色会变成蓝色,而使用默认主题等其他主题的时候没有这个问题

(use-package spacemacs-theme)
(load-theme 'spacemacs-light)

image

试试看来检查你系统的 dvisvgm 版本是否在 3.0 以上?

(base) ➜  ~ dvisvgm -V1
dvisvgm 3.0.3 (aarch64-apple-darwin20.6.0)

你好,是3.0.3版本

PS C:\Users\K-win> dvisvgm -V1
dvisvgm 3.0.3
-------------
brotli:      1.0.9
clipper:     6.2.1
freetype:    2.13.0
Ghostscript: 10.2.0
kpathsea:    6.3.5
potrace:     1.16
xxhash:      0.8.1
zlib:        1.2.13
PS C:\Users\K-win> get-command dvisvgm

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     dvisvgm.exe                                        0.0.0.0    C:\texlive\2023\bin\windows\dvisvgm.exe

问题应该和spacemacs-theme有关,我试了用下面的代码启动emacs依然由上面的现象

(dolist (folder (directory-files "~/.emacs.d/straight/build" t))
  (add-to-list 'load-path folder))

(use-package spacemacs-theme)
(load-theme 'spacemacs-light)

按道理使用 dvisvgm 生成的图片背景应该是透明的呀… 试试检查下 org-latex-preview-default-process 的值是不是 dvisvgm?

如果不是

(setq org-latex-preview-default-process 'dvisvgm)

就好. 希望对你有帮助

您好,我是把我上面那段代码存进 test.el 文件然后运行 emacs -Q -l test.el 启动的 emacs,启动之后org-latex-preview-default-process 的值确实是 dvisvgm,没有别的配置。

我在公式预览部分使用 describe-char 的结果是这样的:

我点进左面的 preview-imagedisplay[Show] 之后,里面有一个 svg 图片的地址,图片背景确实是透明的。所以我认为图片的生成没什么问题,问题应该出自这个主题自身。

请问您的电脑上用 spacemacs-theme 没问题吗?


另外,我是在 windows 系统下使用的官网下载的 emacs29

您好, 我在 macOS 下简单测试了 spacemacs-theme, 并没有遇到您说的问题:

我的 Org 配置在 https://github.com/ilyaw39/.emacs.d/blob/main/lisp/init-org.el, 供参考~

如果问题依然存在, 麻烦您提供下 Windows 系统信息, LaTeX 发行版信息以及 emacs-version 信息, 我帮您汇报给开发者.

发现前段时间 Typst 发布 v0.8.0 支持了输出 svg,理论上是不是可以自己魔改加一个 typst 后端

3 个赞