Emacs Org-mode - Экспорт в другой каталог? - PullRequest
19 голосов
/ 05 марта 2012

Я знаю, что это что-то незначительное, но это меня беспокоит.Я использую режим Org для проекта, и я довольно часто экспортирую в PDF или HTML, и это оставляет мою директорию заваленной файлами PDF, Tex и HTML.Есть ли способ сделать экспорт в режиме Org в другое место, возможно, в подкаталог с именем ./exports?

Ответы [ 4 ]

20 голосов
/ 05 марта 2012

В дополнение к использованию публикации путем изменения переменной 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.

После экспорта она будет помещенав каталоге экспорта, но только если этот каталог существует.Если он не существует, вы получите сообщение об ошибке в консоли.

5 голосов
/ 17 декабря 2017

Первоначальный вопрос касался экспорта org-файлов, в то время как большинство приведенных выше ответов на самом деле связано с публикацией , что является другой концепцией.

IПолагаю, что лучший способ решить проблему, поставленную 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:

  1. Я понимаю, что пятилетний вопрос может больше не относиться к ФП, но, надеюсь, люди, ищущие похожие вещи, получат пользу от этого ответа.

  2. Это небольшая модификация фрагмента коданайдено в http://rwx.io/blog/2016/03/11/Org-Export-Configurations/

  3. Исходное решение, найденное в приведенном выше блоге, позволяет настраивать различные каталоги для каждого экспортируемого формата.Однако, если цель состоит в том, чтобы избежать того, чтобы каталог был «завален файлами 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.

4 голосов
/ 29 апреля 2016

Вероятно, это было невозможно, когда вопрос был задан впервые, но простейшим решением было бы добавить каталог к ​​свойству :EXPORT_FILE_NAME::

:PROPERTIES:
:EXPORT_FILE_NAME: exports/<filename>
:END:

Как и в принятом ответе,каталог должен существовать, чтобы это работало.

3 голосов
/ 05 марта 2012

Полагаю, вы можете получить это с помощью 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, затем выберите проект из списка.

Более подробную информацию вы можете увидеть на http://orgmode.org/worg/org-tutorials/org-publish-html-tutorial.html и http://orgmode.org/manual/Publishing.html#Publishing

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...