Я знаю, что это немного второстепенное, но это меня подслушивало. Я использую Org-mode для проекта, и я склонен экспортировать его в PDF или HTML довольно часто, и он оставляет мой каталог, замусоренный файлами PDF, Tex и HTML. Есть ли способ экспортировать Org-mode в другое место, возможно, подкаталог под названием./exports?
Emacs Org-mode - экспортировать в другой каталог?
Ответ 1
В дополнение к использованию публикации, изменив вашу переменную org-publish-project-alist
как предлагается @user1248256, вы можете напрямую указать переменную org-export-publishing-directory
в вашем файле:
#+bind: org-export-publishing-directory "./exports"
* This is a test headline
Some text here. This should be exported to the "./exports" directory.
При экспорте он будет помещен в каталог "export", но только если этот каталог существует. Если он не существует, вы получите сообщение об ошибке в консоли.
Ответ 2
Первоначальный вопрос касался экспорта org файлов, в то время как большинство приведенных выше ответов на самом деле имеют отношение к публикации, что является другой концепцией.
Я считаю, что лучший способ решить проблему, поставленную OP, - добавить в файл инициализации emacs (.emacs) следующее:
(defadvice org-export-output-file-name (before org-add-export-dir activate)
"Modifies org-export to place exported files in a different directory"
(when (not pub-dir)
(setq pub-dir "exported-org-files")
(when (not (file-directory-p pub-dir))
(make-directory pub-dir))))
PS:
Я понимаю, что пятилетний вопрос может больше не относиться к ОП, но, надеюсь, люди, ищущие похожие вещи, получат пользу от этого ответа.
Это небольшая модификация фрагмента кода, найденного в http://rwx.io/posts/org-export-configurations/
Исходное решение, найденное в приведенном выше блоге, позволяет создавать разные каталоги для каждого экспортируемого формата. Однако, если цель состоит в том, чтобы избежать один каталог, "усеянный файлами PDF, Tex и HTML", я думаю, что лучше всего иметь только один каталог, содержащий экспортированные файлы всех форматов, что является сутью модификации, предложенной мной выше.
Редактировать: Руководство emacs (https://www.gnu.org/software/emacs/manual/html_node/elisp/Porting-old-advice.html#Porting-old-advice) гласит, что механизм defadvice
устарел новым advice-add
. Итак, вот фрагмент кода с тем же эффектом с использованием рекомендованного advice-add
:
(defun org-export-output-file-name-modified (orig-fun extension &optional subtreep pub-dir)
(unless pub-dir
(setq pub-dir "exported-org-files")
(unless (file-directory-p pub-dir)
(make-directory pub-dir)))
(apply orig-fun extension subtreep pub-dir nil))
(advice-add 'org-export-output-file-name :around #'org-export-output-file-name-modified)
Как и прежде, это должно быть помещено в ваш файл .emacs.
Ответ 3
Возможно, это было невозможно, когда вопрос был впервые задан, но самым простым решением было бы добавить каталог в свойство :EXPORT_FILE_NAME:
:
:PROPERTIES:
:EXPORT_FILE_NAME: exports/<filename>
:END:
Как и в принятом ответе, каталог должен существовать, чтобы это работало.
Ответ 4
Я считаю, что вы можете получить это с помощью org-publish. Добавьте в конфигурационный файл emacs что-то вроде этого:
(setq org-publish-project-alist
'(("html"
:base-directory "~/org/"
:base-extension "org"
:publishing-directory "~/org/exports"
:publishing-function org-publish-org-to-html)
("pdf"
:base-directory "~/org/"
:base-extension "org"
:publishing-directory "~/org/exports"
:publishing-function org-publish-org-to-pdf)
("all" :components ("html" "pdf"))))
Измените это выражение (или перезапустите emacs), нажмите C-c C-e X
в org-mode, затем выберите проект из списка.
Вы можете увидеть дополнительную информацию на http://orgmode.org/worg/org-tutorials/org-publish-html-tutorial.html и http://orgmode.org/manual/Publishing.html#Publishing