2015-04-08 14 views
5

एक साधारण जीएनयू एम 4 प्रश्न, लेकिन मुझे सही जवाब नहीं मिल रहा है।जीएनयू एम 4: बैकटिक्स से बचने (0)

``` 
echo Hello 
``` 

मैं 3 बैकटिक युक्त एक जीएनयू एम 4 मैक्रो कैसे बना सकता हूँ: मैं/एक markdown हैडर प्रारंभिक मुद्रित करने के लिए एक कोड खंड समाप्त होने के लिए करना चाहते हैं? जैसे

define(`md_code',````') 
md_code 
echo Hello 
md_code 

उत्तर

5

कुछ एम 4 मेलिंग सूची पर एरिक ब्लेक से एक जवाब मिला: http://lists.gnu.org/archive/html/m4-discuss/2015-04/msg00004.html

changequote अपने दोस्त है। यह यह करना होगा:

define(`md_code', changequote([, 
])[changequote([,])```changequote(`,')]changequote(`,')) 

मैं उद्धरण दो बार बदलने के लिए: एक बार मैक्रो परिभाषा के आसपास, के बाद से परिभाषा ही एक असंतुलित ढंग से (बैकटिक) का उपयोग करने का इरादा रखता है; और फिर से मैक्रो विस्तार में, क्योंकि विस्तार असंतुलित तरीके से आउटपुट आउटपुट करेगा; प्रत्येक परिवर्तित उद्धरण के लिए, मूल उद्धरण पुनर्स्थापित होना चाहिए। यह मानता है कि डिफ़ॉल्ट उद्धरण एम 4 रन में ' पर (बैकटिक्स) पर रहता है।

अपने मामले में हालांकि, मैं किसी और कुछ करने के लिए सामने changequote का उपयोग कर की सलाह देते हैं, और दुनिया भर में डिफ़ॉल्ट (बैकटिक) के नियमों के हवाले करने के बजाय नियमों के हवाले से उन के तहत अपने इनपुट लिखें। याद रखें कि ऑटोकॉन्फ जानबूझकर [] को उद्धरण वर्णों, के रूप में जाना जाता है क्योंकि (बैकटिक्स) और 'शैल स्क्रिप्ट में संतुलित जोड़े में नहीं होने के कारण, आउटपुट में संतुलित होने की संभावना अधिक थी। वास्तव में, 2- या 3-बाइट उद्धरण तारों का चयन करना भी कम अस्पष्ट है, हालांकि इसके बाद इसे और टाइपिंग की आवश्यकता होती है।

संबंधित मुद्दे