คำสั่งต่อไปนี้ให้คุณเลือกแบ็คเอนด์จากนั้นเอ็กซ์พอร์ตทรีย่อยแต่ละอันไปยังไฟล์แยกต่างหาก:
(defun org-export-all (backend)
"Export all subtrees that are *not* tagged with :noexport: to
separate files.
Note that subtrees must have the :EXPORT_FILE_NAME: property set
to a unique value for this to work properly."
(interactive "sEnter backend: ")
(let ((fn (cond ((equal backend "html") 'org-html-export-to-html)
((equal backend "latex") 'org-latex-export-to-latex)
((equal backend "pdf") 'org-latex-export-to-pdf))))
(save-excursion
(set-mark (point-min))
(goto-char (point-max))
(org-map-entries (lambda () (funcall fn nil t)) "-noexport" 'region-start-level))))
ปัจจุบันรองรับการส่งออก HTML ( html
), LaTeX ( latex
) และ PDF ( pdf
) cond
คุณสามารถเพิ่มการสนับสนุนสำหรับการกลับปลายโดยการเพิ่มคำสั่งมากขึ้นเพื่อ
ดังที่ docstring กล่าวว่าสำหรับแต่ละทรีย่อยคุณจะต้องตั้งค่า:EXPORT_FILE_NAME:
คุณสมบัติเป็นชื่อไฟล์ที่คุณต้องการให้ส่งออกไป (ดูด้านล่างสำหรับตัวเลือกอื่น ๆ )
สร้างชื่อไฟล์ส่งออกโดยอัตโนมัติจากข้อความส่วนหัว
หากคุณไม่ต้องการเพิ่ม:EXPORT_FILE_NAME:
คุณสมบัติให้กับส่วนหัวระดับบนสุดคุณสามารถแก้ไขorg-export-all
เพื่อสร้างชื่อไฟล์โดยอัตโนมัติจากเช่นข้อความส่วนหัวการตั้งค่าชั่วคราว:EXPORT_FILE_NAME:
ระหว่างการส่งออก:
(defun org-export-all (backend)
"Export all subtrees that are *not* tagged with :noexport: to
separate files.
Subtrees that do not have the :EXPORT_FILE_NAME: property set
are exported to a filename derived from the headline text."
(interactive "sEnter backend: ")
(let ((fn (cond ((equal backend "html") 'org-html-export-to-html)
((equal backend "latex") 'org-latex-export-to-latex)
((equal backend "pdf") 'org-latex-export-to-pdf)))
(modifiedp (buffer-modified-p)))
(save-excursion
(set-mark (point-min))
(goto-char (point-max))
(org-map-entries
(lambda ()
(let ((export-file (org-entry-get (point) "EXPORT_FILE_NAME")))
(unless export-file
(org-set-property
"EXPORT_FILE_NAME"
(replace-regexp-in-string " " "_" (nth 4 (org-heading-components)))))
(funcall fn nil t)
(unless export-file (org-delete-property "EXPORT_FILE_NAME"))
(set-buffer-modified-p modifiedp)))
"-noexport" 'region-start-level))))
ฟังก์ชันนี้สร้างชื่อไฟล์ส่งออกโดยแทนที่ช่องว่างด้วย "_" ในข้อความบรรทัดแรก หากคุณต้องการสร้างชื่อไฟล์ด้วยวิธีอื่นให้เปลี่ยนreplace-regexp-in-string
sexp เป็นอะไรก็ได้ที่คุณต้องการ
สร้าง:EXPORT_FILE_NAME:
เมื่อตั้งค่า:CUSTOM_ID:
ด้วยคำแนะนำต่อไปนี้org-set-property
จะตั้งค่าที่เหมาะสมโดยอัตโนมัติ:EXPORT_FILE_NAME:
เมื่อคุณตั้งค่า:CUSTOM_ID:
:
(defadvice org-set-property (after set-export-file-name
(property value) activate compile)
(when (equal org-last-set-property "CUSTOM_ID")
(let ((export-file-name
(concat (org-entry-get nil "CUSTOM_ID")
"-"
(replace-regexp-in-string " " "-" (downcase (org-get-heading t t))))))
(org-entry-put nil "EXPORT_FILE_NAME" export-file-name))))
หมายเหตุที่ว่านี้จะไม่เพิ่มนามสกุลไฟล์ค่าของ:EXPORT_FILE_NAME:
แต่ที่ไม่ได้เรื่องเพราะเมื่อส่งออกไปยังเฉพาะหลังสิ้นสุดโดยอัตโนมัติจะเลือกนามสกุลที่ถูกต้องสำหรับไฟล์ที่เกิดorg-mode
ข้อมูลเพิ่มเติม
การอัพเดททรีย่อยที่มีอยู่เป็นกลุ่ม
หากคุณมีทรีย่อยที่มีอยู่จำนวนมากซึ่งคุณต้องตั้งค่า:EXPORT_FILE_NAME:
คุณสมบัติให้คุณสามารถใช้มาโครคีย์บอร์ดได้ วางตำแหน่งบนทรีย่อยแรกจากนั้นทำต่อไปนี้:
F3
... เพื่อเริ่มการบันทึก
C-c C-x p CUSTOM_ID
RET RET
... เพื่อให้ Emacs ตั้งอยู่บนพื้นฐานของ:EXPORT_FILE_NAME:
:CUSTOM_ID:
C-c C-f
... เพื่อเลื่อนไปยังบรรทัดแรกระดับบนสุดถัดไป
F4
... เพื่อหยุดการบันทึก
F4ที่จะทำซ้ำแมโครสำหรับทรีย่อยต่อไปกด ในการทำซ้ำแมโครสำหรับsubtrees ที่เหลือทั้งหมดให้กดM-0 F4(นั่นคือศูนย์)
การบันทึกมาโครสำหรับเซสชันในอนาคต
ตามค่าเริ่มต้นมาโครคีย์บอร์ดจะไม่ถูกบันทึกข้ามเซสชัน ในการจัดเก็บมาโครในไฟล์ init ของคุณเพื่อใช้ในภายหลังให้ทำดังนี้
ตั้งชื่อแมโคร:
M-x name-last-kbd-macro
RET org-set-export-file-name
RET
ค้นหาไฟล์ init ของคุณและย้ายไปยังจุดที่คุณต้องการแทรกมาโคร
แทรกมาโคร:
M-x insert-kbd-macro
RET org-set-export-file-name
RET
Emacs จะแทรกรหัสต่อไปนี้ที่จุด:
(fset 'org-set-export-file-name
"\C-c\C-xpCUSTOM_ID\C-m\C-m\C-c\C-f")
หากคุณเหลื่อมกันมากพอคุณจะเห็นว่าอาร์กิวเมนต์ที่สองfset
มีลำดับของคีย์ที่คุณกดเมื่อคุณบันทึกแมโคร :)
(ไม่บังคับ) เพื่อผลลัพธ์ที่ดีที่สุดคุณอาจต้องการผูกorg-set-export-file-name
คีย์:
(define-key org-mode-map (kbd "<f6>") 'org-set-export-file-name)
บันทึก
:EXPORT_FILE_NAME:
คุณสมบัติแบบเป็นโปรแกรมให้กับ:CUSTOM_ID:+heading-title-lowercased
แต่ละหัวเรื่องได้หรือไม่