Org-Mode で日本語 PDF を出力できるようにする
提供: MoreslowlyWiki
Emacs の Org-Mode で日本語 PDF を出力できるようにする方法について。
Hgwr 2010年10月10日 (日) 02:53 (UTC)
試した環境: Debian squeeze と Mac OS X
目次 |
platex を使える環境にする
Debian の場合
次のページを参考にして、インストールをする。
各ページとも 2010-10-10 ごろ閲覧
- Linux/Debian - TeX Wiki
- Debian GNU/Linux squeezeで日本語TeX環境を用意する - 発声練習
- Debian testing(squeeze) amd64インストール
- Trouble shooting (about GNU/Linux Debian "squeeze"
- IPA fontをLaTeX で使う
- TeX - AqureWiki - 罪と罰++二律背反、自宅サーバ、CGIゲーム
$ sudo aptitude install ptex-jtex yatex xdvik-ja cmap-adobe-cns1 cmap-adobe-gb1 cmap-adobe-japan1 cmap-adobe-japan2 gs-cjk-resource ttf-ipafont poppler-utils poppler-data texlive-latex-extra
新規に /etc/texmf/texmf.d/50dvipdfmx.cnf を作成する。
CMAPINPUTS=.;/usr/share/fonts/cmap/adobe-japan1//;/usr/share/fonts/cmap/adobe-japan2//;/usr/share/fonts/cmap/adobe-gb1//;/usr/share/fonts/cmap/gs-cjk-resorce//
CMAPFONTS の設定も変える。
$ diff -u texmf.d/85Misc.cnf.orig_20080728 texmf.d/85Misc.cnf --- texmf.d/85Misc.cnf.orig_20080728 2008-07-28 07:53:54.000000000 +0900 +++ texmf.d/85Misc.cnf 2010-10-10 04:51:18.000000000 +0900 @@ -5,7 +5,7 @@ ENCFONTS = .;$TEXMF/fonts/enc// % CMap files. -CMAPFONTS = .;$TEXMF/fonts/cmap// +CMAPFONTS = .;/var/lib/defoma/gs.d/dirs/CMap//;$TEXMF/fonts/cmap// % Subfont definition files. SFDFONTS = .;$TEXMF/fonts/sfd//
$ sudo update-texmf
dvipdfmx で PDF ファイルに IPA フォントを埋め込むようにする。
/usr/share/texmf-texlive/fonts/map/dvipdfmx/cid-x.map を次のようにする。
rml H ipam gbm H ipag rmlv V ipam gbmv V ipag
ためしに次のファイルを euc-jp で保存して platex と dvipdfmx をつかって pdf ファイルにする。
\documentclass{jarticle}
\begin{document}
こんにちは、世界。
Hello, World.
\end{document}
Max OS X の場合
奥村 晴彦 著 改訂第5版 LaTeX2e 美文書作成入門 に付属の CD-ROM からインストールする。
mypdflatex
org-mode で utf-8 でテキストを書いて org-export-as-latex をしたら utf-8 の LaTeX コードが生成される。
Max OS X の platex (/usr/local/texlive/p2009/bin/i386-apple-darwin10.3.0/platex) は、実行前に nkf してくれるみたい。
Debian の場合は platex にかける前に自分で nkf で euc-jp にする必要がある。
nkf じゃなくて Emacs の set-buffer-file-coding-system で euc-jp に変換しようとしたら、うまくいかなかった。
nkf で euc-jp に変換して、 platex にかけて、 dvipdfmx まで実行するシェルスクリプト mypdflatex をパスの通ったところに置いておく。
#!/bin/bash
TMP="/tmp/mypdflatex$$.out"
if [ "${1##*.}" = 'tex' ]; then
echo "A"
src="$1"
basename="${1%%.tex}"
elif [ -r "${1}.tex" ]; then
echo "B"
src="${1}.tex"
basename="${1}"
else
echo "file not found: $1" 1>&2
exit 8
fi
nkf -e "$src" > "$TMP"
cp -p "$src" "$src".bak
mv "$TMP" "$src"
platex "$basename" && platex "$basename" && dvipdfmx "$basename"
Mac の場合は、 上のスクリプトの TMP=... より上あたりで PATH の設定をしておく必要があった。
PATH="/usr/local/bibunsho/bin/i386-darwin:\ /usr/local/texlive/p2009/bin/i386-apple-darwin10.3.0:\ /usr/local/texlive/2009/bin/universal-darwin:\ $PATH"
.emacs で org-mode 用の設定をする
次のような設定をする。
- documentclass で article じゃなく jarticle を使うようにする。
- hyperref では divpdfmx オプションを付ける Re: hyperref error
- pdflatex のかわりに mypdflatex を使うようにする。
- Mac の場合は mypdflatex はフルパスで書く必要があった。
- デフォルトだと org-export-as-latex の最中に ^ を上付き文字へ、 _ を下付き文字に変えるような変換をしてくれるけど、好みで無効にする。 Disabling underscore-to-subscript in Emacs Org-Mode export - Stack Overflow
そうすると、 C-c C-e p で PDF ファイルが生成され、 C-c C-e d で PDF ビューワ起動までしてくれるようになる。
あとは aptitude install emacs23-el などして、 org-latex.el のソースを読む。
- 場合によっては
\documentclass[a4j]{jarticle}でなくて\documentclass[a4paper]{jsarticle}など。 -
\\usepackage[draft,dvipdfmx]{hyperref}のなかの draft をとると、しおりが PDF に入るようになる。 - PDF のしおりの部分が文字化けする場合は [1] にある通り、
\usepackage[dvipdfmx]{hyperref}の前に、下を書いておくといいみたい。
\usepackage{atbegshi}
\ifnum 42146=\euc"A4A2 \AtBeginShipoutFirst{\special{pdf:tounicode EUC-UCS2}}\else
\AtBeginShipoutFirst{\special{pdf:tounicode 90ms-RKSJ-UCS2}}\fi
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
(define-key global-map "\C-cl" 'org-store-link)
(define-key global-map "\C-ca" 'org-agenda)
(define-key global-map "\C-ct" 'org-todo)
(setq org-log-done '(state))
(add-hook 'org-mode-hook
'(lambda ()
(flyspell-mode t)
(auto-fill-mode 0)
(local-set-key [(control return)] 'newline-and-indent)))
(setq org-export-latex-classes
'(("article"
"\\documentclass[a4j]{jarticle}
\\usepackage{graphicx}
\\usepackage{longtable}
\\usepackage{float}
\\usepackage{wrapfig}
\\usepackage{soul}
\\usepackage{atbegshi}
\\ifnum 42146=\\euc\"A4A2 \\AtBeginShipoutFirst{\\special{pdf:tounicode EUC-UCS2}}\\else
\\AtBeginShipoutFirst{\\special{pdf:tounicode 90ms-RKSJ-UCS2}}\\fi
\\usepackage{url}
\\usepackage[draft,dvipdfmx]{hyperref}
\\usepackage{amssymb}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))))
(setq org-latex-to-pdf-process
'("mypdflatex %b" "mypdflatex %b"))
(setq org-export-with-sub-superscripts nil)
画像ファイルを含める
参考にしたページ
ATTR_LaTeX: のところに width=5cm のほかに、bb=0 0 527 400, clip, として画像の実際のピクセルサイズを指定してやったら、うまくいった。
#+CAPTION: くつろぐゴン #+LABEL: fig:gon #+ATTR_LaTeX: bb=0 0 527 400, clip, width=5cm [[file:20101012_130026_527x400.jpg]]

