Org- मोड सोर्स कोड ब्लॉक में शेल कमांड के आउटपुट को कैसे शामिल किया जाए?


12

उदाहरण के लिए, मुझे कमांड और इसके आउटपुट को दिखाने के लिए एक डेमो मिला है, और मैं उन्हें .orgसी या कुछ के स्रोत कोड स्निपेट जैसी फ़ाइल में सम्मिलित करना चाहता हूं । मैं तब फ़ाइल को HTML फ़ाइल में निर्यात करने में सक्षम होना चाहता हूं, और ब्लॉक को हाइलाइट किया गया है जैसे कई पुस्तकों में उदाहरण हैं।

उदाहरण के लिए, मेरे पास है

#+BEGIN_SRC shell
$ ls
dir1
dir2
file1
file2
...
or any other examples like this
...
#+END_SRC

लेकिन इसे HTML में परिवर्तित नहीं किया जा सकता है: एक त्रुटि संदेश जो पढ़ता है

shell-mode: गलत प्रकार का तर्क: प्रोसेप, नील

हर समय दिखाता है। मुझे बदलने के लिए किस मोड का उपयोग करना चाहिए shell, और अगर मुझे #+BEGIN_SRC...#+END_SRCप्रारूप का उपयोग नहीं करना चाहिए, तो मुझे इसके बजाय क्या उपयोग करना चाहिए?

जवाबों:


16

यदि आप स्वयं उदाहरणों का निर्माण करना चाहते हैं (जो कि मैं आपके प्रश्न से प्राप्त कर रहा हूं, लेकिन अगर मैं गलत हूं तो मुझे सुधारें), एक EXAMPLEब्लॉक के बजाय एक ब्लॉक का उपयोग करें SRC:

#+BEGIN_EXAMPLE
$ ls
dir1
dir2
file1
file2
...
#+END_EXAMPLE

HTML को निर्यात करते समय, यह ब्लॉक बन जाता है:

<pre class="example">
$ ls
dir1
dir2
file1
file2
...
</pre>

जैसा कि आप देख सकते हैं, निर्यात किए गए ब्लॉक की सामग्री मूल EXAMPLEब्लॉक की सामग्री के समान है ।


यदि आप वास्तव में गतिशील रूप से आउटपुट का उत्पादन करने के लिए एक या एक से अधिक कमांड चलाना चाहते हैं और अपने HTML दस्तावेज़ में कमांड और परिणाम दोनों को शामिल करते हैं, तो आपको SRCइस तरह दिखने के लिए ब्लॉक को संशोधित करना होगा:

#+BEGIN_SRC sh :exports both
ls
#+END_SRC

के उत्पादन में तो lsआदेश निर्देशिका और फ़ाइलें आप अपने उदाहरण में सूचीबद्ध भी शामिल है ( dir1, dir2, file1, file2), यह करने के लिए निर्यात करेगा:

<div class="org-src-container">
  <pre class="src src-sh">
    ls
  </pre>
</div>

<table>
  <colgroup>
    <col class="left" />
  </colgroup>
  <tbody>
    <tr>
      <td class="left">dir1</td>
    </tr>
    <tr>
      <td class="left">dir2</td>
    </tr>
    <tr>
      <td class="left">file1</td>
    </tr>
    <tr>
      <td class="left">file2</td>
    </tr>
  </tbody>
</table>

जैसा कि आप देख सकते हैं, कोड ही एक कोड ब्लॉक में लिपटा हुआ है, और परिणाम एक तालिका में सूचीबद्ध हैं।

ध्यान दें कि आपको shस्पष्ट रूप से कोड ब्लॉक के लिए समर्थन सक्षम करना होगा :

(require 'ob-sh)
(org-babel-do-load-languages 'org-babel-load-languages '((sh . t)))

ऐसा इसलिए है क्योंकि डिफ़ॉल्ट रूप से ऑर्ग बैबेल केवल Emacs लिस्प कोड ब्लॉकों के लिए समर्थन सक्षम करता है (जैसा कि यहां बताया गया है )।


इस obबात के लिए धन्यवाद , मुझे दो और समस्याएं मिलीं 1: क्या built-in shortcutBEGIN_EXAMPLE की जोड़ी सम्मिलित करने के लिए कोई है, जैसे <s then TABकि BEGIN_EXAMPLEएक स्निपेट को परिभाषित करने के लिए इसके अलावा सम्मिलित करना yasnippet? 2: मुझे org-html-handle-links: Wrong type argument: stringp, nilत्रुटि संदेश मिल गया है , BEGIN_EXAMPLEलेकिन अधिक कुछ नहीं बदलने के बाद , मेरी ओआरजी फ़ाइल में लिंक के बारे में कुछ गलत होना चाहिए, उनमें से बहुत सारे हैं, मैं कैसे org-exportअधिक संख्या दिखाने के लिए बना सकता हूं जैसे कि लाइन नंबर जो कि निर्यात में विफल होने पर गलत है ??
कोडिचन

अपने पहले प्रश्न को संबोधित करते हुए: हां, यह है, इसके <eबाद है TAB। पूरी सूची के लिए आसान टेम्पलेट देखें ।
itsjeyd

आपके दूसरे प्रश्न के रूप में: मुझे यकीन नहीं है कि मुझे पता है कि आपका क्या मतलब है। क्या लिंक है? आपके मूल उदाहरण में कोई लिंक नहीं हैं। सलाह के एक सामान्य टुकड़े के रूप में, पहले काम करने के लिए एक न्यूनतम उदाहरण प्राप्त करने का प्रयास करें। रखो EXAMPLEके रूप में अपने आप में एक नई फ़ाइल में मेरा उत्तर में दिखाया गया है ब्लॉक। कुछ और न जोड़ें। फिर इसे निर्यात करने का प्रयास करें और देखें कि क्या होता है। यदि वह काम करता है, तो धीरे-धीरे अधिक सामान जोड़ें और जैसा कि आप करते हैं, निर्यात करते रहें। यदि आप किसी बिंदु पर एक त्रुटि में भाग लेते हैं तो आपको पता चलेगा कि आपके द्वारा किया गया अंतिम जोड़ (या परिवर्तन) इसका कारण है।
इसका अजायबघर

मेरे मूल पोस्ट की समस्या BEGIN_EXAMPLE द्वारा हल की गई है। BEGIN_EXAMPLE त्रुटि org-exportस्वयं द्वारा स्थित है , इसलिए मुझे पता है कि यह BEGIN_SRC समस्या है, लेकिन मेरी मूल फ़ाइल में और भी बहुत कुछ हैं, बाद में org-export, केवल org-html-handle-links: Wrong type argument: stringp, nilत्रुटि संदेश दिखाई देता है और मुझे पता नहीं है कि सटीक स्थिति कहाँ है।
कोडिचन

@CodyChan मैं फॉलो नहीं कर रहा हूं। यदि आप चाहते हैं कि मुझे आपके द्वारा निर्यात की जा रही फ़ाइल की सामग्री पर एक नज़र डालें, तो इसे अपने प्रश्न में जोड़ें (आप इसे फिर से हटा सकते हैं)।
itsjeyd
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.