मैं बोल्ड फॉन्टिफिकेशन को रोकने के लिए ओआरजी-मोड में * कैसे बच सकता हूं


12

अगर मैं *shrug*ओआरजी मोड में कुछ लिखता हूं , तो यह स्वचालित रूप से बोल्ड टेक्स्ट के रूप में फ़ॉन्ट किया जाएगा । मैं इसे कैसे रोक सकता हूं, अर्थात वास्तव में *shrug*निर्यात होने पर वाचालता प्रकट कर सकता हूं ?

संपादित करें:

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

यह कुछ महत्वपूर्ण चीजें हैं, यही कारण है कि यह बोल्ड में लिखा गया है। लेकिन कुछ और के लिए, मेरे पास कोई आइडिया * श्रग * नहीं है।


1
यदि आप इसे LaTeX को बाद में निर्यात कर रहे हैं, तो आप कोशिश कर सकते हैं \ast{}shrug\ast{}या \star{}shrug\star{}इसी तरह, HTML के साथ आप इकाई एन्कोडिंग का उपयोग कर सकते हैं: &#2a;या यदि तारांकन से पहले या बाद में रिक्त स्थान जोड़ना एक विकल्प है, तो यह भी काम करेगा।
wvxvw

ऐसा लगता है कि सुवायु के उत्तर को सिर्फ शब्दशः मार्करों में लपेटने से आप क्या चाहते हैं। वैकल्पिक रूप से, आप org-जोर-एलीस्ट को संशोधित कर सकते हैं ताकि एक अन्य चरित्र का उपयोग बोल्ड टेक्स्ट के लिए किया जा सके।
user2699

बिल्कुल नहीं। = * श्रग * = निर्यात किए गए HTML में परिणाम को एक code-tag में लपेटा जाना है, और मार्कडाउन में backticks है। मैं चाहता हूं कि इसे किसी भी तरह से स्वरूपित न किया जाए।
तिमोर

यह दर्शाने के लिए संपादित प्रश्न कि ऑर्ग-जोर-एलिस्ट बदलना वास्तव में एक विकल्प नहीं है। मैं अपनी .org फ़ाइल में पहले से मौजूद सभी चीज़ों को बदलना नहीं चाहता।
तिमोर

2
\ast{}shrug\ast{}Wvxvw ने उल्लेख शायद आपका सबसे अच्छा विकल्प है। यह उपयुक्त वर्ण संस्थाओं का उपयोग करते हुए HTML को ∗shrug∗और लेटेक्स को निर्यात करता है $\ast$shrug$\ast$org-toggle-pretty-entitiesorg बफर में UTF8 वर्णों के रूप में उन्हें प्रदर्शित करता है।
mutbuerger

जवाबों:


9

यह उत्तर शून्य चौड़ाई वाले अंतरिक्ष वर्णों (जो मैंने अपने अन्य उत्तर में यहाँ सुझाया है ) के बजाय ( ) का उपयोग करने के लिए एमएसीएस-ऑर्ग-मोड जीएनयू सूची पर सामूहिक सुझावों के बाद प्रेरित है ।org-entityC-h i g (org) Special symbols\ast{}

नीचे एक सामान्य समाधान है जहां उपयोगकर्ता को विभिन्न प्रतीकों के लिए ओआरजी संस्थाओं को याद रखने की आवश्यकता नहीं है। जब उपयोगकर्ता करता है तो यह ओआरजी इकाई (यदि उपलब्ध हो) सम्मिलित करता है C-u SYMBOL; काम करता है के लिए C-u *, C-u /, C-u =, आदि

(defun modi/org-entity-get-name (char)
  "Return the entity name for CHAR. For example, return \"ast\" for *."
  (let ((ll (append org-entities-user
                    org-entities))
        e name utf8)
    (catch 'break
      (while ll
        (setq e (pop ll))
        (when (not (stringp e))
          (setq utf8 (nth 6 e))
          (when (string= char utf8)
            (setq name (car e))
            (throw 'break name)))))))

(defun modi/org-insert-org-entity-maybe (&rest args)
  "When the universal prefix C-u is used before entering any character,
    insert the character's `org-entity' name if available.

    If C-u prefix is not used and if `org-entity' name is not available, the
    returned value `entity-name' will be nil."
  ;; It would be fine to use just (this-command-keys) instead of
  ;; (substring (this-command-keys) -1) below in emacs 25+.
  ;; But if the user pressed "C-u *", then
  ;;  - in emacs 24.5, (this-command-keys) would return "^U*", and
  ;;  - in emacs 25.x, (this-command-keys) would return "*".
  ;; But in both versions, (substring (this-command-keys) -1) will return
  ;; "*", which is what we want.
  ;; http://thread.gmane.org/gmane.emacs.orgmode/106974/focus=106996
  (let ((pressed-key (substring (this-command-keys) -1))
        entity-name)
    (when (and (listp args) (eq 4 (car args)))
      (setq entity-name (modi/org-entity-get-name pressed-key))
      (when entity-name
        (setq entity-name (concat "\\" entity-name "{}"))
        (insert entity-name)
        (message (concat "Inserted `org-entity' "
                         (propertize entity-name
                                     'face 'font-lock-function-name-face)
                         " for the symbol "
                         (propertize pressed-key
                                     'face 'font-lock-function-name-face)
                         "."))))
    entity-name))

;; Run `org-self-insert-command' only if `modi/org-insert-org-entity-maybe'
;; returns nil.
(advice-add 'org-self-insert-command :before-until #'modi/org-insert-org-entity-maybe)

तो जब उपयोगकर्ता प्रकार C-u *, \ast{}डाला जाता है और संदेश नीचे गूंज क्षेत्र में प्रदर्शित किया जाता है,

प्रतीक * के लिए 'org-Unit' \ ast {} डाला गया।

तो org-pretty-entitiesके लिए सेट है tऊपर, डाला \ast{}किया जाएगा दिखाया गया के रूप में *

यदि कोई org-entityवर्ण X के लिए मौजूद नहीं है और यदि उपयोगकर्ता C-u X करता है , तो X को केवल 4 बार डाला जाता है (जैसा C-uकि आमतौर पर करते हैं)।


1
यह वास्तव में सुविधाजनक लगता है। एक शराबी (मेरी राय में) जो बना हुआ है, वह है .org फ़ाइल, जिसमें अब तक कोई LaTeX निर्माण शामिल नहीं है, अब पूरे फ़ाइल में गैर-ऑर्ग-मोड सिंटैक्स (LaTeX) के बिट्स बिखरे हुए हैं। वैसे, क्या कोई कारण है कि कोई निर्माण \*thisisnotbold\*मौजूद नहीं है?
तिमोर

1
यह org सिंटैक्स भी है। की जाँच करें org-entitiesप्रलेखन।
कौशल मोदी

8

शून्य WIDTH अंतरिक्ष यूनिकोड चार का उपयोग करना

पहले तारांकन से पहले या दूसरे तारांकन के बाद आप शून्य-चौड़ाई वाले अंतरिक्ष वर्ण (नीचे के स्निपेट्स में [ZWS] द्वारा) को जोड़कर बोल्ड जोर को विफल कर सकते हैं।

नीचे दिए गए दोनों स्निपेट्स ने मेरे परीक्षण में HTML को ठीक निर्यात किया:

  • [ZWS] पहले तारांकन से पहले

    This is some *bold* test and this is ​[ZWS]*not bold*.
    
  • [ZWS] दूसरे तारांकन के बाद

    This is some *bold* test and this is *not bold*​[ZWS].
    

आप ZERO WIDTH SPACE (यूनिकोड नाम) दर्ज कर सकते हैं C-x 8 RET 200b RET
मैं इसे बहुत बार उपयोग करता हूं, इसलिए मैंने इसे बाध्य किया हैC-x 8 0


अपडेट करें

एमएसीएस-ऑर्ग-मोड मेलिंग सूची पर चर्चा के अनुसार , भागने के लिए गैर-एएससीआईआई पात्रों का उपयोग करने की सिफारिश नहीं की जाती है; इसके बजाय org-entitiesयदि लागू हो तो उपयोग किया जाना चाहिए। मैं भी इससे सहमत था और इस दूसरे समाधान के साथ आया था जो org-entitiesवास्तव में आसान बनाता है ( C-u *इस मामले में)।


तकनीकी रूप से यह समस्या को हल करने का एक बहुत ही त्वरित तरीका है। क्या यह ZWS को व्हॉट्सएप के रूप में व्याख्या करने वाले org- मोड पर निर्भर नहीं है? इसके अलावा, मुझे डर समाधान अन्य लोगों को संपादन ऑर्ग फ़ाइल ... के लिए गैर obvius है
तिमोर

@timor मैंने emacs-orgmode@gnu.orgमेलिंग सूची पर इस चर्चा को लाया है । यदि रुचि है, तो आप यहाँ चर्चा में अनुसरण / जोड़ सकते हैं
कौशल मोदी

@timor, यह स्पष्ट नहीं है, लेकिन यहां दिए गए सभी समाधानों में यह एकमात्र ऐसा है जो emacs कॉन्फ़िगरेशन को संशोधित किए बिना काम करता है, इसलिए यह सबसे स्पष्ट है यदि आप अपनी फ़ाइलों को साझा करना चाहते हैं।
14:26 पर user2699

@ user2699 एफडब्ल्यूआईडब्ल्यू, फाइलों में ऑर्गन एंटिटीज का उपयोग बिना किसी यूजर कॉन्फिगरेशन के तुरंत काम करेगा .. यह सिर्फ फाइलों में प्लेन एससीआई का उपयोग है \ast{}। मेरा अन्य समाधान बस \ast{}याद करने के लिए तेजी से और आसानी से प्रवेश करता है।
कौशल मोदी मोदी

3

वर्बेटिम द्वारा, यदि आप वास्तव में निर्यात किए गए LaTeX में कुछ मार्कअप का उपयोग करते हैं, तो आप बस उपयोग कर सकते हैं =*shrug*=। हालाँकि यदि आप चाहते हैं कि इसे निर्यात किया जाए *shrug*, और आप हर समय ऐसा करना चाहते हैं, तो मैं फ़िल्टर की सलाह दूंगा । हालांकि, आपको केवल कुछ उदाहरणों के लिए इसकी आवश्यकता है *shrug*, आपको @wvxvw द्वारा सुझाए गए विकल्प का उपयोग करना चाहिए। आप मैक्रोज़ का उपयोग करके साफ-सफाई कर सकते हैं । कुछ उदाहरण अनुसरण करते हैं।

फिल्टर

(defun my-bold (contents backend info)
  (when (org-export-derived-backend-p backend 'latex)
    (replace-regexp-in-string "\\`\\\\textbf{\\(.+\\)}"
                              "\\\\ast{}\\1\\\\ast{}" contents)))

(add-to-list 'org-export-filter-bold-functions 'my-bold)

अनिवार्य रूप से उपरोक्त फ़िल्टर \textbf{..}ट्रांसकोड किए गए स्ट्रिंग में मार्कअप के लिए दिखता है , और \ast{}..\ast{}जो कुछ भी अंदर लपेटा गया था, उसे बदले बिना इसे बदल देता है {..}। मैंने नियमित अभिव्यक्ति और प्रतिस्थापन स्ट्रिंग का परीक्षण नहीं किया है, इसलिए गलतियां हो सकती हैं, लेकिन आपको विचार मिलता है। इसी तरह अन्य बैकेंड को कवर करने के लिए, कोई इस तरह अतिरिक्त स्निपेट शामिल कर सकता है:

(when (org-export-derived-backend-p backend 'html)
   (replace-regexp-in-string "<b>\\(.+\\)</b>" "\&#2a;\\1\&#2a;" contents))

ऊपर की नियमित अभिव्यक्ति के लिए एक ही कैवेट धारण करता है।

मैक्रो

संगठन स्रोत:

#+macro: nobold @@latex:\ast{}$1\ast{}@@ @@html:&#2a;$1&#2a;@@

This text is *bold* this is nobold{{{not}}}

के रूप में LaTeX को निर्यात:

This text is \textbf{bold} this is \ast{}not\ast{}

और HTML के रूप में:

This text is <b>bold</b> this is  &#2a;not&#2a;

आप निश्चित रूप से मैक्रो को जितने चाहें उतने बैकएंड जोड़ सकते हैं।

संपादित करें: जैसा कि कौशल टिप्पणियों में बताते हैं, इस मामले में लेटेक्स के लिए निर्यात स्निपेट वैकल्पिक है। हालांकि, जब भी नंगे लेटेक्स को शामिल किया जाता है, मैं उनका उपयोग करना पसंद करता हूं, क्योंकि मुझे org-entitiesऑर्ग स्रोत में नंगे लेटेक्स की पहचान करने के पीछे और विशिष्ट नियमों की जानकारी रखना मुश्किल है ।

ध्यान दें:

  • फ़िल्टर के उदाहरण अप्रयुक्त हैं,
  • मुझे कोई जानकारी नहीं है HTML, इसलिए संबंधित बिट्स में कुछ गलतियां हो सकती हैं।

क्या यह स्थूल परिभाषा पर्याप्त नहीं है #+macro: nobold \ast{}$1\ast{}:? सूची astके सदस्यों में से एक है org-entities, जो निर्दिष्ट करता है कि लेटेक्स, एचटीएमएल, एएससीआई, आदि निर्यातों को किस तरह दिखना चाहिए ("ast" "\\ast" t "&lowast;" "*" "*" "*"):। उस सूची में तत्वों का क्रम "नाम, LaTeX प्रतिस्थापन, LaTeX mathp, HTML प्रतिस्थापन, ASCII प्रतिस्थापन, लैटिन 1 प्रतिस्थापन, utf-8 प्रतिस्थापन" है।
कौशल मोदी

@kaushalmodi हां यह होगा, हालांकि जब से हम पहले से ही जानते हैं कि यह LaTeX है, इसे लेटेक्स स्निपेट के अंदर डालने में कोई बुराई नहीं है। मेरे अनुभव में स्निपेट का उपयोग इसकी अधिकता के कारण अधिक मजबूत है।
क्वर्की

-1

यह चर org- जोर-एलिस्ट द्वारा नियंत्रित किया जाता है, और आसानी से संशोधित किया जा सकता है।

  • बोल्ड टेक्स्ट पर बिंदु डालें, कमांड का उपयोग करें C-u C-x =कि चेहरा खोजने के लिए कर्सर-स्थिति क्या है , ध्यान दें कि इसके पास संपत्ति है org-emphasis
  • customize-groupऑर्ग-जोर के लिए कॉल करें और खोजें
  • टेक्स्ट को चिह्नित करने के विभिन्न विकल्पों के साथ, ओआरजी-जोर-एलिस्ट को दिखाना चाहिए।
  • * के अनुरूप प्रविष्टि हटाएं
  • परिवर्तन लागू करें, और org-mode या emacs को पुनरारंभ करें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.