假设我在某个目录中有几个org-mode
文件:foo1.org
、foo2.org
等。我希望有一个脚本(可能是makefile)来调用类似的内容
$ generate-pdfs
并生成foo1.pdf
、foo2.pdf
等。
我认为像emacs --batch --eval <MAGIC>
这样的东西是一个好的开始,但我不知道它的魔力。
一个完全在emacs内部的解决方案也可能会引起人们的兴趣。
发布于 2014-02-28 01:24:56
如前所述,Emacs具有--batch
选项,可以从shell中对Emacs执行操作。除此之外,您还可以使用-l
标志从文件中加载Emacs代码并执行它,并使用-f
标志来执行单个Lisp函数。
下面是一个基本示例,它将单个组织模式文件导出到HTML:
emacs myorgfile.org --batch -f org-html-export-to-html --kill
也许您需要更高级的东西,比如导出/发布完整的组织模式项目。我没有这方面的示例代码,但不应该太复杂。
我还有一个前面写过的示例Makefile,用于将目录中的所有组织模式文件导出到HTML (并将HTML文件复制到另一个目录):
OUT_DIR=/some/output/dir/html
# Using GNU Make-specific functions here
FILES=$(patsubst %.org,$(OUT_DIR)/%.html,$(wildcard *.org))
.PHONY: all clean install-doc
all: install-doc
install-doc: $(OUT_DIR) $(FILES)
$(OUT_DIR):
mkdir -v -p $(OUT_DIR)
%.html: %.org
emacs $< --batch -f org-html-export-to-html--kill
$(OUT_DIR)/%.html: %.html
install -v -m 644 -t $(OUT_DIR) $<
rm $<
clean:
rm *.html
编辑:
随着操作模式8和新的导出引擎,HTML导出的功能已经改变.
要使前面的示例与Org 7或更高版本一起使用,请将org-html-export-to-html
替换为org-export-as-html
。
发布于 2014-03-01 01:12:56
我希望(到本周末)发布OrgMk,一套Makefile和独立的Bash脚本(在Cygwin下也可以使用)就是为了做到这一点!甚至更多:生成HTML、Ascii、Beamer等。
您可以在我的GitHub帐户上找到它:https://github.com/fniessen/ (在这里,我已经有Emacs配置文件、颜色主题和其他东西,比如Org -正在进行中)。
发布于 2014-02-27 07:26:34
在dired
中标记几个组织文件并调用此文件:
(defun dired-org-to-pdf ()
(interactive)
(mapc
(lambda (f)
(with-current-buffer
(find-file-noselect f)
(org-latex-export-to-pdf)))
(dired-get-marked-files)))
如果您知道什么是异步,请包装调用,因为它可能需要一段时间。
最新情况:
下面是一个将可怕的dired
方法与跛脚的另一个方法结合在一起的版本:)
(defun dired-org-to-pdf ()
(interactive)
(let ((files
(if (eq major-mode 'dired-mode)
(dired-get-marked-files)
(let ((default-directory (read-directory-name "dir: ")))
(mapcar #'expand-file-name
(file-expand-wildcards "*.org"))))))
(mapc
(lambda (f)
(with-current-buffer
(find-file-noselect f)
(org-latex-export-to-pdf)))
files)))
https://stackoverflow.com/questions/22072773
复制