ऑर्ब-मोड में उद्धरण के साथ इनलाइन वर्बेटिम और कोड


37

संगठन-मोड में मैं के साथ पाठ के चारों ओर कर सकते हैं =या ~में जगह पाठ करने के लिए इनलाइन शब्दशः या कोड मोड।

हालाँकि यह विफल रहता है यदि पाठ में उद्धरण हैं, और मैं प्रलेखन में स्पष्टीकरण या समाधान नहीं पा सका ।

उदाहरण के लिए:

  • =hello= क्रिया के रूप में प्रस्तुत करना
  • ~hello~ कोड के रूप में रेंडर
  • =hello'= क्रिया के रूप में प्रस्तुत करने में विफल रहता है
  • ~hello'~ कोड के रूप में प्रस्तुत करना विफल रहता है

एकमात्र समाधान जो मुझे अब तक मिला है, वह अदृश्य अक्षर, जैसे टाइपिंग C-x 8 <RET> 200b <RET>, इस प्रश्न में समझाया गया है ।

यह क्यों है (यह एक बग है?) और मैं अदृश्य पात्रों को सम्मिलित किए बिना इस समस्या से कैसे बच सकता हूं?

जवाबों:


47

सबसे पहले: यह Emacs है। यह बग नहीं है, यह एक सेटिंग है!

दूसरी बात, @glucas यह कहने में सही है कि जो आप चाहते हैं उसे पाने के लिए आपको संशोधितorg-emphasis-regexp-components करने की आवश्यकता है । हालाँकि, मैं उसके (@ मालाबार के) कोड में दो संशोधन सुझाना चाहता हूँ और थोड़ा और संदर्भ प्रदान करना चाहता हूँ:

  1. आपको org-emphasis-regexp-componentsकिसी एकल घटक को संशोधित करने के लिए अपनी init-file के संपूर्ण मूल्य को कॉपी करने की आवश्यकता नहीं है । आपके उपयोग के मामले के लिए निम्नलिखित पर्याप्त है:

    (setcar (nthcdr 2 org-emphasis-regexp-components) " \t\r\n,\"")
  2. के माध्यम से लोड करने से पहले आपको संशोधित करने की आवश्यकता नहीं है । अपने संशोधनों के बाद बस निम्नलिखित पंक्ति जोड़ें:org-emphasis-regexp-componentsorg-mode(require 'org)

    (org-set-emph-re 'org-emphasis-regexp-components org-emphasis-regexp-components)

अधिक संदर्भ

यदि आप मार्कअप में काम करने के तरीके के अन्य पहलुओं को अनुकूलित करना चाहते हैं org-mode, तो यह जान लें:

का मूल्य org-emphasis-regexp-componentsपांच प्रविष्टियों के साथ एक सूची है।

  1. पहला प्रवेश नियंत्रण जो पात्रों को तुरंत मार्कअप वर्णों की अनुमति देता है । यदि आप why=hello=सही तरीके से प्रस्तुत करना चाहते हैं, तो आपको इस प्रविष्टि को संशोधित करना होगा।

    (setcar org-emphasis-regexp-components "...")
  2. दूसरी प्रविष्टि नियंत्रण जो पात्रों को मार्कअप वर्णों का तुरंत पालन करने की अनुमति है । यदि आप =hello=thereसही तरीके से प्रस्तुत करना चाहते हैं, तो आपको इस प्रविष्टि को संशोधित करना होगा।

    (setcar (nthcdr 1 org-emphasis-regexp-components) "...")
  3. तीसरी प्रविष्टि उन वर्णों को निर्दिष्ट करती है, जिन्हें बॉर्डर वर्णों के रूप में अनुमति नहीं दी गई है , अर्थात, ऐसे वर्ण जो तुरंत एक मार्कअप चरित्र का अनुसरण करते हैं या एक क्लोजिंग मार्कअप चरित्र से पहले होते हैं। आपको इसे ='hello'=सही ढंग से प्रस्तुत करने जैसी चीजों को संशोधित करने की आवश्यकता होगी ।

    (setcar (nthcdr 2 org-emphasis-regexp-components) "...")
  4. चौथी प्रविष्टि उन वर्णों को सूचीबद्ध करती है जो आपके चिह्नित स्ट्रिंग के शरीर में अनुमत होते हैं, अर्थात, वे अक्षर जो सीमा वर्णों के बीच दिखाई देते हैं । आपको इसे संशोधित करने की आवश्यकता शायद ही होगी; डिफ़ॉल्ट रूप से, किसी भी चरित्र को एक शरीर चरित्र के रूप में अनुमति दी जाती है।

    (setcar (nthcdr 3 org-emphasis-regexp-components) "...")
  5. पांचवीं प्रविष्टि निर्दिष्ट करती है कि एक चिह्नित अभिव्यक्ति के अंदर कितने नए अंक की अनुमति है। डिफ़ॉल्ट रूप से, org-modeएक एकल नईलाइन की अनुमति देता है। इसलिए यदि आप पाठ में मार्कअप जोड़ने में सक्षम होना चाहते हैं, जो लगातार दो से अधिक लाइनों तक फैला है, तो आपको इस प्रविष्टि को संशोधित करना होगा।

    (setcar (nthcdr 4 org-emphasis-regexp-components) N)

    ... जहां Nआप अनुमति देना चाहते हैं उन नई संख्याओं की संख्या है।

संबंधित पोस्ट

लोगों को इस मुद्दे पर काफी बार में लगता है। आपके द्वारा उल्लिखित पद के अलावा , StackOverflow पर कम से कम दो और प्रश्न हैं जो बहुत ही समान मुद्दों से निपटते हैं:


7
मैंने आपके उत्तर को रद्द कर दिया, लेकिन उत्तर की गुणवत्ता पर भी प्रशंसा करना चाहूंगा।
कौशल मोदी

धन्यवाद @itsjeyd यह बहुत अच्छा काम करता है यदि मैं उन दो पंक्तियों को अंतःक्रियात्मक रूप से चलाता हूं तो एक बार Emacs पूरी तरह से मेरे बफ़र्स के साथ पहले से ही लोड हो चुका है। हालाँकि, और अजीब तरह से, मैं "Symbol's value as variable is void: org-emphasis-regexp-components"तब भी भागता हूँ जब मैं उन सभी लाइनों को अपनी .emacsफ़ाइल के नीचे रखता हूँ । इस मामले में कोई विचार क्यों हो सकता है?
एमिलियो वाज़केज़-रीना

@ AmelioVazquez-Reina आपका स्वागत है :) बस यह सुनिश्चित करने के लिए: क्या आप किसी भी अनुकूलन करने से पहले (require 'org)अपनी .emacsफ़ाइल में हैं org-emphasis-regexp-components?
itsjeyd

1
@ AmelioVazquez-Reina मुझे खुशी है कि अब आपके लिए सब कुछ ठीक से काम कर रहा है :) आपकी टिप्पणियों सही हैं - आपको (require 'org)इसका उपयोग करने में सक्षम होने के लिए अपनी इन-फाइल में आवश्यकता नहीं है। यदि आप नहीं करते हैं, तो Emacs अपने आप लोड हो जाएगा जब आप: (a) .orgचालू सत्र में पहली बार कोई फ़ाइल खोलें , या (b) M-x org-modeचालू सत्र में पहली बार मैन्युअल रूप से मोड सक्षम करें , या (c) ) जब यह एक सहेजे गए डेस्कटॉप को पुनर्स्थापित करता है जिसमें कम से कम एक .orgफ़ाइल शामिल होती है। (contd।)
itsjeyd

1
@ AmelioVazquez-Reina (contd।) बात यह है : Emacs स्वचालित रूप से सिर्फ इसलिए लोड नहीं होगाorg-mode क्योंकि आप इसके लिए अपनी फ़ाइल में कुछ अनुकूलन डालते हैं। इसलिए आपको (require 'org)इसके किसी भी वैरिएबल को कस्टमाइज़ करने से पहले इसकी आवश्यकता है। मोड को पूरी तरह से लोड किए बिना, Emacs को पता नहीं चलेगा कि चर के साथ क्या करना है org-emphasis-regexp-components; वे परिभाषित नहीं होते हैं जब Emacs पहली बार उनका सामना करता है, इसलिए Symbol's value as variable is voidसंदेश।
itsjeyd

11

अधिक सरल विकल्प है: इनलाइन स्रोत ब्लॉकों का उपयोग करें :

src_python{hello'}

यह उद्धरण चिह्नों जैसे वर्णों की समस्याओं के बिना काम करता है, और यह इनलाइन कोड के लिए सिंटैक्स हाइलाइटिंग प्रदान करता है।

निर्यात करते समय इनलाइन स्रोत कोड शामिल करने के लिए, आप इस घोषणा को हेडर में जोड़ना चाहेंगे:

#+PROPERTY: header-args :exports code

1
यह एक महान टिप है! इनलाइन कोड के लिए सिंटैक्स हाइलाइटिंग प्राप्त करने के लिए बहुत अच्छा!
शॉन

यह भी खूब रही! यह मुझे लेटेक्स की याद दिलाता है: (
क्रिस

7

आप org-emphasis-regexp-componentsइस ब्लॉग पोस्ट में @Malabarba द्वारा वर्णित उद्धरण वर्ण हटा सकते हैं ।

उस पोस्ट से संबंधित कोड:

;; This HAS to come before (require 'org)
(setq org-emphasis-regexp-components
      '("     ('\"{“”"
        "-   .,!?;''“”\")}/\\“”"
        "    \r\n,"
        "."
        1))

इसके लिए डॉक्टर स्ट्रिंग देखें org-emphasis-regexp-components: डिफ़ॉल्ट रूप से उद्धरण वर्णों पर विचार किया जाता है:

सीमा - वर्ण वर्णों के रूप में निषिद्ध वर्ण।

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