ऑर्ग-मोड के लिए निर्यात की गई HTML फ़ाइल में स्रोत कोड ब्लॉक के सिंटैक्स हाइलाइट और इंडेंटेशन


9

जब मैं एक ऑर्ग-मोड फ़ाइल के अंदर सी कोड ब्लॉक सम्मिलित करता हूं, तो स्रोत कोड के सिंटैक्स हाइलाइट और इंडेंटेशन को अनुकूलित किया जाता है जैसा कि मैं चाहता था।

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

  2. मेरे Emacs में स्रोत कोड का इंडेंटेशन सामान्य है (जैसा कि मैंने इसे अनुकूलित किया है), लेकिन निर्यात की गई html फ़ाइल में स्रोत कोड का इंडेंटेशन अलग होगा, यह इंडेंटेशन के लिए अधिक स्थान जोड़ता है ।

  3. यदि मैं उसी org फ़ाइल को निर्यात करता हूं emacs -q, तो वे निर्यात की गई html फ़ाइल में सामान्य हैं, लेकिन स्रोत कोड का सिंटैक्स हाइलाइट और इंडेंटेशन defaultएमएसीएस का कॉन्फ़िगरेशन होगा । तो इसका मतलब है कि फॉन्ट-फेस कॉन्फ़िगरेशन init.elप्रभावित होंगे org-export

तो मेरा सवाल यह है: जब मैं एक ऑर्ग-मोड फ़ाइल को निर्यात करता हूं, जिसमें html फ़ाइल में स्रोत कोड ब्लॉक होता है (या शायद पीडीएफ जैसे अन्य प्रारूप), तो क्या फॉन्ट-चेहरों के अपने सभी कॉन्फ़िगरेशन से छुटकारा पाना संभव है स्रोत कोड और के रूप में यह करते हैं emacs -q?

अपडेट :

दूसरी समस्या (setq org-src-preserve-indentation t)या तो init फ़ाइल में सेट करके या इसे M-:( eval-expression) चलाकर हल की जाती है ।

अपडेट 2 :

पहली समस्या विषय के अनुसार ऑर्ग-एक्सपोर्ट <code> ब्लॉक की पृष्ठभूमि सेट करके हल की गई है ।

पहली और दूसरी समस्या हल होने पर तीसरी समस्या महत्वपूर्ण नहीं है।

जवाबों:


10

इस स्पैनिश के समाधान, ओरिज-मोड और सीएसएस अनुकूलन।

elisp

डिफ़ॉल्ट रूप से, फ़ॉन्ट जानकारी निर्यात की गई HTML फ़ाइल में सन्निहित है। हमें उसे अक्षम करने और ऑर्ग-मोड को बताने की आवश्यकता है कि हम बाहरी सीएसएस फ़ाइल का उपयोग करके फ़ॉन्ट स्वरूपण जानकारी निर्दिष्ट करने की योजना बना रहे हैं।

मैंने org-स्ट्रिंग के साथ html वर्ग के नामों को उपसर्ग करने के लिए चुना है ।

;; (setq org-html-htmlize-output-type 'inline-css) ;; default
(setq org-html-htmlize-output-type 'css)
;; (setq org-html-htmlize-font-prefix "") ;; default
(setq org-html-htmlize-font-prefix "org-")

ऑर्ग मोड

Org-file में, आप तब निर्दिष्ट करते हैं कि किस css फ़ाइल का उपयोग करना है। इस फ़ाइल में यह जानकारी होगी कि आप प्रत्येक org-वर्ग को कैसे प्रारूपित करना चाहते हैं ।

# My custom fontification theme
#+HTML_HEAD: <link href="path/to/your/custom/theme.css" rel="stylesheet">

सीएसएस

यहाँ मेरी कस्टम थीम सीएसएस फ़ाइल है जिसमें मैंने रंग कोड को कॉपी किया है leuven-theme। आप नीचे दिए गए css का नवीनतम संस्करण मेरे git से पा सकते हैं ।

/* Set the colors in <pre> blocks from the Leuven theme */
pre                                      {background-color:#FFFFFF;}
pre span.org-builtin                     {color:#006FE0;font-weight:bold;}
pre span.org-string                      {color:#008000;}
pre span.org-keyword                     {color:#0000FF;}
pre span.org-variable-name               {color:#BA36A5;}
pre span.org-function-name               {color:#006699;}
pre span.org-type                        {color:#6434A3;}
pre span.org-preprocessor                {color:#808080;font-weight:bold;}
pre span.org-constant                    {color:#D0372D;}
pre span.org-comment-delimiter           {color:#8D8D84;}
pre span.org-comment                     {color:#8D8D84;font-style:italic}
pre span.org-outshine-level-1            {color:#8D8D84;font-style:italic}
pre span.org-outshine-level-2            {color:#8D8D84;font-style:italic}
pre span.org-outshine-level-3            {color:#8D8D84;font-style:italic}
pre span.org-outshine-level-4            {color:#8D8D84;font-style:italic}
pre span.org-outshine-level-5            {color:#8D8D84;font-style:italic}
pre span.org-outshine-level-6            {color:#8D8D84;font-style:italic}
pre span.org-outshine-level-7            {color:#8D8D84;font-style:italic}
pre span.org-outshine-level-8            {color:#8D8D84;font-style:italic}
pre span.org-outshine-level-9            {color:#8D8D84;font-style:italic}
pre span.org-rainbow-delimiters-depth-1  {color:#707183;}
pre span.org-rainbow-delimiters-depth-2  {color:#7388d6;}
pre span.org-rainbow-delimiters-depth-3  {color:#909183;}
pre span.org-rainbow-delimiters-depth-4  {color:#709870;}
pre span.org-rainbow-delimiters-depth-5  {color:#907373;}
pre span.org-rainbow-delimiters-depth-6  {color:#6276ba;}
pre span.org-rainbow-delimiters-depth-7  {color:#858580;}
pre span.org-rainbow-delimiters-depth-8  {color:#80a880;}
pre span.org-rainbow-delimiters-depth-9  {color:#887070;}
pre span.org-sh-quoted-exec              {color:#FF1493;}

क्या मैं emacs -qइसके बजाय केवल डिफ़ॉल्ट शैली का उपयोग कर सकता हूं custom/theme.css?
कोडिचन

डिफ़ॉल्ट शैली वर्तमान emacs विषय का उपयोग करने के लिए है। आप मैन्युअल रूप से रंगों को कॉपी कर सकते हैं डिफ़ॉल्ट थीम आपके पास हैemacs_default_theme.css
कौशल मोदी

1
मैंने यह कोशिश नहीं की है, लेकिन आप शायद org-html-fontify-codeइसे फिर से परिभाषित कर सकते हैं, जैसे कि यह डिफ़ॉल्ट विषय को फ़ॉन्टकरण से पहले सेट करता है और फिर पहले वाले विषय को पुनर्स्थापित करता है।
कौशल मोदी

यह वास्तव में उपयोगी होगा यदि ऑर्ग मोड ने no-theme-inherit# + BEGIN_SRC के तर्क को स्वीकार कर लिया , जैसे #+BEGIN_SRC haskell no-theme-inherit .. #+END_SRCकि कोड के लिए बस एमएसीएस डिफ़ॉल्ट फ़ॉन्टकरण जानकारी का उपयोग किया था, इस मामले में हास्केल।
रोब स्टीवर्ट

मैं यह बताना चाहता हूं कि उपरोक्त सीएसएस में नियमित कोड पाठ के लिए कोई प्रविष्टि नहीं है और यह सिर्फ काला दिखाई देता है। उस प्रविष्टि को ढूंढना अच्छा होगा। मैं प्रत्येक प्रविष्टि को अनुकूलित करने में सक्षम हूं, उदाहरण के लिए पूर्व span.org-function-name {color: rgb (255,000,255);}, लेकिन मैं अधिकांश कोड के काले रंग को नहीं बदल सकता। क्या है। क्या ऐसा होगा?
स्टीव

2

मुझे रंग समस्या के लिए एक सरल समाधान / समाधान मिला। निर्यात करने से पहले, विषय M-x customize-themesको टाइप करें और चालू करें leuven। यह एक हल्के पृष्ठभूमि के साथ एक विषय है जो श्वेत पत्र पर मुद्रण कोड के लिए उपयुक्त लगता है। निर्यात करने के बाद, थीम को फिर से बंद करें, और आप अपने मूल रंगों के साथ वापस आ जाएंगे।

मैंने किसी तरह यह मान लिया कि मुझे निर्यात के लिए विन्यास के कुछ जटिल तरीकों के साथ आना होगा, इसलिए मुझे राहत मिली कि यह सरल था!

यदि आप अक्सर ऐसा कर रहे हैं, तो यह स्वचालित रूप से ऐसा करने के लिए HTML निर्यात फ़ंक्शन को सलाह देने के लायक हो सकता है:

(defvar my-org-html-export-theme 'tsdh-light)

(defun my-with-theme (orig-fun &rest args)
  (load-theme my-org-html-export-theme)
  (unwind-protect
      (apply orig-fun args)
    (disable-theme my-org-html-export-theme)))

(with-eval-after-load "ox-html"
  (advice-add 'org-export-to-buffer :around 'my-with-theme))

हां, यह काम करता है। लेकिन अगर आप बहुत सारी फ़ाइलों के साथ काम करते हैं, जिन्हें आप HTML में अक्सर निर्यात करते हैं, तो आपको विषयों के बीच वापस स्विच करने और आगे बढ़ने के लिए बहुत कष्टप्रद होगा।
क्रिश्चियन हरेंज

1
हां, मैंने एक्सपोर्ट फंक्शन की सलाह दी: github.com/legoscia/dotemacs/blob/master/…
legoscia

ठीक है - एक समाधान भी। लेकिन, क्यों नहीं उपरोक्त मार्ग का अनुसरण करें और कुछ प्रकाश विषय के आधार पर एक कस्टम सीएसएस का उपयोग करें?
क्रिश्चियन हरेंज

@ कालेजिया ऐसा लगता है मेरे लिए काम नहीं करता है।
stardiviner
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.