Estoy usando el modo org para generar páginas web de mis notas. ¿Puedo incrustar código para generar HTML adicional, etc.? org-babel generará resultados, pero parece mostrar los resultados además del código. Me gustaría que el código creara html que reemplazaría el código en sí.
org-mode
org-babel
org-export
h4labs
fuente
fuente
:exports results
; ver Exportar bloques de código . (Avíseme si esto funciona para usted y si debo convertir esto en una respuesta.)Respuestas:
Como mencioné en un comentario, la sección Exportar bloques de código describe los valores permitidos de la
:exports
opción:code
(contenido del bloque),results
(resultados de su evaluación),both
(código y resultados) ynone
(no se exporta nada).Por defecto, Org intenta interpretar los resultados de evaluar un bloque de código fuente (y convertirlo en una tabla, por ejemplo). Si tal interpretación falla, los resultados de la evaluación se formatean como texto monoespacial y se ven como envueltos
<pre> ... </pre>
cuando se exportan a HTML.Afortunadamente, podemos decirle a Org que coloque los resultados de la evaluación en un tipo especial de bloque usando
:results
(ver Resultados de la evaluación y:results
). Si usted quiere ser capaz de utilizar un bloque de código fuente para generar una parte de una página HTML, uso:results value html
o:results output html
y Org envolverá resultados en un#+BEGIN_HTML ... #+END_HTML
bloque.Aquí hay un ejemplo mínimo (
#+OPTIONS
son irrelevantes, los agregué para que sea más fácil inspeccionar el código HTML exportado usando C-c C-e h H):fuente
Esto generará una página HTML (al exportar a HTML) con un botón.
Para evitar confusiones: el primer bloque no se evaluará durante la exportación. Debería evaluarlo moviendo el punto hacia él y presionando C-c C-c.
Más aún, deberías llamar
O similar antes de que se ejecute este código, para que Babel reconozca el
html
bloque como ejecutable.Pero en realidad, el ejemplo pretendía principalmente mostrar cómo puede proceder para agregar su propio "idioma" dirigido a un backend particular. Podría haberlo hecho fácilmente sin agregar ningún idioma nuevo y, tal vez, con menos complicaciones al hacer algo como esto:
La ventaja de mi primer enfoque es que una vez que edite con C-c ', se
html-mode
activará.fuente
ob-html.el
. Entonces, para exportar un bloque de HTML, uno tendría que definir dicha función (lo hago para otras marcas que utilizo, en particular para YAML). Esto es diferente de#+begin_html ... #+end_html
que también puedo usar esto como un motor de plantillas primitivo al pasar variables a los bloques (mi realorg-babel-execute:html
está más involucrado que eso).