3

我正在尝试在 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 结构(作为代码块)并在文档中嵌入(引用)这些相同的结构,而不需要复制+粘贴

4

3 回答 3

3

下面的示例改编自我用来撰写有关 Org-mode 的类似内容。它似乎也适用于您的用例。#+OPTIONS: d:RESULTS确保:RESULTS:抽屉被导出。将其放入 Org-mode 缓冲区并导出为 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

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

于 2013-11-27T02:42:09.397 回答
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
于 2013-11-25T14:24:35.130 回答
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

并获取图像:

渲染

它并没有完全按照你的要求做,但可能会抓到同样的痒......

于 2013-11-25T16:06:16.847 回答