Org-mode htmlエクスポート
Table of Contents
概要
Org-mode の htmlエクスポート機能について
設定
.emacs
(when (locate-library "org") (setq org-export-html-coding-system 'utf-8) (setq org-html-coding-system 'japanese-shift-jis) (setq org-export-default-language 'ja) (setq org-publish-project-alist '( ("doc" :base-directory "orgファイルを置くディレクトリ" :base-extension "org" :publishing-directory "HTML出力先のディレクトリ" :publishing-function org-html-publish-to-html :auto-sitemap t ; Generate sitemap.org automagically... :sitemap-filename "sitemap.org" ; ... call it sitemap.org (it's the default)... :sitemap-title "Sitemap" ; ... with title 'Sitemap'. :recursive t) )) (setq org-html-head-include-default-style nil) (setq org-html-head "<link rel=\"stylesheet\" type=\"text/css\" href=\"../conf/default.css\" />") (setq org-html-head-include-scripts nil) (setq org-startup-folded nil) (setq org-html-validation-link "") (setq org-export-with-sub-superscripts '{}) (setq org-export-with-section-numbers nil) (setq org-html-preamble-format '(("en" " <div align=right> 最終更新日: %C </div> <div align=right> <a href=\"http://cha.la.coocan.jp/\">ホーム</a> | <a href=\"index.html\">文書トップ</a> | <a href=\"sitemap.html\">目次</a> </div> "))) (setq org-html-postamble " <div align=right> <a href=\"http://cha.la.coocan.jp/\">ホーム</a> | <a href=\"index.html\">文書トップ</a> | <a href=\"sitemap.html\">目次</a> </div> <div align=right> Created by %c </div> ") (define-key global-map "\C-c\C-xl" 'org-toggle-link-display) )
ちなみに、上記もorg-modeとの連携機能によって色付けして表示されている。 (packageで htmlize のインストールが必要)
使い方
更新がされていなくても強制的にpublishする
org-publish-use-timestamps-flag を nil にする。
以前はpublishするときに、選べたのだが・・・
TIPS
Org-modeで保存後自動でpublishする
むむ。これは非常に便利。after-save-hook に add-hook するのは躊躇するところもあるが。
(when (locate-library "org") ・ ・ ・ (defun auto-export-my-blog () (let* ((project-plist (cdr (assoc "doc" org-publish-project-alist))) (project-dir (expand-file-name (plist-get project-plist :base-directory)))) (save-excursion (if (string= project-dir (file-name-directory buffer-file-name)) (org-publish-current-file))))) (add-hook 'after-save-hook 'auto-export-my-blog) ・ ・ ・ )
c-mode で変換が失敗する場合の対応
(when (locate-library "org") ・ ・ ・ (add-hook 'org-mode-hook (lambda () (setq hide-ifdef-initially nil) )) ・ ・ ・ )
よくわかっていなかったときの話
HTML Export html-preamble
share/emacs/24.5/lisp/org/ox-html.el.gz を読みながら、当初は、下記のように preamble のカスタマイズをしていた。
(setq org-html-preamble-format '(("en" ""))) (setq org-html-link-up "http://cha.la.coocan.jp/") (setq org-html-link-home "index.html") (setq org-html-home/up-format " <div align=right> <a accesskey=\"H\" href=\"%s\">ホーム</a> | <a href=\"index.html\">文書トップ</a> | <a href=\"sitemap.html\">目次</a> </div> ")
非常にまどろしかったのであるが、よく読んでみると、
org-html-preamble が、"Non-nil means insert a preamble in HTML export."であり、
When t, insert a string as defined by the formatting string in `org-html-preamble-format'. When set to a string, use this formatting string instead (see `org-html-postamble-format' for an example of such a formatting string).
org-html-preamble-format に文字列を設定すればよさそうだ。
The second element of each list is a format string to format the preamble itself. This format string can contain these elements:
とある。
org-html-preamble-format の第2要素に設定すればよいらしい。 また、第2要素では、下記の書式が使用可能である。
%t stands for the title. %a stands for the author's name. %e stands for the author's email. %d stands for the date. %c will be replaced by `org-html-creator-string'. %v will be replaced by `org-html-validation-link'. %T will be replaced by the export time. %C will be replaced by the last modification time.