我知道这可能是小事情,但它一直在困扰着我。我正在使用Org-mode进行一个项目,并经常导出为PDF或HTML文件,这会在我的目录中留下大量的PDF、Tex和HTML文件。有没有办法让Org-mode导出到另一个位置,比如一个名为./exports的子目录中?
我知道这可能是小事情,但它一直在困扰着我。我正在使用Org-mode进行一个项目,并经常导出为PDF或HTML文件,这会在我的目录中留下大量的PDF、Tex和HTML文件。有没有办法让Org-mode导出到另一个位置,比如一个名为./exports的子目录中?
原问题涉及到导出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:
我意识到一个5年前的问题可能不再与原帖作者相关,但希望搜索类似问题的人能从这个回答中受益。
这是一个在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)指出,新的advice-add机制使defadvice机制过时了。因此,这里提供了一个具有相同效果的代码片段,使用了建议使用的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 文件中。
除了像@user1248256建议的那样通过修改org-publish-project-alist
变量来使用发布,你还可以在文件内直接指定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.
导出时,文件将被放置在“exports”目录中,但前提是该目录存在。如果不存在该目录,则您将在控制台中收到一个错误消息。
当这个问题首次被提出时,可能不太可能实现,但最简单的解决方案是将该目录添加到:EXPORT_FILE_NAME:
属性中:
:PROPERTIES:
:EXPORT_FILE_NAME: exports/<filename>
:END:
就像接受的答案那样,这个目录必须存在才能使它起作用。
:EXPORT_FILE_NAME:
属性根本不起作用,无论是完整路径还是相对路径,带引号或不带引号。 - Guilherme Salomé你需要在org文件开头添加以下行:
#+EXPORT_FILE_NAME: PATH/filename
PATH
是导出文件的文件夹路径(例如:~/exports
),filename
是导出文件的文件名(例如:tutorial.html
)。
(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"))))
C-c C-e X
。您可以在http://orgmode.org/worg/org-tutorials/org-publish-html-tutorial.html和http://orgmode.org/manual/Publishing.html#Publishing上查看更多信息。org-publish-org-to-html
替换为org-html-publish-to-html
才能使其正常工作。 - Searene如"导出设置"部分所述,我们可以在文件中使用EXPORT_FILE_NAME
来设置输出目录。以下引用是文档的相关部分:
‘EXPORT_FILE_NAME’
要生成的输出文件的名称。否则,Org将根据缓冲区名称和基于后端格式的扩展名生成文件名。
#+export_file_name: path/filename
它运行良好。注意文件名不包含扩展名(.tex,.html)。
希望这对你有帮助。