Emacs 视网膜显示上的组织乳胶预览模糊

Emacs 视网膜显示上的组织乳胶预览模糊,emacs,latex,org-mode,retina-display,retina,Emacs,Latex,Org Mode,Retina Display,Retina,我所有的数学/科学笔记都使用了Emacs24.4组织乳胶预览版非常适合这个!但最近,我升级到了带有视网膜显示器的MacBookPro,现在我看到我在组织模式下的所有方程式都是。。。模糊的是否有一个设置我可以改变这些 以下是一个屏幕截图: 谢谢 我已经试过了 如果我创建两个文件foo.pngfoo@2x.png在同一目录上,这将起作用。默认情况下,orgmode latex预览不支持视网膜,因此在带有视网膜屏幕的mac上,latex预览将是模糊的。 但是,我们可以通过破解org.el来实现该功

我所有的数学/科学笔记都使用了Emacs24.4<代码>组织乳胶预览版非常适合这个!但最近,我升级到了带有视网膜显示器的MacBookPro,现在我看到我在组织模式下的所有方程式都是。。。模糊的是否有一个设置我可以改变这些

以下是一个屏幕截图:

谢谢

我已经试过了


如果我创建两个文件foo.pngfoo@2x.png在同一目录上,这将起作用。

默认情况下,orgmode latex预览不支持视网膜,因此在带有视网膜屏幕的mac上,latex预览将是模糊的。
但是,我们可以通过破解org.el来实现该功能。只需按照以下步骤操作:

获取正确版本的emacs 要改用山本三春版本的Emacs 25.1(具有更多mac特定功能),请执行以下操作:

最后将其链接到您的应用程序文件夹:

brew linkapps emacs-mac
此版本的emacs将支持视网膜图像显示

更改组织格式选项 将比例从1.0更改为2.0,以生成2倍大小的图像

删除org.elc

将函数添加到org.el 并评估该功能

修改功能组织格式 更改片段:

(unless (file-exists-p movefile)
  (org-create-formula-image value movefile options forbuffer processing-type)

并评估该功能


现在,你们可以在mac视网膜屏幕上预览两倍大小的乳胶图像

几年前,我决定修复这个问题,并编写了一个补丁来添加
dvisvgm
,作为latex预览的渲染选项。虽然这很有效,但我从未提交过它(没有时间或关于如何正式修补org的知识)

今天,我很高兴地发现OrgModeV9.0.6现在有了这个功能

要激活,首先检查您的系统上是否有
dvisvgm
。然后更新组织模式并将以下行添加到
init.el
文件中:

(setq org-latex-create-formula-image-program 'dvisvgm)
还有普雷斯托


我找到了一种更适用于所有内联图像的解决方案。首先确保所有生成的图像都是以2的比例因子创建的。例如,对于LaTeX代码块和内联LaTeX代码段,这可以通过

(plist-put org-format-latex-options :scale 2)
然后,让组织将所有内联图像向后缩放。 对于LaTeX代码块,我们可以建议
org--创建内联图像
如下:

(defun my/image-scale-advice (image)
  (let* ((factor (image-property image :scale))
         (new-factor (if factor
                         (/ factor 2.0)
                       0.5)))
    (image--set-property image :scale new-factor)
    image))
(advice-add 'org--create-inline-image :filter-return #'my/image-scale-advice)
(defun my/overlay-scale-advice (beg end image &optional imagetype)
  (mapc (lambda (ov) (if (equal (overlay-get ov 'org-overlay-type) 'org-latex-overlay)
                                (overlay-put ov
                                             'display
                                             (list 'image :type (or (intern imagetype) 'png) :file image :ascent 'center :scale 0.5))))
        (overlays-at beg)))
(advice-add 'org--make-preview-overlay :after #'my/overlay-scale-advice)
这会将任何现有的比例因子除以2,如果不存在,则将比例因子设置为0.5

对于内联LaTeX片段,我们可以建议
org——制作预览覆盖图
,如下所示:

(defun my/image-scale-advice (image)
  (let* ((factor (image-property image :scale))
         (new-factor (if factor
                         (/ factor 2.0)
                       0.5)))
    (image--set-property image :scale new-factor)
    image))
(advice-add 'org--create-inline-image :filter-return #'my/image-scale-advice)
(defun my/overlay-scale-advice (beg end image &optional imagetype)
  (mapc (lambda (ov) (if (equal (overlay-get ov 'org-overlay-type) 'org-latex-overlay)
                                (overlay-put ov
                                             'display
                                             (list 'image :type (or (intern imagetype) 'png) :file image :ascent 'center :scale 0.5))))
        (overlays-at beg)))
(advice-add 'org--make-preview-overlay :after #'my/overlay-scale-advice)

这将在视网膜显示器上产生更清晰的内联图像。

预览是用png图像和Ghostscript完成的,而Ghostscript因显示质量差而臭名昭著。为了获得真正好的显示质量,您需要使用一个单独的pdf程序,该程序在完全不同的框架中打开。至少有一个线程,用户努力寻找最清晰的字体来满足他/她自己的需要(使用预览),但最终归结为品味问题。PNG在我的旧mac(pre-retina display)上看起来不错。我只能猜测这个问题与视网膜显示的高分辨率和自动缩放有关…?如果你在Google word中搜索ghostscript png emacs pdf等,你会发现一些关于如何在emacs中获得更好的pdf图像质量的问题。用漂亮的显示器更容易注意到劣质。我用一个外部查看器(Skim)设置了tex生成的文档;而且,为了从Emacs文件管理器(例如,我使用的Dired或自定义树状视图管理器)查看pdf文档,我已编程了一组回送区域选项,以打开pdf:doc视图(在Emacs中的选项)、预览、Adobe、Skim、,Omnipage。我很确定这与视网膜技术以及这些图像渲染的兼容性/设置有关。。。我还有其他一些应用程序没有“视网膜就绪”,比如QGIS和MS Office 2011,它们也有同样的问题。所有图像都以1/4的分辨率渲染,因此它们保持正确的大小,但分辨率较低。我也注意到了这个问题,我在我的旧mac上截图。但是,必须有某种方法来指定设置的正确分辨率…?这里有一个链接,指向有关文档视图和视网膜支持的一些有趣的注释,参考可能支持更好图像质量的特定Emacs构建。下面是相关的代码片段:如果您使用的是macports,您可以通过端口安装emacs mac app,该应用程序将安装支持retina的版本。现在,要在视网膜模式下查看pdf,应将文件命名为“foo@2x.pdf". 这是我从《谢谢你的回答》中得到的!我按照您的建议做了,但是生成的svg没有被emacs显示。将生成图像(它们显示在文件夹
ltximg
中),但图像不会替换latex方程
$…$
。有什么想法吗?试着把这个添加到你的init.el文件中:你使用的是emacs mac端口还是GNU emacs?我无法在GNU Emacs中实现这种密度:(
dvisvgm
dvipng
好得多,但仍然很难看:(该初始化文件在Dropbox中不再可用。您可以将相关的位添加到您的答案中吗?@HappyFace很高兴它起作用了!如果您需要任何其他帮助,请告诉我,我将找到一种方法以更持久的方式重新发布我的初始化文件!
(defun my/overlay-scale-advice (beg end image &optional imagetype)
  (mapc (lambda (ov) (if (equal (overlay-get ov 'org-overlay-type) 'org-latex-overlay)
                                (overlay-put ov
                                             'display
                                             (list 'image :type (or (intern imagetype) 'png) :file image :ascent 'center :scale 0.5))))
        (overlays-at beg)))
(advice-add 'org--make-preview-overlay :after #'my/overlay-scale-advice)