Làm cách nào để thêm đánh dấu mới vào xuất HTML chế độ org?


7

Tôi muốn thêm một đánh dấu vào chế độ org, để đơn giản hóa việc thêm <audio>các thẻ HTML. Giống như đánh dấu nội tuyến khác:

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

Mà sẽ xuất dưới dạng:

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

Tôi đã xem xét org.elox-html.elcó lẽ chỉ sao chép cách đánh dấu nội tuyến táo bạo và như vậy hoạt động, nhưng tôi không thấy các mảnh ghép khớp với nhau như thế nào.

Câu trả lời:


8

Org cực kỳ linh hoạt khi xác định các liên kết, vì vậy chúng có thể là lựa chọn tốt nhất của bạn. Cho rằng bạn cần org-add-link-typechức năng.

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

Đối số thứ hai đang nói với org bạn không quan tâm đến việc mở audiocác liên kết bây giờ và đối số thứ ba nói về cách xuất chúng sang html. Sử dụng chức năng ví dụ sau, hoặc cải thiện nó theo nhu cầu của bạn.

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

Với cấu hình trên, các liên kết

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

sẽ xuất khẩu sang

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

Bài đăng này cũng giải thích cách bạn có thể xác định một cách để thực sự mở các liên kết âm thanh này bên trong org-mode(bằng cách sử dụng đối số thứ hai).


4

Bạn có thể sử dụng thay thế macro chế độ org để đạt được điều này.

Một macro được gọi AUDIOcó thể được định nghĩa như dưới đây

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

Sử dụng ví dụ của bạn, đây là cách sử dụng của nó sẽ như thế nào:

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

mà sẽ xuất sang html dưới dạng:

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

Một ví dụ khác về sử dụng macro chế độ org cho một ứng dụng khác: emacs.stackexchange.com/a/261/115
Kaushal Modi

3

Bài đăng này mô tả bạn có thể thay đổi đánh dấu hiện có để tạo ra bất kỳ loại thẻ nào bạn muốn. Tôi không biết bất kỳ cách nào để xác định đánh dấu mới với điều này, nhưng, vì ~=là dư thừa khi xuất sang html, bạn có thể thay đổi một trong hai trong khi vẫn sử dụng cách khác như <code>.

Đoạn mã sau sẽ biến ~sabai.mp3~thành <audio src="sabai.mp3"></audio>khi xuất.

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

Và sau đây sẽ làm tương tự với =sabai.mp3=thay thế.

(eval-after-load 'ox-html
  '(push '(verbatim . "<audio src="%s"></audio>") org-html-text-markup-alist))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.