2013-11-25 3 views
3

Я пытаюсь внедрить пример грамотного кода как HTML в org-mode 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, который я хочу показать в документе.

EDIT: Конкретный случай использования является то, что я хотел бы написать документ, объясняющий некоторые HTML конструкцию (как блок кода) и вложение (цитирует) те же конструкцию, в документе, без копирования + вставки

ответ

2

Приведенный ниже пример адаптирован из того, что я использовал для написания о режиме Org. Кажется, это работает и для вашего случая использования. #+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 

но обратите внимание, что эти заголовки применяются к каждому исходному блоку в поддереве, если явно не переопределены.

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 Как насчет изменения первого ': export none' to': export code' – 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

Это не делает именно то, что вы просите, но могут поцарапать тот же зуд .. .

Смежные вопросы