Aşağıdaki komut bir arka uç seçmenizi ve ardından her bir üst düzey alt ağacı ayrı bir dosyaya aktarmanızı sağlar:
(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))))
Bu şu anda HTML ( html
), LaTeX ( latex
) ve PDF ( pdf
) dışa aktarmayı desteklemektedir . Daha fazla cümle ekleyerek daha fazla arka uç desteği ekleyebilirsiniz cond
.
Docstring'in dediği gibi, her alt ağaç için :EXPORT_FILE_NAME:
özelliği dışa aktarılmasını istediğiniz dosya adına ayarlamanız gerekir . (Diğer seçenekler için aşağıya bakın.)
Başlık metninden otomatik olarak dışa aktarma dosya adı oluşturma
:EXPORT_FILE_NAME:
Her üst düzey başlığa özellik eklemek istemiyorsanız org-export-all
, :EXPORT_FILE_NAME:
dışa aktarma sırasında geçici olarak ayarlanan, örneğin başlık metninden dosya adını otomatik olarak oluşturmak için değiştirebilirsiniz :
(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))))
Bu işlev, başlık metnindeki boşlukları "_" ile değiştirerek dışa aktarma dosya adını oluşturur. Dosya replace-regexp-in-string
adını başka bir şekilde oluşturmak istiyorsanız, sexp'i istediğiniz gibi değiştirin.
Oluşturuluyor :EXPORT_FILE_NAME:
ayarlarken:CUSTOM_ID:
Aşağıdaki önerilerle, org-set-property
ayarladığınızda otomatik olarak uygun bir değer :EXPORT_FILE_NAME:
ayarlayacaktır :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))))
Bunun değerine bir dosya uzantısı eklemeyeceğini, :EXPORT_FILE_NAME:
ancak bunun önemli olmadığını unutmayın, çünkü belirli bir arka uca dışa aktarırken org-mode
, elde edilen dosyalar için otomatik olarak doğru uzantıyı seçecektir .
Ek bilgi
Mevcut alt ağaçları toplu olarak güncelleme
:EXPORT_FILE_NAME:
Özelliği ayarlamanız gereken çok sayıda mevcut alt ağaç varsa, bir klavye makrosu kullanabilirsiniz . İlk alt ağaçtaki konumlandırın, ardından aşağıdakileri yapın:
F3
... kayda başlamak için.
C-c C-x p CUSTOM_ID
RET RET
... Emacs'ı :EXPORT_FILE_NAME:
temel alıyor :CUSTOM_ID:
.
C-c C-f
... bir sonraki üst düzey başlığa geçmek için.
F4
... kaydı durdurmak için.
Makroyu sonraki alt ağaç için tekrarlamak için tuşuna basın F4. Makroyu kalan tüm alt ağaçlar için tekrarlamak için M-0 F4(bu sıfırdır).
Gelecek oturumlar için makro kaydetme
Varsayılan olarak, klavye makroları oturumlar arasında kaydedilmez. Makroyu daha sonra kullanmak üzere init dosyanızda saklamak için şunu yapın:
Makroyu adlandırın:
M-x name-last-kbd-macro
RET org-set-export-file-name
RET
İnit dosyanızı bulun ve makroyu eklemek istediğiniz bir noktaya gidin.
Makroyu ekleyin:
M-x insert-kbd-macro
RET org-set-export-file-name
RET
Emacs şu kodu ekler:
(fset 'org-set-export-file-name
"\C-c\C-xpCUSTOM_ID\C-m\C-m\C-c\C-f")
Yeterince sert gözükürseniz, ikinci argümanın fset
makroyu kaydettiğinizde bastığınız tuşların sırasını içerdiğini görebilirsiniz :)
(İsteğe bağlı) En iyi sonuçlar org-set-export-file-name
için bir anahtara bağlamak isteyebilirsiniz :
(define-key org-mode-map (kbd "<f6>") 'org-set-export-file-name)
Kayıt etmek.
:EXPORT_FILE_NAME:
özelliği nasıl ayarlayacağınıza dair bir ipucu verebilir misiniz:CUSTOM_ID:+heading-title-lowercased
?