組織モードのHTMLエクスポートに新しいマークアップを追加するにはどうすればよいですか?


7

<audio>HTMLタグの追加を簡単にするために、org-modeにマークアップを追加したいと思います。他のインラインマークアップと同様:

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

次のようにエクスポートされます:

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

私が見てorg.elox-html.el、おそらくどれだけ大胆かつ、そのようなインラインマークアップ作品をコピーすることが、私は各部分を組み合わせる方法が表示されません。

回答:


8

Orgはリンクの定義に関して非常に用途が広いので、おそらくあなたの最善の策でしょう。そのためにはorg-add-link-type関数が必要です。

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

2番目の引数はaudio、今のところリンクを開く必要がないことを組織に伝えています。3番目の引数は、リンクをHTMLにエクスポートする方法を示しています。次のサンプル関数を使用するか、ニーズに合わせて改善してください。

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

上記の構成では、リンク

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

にエクスポートする

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

この投稿では、これらのオーディオリンクを実際に開く方法を定義する方法についても説明していますorg-mode(2番目の引数を使用して)。


4

これを実現するには、org-modeマクロの置き換えを使用できます。

呼び出されたマクロAUDIOは次のように定義できます

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

あなたの例を使って、これはその使用法がどのようになるかです:

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

次のようにhtmlにエクスポートされます:

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

別のアプリケーションでの組織モードマクロの別の使用例:emacs.stackexchange.com/a/261/115
Kaushal Modi

3

この投稿では、既存のマークアップを変更して、任意の種類のタグを作成できることを説明しています。私は定義のいずれかの方法を認識していないんだ新しい本でマークアップを、しかし、以来~=まだのような他のを使用しながら、HTMLへのエクスポート時に冗長化され、次の2つのいずれかを変更することができます<code>

エクスポート~sabai.mp3~すると<audio src="sabai.mp3"></audio>、次のスニペットが次のようになります。

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

そして、以下は=sabai.mp3=代わりに同じことを行います。

(eval-after-load 'ox-html
  '(push '(verbatim . "<audio src="%s"></audio>") org-html-text-markup-alist))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.