org-mode,代码示例为html

时间:2013-11-25 13:29:50

标签: emacs org-mode literate-programming

我正在尝试在Emacs org-mode中将一个有文化的代码示例嵌入为HTML。

我的想法是我可以使用像

这样的东西
#+BEGIN_SRC html :noweb-ref content :exports source
<span>some content </span>
#+END_SRC

#+BEGIN_HTML :noweb tangle
<<content>>
#+END_HTML

这样的事情会成为可能吗?因为目前我必须将要包含(引用)的部分复制并粘贴到HTML源和我要在文档中显示的SRC位中。

编辑:具体的用例是我想编写一个文档来解释一些HTML结构(作为代码块)并在文档中嵌入(引用)相同的结构,而不需要复制+糊

3 个答案:

答案 0 :(得分:3)

我相信你必须做出以下改变:

  • 为您的第一个块命名
  • 将HTML块更改为SRC块
  • 向第二个区块添加:tangle <file-name>

试试这个:

#+NAME: content
#+BEGIN_SRC html :exports none
<span>some content </span>
#+END_SRC

#+BEGIN_SRC html :tangle output-file :exports none :noweb yes
<<content>>
#+END_SRC

答案 1 :(得分:3)

我最近有类似的要求,写了ob-browser。它需要HTML源块并使用org-babel和phantomjs来显示浏览器如何呈现它们的图像。

所以你可以说:

#+BEGIN_SRC browser :out demo.png
<!DOCTYPE html>
<html>
  <head>
      <link href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap.min.css" rel="stylesheet" media="screen">
  </head>
  <body>
      <div class="row">
          <div class="span6 offset1">
              <h1>Rendered PNG</h1>

              <button class="btn btn-primary">You Can't Press This</button>
          </div>
      </div>
  </body>
</html>
#+END_SRC

获取图片:

Rendered

它并不完全符合你的要求,但可能会刮伤同样的痒......

答案 2 :(得分:3)

以下示例改编自我用于编写Org-mode的类似内容。它似乎也适用于您的用例。 #+OPTIONS: d:RESULTS确保导出:RESULTS:抽屉。将其放入组织模式缓冲区并导出为HTML。

#+OPTIONS: d:RESULTS

* Examples

The HTML source
#+name: eg-1
#+begin_src org :results replace drawer :exports both :post wrap-html(text=*this*)
  A <b>bold</b> statement.
#+end_src

Results in the output
#+results: eg-1

* Utils                                                           :noexport:
#+name: wrap-html
#+begin_src emacs-lisp :var text="" :results raw
(concat "#+BEGIN_HTML\n<div class=\"html-output\">\n" text "\n</div>\n#+END_HTML")
#+end_src

您可以通过将标题添加为子树标题的属性来避免重复标题,例如

* Example 2
:PROPERTIES:
:results: replace drawer
:exports: both
:post: wrap-html(text=*this*)
:END:

#+name: eg-2
#+begin_src org
  Some <i>italic</i>.
#+end_src

#+results: eg-2

#+name: eg-3
#+begin_src org
  You can <b>nest <i>inline</i> tags</b>.
#+end_src

#+results: eg-3

但请注意,除非明确覆盖,否则这些标头将应用于子树中的每个源块。