Standaard Inline-afbeeldingsachtergrond in Org-modus

Wanneer een afbeelding een transparante achtergrond heeft, respecteert Emacs dat uiteraard.

Helaas kan dit leiden tot problemen met weergave:

black text on dark background

Is er een manier om een ​​specifieke kleur (bijvoorbeeld wit) achter de afbeelding weer te geven? Er lijkt enige ondersteuning voor te zijn in ImageMagick-afbeeldingen .

De specifieke dingen waarmee ik nu werk, kunnen de achtergrondkleur hebben, maar ik moet een extra paar regels toevoegen aan elk afzonderlijk cijfer om dat te doen, wat minder is dan ideaal. Ik zou graag willen weten waar inline-afbeeldingen die in de org-modus worden weergegeven, standaard de achtergrondkleur hebben.

(Opmerking: dit is niet specifiek voor org-babel, het is gewoon toevallig hoe ik deze afbeeldingen nu krijg)

8

2 antwoord

Na veel graven lijkt niet een ingebouwde optie om dit aan te passen in Org of in het algemeen. Het afbeeldingssysteem heeft geen manier om de standaardachtergrond aan te passen en org heeft geen manier om de eigenschap : background in te stellen. Het lijkt er echter op dat de meeste afbeeldingen de eigenschap : background ondersteunen.

Ik heb deze functionaliteit toegevoegd aan Org door het te wijzigen (lees: kopiëren en plakken in .emacs.d met een wijziging van 1 regel) org-display-inline-images .

Ik zal de functie hier niet reproduceren, omdat het nogal lang duurt. Regel 51 van de functie luidt:

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

Ik heb een nieuwe aanpasbare variabele org-inline-image-background gedefinieerd, die nil (transparante achtergrond) of een kleur kan bevatten:

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

Vervolgens heb ik het toegevoegd aan regel 51:

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

Dit werkt prachtig en het kan worden aangepast met behulp van de kleurkiezer, zodat het aan al mijn eisen voldoet.

black text light background

8
toegevoegd
Het lijkt erop dat je veel werk verzet om dit ding uit te zoeken. Wil je hier een patch voor indienen of vragen dat deze wordt toegevoegd aan de org-modus door [email protected] te e-mailen?
toegevoegd de auteur UnkwnTech, de bron
Als ik het eenmaal heb geprobeerd (zorg dat het niets kapot maakt), hoop ik ook.
toegevoegd de auteur Gareth Simpson, de bron
@stardiviner dat is precies wat dit doet
toegevoegd de auteur Gareth Simpson, de bron
@stardiviner: nee. Als je het als advies wilt, kun je gebruik maken van: filter-return ( gnu.org/software/emacs/manual/html_node/elisp/… ) om dit te doen.
toegevoegd de auteur Gareth Simpson, de bron
De nieuwe Org-modus versie 8.0 lijkt een startoverlay te gebruiken om inline afbeeldingen weer te geven. Is er een manier om de standaard achtergrondkleur van de overlay aan te passen?
toegevoegd de auteur Calvin Allen, de bron
Ik heb mijn Org-versie gecontroleerd, het is 8.3.4 . Ik heb de broncode van de code org-display-inline-images gecontroleerd en heb de codedefinitie niet gevonden. Hier is de broncode: gist.github.com/649a7b36031d6adb4a96
toegevoegd de auteur Calvin Allen, de bron
Ik vind de code create-image en voeg code toe als uw methode. Ik denk dat dit een advies zou moeten zijn. Kun je je code verbeteren?
toegevoegd de auteur Calvin Allen, de bron
@JDavidSmith Ik denk dat dit : filter-args op create-image moet gebruiken om de achtergrondkleur op te geven van het kleurthema. Maar ik weet nog steeds niet hoe ik dit advies moet schrijven.
toegevoegd de auteur Calvin Allen, de bron

Ik kreeg een betere oplossing met advies.

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