ノートのWebページを生成するためにorg-modeを使用しています。追加のHTMLなどを生成するコードを埋め込むことはできますか?org-babelは結果を生成しますが、コードに加えて結果を表示するようです。コード自体を置き換えるHTMLを作成するコードが欲しいです。
ノートのWebページを生成するためにorg-modeを使用しています。追加のHTMLなどを生成するコードを埋め込むことはできますか?org-babelは結果を生成しますが、コードに加えて結果を表示するようです。コード自体を置き換えるHTMLを作成するコードが欲しいです。
回答:
コメントで述べたように、コードブロックのエクスポートのセクションでは、:exports
オプションの許容値について説明します:(code
ブロックの内容)、results
(その評価の結果)、both
(コードと結果)、none
(何もエクスポートされません)。
デフォルトでは、Orgはソースコードブロックの評価結果を解釈しようとします(たとえば、それをテーブルに変換します)。このような解釈が失敗した場合、評価結果はモノスペーステキストとしてフォーマットされ<pre> ... </pre>
、HTMLにエクスポートされたときにラップされているように見えます。
幸いにも私たちが使用してブロックの特別な種類の評価結果を置くために組織を伝えることができます:results
(参照評価の結果とを:results
)。ソースコードブロックを使用してHTMLページの一部を生成できるようにしたい場合は、Or :results value html
または:results output html
Orgを使用して結果を#+BEGIN_HTML ... #+END_HTML
ブロックにラップします。
以下は最小限の例です(#+OPTIONS
無関係です。を使用してエクスポートされたHTMLコードを簡単に検査できるように追加しましたC-c C-e h H)。
#+OPTIONS: html-postamble:nil
#+OPTIONS: html-preamble:nil html-scripts:nil html-style:nil
#+OPTIONS: html5-fancy:nil tex:t
Some text.
#+BEGIN_SRC python :exports results :results value html
return "<hr> Generated HTML code. <hr>"
#+END_SRC
More text.
#+begin_src emacs-lisp :exports none
(defun org-babel-execute:html (body params) body)
#+end_src
#+begin_src html :exports results :results html
<input type="button" name="clickme" value="Click Me!">
#+end_src
これにより、ボタン付きのHTMLページ(HTMLへのエクスポート時に)が生成されます。
混乱を避けるため、最初のブロックはエクスポート中に評価されません。ポイントをそれに移動してを押して評価する必要がありC-c C-cます。
さらに、あなたは電話する必要があります
(org-babel-do-load-languages 'org-babel-load-languages '((html . t)))
または、このコードが実行される前に類似しているため、Babelはhtml
ブロックを実行可能ファイルとして認識します。
しかし実際には、この例は主に、特定のバックエンドをターゲットとする独自の「言語」を追加する方法を示すことを目的としています。新しい言語を追加せずに、簡単にそれを行うことができます。おそらく、次のようなことを行うことで、複雑さを軽減できます。
#+begin_src emacs-lisp :exports results :results html
"<input type=\"button\" name=\"clickme\" value=\"Click Me!\">"
#+end_src
私の最初のアプローチの利点は、で編集するとC-c '、html-mode
オンになるということです。
ob-html.el
。したがって、HTMLのブロックをエクスポートするには、そのような関数を定義する必要があります(私が使用する他のマークアップ、特にYAMLに対してこれを行います)。これは#+begin_html ... #+end_html
、変数をブロックに渡すことで、プリミティブテンプレートエンジンとしても使用できるという点が異なります(実際org-babel-execute:html
よりも複雑です)。
:exports results
ます。コードブロックのエクスポートを参照してください。(これがあなたのためにうまくいくかどうか、私がこれを答えに変換する必要があるかどうかを知らせてください。)