大阪大学大学院医学系研究科 生体統御医学講座 麻酔集中治療医学教室

  • TOP
  • 麻酔学講座
  • 関連施設
  • 研究生・学生の方へ
  • 各種マニュアル
  • リンク集
  • 各種マニュアル
    大阪大学大学院医学系研究科 麻酔集中治療医学講座 TOP>各種マニュアル>LaTexの解説>2. LaTeXで論文を書こう>V.TeXのドライバーについて

    LaTexの解説

    2. LaTeXで論文を書こう

    V. TeXのドライバーについて

    LaTexの解説

    V.TeXのドライバーについて

    1. TeX/LaTeXのドライバーについて

     TeX/LaTeXの出力はdviファイル(device independent file)という形式になりま すが,これを具体的に画面に表示させたり,プリントアウトさせたりするにはそ れぞれの環境に合った(ハードウェアに合った)ドライバーを使用し,その環境設 定をする必要があります.
    ここではプレビューアとしてはASCII-pTeX-3.0.1で使用しているxdvi-22.15-j1.04を, プリントアウトをさせるためのドライバーとしてはPostScriptに変換することを 考慮し,dvipsk-5.86-j1.5eおよびdvi2ps-2.0jの2つとghostscript-5.10j ghostscript-7.05を例にとって簡単に環境設定の方法を解説します.7.05では CJKプロジェクトが正式に本家に取り込まれており,設定を行うだけで中国語, 日本語,韓国語をtruetypeフォントを用いて表示できるようになっています. ghostscriptのCJKプロジェクトについては ここを参照して下さい.

    2. Fontについて

     ドライバー類の解説に入る前にこれらに最も重要であるフォントの解説をしておきます.
    オリジナルのTeXでは通常使用されるフォント関連のファイルとしては,tfmファイルとgfファイルがあります.ftmファイルはTeX本体で使用されるファイルで, ここには文字の幅,高さ,深さ,傾き,カーニング,合字といった文字を組んで行くための情報(フォントメトリック)が収められています.
    一方gfファイルはデバイスドライバーが必要とするファイルで,実際に印字するための字形情報(フォントグリフ)を持っています.通常gfファイルはよりコンパクトにするために作られたpkファイルに変換されて使用されています.
    つまり,TeXで組版するにはtfmファイルが必要ですし,実際にドライバーを動かすにはpkファイルが必要だということです.なお,LaTeX2εでは,PostScriptフォントを使用した組版もできるようになっており,このためにvfフォント(virtual font)というものもあります.
    なおこれらの話はオリジナルの英文のTeXの場合です.では日本語のフォントについてはどうでしょうか?
    もちろん日本語TeXで組版を行う時には日本語のtfmファイルが使用されます. 実際にドライバーが使用するフォントについては現在様々なフォントが利用できます.ビットマップフォントもあればベクトルフォントもあります.やはりベクトルフォントの方が美しいので,私自身はZeitのJGというワードプロセッサソフトに附属していたJG-fontというものを使用しております.おそらくお手軽なのはWindows3.1J/Windows95に附属のTrue Typeフォントを使用する方法だと思います.この他ASCIIの書体倶楽部フォント形式に作成されたフリーのベクトルフォ ントがあります.これらのベクトルフォントは角川@広島大学さんの作成された VFlib-Ver2.2xで利用できます.このあと解説するドライバー群は大体VFlib対応 になっています.
    私の使用しているghostscript-7.05はdvipdfmを用いてpdfファイルを作成する場合にはepsファイル中のフォントをtype1フォントとして埋め込む場合には有用です.しかし単にdviファイルを打ち出す場合には個人的にはJG-fontの方を気に入っていますのでプリンターフィルター用にはghostscript-5.10jを使用しています.

    2-1. kpathsearchについて

     LaTeX2.09までは,フォントファイルの存在するディレクトリ全てを環境変数などに登録しておく必要がありましたが,LaTeX2εではkpathseachというファイル検索用のライブラリが採用されており,ライブラリディレクトリの適当なサブディレクトリにファイルを置いておくだけでよくなっております.TeXをデフォルトでインストールした場合,ライブラリディレクトリは"/usr/local/share/texmf" となります.teTeX-1.0でも私はこの設定を用いています.以下の設定を. profileに設定しておくとよいでしょう.

    TETEXDIR=/usr/local
    TEXMFCNF=.:/usr/local/share/texmf/web2c
    TEXMFMAIN=/usr/local/share/texmf
    export TETEXDIR TEXMFCNF TEXMFMAIN

    3. Previewer Xdvik-22.15-j1.04

     

    dviファイルをプレビューするドライバーはXdvik以外にもDOS/Windowsの世界で標準の地位を築いているdvioutなどいくつか存在します. dvioutのWindows版の最新は現在のところVer3.13のようです.またMacでは慶応大学 の内山さんの作成されているxdviが標準になっていると思います.これらについて の情報はASCIIのpTeXのページhttp://www.ascii.co.jp/pb/ptex/ や奥村さんのTeXのページhttp://www.matsusaka-u.ac.jp/~okumura/texfaq/ から辿って下さい.
    xdvik-22.15-j1.04はオリジナルのXdvik-22.15に日本語化パッチを当てたものです. Xdvik-18やXdvik-20aに対する日本語パッチは山賀@千葉大総合情報処理センター (yamaga@ipc.chiba-u.ac.jp)さんがとりまとめておられますが, xdvik-20cに対するパッチは中右 浩二 (knakau@sk.tsukuba.ac.jp)さんがとりまとめておられます.
    xdvik-22.02-j1.02は渡辺@神戸大 (watanabe@komadori.planet.sci.kobe-u.ac.jp)さんがまとめておられます. 最新は現在のところxdvik-22.15-j1.04です.オリジナルのxdvik-22.15.tar.gzに当てるパッチとして公開されています.download はこちらからできます.
    xdviにはこれまでのバージョンに対して非常に多くのパッチが公開されております ので注意しないと混乱してしまいます.
    さて,xdvik-22.15-j1.04についてですが,これには以下のような特徴があります.

    1. xdvik 側の内容の変化に合わせて正しく動くよう変更.… マクロの変更 の他、必要部分の追加、要らなくなった部分の削除等です.エンディアン 絡みや、TrueColor 環境の色処理等が変わってます.
    2. はやし@姫路工業大学 さん作の hal2 パッチの一部をマージ … 固定倍率に移行する Shrink ボタンの代わりに自由に拡大縮小出来る ZOOM_BUTTON 機能を付けるものです。configure で好きな方を選べます.
    3. PRINTDVI 機能の改良(?)版 DVISEL 機能を追加.(渡辺@神戸大) … dviselect がやってた部分を xdvi 内部で持ち、dvips/dvi2ps/jdvi2kps それぞれに合わせて引数を調整していた部分を外部スクリプトで持つようにする事で、柔軟性に富んだすっきりした構成になります。もはや dviselect 無しで、特定ページだけを印刷可能です。dvips 等は要ります。 これも configure で好きな方を選べます。

    などがあります.詳細はパッチに同梱されているREADME.xdvik-22.x-jpやさらにはREADMEsディレクトリ内の種々のREADMEを参照して下さい. なお,このパッチではDEFAULT_FONTMAPで指定するファイル名は日本語フォントを VFlib のどのフォントにマップするかを指定するファイルです。デフォルトでは vfontmapという名前になっており,VFlibのvfontcapとは違う点に注意して下さい. また,このパッチではデフォルトでdvipskを使用するようになっていますので, dvi2ps-jやjdvi2kpsなど他のコンバータを使用する場合には設定を変更して下さい. また,以前の版のxdviから特定のページだけをプリントアウトさせるためには dviselectというツールが必要です.必要な方はdownloadし て下さい.

    3-1. fontの生成について

     xdviではデフォルトではpkフォントが見当たらない場合mktexpkを呼び出して Meta Fontを起動し新たにpkフォントを作成しようとします.また,後述のps fontで組版したものをxdviでプレビューする場合にはgsftopkを先にインストールしておく必要がありましたが,xdvik-22.2にはgsftopk-1.16.4が同梱されています.また,teTeXのシステムにはgsftopkも含まれています.従って現在のパッケージを使用する場合には別途入手必要はありません.

    4. dviファイルコンバーター

     DOS/Windowsのdviprtなどのシステムを除けば通常はdviファイルをプリントアウトするためにはdviファイルをPostScriptファイルに変換します.このためのツールとして,dvipsk-5.86, dvi2ps-2.0j, jdvi2kps-4.0(?)などがあります. このうち私が使用しているdvipsk-5.86, dvi2ps-2.0jについて解説します. 現時点ではPostScriptフォントで組版をしたり,PSfragなどでPostScriptファ イルの加工を行ったりする場合にはdvipskが最も適しています.縦書きに最も 対応しているのもこれです. 私自身は現在ではdvipskをメインに使用しています. Postscript関連のファイルを操作する時にはこれが最もよく対応しているからです. 通常はxdviがdvi2ps-jをデフォルトにしていますが最近は私もほとんど使用しておりませんので,ここの解説は若干おかしなところがあるかもしれません. 縦書きは使用したことがないので省略します.
    なお,dvipdfmを用いればpdfファイルに変換することが可能です.また,psファイルからps2pdfを用いてpdfファイルを作成することもできます.

    4-1. dvipsk-5.86-p1.5f

    dvipsk-5.86には現在のところp1.5f.patchまであります.これはteTeX-1.0と ASCII-pTeX3.0.1で構築する場合に使用するパッチです. j1.4.patchまでの場合,これを作成するにはREADME.jpatchにもあるように vftools-1.2.tar.gzjapaneseAFM.tar.gzが 必要でした. j1.4c.patchではmakejvf-1.1a.tar.gzを 使用するようになっています. これを用いてvirtual fontを作成します.
    teTeXのソースツリーのtexkディレクトリでパッケージを展開してパッチを当て コンパイルして下さい.

    4-2. dvi2ps-2.0j

    dvi2ps-2.0jは桜井貴文(sakurai@math.s.chiba-u.ac.jp)さんと風間一洋(kazama@square.ntt.jp)さんの作成されたものです.
    最新版は3.0jになっているはずですが,私は使用していません.特徴を以下に示します.

    1. {NTT JTeX, ASCII日本語TeX} x {大日本フォント, プリンター内蔵フォント}の4通りのすべてをサポートした.
    2. fontdesc方式を採用した.
    3. 必要なフォントファイルがないとき、代用フォントを使うか、必要なフォントを生成するプログラムを起動できる.
    4. virtual fontに対応した
    5. ディスク上のtype1フォントおよび和田研フォントに対応した.
    6. VFlibにより、書体倶楽部フォント、JGフォント、TrueTypeフォント、NEWS用ベクトルフォントに対応した.
    7. eepic/tpicに対応した.
    8. EPSFファイルに対応した.

    このように豊富は機能を持ち,fontdescの設定によって柔軟にフォントを使用することができるのが大きな特徴だと思います.ただし,裏を返せはfontdescの書き方が解らないと使えないということです.

    4-2-1. fontdescの設定について
     fontdescの詳しい書き方についてはdvi2ps-2.0j附属のマニュアルがありますから,ここでは具体的に私の使用してた設定を書きます.(これはpTeX-2.1.4のものです.)
    dviファイルをプリントアウトする際に注意すべき点はどの段階でフォントをイメージ展開するかということです.
    1. PostScriptプリンターに出力する場合
      プリンターレベルでフォントを展開する(プリンター内蔵フォントを使用する)のが最も手軽です.この場合にはdviファイルからPostScriptファイルにコンバートする段階およびPostScriptファイルをプリンターに送る段階の全てでPostscriptフォントの名前だけを継承すればよいことになります.
    2. non PostScriptプリンターに出力する場合
      通常はGhostscriptを使用することになると思います.VFlib対応のGhostscriptならば PostScriptファイルをプリンターに送る段階でghostscriptによってフォントを展開すればよい訳です.もちろんdvi2psを使用してPostScriptファイルにする段階でフォント 展開をしておいても構いませんが,その分だけPostScriptファイルが大きくなってしまいます.どうせVFlibを使用するならプリンターに送る段階で展開した方が有利です.
    と言う訳で私のところでは通常は英文フォントはTeXのpkフォントを使用し,日本語についてはPostScriptコマンドに変換するように設定しています.また,英語の PostScriptフォントも使用できるように設定しています.
    /usr/local/libdata/dvi2ps/fontdesc

    #
    fontdesc    config
    # header
    include      dvi2.ps
    define mode  cx
    # ascii font
    fontdesc    fonts/efontdef
    # kanji font
    fontdesc    fonts/asc-vflkanji

    config

    define f     /usr/local/lib/texmf/fonts
    define af     /usr/local/lib/texmf/fonts
    vfontcap    /usr/local/lib/texmf/fonts/vfontcap
    define wlf    /usr/local/lib/texmf/fonts/vf
    私のところで使用しているプリンターはCanon LBP-A304E (lipsIII 300dpi)ですので modeはcx (300dpi)です.600dpiならljfourなどにするとよいでしょう.これはフォントが見付からない時にMeta Fontで生成する時に必要なモードです. fonts/efontdefは以下のようにしています.
    fonts/efontdef

    #   TYPE  SPEC  SUB  PATH
    # Computer Modern font
    font  pk  * 3  /usr/local/lib/texmf/fonts/tmp/pk/cx/%f.%mpk
    font  pk  * 3  /usr/local/lib/texmf/fonts/tmp/pk/ljfour/%f.%mpk
    font  pk  * 3  /usr/local/lib/texmf/fonts/public/cm/pk/%f.%mpk
    fontdesc psfonts3
    font  func  * 0  \
        !pre(dm),!pre(dg),!pre(min),!pre(goth),!pre(tmin),!pre(tgoth),\
        exec( /usr/local/bin/MakePK %f %m %R %M $mode ),\
        pk(/usr/local/lib/texmf/fonts/tmp/pk/cx/%f.%mpk)

    最後のfont func ...はMakePKでフォントを作成するためのコマンドです. あとは日本語フォントです.fonts/asc-vflkanji
    fonts/asc-vflkanji

    # VFlib kanji of ASCII Nihongo TeX
    # First, convert ASCII dvi -> VFlib kanji dvi by virtual font
    font jvf * 0 $af/vf-a2vfl/%f.vf
    # then, use VFlib kanji
    fontdesc bikan-vfl
    さらにfonts/bikan-vflの内容です.
    fonts/bikan-vfl

    font jfm * 0 /usr/local/share/texmf/fonts/public/ptex/tfm/%f.tfm
    include ascfix-c.ps
    builtin min JINA "/Ryumin-Light-H Ryumin-Metrics Set-New-Metrics"
    builtin goth JINA "/GothicBBB-Medium-H Gothic-Metrics Set-New-Metrics"
    builtin tmin JINA "/Ryumin-Light-H Ryumin-Metrics Set-New-Metrics"
    builtin tgoth JINA "/GothicBBB-Medium-H Gothic-Metrics Set-New-Metrics"
    builtin nmin JINA "/Ryumin-Light-H Ryumin-Metrics Set-New-Metrics"
    builtin ngoth JINA "/GothicBBB-Medium-H Gothic-Metrics Set-New-Metrics"
    これで日本語フォントはそのまま/Ryumin-Light-Hおよび/GothicBBB-Medium-Hで PostScriptファイルに継承されます.

    4-2-2. psfontsやgraphics.styを使用しての組版をdvi2ps-jでコンバートする場合の注意

    1. LaTeX2εではgraphicsパッケージを使用すると簡単にEPSファイルを取り込んだり回転させたりすることができます.しかしながら,この機能はドライバーに大きく依存しており最もこれに対応しているのは現時点ではdvipskです.
      dvi2ps-2.0jでgraphics.styに対応するためにはgraphics.styのドライバー指定を dvi2psではなくdvipsにし,dvi2psを起動する時にオプション-i dvips.psを使用します.これによって生成されるPostscriptファイルにdvips.psがインクルードされ dvips互換になります.
    2. LaTeX2εではpsnfssを使用すると簡単にPostscriptフォントでの組版ができます. しかしこの機能もドライバーに依存しておりdvi2ps-2.0j(-gamma)では最新のtimesパッ ケージなどに対応しきれていません.具体的にはfi,ff,ffiなどの合字が消えてしまいます. この点に付きましては,作者の桜井@千葉大さんから修正方法を教えて頂きました. 現在はkpathsea V2(TeX3.1415)用とkpathsea V3(TeX3.14159)用のものを頂いております.
      なおこれらの修正ファイルはdownloadで きます.
      現在の最新版ではこれらは既に修正されていることも考えられますので予め調べてみて 問題があるようなら修正ファイルを使用して下さい.

    5. Ghostscriptについて

     Ghostscriptの現時点での最新releaseはghostscript-7.05で,CJKプロジェクトが取り込まれています. 私は現在7.05と5.10Jを使用しています.5.10(5.50でも)にはい くつかのbug fixパッチが本家から公開されていますので,これらも拾って来る 必要があります.
    Ghostscript-5.10はgs510以下 から,Ghostscript-7.05はgs705以下か らdownloadできます.
    プリンターとしてはCanonのLBPシリーズを使用することが多いので福井大学の小泉さんが作成されたghostscript用lipsドライバーを組み込んでいます.このド ライバーは5.10Jでも動作しています.この他EPSONのESC/Page用ドライバーや RicohのRPDL用ドライバー,NECのNPDL用ドライバーもありますので,多くのレー ザープリンターで使用できると思います.大森 紀人さん (ohmori@p.chiba-u.ac.jp)がgs5.10j, 5.50j用のlips, npdl, rpdlのドライバーを作成しておられます.このドライバーはgs6.xでも使用可能で,私はgs7.05に 組み込んで使用しています.現在,大森さんのftpサイトへはなぜかアクセスできません.ドライバーに関しては私のところからもdownloadできるようにしておきました.
    GhostscriptはAladdin社の配布するPostscriptインタープリターです. ghostscriptはかなり多くのプリンターをサポートしていますが,サポートされていない場合でもドライバーを作成することはそれほど困難ではありません.少 なくとも白黒のドットプリンターの場合は難しくありません. ghostscriptが提供するいくつかの関数とプリンターのコントロールシーケンスが解れば比較的短時間でドライバーが作成できると思います.colorについては知識はありませんが...
    私自身もかつてFujitsu FMPRシリーズ用のドライバーやEPSONの24/48dot printer用のドライバーを作成しました.これらは ftp://masui.med.osaka-u.ac.jp/pub/public/latex/driverに置いてある ghostscript-2.6.2Jのソースパッケージにも同梱してあります.
    ghostscriptにはドライバーごとに種々のオプションを付けることができますが, あまり解説がなく,ソースを眺めないと解らないものも多くあります.オプションについて知りたいときにはソースを見てみるのも一つの手だと思います.
    さてghostscriptを使用してnon PostScript PrinterをPostscript printerのように扱う設定をしてみましょう.
    まず,以下のようなshell scriptを作成します.
    /usr/local/bin/gsf

    #!/bin/sh /usr/local/bin/gs -q -dNOPAUSE -sDEVICE=lips3 -sOutputFile=- pagesize.ps -
    もちろん-sDEVICE=の部分は自分のプリンターに合ったドライバーを指定して下さい.あとは/etc/printcapに以下のようなエントリーを作成します.
    ps|gs|GhostScript printer lips3:\
       :lp=/dev/lp0:sh:mx#0:\
       :if=/usr/local/bin/gsf:\
       :sd=/var/spool/lpd:\
       :lf=/var/log/lpd-errs:

    これで例えばcat xxx.ps | lpr -Ppsとすればghostscriptを使用してPostscript ファイルが印刷できるようになります.

    5-1. Ghostscriptのフォントについて

     ghostscriptの附属のフォントはVer2.6.2まではPostscriptフォントではありませんでしたが,Ver4.0ではPostscriptフォントになっています.このVer4.0のフォントはすべてVer.2.6.2で使用可能ですので是非ともインストールしておきましょう.この際の注意ですが,Ver4.0附属のFontmapをそのまま使用すると一部のフォントがないというエラーメッセージがでることがあります.これはVer2.6.2のフォントがすべてVer4.0 に含まれている訳ではないことによります.従ってVer4.0のFontmapの後ろにVer2.6.2 のFontmapをmergeし重なっているものを消して使用して下さい. (おそらく消さなくても問題はでないと思いますが...)
    なおVer5.xでは最初からこれらのPS fontでの構成となっていますのでオリジナルそのままでOkです.
    ここの内容についてのお問い合わせはhagihira@masui.med.osaka-u.ac.jp (萩平 哲)まで
    最終改定 2002.05.24