ऑर्ग मोड में डिफ़ॉल्ट इनलाइन छवि पृष्ठभूमि


9

जब एक छवि में पारदर्शी पृष्ठभूमि होती है, तो Emacs निश्चित रूप से इसका सम्मान करता है।

दुर्भाग्य से, यह प्रदर्शन के साथ समस्याएँ पैदा कर सकता है:

काले रंग की पृष्ठभूमि पर काला पाठ

क्या छवि के पीछे एक विशिष्ट रंग (जैसे सफेद) प्रदर्शित करने का एक तरीका है? ImageMagick छवियों में इसके लिए कुछ समर्थन प्रतीत होता है ।

मैं अभी जिस विशिष्ट सामान के साथ काम कर रहा हूं, उसका बैकग्राउंड कलर सेट हो सकता है, हालांकि मुझे ऐसा करने के लिए हर एक फिगर में कुछ अतिरिक्त लाइनें मिलानी होंगी , जो आदर्श से कम है। मैं इसे उस स्थान पर पहुँचाना चाहूँगा जहाँ इन-मोड में प्रदर्शित इनलाइन छवियों को डिफ़ॉल्ट रूप से पृष्ठभूमि रंग निर्धारित किया गया है।

(नोट: यह ओआरजी-बेबल विशिष्ट नहीं है, यह सिर्फ ऐसा होता है कि मैं इन छवियों को अभी कैसे प्राप्त कर रहा हूं)

जवाबों:


9

बहुत खोदने के बाद, ऑर्ग में या सामान्य रूप से इसे समायोजित करने के लिए एक अंतर्निहित विकल्प दिखाई नहीं देता है। छवि सिस्टम में डिफ़ॉल्ट पृष्ठभूमि को अनुकूलित करने का कोई तरीका नहीं है, और org में :backgroundसंपत्ति सेट करने का कोई तरीका नहीं है । हालांकि, ऐसा लगता है कि अधिकांश छवियां :backgroundप्रदर्शन संपत्ति का समर्थन करती हैं।

मैंने इस कार्यक्षमता को संशोधित करके 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)))

यह खूबसूरती से काम करता है और इसे रंग पिकर का उपयोग करके अनुकूलित किया जा सकता है, इसलिए यह मेरी सभी आवश्यकताओं को पूरा करता है।

काला पाठ प्रकाश पृष्ठभूमि


1
लगता है कि आपने इस काम को अंजाम देने के लिए बहुत काम किया। क्या आप इसके लिए कोई पैच सबमिट करना चाहते हैं या इसे emacs-orgmode@gnac.org पर ईमेल करके org-mode में जोड़ने का अनुरोध कर सकते हैं?
कौशल मोदी

एक बार जब मैं इसे अपने पेस के माध्यम से डाल देता हूं (सुनिश्चित करें कि यह कुछ भी नहीं तोड़ता है) मैं भी उम्मीद कर रहा हूं।
जे डेविड स्मिथ

नया ऑर्ग-मोड संस्करण 8.0 इनलाइन छवियों को प्रदर्शित करने के लिए ओवरले का उपयोग शुरू करता है, क्या ओवरले डिफ़ॉल्ट पृष्ठभूमि रंग को संशोधित करने का एक तरीका है?
स्टारडाइवर

@stardiviner जो वास्तव में यही करता है
जे डेविड स्मिथ

मैंने अपना Org संस्करण चेक किया, यह है 8.3.4। मैंने org-display-inline-imagesस्रोत कोड की जाँच की , आपकी कोड परिभाषा नहीं मिली है। यहाँ स्रोत कोड है: gist.github.com/649a7b36031d6adb4a96
स्टारडाइवर

4

मुझे सलाह के साथ एक बेहतर समाधान मिला।

(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
यह उपयोगकर्ता का विकल्प है, आपका विचार सही है। मुझे लगता है कि इस कोड को खोजने वाले उपयोगकर्ता के लिए आपकी टिप्पणी पर्याप्त है। :)
स्टारडाइवर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.