다음 명령을 사용하면 백엔드를 선택한 다음 각 최상위 하위 트리를 별도의 파일로 내 보냅니다.
(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
... 이맥스를 :EXPORT_FILE_NAME:
기반으로 설정 합니다 :CUSTOM_ID:
.
C-c C-f
... 다음 최상위 헤드 라인으로 이동합니다.
F4
... 녹음을 중지합니다.
다음 하위 트리에 대해 매크로를 반복하려면을 누르십시오 F4. 나머지 모든 하위 트리에 대해 매크로를 반복하려면 M-0 F4(0)을 누릅니다 .
향후 세션을위한 매크로 저장
기본적으로 키보드 매크로는 세션간에 저장되지 않습니다. 나중에 사용할 수 있도록 매크로를 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
있습니까?