組織モードのソースコードブロックにシェルコマンドの出力を含める方法は?


12

たとえば、コマンドとその出力を表示するデモを入手し、.orgCのソースコードスニペットなどのファイルに挿入したいとします。次に、ファイルをHTMLファイルにエクスポートし、多くの本にある例のようにブロックを強調表示できるようにします。

たとえば、私は

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

ただし、HTMLに変換することはできません。

shell-mode:間違った型の引数:processp、nil

常に表示されます。を置き換えるにはどのモードを使用する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ブロックの内容とまったく同じです。


あなたが実際にしたい場合は実行して、動的に農産物を出力する1つ以上のコマンドをして、HTML文書にコマンドと結果の両方を含み、あなたは変更する必要がありSRC、このように見えるようにブロックを:

#+BEGIN_SRC sh :exports both
ls
#+END_SRC

出力した場合ls、コマンドはあなたの例に記載されているディレクトリとファイルが含まれて(dir1dir2file1file2)、これはにエクスポートします。

<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)))

これは、デフォルトではOrg BabelがEmacs Lispコードブロックのサポートのみを有効にしているためです(ここで説明します)。


感謝しますob、私はさらに2つの問題を抱えました1built-in shortcutBEGIN_EXAMPLEのペアを挿入するものはありますか?スニペットを定義するために他を<s then TAB挿入するようなものBEGIN_EXAMPLEはありyasnippetますか?2org-html-handle-links: Wrong type argument: stringp, nil変更後にエラーメッセージが表示されましたBEGIN_EXAMPLEが、それ以上何もありません。組織ファイルのリンクに何か問題があるはずです。それらの多くがあります。org-exportエクスポートに失敗したときに行番号などの詳細を表示する方法?
コーディチャン14年

あなたの最初の質問への対応:はい、それがありますされて<e続きますTAB。完全なリストについては、簡単なテンプレートを参照してください。
itsjeyd 14年

2番目の質問については、あなたが何を言っているのかわかりません。どのリンクですか?元の例にはリンクがありません。一般的なアドバイスとして、最初に最小限の例を取得してみてください。EXAMPLE私の答えに示されているブロックを新しいファイルに単独で配置します。何も追加しないでください。次に、エクスポートして、何が起こるかを確認してください。それが機能する場合は、少しずつ追加して、エクスポートを続けます。ある時点でエラーが発生した場合、最後の追加(または変更)が原因であることがわかります。
itsjeyd 14年

元の投稿の問題は、BEGIN_EXAMPLEで解決されます。BEGIN_EXAMPLEエラーはorg-exportそれ自体で検出されるため、BEGIN_SRCの問題であることはわかっていますが、元のファイルにはさらに多くorg-exportorg-html-handle-links: Wrong type argument: stringp, nilエラーがあり、後にエラーメッセージのみが表示され、正確な位置はわかりません。
コーディチャン14年

@CodyChan私はフォローしていません。エクスポートしようとしているファイルの内容を確認したい場合は、質問に追加してください(後で削除できます)。
itsjeyd 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.