平衡点
2010/03/27
_ sid での TeX 環境
(2010-03-28 追記)
久々に新規 install したので, 色々設定しているわけですが TeX 環境でイロイロ嵌ってます(現在進行系).
- platex で .tex -> .dvi
- .dvi を xdvik-ja を用いて(好みのフォントで)閲覧.
- dvipdfmx で .dvi -> .pdf
- evince で .pdf を(好みのフォントで)閲覧.
まではできましたが dvipds + ps2pdfwr で pdf を作成することがまだできてません.Debian Bug#565233ですね. うーん...どうしたら良いかな.
とりあえずメモ up.
必要なパッケージの install
導入は, だいたい以下の通り.
$ sudo -s # aptitude install ptex-bin texlive-latex-extra \ latex-beamer okumura-clsfiles \ ghostscript-x gs-cjk-resource \ xdvik-ja evince poppler-data \ ttf-sazanami-gothic ttf-sazanami-mincho \ ttf-vlgothic otf-ipafont-gothic otf-ipafont-mincho \ auctex dvipng
現状では xdvik-ja は動作に支障は無いものの, install すると remove できないというパッケージとしては致命的なBug(Debian Bug#574194)があります. まあ, remove しなきゃ良いと思います.
以前は導入後に
$ sudo jisftconfig add
という呪文を唱えることになっていましたが, 現状では意図した動作をしてくれないので, 必要性については当面保留.
この時点で, tex ソースファイルから dvi の生成は
$ platex hoge.tex
などで可能.
viewer 毎の設定
表示に使われるフォントの設定は fontconfig の情報を元に決まる.
xdvi-ja
xdvi-ja の表示フォントは fontconfig の serif, sans-serif によって決まっている.font の指定は ~/.fonts.conf あたりで設定した後で
$ sudo update-vfontmap
によって反映される.
以下補足. 表示フォントは /var/lib/texmf/vfontmap で指定されており, これは /etc/texmf/vfontmap.d/20xdvik-ja.map を元にupdate-vfontmap によって自動生成されている./etc/texmf/vfontmap.d/20xdvik-ja.map の内容は以下の通り.
@serif@ rml JIS-H % ASCII pTeX rmlv JIS-V % ASCII pTeX dm JIS-H % NTT jTeX @sansserif@ gbm JIS-H % ASCII pTeX gbmv JIS-V % ASCII pTeX dg JIS-H % NTT jTeX
@serif@, @sansserif@ は update-vfontmap を実行した際にfontconfig の設定を元にフォントの実ファイルのpath に置換され, /var/lib/texmf/vfontmap が生成される.
もし fontconfig で指定した設定と xdvi で表示に使用するフォントを変えたいなら,20xdvik-ja.map の @serif@, @sansserif@ をコメントアウトして, フォントの実ファイルの path を書き込む, などしてから update-vfontmap を走らせると良い.
evince
デフォルトの設定では, 明朝/ゴシックすべて VL PGothic で表示される.これは fontconfig において Ryumin/Gothic-BBB が指定されていないから.
例えば表示にさざなみ明朝/ゴシックを使いたい場合には, ~/.fonts.conf に
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <match target="pattern"> <test qual="any" name="family"> <string>Ryumin</string> </test> <edit name="family" mode="prepend" binding="strong"> <string>Sazanami Mincho</string> </edit> </match> <match target="pattern"> <test qual="any" name="family"> <string>Gothic-BBB</string> </test> <edit name="family" mode="prepend" binding="strong"> <string>Sazanami Gothic</string> </edit> </match> </fontconfig>
なんて書いておくと良いだろう.
pdf への変換
dvipdfmx(font を埋め込まない場合)
Adobe の CMap のライセンスが変更されたため cmap データは poppler-data パッケージになって main に入った. これを使うための設定をしたいのだけれど…
以前は /etc/texmf/texmf.d/80DVIPDFMx.cnf というファイルが存在していて,その中で CMAPINPUTS という変数を指定していたのだけれども, 現状の sid ではそもそもファイルが存在しない. /usr/share/texmf-texlive/fonts/cmap 以下にpoppler の cMap への symbolic link を作成することで動作させている例もあったけれど, 手元ではうまくいかなかった.
ad hoc だけれども /etc/texmf/texmf.d/80DVIPDFMx.cnf を作成し以下の内容を追記する(折り返してるけれども, 実際は 1 行で)
% dvipdfmx CMAPINPUTS=.;/usr/share/poppler/cMap/Adobe-Japan1//\ ;/usr/share/poppler/cMap/Adobe-Japan2//\ ;/usr/share/poppler/cMap/Adobe-GB1//\ ;/usr/share/fonts/cmap/gs-cjk-resource//
その後
$ sudo update-texmf -v
とすると texmf.cnf が更新される. これで,
$ dvipdfmx hoge.dvi
で日本語フォントを埋め込んでないPDF ファイルが生成される.ただし
main.dvi -> main.pdf ** WARNING ** Failed to load AGL file "pdfglyphlist.txt"... ** WARNING ** Failed to load AGL file "glyphlist.txt"... [1][2][3] 46329 bytes written
と警告が出ている. 以前の dvipdfmx には pdfglyphlist.txt などは同梱されていたみたいだけれど...これはなんだろう.
(2010/03/28 追記)大浦さんからのコメントより xdvipdfmx を使う場合には上記 WARNING は出ない. ただし 埋め込みの場合には xdvipdfmx は別途設定が必要な模様
dvipdfmx(font を埋め込む場合)
フォントを埋め込みたい場合には,先ず tex がフォントを見つけられる様にする.具体的には /etc/texmf/texmf.d/75DviPS.cnf の TTFONTS の項目にフォントを置いてある directory を追加しておく. 例えば
TTFONTS = .;$TEXMF/fonts/truetype//\ ;$OSFONTDIR//;/usr/share/fonts/truetype//\ ;/usr/local/share/fonts/truetype//
な感じで(折り返してるけれども, 実際は 1 行で).上記設定をしたら
$ sudo update-texmf -v
で /etc/texmf/texmf.cnf を更新しておく.
次に埋め込みたいフォントを設定する. 日本語フォントは, 例えば/etc/texmf/dvipdfmx/jisembed.map なるファイルを作成し, その中身に
# for jsarticle,jsbook rml-jis H :0:ipam.ttf gbm-jis H :0:ipag.ttf # standard platex classes rml H :0:ipam.ttf gbm H :0:ipag.ttf
なんて書いておいて,
$ dvipdfmx -f jisembed.map main
と埋め込む書式を指定すると良い. 常に埋め込みたい場合には /etc/texmf/dvipdfmx/dvipdfmx.cfg の中にこの map を読み込むよう設定しておく
$ sudo -s # echo "f jisembed.map" >> /etc/texmf/dvipdfmx/dvipdfmx.cfg
ちなみに
現状の otf-ipafont パッケージの提供するフォントは(PostScript 情報を内包していない)TrueType 由来の OpenType であり,拡張子が .ttf である. 拡張子 .ttf のフォントは /etc/texmf/texmf.d/75DviPS.cnf 内の TTFONTS で指定された場所からしか検索されないため, 上記設定ではフォントを埋め込むことはできない.
ad hoc な解決策ではあるものの, TTFONTS を以下の様に修正する.
TTFONTS = .;$TEXMF/fonts/truetype//;$OSFONTDIR// ↓ TTFONTS = .;$TEXMF/fonts/truetype//;$OSFONTDIR//;/usr/share/fonts/opentype/ipafont/
ディレクトリ末尾の // は「そのディレクトリ以下を search path に追加」なので,明示的に ipafont の置き場所を指定することで対応する. 当然 /usr/share/fonts/truetype へ symbolic link を張ってもフォントを埋め込むことはできる.
はてさて
dvipsk-ja はどうなってるのかしら...