スラヴ研究者向け LaTeX 多言語環境の構築 — pTeX p2.1.10
since Jul.25 2002
 

はじめに

FreeBSD では ports や pkg_add コマンドにより簡単にプログラムをインストールすることができる。 pTeX (pLaTeX) においても同様に最新のバージョンが提供されている。 「スラヴ学研究者のコンピュータ・リテラシーのために」 でも pTeX 本体の組み込みの記述はこの方法によった (内容がおそろしく古びてしまったのだけれど)。

しかしながら、TeX において多言語環境を構築するにあたり、一部システムの制限値を拡張しなくてはならない場合がある。TeX における多言語環境として Babel システムを利用しているユーザは、ハイフネーションパターンを増やすと、LaTeX のフォーマットファイルを作成する際に iniTeX が "not enough memory (trie_size = ...)" 云々とのメモリ不足エラーメッセージを出力し停止してしまうという経験があるのではないかと思う。優先度の低い登録言語をやむなく削るという手段によりこれを回避することも可能であるが、TeX のソースコードを修正してシステムそのものを再構築すれば必要な言語をすべて登録できるようになる。このためには上記の ports のような簡便な方法によらず独自にアーカイブを取得して LaTeX システムを作成することになる。

本稿において、UNIX というプラットフォーム限定ではあるが、ハイフネーションパターン登録時のメモリ不足対策方法についても触れている。

ここで述べている pTeX の版は 2.1.9-10 であり少し古い。 実は思い立ってから時間がとれず多少のタイムラグが出てしまったわけで、そのへんご了解いただきたい。 とはいえ最新版の pTeX でもそれなりに参考になるはずである。

純粋に pTeX 本体のインストールに関わる部分は、インターネット上にごろごろころがっており、なかでも 松坂大学の奥村教授の Web ページ は本稿よりもはるかに参考になるかと思う。

本ドキュメントならびに提供パッチは無保証である。利用者の責任においてご活用いただきたい。ご意見、ご指摘あればメールまたは掲示版にてお寄せいただけると励みになる。

 

pTeX(pLaTeX) システムの構築

FreeBSD システムを前提に、構築手順を説明する。

pTeX の必要なパッケージはアスキーのサイトから取得できる。 ダウンロードしたパッケージを解凍・復元し、付属のドキュメントに従ってインストールするのが基本。

コマンドの実行は tcsh を想定しており、% は一般ユーザの、# はスーパーユーザのプロンプトであることを示している。

 

  1. LaTeX 関連ソースの展開

    アーカイブを復元する。作業用のディレクトリは ~/tmp とし、ここにパッケージ一式を格納するものとする。

    # cd ~/tmp
    # tar zxvf teTeX-src-1.0.7.tar.gz
    # tar zxvf ptex-src-2.1.9-1.tar.gz -C ./teTeX-1.0/texk/web2c
    # tar zxvf dvipsk-jpatch-p1.5c.tar.gz -C ./teTeX-1.0/texk/dvipsk
    # tar zxvf mendexk2.4f.tar.gz -C ./teTeX-1.0/texk
    		  
  2. teTeX ツリーの展開

    texmf ツリーを展開する。 /usr/local/share/texmf をルートパスとする。 これを環境変数 $TEXMF に格納しておく。

    # mkdir -p /usr/local/share/texmf
    # setenv TEXMF /usr/local/share/texmf
    # tar zxvf teTeX-texmf-1.0.2.tar.gz -C $TEXMF
    		  
  3. パッチの適用

    pTeX のパッチを適用する。

    # cd ~/tmp/teTeX-1.0/texk/web2c/ptex-src-2.1.9
    # patch -p1 < ~/tmp/ptex2.1.9-10.patch
    # patch -p1 < ~/tmp/ptex2.1.9-10_2.patch
    # cd ~/tmp/teTeX-1.0/texk/dvipsk
    # patch -p1 < ~/tmp/dvipsk586.patch
    		  
  4. teTeX の構築

     

    1. configure の実行

      configure コマンドを実行し、FreeBSD の環境に応じた Makefile を生成する。 "--disable-multiplatform" オプションをつけないと、 "/usr/local/bin/i386-freebsd4.x/" ディレクトリ下に実行バイナリが格納されパス設定など面倒である。

      # cd ~/tmp/teTeX-1.0
      # ./configure --prefix=/usr/local --disable-multiplatform
      				
    2. web2c ソースの修正

      引き続きそのままコンパイルを行ってもよいのだが、Babel マルチリンガルパッケージである程度の数の言語を混在する場合、ハイフネーションパターンの数が多くなると、TeX の制限値をオーバしてしまい、 LaTeX のフォーマットファイルが作成できない場合がある。 そこで tex.ch ファイルの中の以下の値を拡張する。 拡張数値の根拠はとくにないが、4 倍とした。登録すべきハイフネーションパターンの数に応じてさらに数値を大きくする必要があるかもしれない。

      ssup_trie_opcode     65535 -> 262140
      ssup_trie_size       65535 -> 262140
      trie_op_size          1501 ->   6004
      neg_trie_op_size     -1501 ->  -6004
      				

      ソースコードの該当部を探すのが面倒な方のためにパッチを用意したので、ダウンロードし ~/tmp/teTeX-1.0/texk/web2c に格納したあと、以下のように適用してもよい。

      # cd ~/tmp/teTeX-1.0/texk/web2c
      # patch < tex.ch.patch
      				
    3. teTeX のビルド

      コンパイル、インストールそして TeX のフォーマットファイル作成を行う。

      # make world
      				
  5. pTeX の構築

     

    1. configure の実行

      EUC/JIS/SJIS から漢字コードを決定する。EUC とする。

      # cd ~/tmp/teTeX-1.0/texk/web2c/ptex-src-2.1.9
      # ./configure EUC
      				
    2. pTeX のビルド

      gmake が必要である。

      # gmake
      # gmake install
      				
  6. Babel 環境設定

    teTeX には Babel パッケージのみならず cyrillic、LH フォントなどキリル組版環境が一通り付属しているが、CTAN から 2002.7 時点の最新版 3.7 パッケージを入手する。

    また Babel において "\selectlanguage" コントロールシーケンスのオプションに "japanese" を指定できるわたしの試みをパッチ提供している。関心のある方は無保証であることをご了承の上、適用いただいてもよい。

    この版は日本語 EUC コード向けである。JIS や SJIS を選択しているユーザは、パッチを適用した後に "japanese.dtx" ファイルに対し、当該コードに変換を施す必要がある。

    # cd $TEXMF/tex/generic
    # wget --passive-ftp -r -nH --cut-dir=5 \
    ftp://ftp.riken.go.jp/pub/tex-archive/macros/latex/require/babel
    # cd babel
    # patch < ~/tmp/babel-3.7j.patch
    (Babel 3.7 用の日本語パッチの適用)
    # platex babel.ins
    		  
  7. ハイフネーションパターンの登録

     

    1. ハイフネーションパターンの入手

      利用したい言語のハイフネーションパターンを CTAN から入手する。ロシア語用は CTAN:language/hyphenation/ruhyphen ディレクトリ以下をダウンロードする。

      # cd $TEXMF/tex/generic
      # wget --passive-ftp -r -nH --cut-dir=4 \
      ftp://ftp.riken.go.jp/pub/tex-archive/language/hyphenation/ruhyphen
      				
    2. language.dat への登録

      $TEXMF/tex/generic/config/language.dat を編集し、利用したい言語のハイフネーションパターンを記述する。Babel で選択する言語名とそれに対するハイフネーションパターンのファイル名を指定する。提供された language.dat の内容を参照すれば登録の要領は理解できるはずである。

    3. ロシア語のハイフネーションパターンの選択

      キリル関連言語ではエンコーディングが複数ある。日本語と混在して利用する場合、必然的にアスキーコード(いわゆるローマ字)でロシア語テキストを記述することになり、エンコーディングは 7bit OT2 を選択することになる。

      ところが、残念なことに現在 7bit OT2 のロシア語ハイフネーションパターンは CTAN において入手できなくなっており、この結果日本語 pTeX で正しいロシア語ハイフネーションは実現できない状況である。

      これでは日本のスラヴィストにとって多言語環境としての Babel のありがたみがない。というわけで、Dmitri Vuris が作成した ruhyphal.tex をわたしなりに 7bit 版にリメイクしてみた。無保証であることをご了承の上お試しになるならば、以下のファイルをダウンロードし、CTAN から入手したロシア語用のハイフネーションパターンのディレクトリに上書きしていただきたい。さらに上記 language.dat のロシア語のハイフネーションパターンとして "ruhyphen.tex" を指定する。

     

  8. LaTeX フォーマットファイルの再作成

     

    1. texmf.cnf の修正

      $TEXMF/web2c/texmf.cnf 中の "trie_size" 値を修正する。なければ追加する。

      trie_size = 256000
      				

      くらいにしておく。上記のとおり tex.ch を修正していれば最大 262140 まで拡張できるはずだ。

    2. hyphen.tex の名称変更

      オリジナルの "hyphen.tex" を "hyphen.tex.orig" にファイル名称変更を行う。kpsewhich コマンドで探してリネームする。

      # cd $TEXMF
      # kpsewhich hyphen.tex
      /usr/local/share/texmf/tex/generic/hyphen/hyphen.tex
      # cd tex/generic/hyphen
      # mv hyphen.tex hyphen.tex.orig
      				
    3. hyphen.cfg の名称変更

      ハイフネーションパターンの登録の際、LaTeX 標準 ではなく Babel が提供している "hyphen.cfg" が initex に認識される必要がある。kpsewhich で TeX に認識される "hyphen.cfg" を確認し、これが Babel の提供するものでない場合、名称変更して Babel のものが認識されるようにする。

      # cd $TEXMF
      # kpsewhich hyphen.cfg
      warning: kpsewhich: Can't guess file type of hyphen.cfg, ...
      /usr/local/share/texmf/ptex/platex/base/hyphen.cfg
      (platex 提供の hyphen.cfg が認識される)
      # cd ptex/platex/base
      # mv hyphen.cfg hyphen.cfg.orig
      # sync
      # kpsewhich hyphen.cfg
      warning: kpsewhich: Can't guess file type of hyphen.cfg, ...
      /usr/local/share/texmf/tex/generic/babel/hyphen.cfg
      (今度は Babel 提供の hyphen.cfg が認識され OK)
      				
    4. iniTeX の実行(フォーマットファイルの再作成)

      ハイフネーションパターンを登録するため、LaTeX2e 及び pLaTeX2e のフォーマットファイルを再作成する。フォーマットファイルの場所は $TEXMF/web2c/ とする。

      # cd $TEXMF/tex/latex/base
      # tex -ini latex.ltx
      # mv -f latex.fmt $TEXMF/web2c/
      # cd $TEXMF/ptex/platex/base
      # ptex -ini platex.ltx
      # mv -f platex.fmt $TEXMF/web2c/
      				
  9. その他

    Xdvi、Dvips の設定ファイルを修正する必要があるかもしれないが、またの機会とする。