特定のディレクトリにいくつかのorg-mode
ファイル:foo1.org
、foo2.org
などがあると仮定します。次のようなものを呼び出すことができるスクリプト(おそらくメイクファイル)が欲しいです。
$ generate-pdfs
foo1.pdf
、foo2.pdf
などが生成されます。
emacs --batch --eval <MAGIC>
のようなものは良いスタートだと思いましたが、魔法はわかりません。
inside emacsだけのソリューションも興味深いかもしれません。
あなたが言ったように、EmacsにはシェルからEmacsで操作を実行するための--batch
オプションがあります。それに加えて、-l
フラグを使用してファイルからEmacsLISPコードをロードして実行したり、-f
フラグを使用して単一のLISP関数を実行したりできます。
これは、単一のorg-modeファイルをHTMLにエクスポートする基本的な例です。
emacs myorgfile.org --batch -f org-html-export-to-html --kill
おそらく、完全なorg-modeプロジェクトのエクスポート/公開など、より高度なものが必要です。そのためのサンプルコードはありませんが、それほど複雑ではないはずです。
また、ディレクトリ内のすべてのorg-modeファイルをHTMLにエクスポートする(およびHTMLファイルを別のディレクトリにコピーする)ために、少し前に作成したサンプルのMakefileもあります。
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
編集:
Org-mode 8と新しいエクスポートエンジンにより、HTMLエクスポートの機能が変更されました。
前の例をOrg7以前で機能させるには、org-html-export-to-html
をorg-export-as-html
に置き換えます。
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)))
そのためだけに、MakefileとスタンドアロンのBashスクリプト(Cygwinでも使用可能)のスイートであるOrgMkを(今週の終わりまでに)公開する予定です。さらに:HTML、Ascii、Beamerなどの生成。
私のGitHubアカウントで見つけることができます: https://github.com/fniessen/ (Emacs構成ファイル、カラーテーマ、およびOrg Babelrefcardなどの他のものがすでにあります-で進捗)。