0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

orgファイルを更新すると出力ファイルも自動更新されるようにする (非同期エクスポート編)

Posted at

Emacsのorg-modeには多様な文書形式 (PDF, OpenDocument, markdown, ePubなどなど) に対応した豊富なエクスポート機能があります。通常のエクスポートは手動で org-export-dispatch (C-c C-e) を起動しますが、ファイル更新のたびに手動でやるのは少しだけ面倒です。自動化できないかと思っていたら、すでに @skkzsh さんがやり方を公開してくれていました。

ただ、このやり方では、直接 org-html-export-to-html などのエクスポートコマンドを呼び出しており、フォアグラウンドで実行されます。バックグラウンドで非同期エクスポートをする場合には、少し工夫が必要です。以下のように、org-export-async-start を呼び出し、その中で非同期プロセスに個別のエクスポートコマンドを送るようにするとうまくいきます。

init.el
(add-hook 'org-mode-hook 
          (lambda ()
            (add-hook 'after-save-hook
                      (lambda ()
				         (when (file-exists-p (concat (file-name-sans-extension (buffer-file-name)) ".html"))
                            (org-export-async-start
                              (lambda (file)
                                (message "Exported to %s" file))
                                '(org-html-export-to-html))
                                nil)
                         (when (file-exists-p (concat (file-name-sans-extension (buffer-file-name)) ".pdf"))
                            (org-export-async-start
                              (lambda (file)
                                (message "Exported to %s" file))
                                  '(org-latex-export-to-pdf))
                                  nil)) 
	                  nil t)))

これで、orgファイルを更新すると自動的にバックグラウンドでエクスポートされるようになりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?