2011/08/11

ubuntu10.04でlatex

Vine Linux 6 が出たらしい。Vine は latex 環境が簡単に構築できる?
なにくそ!Ubuntuでもできるんじゃい!
【目標】
1.なるべく apt-get で取ってこれるパッケージを使いたい
2.PDFに好きなtruetypeフォントを埋め込みたい
3.euc-jpじゃなくてUTF-8でコンパイルできるように

便利パッケージ latex-env-ja, latex-extra-ja はUBUNTU日本語チームのPPAらしい
例の呪文を唱える
sudo add-apt-repository ppa:japaneseteam/ppa
gpg --keyserver keyserver.ubuntu.com --recv-keys 68B5F60DCDC1D865
gpg --export --armor 68B5F60DCDC1D865 | sudo apt-key add -
sudo apt-get update
sudo apt-get upgrade(anthyとかアップデートされる)
https://wiki.ubuntulinux.jp/JapaneseLocalizedDerivative/LaTeXForJapanees
まずはここに書いてある通りにやってみる
sudo apt-get install latex-env-ja latex-extra-ja
sudo jisftjisconfig add
sudo apt-get install gs-cjk-resource (任意のttfを埋め込む際に必要)
適当な test.tex ファイルを(EUC-JPで)作って platex test.tex を作ると、test.dvi が出来る。
これは xdvi で見れるのだが、xdviは見た目があまりにもしょぼいので、PDFにしよう。

PDFにするために dvipdfmx をしようとしたら、次のエラーが出た。
** WARNING ** Failed to load AGL file "pdfglyphlist.txt"...
** WARNING ** Failed to load AGL file "glyphlist.txt"...
** ERROR ** Could not find encoding file "H".
慌てずに以下のURLにある作業を行う。
http://d.hatena.ne.jp/lucky_pool/20100625/1277450818
echo j  jis-cjk.map | sudo tee -a /etc/texmf/dvipdfmx/dvipdfmx.cfg
要するに、dvipdfmx.cfg に中国語日本語韓国語の文字コードを追加した。

そして無いと言われているファイルをW32TeXのパッケージから流用する。
上記のURLにあるW32TeXのサイト上にはパッケージは無く、ミラーから取ってくる。
なんとなくKDDIを選択。
sudo apt-get install xz-utils
mkdir dvipdfm-w32
cd dvipdfm-w32
wget http://ftp.kddilabs.jp/TeX/ptex-win32/current/dvipdfm-w32.tar.xz
tar Jxvf dvipdfm-w32.tar.xz
cd share/texmf/fonts/map/agl
sudo cp glyphlist.txt pdfglyphlist.txt /etc/texmf/dvipdfmx/.
後のファイルは要らないので dvipdfm-w32 ディレクトリごと消そう。
そして次の処理。
sudo mv /etc/texmf/texmf.d/85Misc.cnf /etc/texmf/texmf.d/85Misc.cnf.org
sudo sed -e "/^CMAPFONTS/ s|$|;/usr/share/fonts/cmap//|" /etc/texmf/texmf.d/85Misc.cnf.org > /etc/texmf/texmf.d/85Misc.cnf
sudo update-texmf
要するに、/etc/texmf/texmf.d/85Misc.cnf 中のCMAPFONTS に ";/usr/share/fonts/cmap//" を加えて update-texmf。

これでpdfが出来たので、PDF Viewer である acroread をインストール。
sudo wget https://www.ubuntulinux.jp/sources.list.d/lucid.list -O /etc/apt/sources.list.d/ubuntu-ja.list
gpg --keyserver keyserver.ubuntu.com --recv-keys 058A05E90C4ECFEC
gpg --export --armor 058A05E90C4ECFEC | sudo apt-key add -
sudo apt-get update
sudo apt-get install adobereader-jpn
しかし以上の作業を行うと、最初は出来ていた platex コマンドが通らなくなる。
! LaTeX Error: File `jarticle.cls' not found.
Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: cls)
調べると、jarticle.cls は /usr/share/texmf/ptex/platex/base/jarticle.cls にある。
TEXINPUTS.platex は $TEXMF/{ptex,tex}/{platex,latex,generic,}// なので悪くなさそう。
#最後の "//" は「以下を再帰的に探せ」ということらしい
しかし $TEXMF の定義を調べると、
TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFLOCAL,!!$TEXMFMAIN,!!$TEXMFDIST}
TEXMFMAIN = /usr/share/texmf
なぜ外れているのか分からないが、$TEXMFMAIN の前の "!!" を消してから再び sudo update-texmf。
sudo mv /etc/texmf/texmf.d/05TeXMF.cnf /etc/texmf/texmf.d/05TeXMF.cnf.org
sudo sed -e "/^TEXMF\s/ s|\!\!\$TEXMFMAIN|\$TEXMFMAIN|" /etc/texmf/texmf.d/05TeXMF.cnf.org > /etc/texmf/texmf.d/05TeXMF.cnf
sudo update-texmf
これでまた jarticle の platex が通るようになった。

PDFにするときに、指定したフォントをPDFに埋め込んで、どんなOS・デバイスであっても見た目を同じにしたい。
まずは dvipdfmx に設定されているtruetype fontのパスを調べる。
kpsewhich -progname dvipdfmx -show-path=ttf
シンボリックリンクを張るもの嫌なので、
これに通常のtruetype fontの場所である /usr/share/fonts/truetype// が含まれればよい。
# /usr/share/fonts/type1 なども入れたいので、/usr/share/fonts を OSFONTDIRに設定する
sudo mv /etc/texmf/texmf.d/75DviPS.conf /etc/texmf/texmf.d/75DviPS.conf.org
sudo sed -e "/^OSFONTDIR/ s|/please/set/osfontdir/in/the/environment|/usr/share/fonts|" /etc/texmf/texmf.d/75DviPS.conf.org > /etc/texmf/texmf.d/75DviPS.conf
sudo mktexlsr
sudo update-texmf
kpsewhich TakaoGothic.ttf とかやって、パスが見えれば成功。
あとは /etc/texmf/dvipdfmx の下にフォントのマップファイルを置けばよい。
例えば Takao フォントの場合には以下になる。
sudo cat <<EOF > /etc/texmf/dvipdfmx/takao.map
rml H TakaoMincho.ttf
rmlv V TakaoMincho.ttf
rml-jis H TakaoMincho.ttf
gbm H TakaoGothic.ttf
gbmv V TakaoGothic.ttf
gbm-jis H TakaoGothic.ttf
EOF
これで、dvipdfmx -f takao.map hogehoge.tex とすればフォントが埋め込まれたPDFが出来る。

調子に乗って、色んなフォントを埋め込んでみた。
その中で使えそうなもの一覧。apt-get install で入れられるものばかり。
ttf-dejima-mincho
明朝のみ。柔らかく草書体みたいだが、線がしっかりしている。
ttf-ipafont
コンパイル時によく分からないエラーが出るのが難点だが、元のフォントに近い。
ttf-takao
ubuntuの標準と言っても過言ではない。元と比べるとすっきりとしている。
ttf-umeplus
ゴシックのみ。丸っぽく可愛らしい字体で全体的に正方形っぽい。
ttf-vlgothic
ゴシックのみ。丸っぽい字体だが、梅+フォントにくらべてすっきりしている。
最後にスクリプトを。
emacsやviのデフォルトの漢字コードはUTF-8であるが、platexはデフォルトでEUC-JP。
UTF-8を使えるplatexは無いらしい。
そこで、nkfでUTF-8からEUC-JPに変換してからコンパイルするスクリプトを作る。
私は${HOME}/binにパスを通しているので、そこに platex-utf8 という名前のスクリプトを置く。
xdviは見た目しょぼいので、使わない。どうせpdfをacroreadで見るんだから、一気にPDFまで変換してしまう。
そして余計なファイルは消す。
参考にしたのは以下のURL。
http://d.hatena.ne.jp/a_bicky/20100922/1285133141
sudo apt-get install nkf
cat <<EOF > $HOME/bin/platex-utf8
#!/bin/sh
script_name=platex-utf8
{
    if [ $# -eq 0 ] || [ $# -gt 2 ]; then
        echo "Usage: $script_name [font] texfile"
        exit
    elif [ $# -eq 1 ]; then<
        font=""
        texpath=$1
    else
        font=$1
        texpath=$2
    fi
}
if [ ! -e $texfile ]; then
    echo $script_name: cannot find file $texpath
    exit
fi
dirname=`/usr/bin/dirname $texpath`
filename=`/usr/bin/basename $texpath`
basename=`echo $filename | sed -e "s/\\.[^.]*$//"`
tmppath=`/bin/mktemp --tmpdir=/tmp $basename.XXXXXX`
nkf -e $texpath > $tmppath
/usr/bin/platex $tmppath
if [ $? -eq 0 ]; then
    rm -f $tmppath $dirname/$basename.log $dirname/$basename.aux
else
    exit
fi
case "$font" in
"-d"|"--dejima" )
        /usr/bin/dvipdfmx -f dejima.map $dirname/$basename.dvi
        ;;
"-i"|"--ipa" )
        /usr/bin/dvipdfmx -f ipa.map $dirname/$basename.dvi
        ;;
"-t"|"--takao" )
        /usr/bin/dvipdfmx -f takao.map $dirname/$basename.dvi
        ;;
"-u"|"--ume" )
        /usr/bin/dvipdfmx -f umeplus.map $dirname/$basename.dvi
        ;;
"-v"|"--vl" )
        /usr/bin/dvipdfmx -f vlgothic.map $dirname/$basename.dvi
        ;;
"-n"|"--none" )
        /usr/bin/dvipdfmx $dirname/$basename.dvi
        ;;
* )
        /usr/bin/dvipdfmx $dirname/$basename.dvi
        ;;
esac
if [ $? -eq 0 ]; then
    rm -f $dirname/$basename.dvi
fi
EOF
chmod +x $HOME/bin/platex-utf8
あとは .zshrc とかに alias platex "${HOME}/bin/platex-utf8" を追加すれば便利。
さらに .zshrc で fpath を設定しているパス(私は ${HOME}/.zsh/functions/Completion)に
以下のファイルを置いておくと幸せになれる。
cat <<EOF > $HOME/.zsh/functions/Completion/_platex-utf8
#compdef platex platex-utf8
_arguments \
    '(-t --takao)'{-t,--takao}'[embed Takao TTF in PDF]' \
    '(-v --vl)'{-v,--vl}'[embed VL-Gothic TTF in PDF]' \
    '(-i --ipa)'{-i,--ips}'[embed IPA TTF in PDF]' \
    '(-u --ume)'{-u,--ume}'[embed UME+ TTF in PDF]' \
    '(-d --dejima)'{-d,--dejima}'[embed dejima TTF in PDF]' \
    '(-n --none)'{-n,--none}'[do not embed TTF in PDF]' \
    ':file:_files'
EOF

0 件のコメント:

コメントを投稿