2012-04-24 24 views
15

मैं उस पाठ को रखना चाहता हूं जिसमें अंडरस्कोर है।मार्कडाउन - क्या मैं उनसे बचने के लिए अंडरस्कोर कर सकता हूं और मार्कडाउन इटालिक्स नहीं है?

यह कोड नहीं है और इसलिए मैं कोड प्रारूप का उपयोग नहीं करना चाहता हूं।

मैं को इटैलिकिस के रूप में इसे निर्देश के रूप में चिह्नित करने के लिए मार्कडाउन को रोकना चाहता हूं।

मैं \ के साथ _each_underscore (देखें!) से बच सकता हूं लेकिन मेरे पास कुल 20 है और यह स्रोत में बदसूरत दिखता है, बनाए रखने में कठोर और बहुत शुष्क नहीं है।

कोई अन्य विकल्प?

उत्तर

13

विशेष स्टैक ओवरफ़्लो के सर्वर के सी # संस्करण MarkdownSharp (जहां यह optional behavior है) और क्लाइंट-साइड JavaScript संस्करण PageDown में कुछ Markdown कार्यान्वयन –, लेकिन यह भी जैसे GitHub's flavor – आपके द्वारा वर्णित कारणों के लिए मार्कडाउन स्पेक से विचलित हो गया है।

स्टैक ओवरफ़्लो के रूप में इस पर कुछ इतिहास के लिए, दो ब्लॉग पोस्ट Three Markdown Gotchas और Markdown, One Year Later देखें।

चूंकि यह मार्कडाउन की एक सामान्य रूप से आलोचनात्मक आलोचना है, इसलिए शायद यह अधिक क्रियान्वयन है जो या तो इस व्यवहार को उपयोगकर्ता-सेटटेबल बनाते हैं, या बस कठोर संस्करण के साथ जाते हैं। तो यह इस बात पर निर्भर करता है कि आप किस कार्यान्वयन का उपयोग कर रहे हैं।

यदि आप जॉन ग्रबर के मूल पर्ल कार्यान्वयन (यानी "रेगेक्स प्रतिस्थापन के टन" संस्करण) पर आधारित पोर्ट का उपयोग कर रहे हैं, तो यह स्वयं को स्वयं परिवर्तन करने के लिए काफी आसान होना चाहिए। प्रासंगिक फ़ंक्शन को _DoItalicsAndBold (मूल पर्ल संस्करण, शोडाउन/पेजडाउन), DoItalicsAndBold (मार्कडाउनशर्प), _do_italics_and_bold (पायथन-मार्कडाउन 2) या इसी तरह कहा जाता है।

function _DoItalicsAndBold(text) { 

    // <strong> must go first: 
    text = text.replace(/([\W_]|^)(\*\*|__)(?=\S)([^\r]*?\S[\*_]*)\2([\W_]|$)/g, 
    "$1<strong>$3</strong>$4"); 

    text = text.replace(/([\W_]|^)(\*|_)(?=\S)([^\r\*_]*?\S)\2([\W_]|$)/g, 
    "$1<em>$3</em>$4"); 

    return text; 
} 
: सख्त नियमित अभिव्यक्ति के लिए स्टैक ओवरफ़्लो पर यहां इस्तेमाल किया जाता है के लिए हमारे PageDown version of that function पर

देखो