Wie füge ich dem HTML-Export im Organisationsmodus ein neues Markup hinzu?

7

Ich möchte dem Organisationsmodus ein Markup hinzufügen, um das Hinzufügen von <audio>HTML-Tags zu vereinfachen . Wie andere Inline-Markups:

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

Welches würde exportieren als:

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

Ich habe mir angesehen org.elund ox-html.elvielleicht nur kopiert, wie fett und wie ein Inline-Markup funktioniert, aber ich sehe nicht, wie die Teile zusammenpassen.

Gambhiro
quelle

Antworten:

8

Org ist äußerst vielseitig, wenn es darum geht, Links zu definieren, daher sind sie wahrscheinlich die beste Wahl. Dafür benötigen Sie die org-add-link-typeFunktion.

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

Das zweite Argument sagt org, dass es Ihnen vorerst egal ist, audioLinks zu öffnen , und das dritte Argument besagt, wie man sie nach HTML exportiert. Verwenden Sie die folgende Beispielfunktion oder verbessern Sie sie an Ihre Bedürfnisse.

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

Mit der obigen Konfiguration werden die Links

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

würde nach exportieren

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

In diesem Beitrag wird auch erläutert, wie Sie eine Möglichkeit definieren können, diese Audio-Links tatsächlich zu öffnen org-mode(mithilfe des zweiten Arguments).

Malabarba
quelle
4

Sie können die Makroersetzung im Organisationsmodus verwenden , um dies zu erreichen.

Ein aufgerufenes Makro AUDIOkann wie folgt definiert werden

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

Anhand Ihres Beispiels sieht die Verwendung folgendermaßen aus:

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

welches nach HTML exportieren würde als:

<p>In Thai, <i>sabai dee mai</i> is pronounced as <audio src="assets/sabai.mp3"></audio></p>
Kaushal Modi
quelle
Ein weiteres Beispiel für die Verwendung von Makros im Organisationsmodus
Kaushal Modi
3

In diesem Beitrag wird beschrieben, wie Sie vorhandene Markups ändern können, um eine beliebige Art von Tag zu erstellen. Mir ist keine Möglichkeit bekannt, ein neues Markup damit zu definieren , aber da ~und =beim Exportieren in HTML überflüssig sind, können Sie eines der beiden ändern, während Sie das andere weiterhin als verwenden <code>.

Der folgende Ausschnitt sollte dreht ~sabai.mp3~in <audio src="sabai.mp3"></audio>beim Export.

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

Und das Folgende wird =sabai.mp3=stattdessen dasselbe tun .

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