我在github上给aquamacs的owner提了issue,why aquamacs auctex can get a high DPI equation preview but GNU Emacs can’t? #108他给我的回答是aquamacs不仅仅在elisp的层面修改了auctex package,在c的层面也加入了针对retina的支持。 看来不好弄了
那估计是不好弄了。。。
这个嘛。。我觉得转到emacs-devel mailing list去吧。
似乎 Emacs Mac Port 最新的更新(基于 24.5 的第九次更新)有这方面的改进(粗体是我加的):
** Improvements
*** For frames on a Retina display, image-io/imagemagick image descriptors involving non-integral transformations such as shrinking or rotation are now processed with 2x pixel buffer even if the source image file/data is for 1x. For example, (insert-image (create-image “gnus/gnus.png” 'imagemagick nil :max-height 100)) now looks crisper.
*** Org mode LaTeX fragments preview may also create 2x images.
引用自: Re: Emacs Mac port
我也看到了,发在Slack上了。但是不一定会引入到emacs ns port.
在 Mac 下貌似可以修改配置使得生成的 PNG 尺寸更大,然后将其“压缩”(即在文件后面添加@2x,需要)放入 参见 Emacs-StackExchange: org-preview-latex-fragment in higher resolution 以及 StackOverflow: Org LaTeX preview is fuzzy on retina displays
不过每次都要自己去修改生成的文件,有什么更方便的方法吗,比如自行添加 @2x 不过貌似还可以将其改为生成 SVG?这个需要怎么配置?
现在 stackoverflow 回答中给出了一个新的方法,可以通过设置
(setq org-latex-create-formula-image-program 'dvisvgm)
使用 dvisvgm
来生成预览图,试了一下确实有显著效果。上面 OD_{260} 是默认方法生成的,下面是通过 dvisvgm 生成的。
但是相较于网页上这个 OD_{260} ,显示效果还是有些差距。
我这基本看不出差别(截图,实际效果更好)
GNU Emacs 28.0.90 (build 1, x86_64-apple-darwin21.2.0, NS appkit-2113.20 Version 12.1 (Build 21C52)) of 2021-12-22
使用 emacs-mac (homebrew-emacs-macport) + imagemagick 完美解决.
(setq org-preview-latex-default-process 'imagemagick)
dvisvgm
有时渲染容易出错.
刚试了下好像也不行,不知道怎么回事。 装了emacs-mac-port的最新版,配置里写了这句,用的配置是Doom。生成的图片分辨率还是很普通。
试试检查下 org-preview-latex-process-alist
里 :image-converter
中 quality
是否为 100:
(setq org-preview-latex-process-alist
'((imagemagick
:programs
("latex" "convert")
:description "pdf > png"
:image-input-type "pdf"
:image-output-type "png"
:image-size-adjust
(1.0 . 1.0)
:latex-compiler
("xelatex -interaction nonstopmode -output-directory %o %f")
:image-converter
("convert -density %D -trim -antialias %f -quality 100 %O")))) ;; 这里
有可能是 Doom 为了优化渲染速度改了这个默认值.
另外如果这个还不行, 尝试下使用我的安装方式:
brew install emacs-mac --with-mac-metal --with-native-comp --HEAD
另外安装时详细的可选参数文档在这里: Formula Options
我试了一下。doom默认的这个alist的imagemagick部分和你是一样的。但我选imagemagick作为default process不但分辨率不高,反而把公式强制居中并且占用大片空间。选dvisvgm就可以了。并且这个在emacs-plus@28里可以用。
我个人不太喜欢emacs-mac,因为他自定义了一堆按键可能有冲突。比如我定义的C-M-SPC是我的mac系统切换输入法的按键,在emacs-mac里和mark-set冲突了。
无论在 emacs-mac 还是 emacs-plus 中使用 dvisvgm, 我总是遇到公式显示不完全的问题. 如下图所示, 有些积分号直接被截掉了一大半.
不知道 HepIsaac 在使用时是否遇到类似问题. 目前我试图调整 imagemagick 的渲染比例时也遇到了你所述的图片莫名居中的现象. (当生成公式的比例 aka. :scale
这个参数大于 1 时, 均会出现 imagemagick 居中显示 (有时候直偏到屏幕左下角) 的情况).
目前希望能解决的问题:
- 如何适当调整 dvisvgm 防止出现公式显示不完全的问题.
- 或者如何适当调整 imagemagick 使其能够缩小默认的公式显示大小. (scale 1.0 对我来说还是太大了)
这是我的dvisvgm结果,你会发现下面莫名其妙的有一个横色区域颜色是不一致的。在某些配色主题下这个区域的颜色会覆盖掉公式,导致显示不完全。这是我的感觉。
我不太愿意用emacs-mac还有一个原因是他没升级28.我电脑上27的emacs速度比28慢很多很多。
有时间我去试一下emacs-plus的imagemagick。不知道有没有emacs-plus上能完美渲染org preview的。
emacs-mac 没有遇到 “横色区域颜色不一致” 的情况, (我在用 emacs-plus 时也确实遇到了和你一致的情况), 但显示依然不完全. 所以或许不是背景色的原因.
另外其实emacs-mac是有28支持的, 你需要在安装时加入 --HEAD
选项. 但是在 emacs-mac 的 28 中暂时无法使用 emacs-plus 自带的 natural-title-bar (就是让窗口最顶端的那一栏颜色和你的 frame 背景色显示一致的功能).
我对emacs-mac的natural-title-bar一直不抱希望。哪怕装了也不能随时随着主题切换dark/light,每次都要输入命令重新启动,并且看上去作者没有改变的意思。
以及,不知道你有没有试过latex-mode里面的preview-latex的分辨率能不能改?
我试了一下emacs-mac --HEAD --with-mac-metals。
公式图片变大了,那个颜色不对的横条还在。分辨率没问题。
于是我退回emacs-plus了。。。
颜色不一致是因为org在读取latex公式转成tex文件的时候会读取当前背景的颜色作为tex文件的底色,所以你可能要改一下主题