Como adicionar uma nova marcação à exportação de HTML no modo organizacional?

7

Gostaria de adicionar uma marcação ao modo organizacional, para simplificar a adição de <audio>tags HTML. Como outras marcações embutidas:

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

Que exportaria como:

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

Eu olhei org.ele ox-html.eltalvez copiei o quão ousada e essa marcação embutida funciona, mas não vejo como as peças se encaixam.

Gambhiro
fonte

Respostas:

8

A organização é extremamente versátil no que diz respeito à definição de links, portanto é provavelmente a sua melhor aposta. Para isso você precisa da org-add-link-typefunção.

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

O segundo argumento diz à organização que você não se importa em abrir audiolinks por enquanto, e o terceiro argumento diz como exportá-los para html. Use a seguinte função de exemplo ou aprimore-a de acordo com suas necessidades.

(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))))

Com a configuração acima, os links

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

exportaria para

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

Esta publicação também explica como você pode definir uma maneira de realmente abrir esses links de áudio dentro org-mode(usando o segundo argumento).

Malabarba
fonte
4

Você pode usar a substituição de macro no modo organizacional para conseguir isso.

Uma macro chamada AUDIOpode ser definida como abaixo

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

Usando seu exemplo, aqui está como será o seu uso:

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

que exportaria para html como:

<p>In Thai, <i>sabai dee mai</i> is pronounced as <audio src="assets/sabai.mp3"></audio></p>
Kaushal Modi
fonte
Outro exemplo do uso da macro org-mode para uma aplicação diferente: emacs.stackexchange.com/a/261/115
Kaushal Modi
3

Esta postagem descreve que você pode alterar a marcação existente para produzir qualquer tipo de tag desejada. Eu não estou ciente de qualquer forma de definir nova marcação com isso, mas, uma vez ~e =são redundantes ao exportar para HTML, você pode alterar um dos dois enquanto ainda estiver usando o outro como <code>.

O seguinte trecho deve girar ~sabai.mp3~em <audio src="sabai.mp3"></audio>quando exportar.

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

E o seguinte fará o mesmo com o =sabai.mp3=contrário.

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