¿Cómo agregar un nuevo marcado a la exportación HTML en modo org?

7

Me gustaría agregar un marcado al modo org, para simplificar la adición de <audio>etiquetas HTML. Como otro marcado en línea:

In Thai, /sabai dee mai/ is pronounced as [audio:assets/sabai.mp3]

Que exportaría como:

<p>In Thai, <i>sabai dee mai</i> is pronounced as <audio src="assets/sabai.mp3"></audio></p>

Miré org.ely ox-html.eltal vez solo copie cuán audaz y tal marcado en línea funciona, pero no veo cómo encajan las piezas.

Gambhiro
fuente

Respuestas:

8

Org es extremadamente versátil cuando se trata de definir enlaces, por lo que probablemente sean su mejor opción. Para eso necesitas la org-add-link-typefunción.

(org-add-link-type "audio" #'ignore #'endless/export-audio-link)

El segundo argumento le dice a la organización que no te importa abrir audioenlaces por ahora, y el tercer argumento dice cómo exportarlos a html. Utilice la siguiente función de ejemplo, o mejórela según sus necesidades

(defun endless/export-audio-link (path desc format)
  "Export org audio links to hmtl."
  (cl-case format
    (html (format "<audio src=\"%s\">%s</audio>" path (or desc "")))
    (latex (format "(HOW DO I EXPORT AUDIO TO LATEX? \"%s\")" path))))

Con la configuración anterior, los enlaces

[[audio:file.mp3][description]]
[[audio:file-2.mp3]]

exportaría a

<audio src="file.mp3">description</audio>
<audio src="file-2.mp3"></audio>

Esta publicación también explica cómo puede definir una forma de abrir realmente estos enlaces de audio en su interior org-mode(mediante el segundo argumento).

Malabarba
fuente
4

Puede usar el reemplazo de macro del modo org para lograr esto.

Una macro llamada AUDIOse puede definir de la siguiente manera

#+MACRO AUDIO @@html:<audio src="$1"></audio>@@

Usando su ejemplo, así es como se verá su uso:

In Thai, /sabai dee mai/ is pronounced as {{{AUDIO(assets/sabai.mp3)}}}

que exportaría a html como:

<p>In Thai, <i>sabai dee mai</i> is pronounced as <audio src="assets/sabai.mp3"></audio></p>
Kaushal Modi
fuente
Otro ejemplo de uso de macro en modo org para una aplicación diferente: emacs.stackexchange.com/a/261/115
Kaushal Modi
3

Esta publicación describe que puede modificar el marcado existente para producir cualquier tipo de etiqueta que desee. No estoy al tanto de cualquier forma de definir nuevo marcado con esto, pero, puesto ~y =son redundantes cuando se exporta a HTML, puede cambiar a uno de los dos sin dejar de utilizar el otro como <code>.

El siguiente fragmento debe girar ~sabai.mp3~en <audio src="sabai.mp3"></audio>la hora de exportar.

(eval-after-load 'ox-html
  '(push '(code . "<audio src="%s"></audio>") org-html-text-markup-alist))

Y lo siguiente hará lo mismo con en su =sabai.mp3=lugar.

(eval-after-load 'ox-html
  '(push '(verbatim . "<audio src="%s"></audio>") org-html-text-markup-alist))
Malabarba
fuente