首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从命令行批量导出组织模式文件

从命令行批量导出组织模式文件
EN

Stack Overflow用户
提问于 2014-02-27 15:20:35
回答 3查看 11.8K关注 0票数 43

假设我在某个目录中有几个org-mode文件:foo1.orgfoo2.org等。我希望有一个脚本(可能是makefile)来调用类似的内容

代码语言:javascript
代码运行次数:0
运行
复制
$ generate-pdfs

并生成foo1.pdffoo2.pdf等。

我认为像emacs --batch --eval <MAGIC>这样的东西是一个好的开始,但我不知道它的魔力。

一个完全在emacs内部的解决方案也可能会引起人们的兴趣。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-28 09:24:56

如前所述,Emacs具有--batch选项,可以从shell中对Emacs执行操作。除此之外,您还可以使用-l标志从文件中加载Emacs代码并执行它,并使用-f标志来执行单个Lisp函数。

下面是一个基本示例,它将单个组织模式文件导出到HTML:

代码语言:javascript
代码运行次数:0
运行
复制
emacs myorgfile.org --batch -f org-html-export-to-html --kill

也许您需要更高级的东西,比如导出/发布完整的组织模式项目。我没有这方面的示例代码,但不应该太复杂。

我还有一个前面写过的示例Makefile,用于将目录中的所有组织模式文件导出到HTML (并将HTML文件复制到另一个目录):

代码语言:javascript
代码运行次数:0
运行
复制
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

票数 53
EN

Stack Overflow用户

发布于 2014-03-01 09:12:56

我希望(到本周末)发布OrgMk,一套Makefile和独立的Bash脚本(在Cygwin下也可以使用)就是为了做到这一点!甚至更多:生成HTML、Ascii、Beamer等。

您可以在我的GitHub帐户上找到它:https://github.com/fniessen/ (在这里,我已经有Emacs配置文件、颜色主题和其他东西,比如Org -正在进行中)。

票数 3
EN

Stack Overflow用户

发布于 2014-02-27 15:26:34

dired中标记几个组织文件并调用此文件:

代码语言:javascript
代码运行次数:0
运行
复制
(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方法与跛脚的另一个方法结合在一起的版本:)

代码语言:javascript
代码运行次数:0
运行
复制
(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)))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22072773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档