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


9

画像に透明な背景がある場合、Emacsはもちろんそれを尊重します。

残念ながら、これは表示に関する問題を引き起こす可能性があります:

暗い背景に黒いテキスト

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

私が現在作業している特定のものは、背景色を設定できますが、それを行うには、すべての図に余分な数行を追加する必要があり、理想的とは言えません。org-modeで表示されるインライン画像の背景色がデフォルトで設定されている場所に到達したいと思います。

(注:これはorg-babel固有ではなく、たまたまこれらの画像を取得する方法です)

回答:


8

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

私はこの機能をOrgに変更して追加しました(読み取り:.emacs.d1行の変更でコピーして貼り付けます)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)))

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

黒のテキストの明るい背景


このことを理解するために多くの作業を行ったようです。emacs-orgmode@gnu.orgに電子メールを送信して、このパッチを提出するか、org-modeへの追加をリクエストしますか?
Kaushal Modi 2016

私はそれをそのペースに通したら(それが何も壊さないことを確認してください)、私も望んでいます。
J David Smith

新しいOrg-modeバージョン8.0では、オーバーレイを使用してインライン画像を表示しているようですが、オーバーレイのデフォルトの背景色を変更する方法はありますか?
stardiviner 2016年

@stardivinerまさにこれが行うこと
J David Smith

組織のバージョンを確認しました8.3.4org-display-inline-imagesソースコードを確認しましたが、コード定義が見つかりませんでした。ソースコードは次のとおり
stardiviner

3

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

(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")、役立つ例かもしれません。
-ebpa

1
それはユーザーのオプションです、あなたの考えは正しいです。このコードを見つけたユーザーにはあなたのコメントで十分だと思います。:)
stardiviner
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.