2013-11-25 53 views
3

我試圖在Emacs組織模式中將文本代碼示例嵌入爲HTML。組織模式,代碼示例爲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結構(如代碼塊)和嵌入(引用)文件中那些相同的結構,而不會複製+粘貼

回答

2

下面的例子是根據我用於寫作組織模式的類似內容改編的。它似乎也適用於你的用例。 #+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 

但要注意的是,這些標題將適用於每一個源塊子樹,除非明確覆蓋。

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 
+0

這不完全是我的意思,因爲我想在同一文檔中的示例源。具體用例是我想編寫一個文檔解釋一些HTML結構,並在文檔中嵌入這些相同的結構,而不需要複製+粘貼 – JoelKuiper

+0

@JoelKuiper如何將第一個':exports none'更改爲':exports代碼' – Tyler

+0

@Tyler我還沒有嘗試過這個,但做:纏結輸出不作任何關於HTML權利的位置保證?因此,如果我執行'org-html-export-as-html',最好知道HTML的位置,就像'#+ BEGIN_HTML'塊一樣。 – JoelKuiper

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

它不會做的正是你在問什麼,但可能會劃傷相同癢..