組織モードでのデフォルトのインライン画像背景

イメージが透明な背景を持つとき、Emacsはもちろんそれを尊重します。

残念ながら、これは表示に関する問題につながる可能性があります。

black text on dark background

画像の後ろに特定の色(白など)を表示する方法はありますか? にいくつかのサポートがあるようですImageMagick画像

私が今作業している特定のものは、背景色を設定することができますが、これを行うためにはすべてのFigure に余分な行を追加する必要があります。 org-modeで表示されるインライン画像がデフォルトで背景色に設定されているところまで行きたいと思います。

(注:これは組織特有のものではなく、ちょうど私がこれらの画像を現在入手している方法です)

8

2 答え

多くの掘り下げの後、Orgまたは一般的にこれを調整する組み込みのオプションはないと思われます。イメージシステムには、デフォルトの背景をカスタマイズする方法がありません。orgには:background プロパティを設定する方法がありません。しかし、ほとんどの画像が:background の表示プロパティをサポートしているように見えます。

Orgにこの機能を追加しました(読み込み:1行の変更で .emacs.d にコピー&ペースト) org-display-inline-images

むしろ時間がかかるのでここでは関数を再現しません。関数の51行目は次のようになります。

(setq img (save-match-data (create-image file type nil :width width)))

nil (透明な背景)または色を保持できる新しいカスタマイズ可能な変数 org-inline-image-background を定義しました。

(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)))

これは美しく機能し、カラーピッカーを使用してカスタマイズすることができるので、私のすべての要件を満たします。

black text light background

8
追加された
あなたはこのことを理解するために多くの仕事をするように見えます。 [email protected]に電子メールを送信することで、このためのパッチを提出するか、これをorg-modeに追加することを希望しますか?
追加された 著者 UnkwnTech,
一度私はそれをペース(それが何も壊れていないことを確認してください)に入れても私は望んでいる。
追加された 著者 Gareth Simpson,
@stardivinerこれはまさにこれがやることです
追加された 著者 Gareth Simpson,
@stardiviner:いいえ。あなたがそれをアドバイスとして望むなら、次のようにすることができます:filter-return( gnu.org/software/emacs/manual/html_node/elisp/… )を実行してください。
追加された 著者 Gareth Simpson,
新しいOrg-modeバージョン8.0は、インラインイメージを表示するためにオーバーレイを使用するように見えます。オーバーレイのデフォルトの背景色を変更する方法はありますか?
追加された 著者 Calvin Allen,
Orgバージョンを確認しましたが、 8.3.4 です。私は、 org-display-inline-images ソースコードを確認しましたが、コード定義が見つかりませんでした。ソースコードは次のとおりです。 gist.github.com/649a7b36031d6adb4a96
追加された 著者 Calvin Allen,
私は create-image のラインコードを見つけ、あなたのメソッドとしてコードを追加します。私はこれが助言になるべきだと思う。コードを改善できますか?
追加された 著者 Calvin Allen,
@JDavidSmith私は、 create-image 上で、カラーテーマから取得する背景色を指定するために:filter-args を使用するべきだと思います。しかし、私はまだこのアドバイスを書く方法を理解することはできません。
追加された 著者 Calvin Allen,

私はアドバイスを使ってより良い解決策を得ました。

(defun org-display-inline-images--with-color-theme-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
            #'org-display-inline-images--with-color-theme-background-color)
1
追加された