Hatena::ブログ(Diary)

移行しました. RSSフィード

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 はどうなってるのかしら...

ohuraohura 2010/03/28 08:23 dvipdfmx ではなく xdvipdfmx を使えば警告がでなくなるかも。

sasakyhsasakyh 2010/03/28 20:41 ども. >ohuraさん

たしかに xdvipdfmx だと pdfglyhlist に関する warning は出ませんね。
xdvipdfmx は xetex 由来のモノでしょうか(man が無い...).
あと, font の埋め込みについては別途設定が必要みたいですね。

そのうち関西Debianにて御教授下さい.

トラックバック - http://d.hatena.ne.jp/sasakyh/20100327