当图像具有透明背景时,Emacs当然会尊重这一点。
不幸的是,这可能导致显示问题:
有没有办法在图像后面显示特定的颜色(例如白色)?在ImageMagick图像中似乎对此有所支持。
我现在正在使用的特定材料可以设置背景颜色,但是我必须在每个图形上添加额外的几行才能做到这一点,这不理想。我想将其显示到以组织模式显示的嵌入式图像具有默认设置的背景色的位置。
(注意:这不是特定于org-babel的,这恰好是我现在如何获取这些图像的方式)
当图像具有透明背景时,Emacs当然会尊重这一点。
不幸的是,这可能导致显示问题:
有没有办法在图像后面显示特定的颜色(例如白色)?在ImageMagick图像中似乎对此有所支持。
我现在正在使用的特定材料可以设置背景颜色,但是我必须在每个图形上添加额外的几行才能做到这一点,这不理想。我想将其显示到以组织模式显示的嵌入式图像具有默认设置的背景色的位置。
(注意:这不是特定于org-babel的,这恰好是我现在如何获取这些图像的方式)
Answers:
经过大量挖掘之后,似乎没有内置选项可以在组织或一般情况下进行调整。图像系统无法自定义默认背景,并且org无法设置:background
属性。但是,看起来大多数图像都支持:background
display属性。
我通过修改(读:复制并粘贴到.emacs.d
1行中)将此功能添加到组织中org-display-inline-images
。
我不会在这里重现该函数,因为它很长。该函数的第51行显示:
(setq img (save-match-data (create-image file type nil :width width)))
我定义了一个新的可自定义变量org-inline-image-background
,可以容纳nil
(透明背景)或颜色:
(defcustom org-inline-image-background nil
"The color used as the default background for inline images.
When nil, use the default face background."
:group 'org
:type '(choice color (const nil)))
然后,将其添加到第51行:
(setq img (save-match-data (create-image file type nil :width width
:background org-inline-image-background)))
效果很好,可以使用颜色选择器进行自定义,因此可以满足我的所有要求。
8.3.4
。我检查了org-display-inline-images
源代码,没有找到您的代码定义。这是源代码:gist.github.com/649a7b36031d6adb4a96
我得到了更好的建议解决方案。
(defun create-image-with-background-color (args)
"Specify background color of Org-mode inline image through modify `ARGS'."
(let* ((file (car args))
(type (cadr args))
(data-p (caddr args))
(props (cdddr args)))
;; get this return result style from `create-image'
(append (list file type data-p)
(list :background (face-background 'default))
props)))
(advice-add 'create-image :filter-args
#'create-image-with-background-color)
org-
由于该解决方案的应用范围更广,我是否建议重命名建议函数以删除前缀?对于非默认主题,目标可能是白色背景(通常不是默认的面部背景),因此(list :background "white")
可能是一个有用的示例。