निम्न आदेश आपको एक बैक-एंड चुनने की अनुमति देता है और फिर प्रत्येक शीर्ष-स्तरीय सबट्री को एक अलग फ़ाइल में निर्यात करता है:
(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
।
जैसा कि डॉकस्ट्रिंग कहते हैं, प्रत्येक उपप्रकार के लिए आपको :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
तो जो कुछ भी आप चाहते हैं, उसके लिए सेक्सपी को बदलें ।
: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
... के :EXPORT_FILE_NAME:
आधार पर Emacs सेट बनाने के लिए :CUSTOM_ID:
।
C-c C-f
... अगले शीर्ष-स्तरीय शीर्षक पर जाने के लिए।
F4
... रिकॉर्डिंग बंद करने के लिए।
अगले उपशीर्षक के लिए मैक्रो को दोहराने के लिए, दबाएं F4। के लिए मैक्रो को दोहराने के लिए सभी शेष subtrees, प्रेस M-0 F4(कि एक शून्य है)।
भविष्य के सत्रों के लिए मैक्रो को सहेजना
डिफ़ॉल्ट रूप से, कीबोर्ड मैक्रोज़ सत्रों में सहेजे नहीं जाते हैं। बाद में उपयोग के लिए अपनी इन-फाइल में मैक्रो को स्टोर करने के लिए, इसे करें:
मैक्रो का नाम दें:
M-x name-last-kbd-macro
RET org-set-export-file-name
RET
अपनी init-file ढूंढें और उस स्थान पर जाएँ जहाँ आप मैक्रो सम्मिलित करना चाहते हैं।
मैक्रो डालें:
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
?