2007年7月アーカイブ

参議院選挙

|

夜七時過ぎ,雷鳴が轟くなか,妻と参議院選挙の投票に行ってきた。耳鼻科の受付のおばちゃんが今日も投票用紙の交換をしていた。

今にはじまったわけでもない年金問題や公務員天下り規制など,愚にもつかない問題が国政選挙の争点になっている。年金をきちんと管理するのは当たり前ではないか。なんで公務員が天下りするのがそんなに悪なのか。公務員だってキャリアにものを言わせて再就職する権利があるんだから,さっぱり解りません。

X 党と Y 候補に迷わず投票した。まさか,「改革実行力」云々が空々しい政党でも,「生活が第一」とか言って実はなんの具体策も持ち合わせない政党でも,あるはずがない。投票後「共和党」と書いてやればよかったろうかとふと思った。今このご時世,米国に政治の舵取りをしてもらっているようなものではないか。

投票場にホワイトボードが設置されていて, 六時何分か時点での選挙区の投票率が大書されていた。41.77%。前回 (衆議院・統一地方選?) では,同じ時間でたった 25% くらいだったと記憶する。今回は「少しはお国に物申す」という気概があるわけか。

upTeX/upLaTeX 0.10 インストール

|

ttk さんによる pTeX 内部 Unicode 対応版 upTeX/upLaTeX をやっとインストールした。upTeX/upLaTeX の概略は「Unicode 対応 pTeX」にしるしたとおりである。バージョンはできたてのほやほや uptex-0.10 である。ptetex3-20070125 旧システムと,私自身で構築した texmf-local とに上書きインストールした。いつからか ptetex3 インストーラは /usr/local/teTeX 配下を削除しない仕様になり,さらに面倒が減った。Mac OS X での導入備忘録をしるしておく。

  1. パッケージのダウンロード/展開

    ttk さんのサイトから uptex-0.10.tar.gzuptex フォントバイナリをダウンロードして $HOME/tmp/ptetex3 (インストールワークディレクトリ) に格納する。uptex-0.10.tar.gz はアーカイバで展開しておく。

    必要に応じて cm-super.zip (V. Volovich による T1, T2 Type1 フォント集成),cbfonts.zip (ギリシア語 Type1 フォント集成),unicode.zip (LaTeX unicode 拡張パッケージ) も同じワークディレクトリにダウンロードしておく。私の場合,すでにこれらは texmf-local に存在しているので実行しなかった。以下の手順ではダウンロードを含めている。

    土村さんの ptetex3-20070606.tar.gz,その前提となる tetex-src-3.0.tar.gztetex-texmf-3.0po.tar.gz も入手しておく。ptetex3-20070606.tar.gz のみ解凍しておく。残りのアーカイブはインストーラが自動的に展開してくれる。

    % mkdir -p ~/tmp/ptetex3
    % cd ~/tmp/ptetex3
    % wget -nH -nd \
    http://homepage3.nifty.com/ttk/comp/tex/uptex-0.10.tar.gz
    % wget -nH -nd \
    http://homepage3.nifty.com/ttk/comp/tex/uptex_font-0.08.tar.gz
    % wget -nH -nd \
    http://tutimura.ath.cx/~nob/tex/ptetex/ptetex3/ptetex3-20070606.tar.gz
    % wget -nH -nd \
    ftp://ftp.ring.gr.jp/pub/text/CTAN/systems/unix/teTeX/current/distrib/\
    tetex-src-3.0.tar.gz
    % wget -nH -nd \
    ftp://ftp.ring.gr.jp/pub/text/CTAN/systems/unix/teTeX/current/distrib/\
    tetex-texmf-3.0po.tar.gz
    % wget -nH -nd \
    http://tug.ctan.org/fonts/ps-type1/cm-super.zip
    % wget -nH -nd \
    http://tug.ctan.org/fonts/greek/cbfonts.zip
    % wget -nH -nd \
    http://tug.ctan.org/macros/latex/contrib/unicode.zip
    % tar zxvf ptetex3-20070606.tar.gz
    % tar zxvf uptex-0.10.tar.gz
    
  2. upTeX パッチの移動

    upTeX 提供のパッチを ptetex3 展開ディレクトリにコピーする。

    % cp uptex-0.10/patch/* ptetex3-20070606/
    
  3. my_option 調整

    ptetex3 のインストールオプション設定である my_option.sample を適宜修正して,ワークディレクトリ直下に my_option として格納する。私の場合はまったく修正する必要がなく,コピーするだけだった。

    % cp ptetex3-20070606/my_option.sample my_option
    
  4. Ghostscript のパス修正

    私のように Ghostscript を /usr/local/teTeX 以下に導入している場合,ptetex3 付属のインストールスクリプト 7font-search.sh の 109 行目を以下のように /usr/local/teTeX を参照するよう手直ししておく。

    ghostscript /usr{,/local/teTeX,/sfw}/{share,lib}/ghostscript{,/*}/Resource/CMap
    
  5. .texmf-* のリネーム/環境変数のリセット

    ホームディレクトリ下にある .texmf-* ディレクトリをリネームしておく。また TEXxxxx 等の環境変数はインストールする仮想端末においてリセットしておく。

    % cd $HOME
    % mv .texmf-var texmf-var-old
    % mv .texmf-config texmf-config-old
    % unsetenv TEXDIR
    % unsetenv TEXMFLOCAL
    ...等々
    
  6. upTeX/upLaTeX のビルド

    以下を順次実行する。

    % cd ~/tmp/ptetex3/ptetex3-20070606
    % ./0uptex.sh
    % make babel font fonty
    

    make test が問題なさそうであれば,スーパーユーザ権限でインストールを実行する。

    # make install
    
  7. upTeX/upLaTeX フォーマットファイル再生成

    私の場合,折悪しくインストール時に参照される language.dat に関して texmf-local 下にある,latex 用に調整した 8 bit ハイフネーションパターン用ファイルが使われたため upTeX/upLaTeX のフォーマットファイルの生成に失敗してしまった。platex 用に 7 bit 化を施した language.dat に変更して,再度フォーマットを生成した。

    % cd /var/tmp/ptetex3/tetex-src-3.0/texk/web2c/uptex
    % make formats
    % sudo cp *.fmt /usr/local/teTeX/texmf-var/web2c
    
  8. フォントマップの登録

    旧システムで利用していたフォントマップを再登録する。これは私自身で texmf-local 下に追加したフォントパッケージについて実施した。

    % source ~/.tcshrc (環境変数を再度設定するため)
    % find /usr/local/teTeX/share/texmf-local -name "*.map" |\
      xargs basename > /tmp/maplist
    % emacs /tmp/maplist & (不要なものを適宜削除)
    % foreach i (`cat /tmp/maplist`)
    foreach? echo "*** map file: $i ***"
    foreach? updmap --nomkmap --nohash --enable Map=$i
    foreach? end
    ...
    % 
    

    次に,upTeX 用のフォントマップを登録しておく。~/tmp/ptetex3/uptex-0.10/font/map 下に dvipdfmx,dvips 用のサンプルが置かれている。これを別名にコピーして,内容をユーザ事情にあったフォント名に修正して,マップ登録を行う。これを実行しておかないと upTeX/upLaTeX の組版結果を閲覧できない。

    % cd ~/tmp/ptetex3/uptex-0.10/font/map
    % cp for_dvipdfmx uptex-dvipdfmx.map
    % cp for_dvips uptex-dvips.map
    % emacs uptex-dvipdfmx.map & (適宜編集)
    % emacs uptex-dvips.map & (適宜編集)
    % su -m
    # mkdir -p $TEXDIR/fonts/map/dvips/uptex
    # cp *.map $TEXDIR/fonts/map/dvips/uptex
    # mktexlsr 
    # updmap-sys --nomkmap --enable KanjiMap=uptex-dvipdfmx.map
    # updmap-sys --nomkmap --enable KanjiMap=uptex-dvips.map
    

    さて,最後にフォントマップを実際に更新する。updmap.log でエラーが出ていないか確認しておく。

    # updmap-sys
    


以上で ptetex3-upTeX 組込みは完了である。uptex-0.10/samples 下にサンプル文書が格納されている。make all としてタイプセットして確認してほしい。

upTeX/upLaTeX の追加フィーチャーについては私自身試行しつつ,今後話題にできればよいと思うが,基本的なものを以下に挙げておく。Unicode は主に記号類について和文,欧文どちらで取り扱うか決めかねる場合があり,upTeX では新しいプリミティブで制御できるようになっている。ttk さんの苦労が偲ばれる。

\kcatcode プリミティブ
Unicode 文字の欧文 (15) か和文・漢字 (18) かの取り扱いを指示する。\kcatcode`б=15 とするとキリル文字が欧文として扱われる。キリル文字はこれを指定しないと全角文字として処理されてしまい,ハイフネーションなど機能しないので注意。またある文字について \kcatcode をセットすると,同じ Unicode 文字ブロックに属する文字を別行で指定した場合 "Missing number" のエラーとなってしまう。よって,ロシア語ならばある一文字について指定しておくに留めるか,\disablecjktoken を活用する。ちなみに古典ギリシア語をタイプセットする場合は基本ギリシア文字と拡張ギリシア文字のふたつのエリアについて \kcatcode を指定する必要がある(\kcatcode`Ἄ=15\relax\kcatcode`ς=15\relax など)。
\disablecjktoken プリミティブ
この指定以降の Unicode トークンを欧文として扱う。
\enablecjktoken プリミティブ
この指定以降の Unicode トークンを漢字として扱う。
文書クラス
ujarticle.clsutarticle.cls が追加されている。UTF-8 で原稿を準備して upLaTeX で組む場合は \documentclass{ujarticle} とする。奥村先生の jsarticle.cls を使いたい場合はオプションに uplatex を指定する (\documentclass[uplatex]{jsarticle})。

アジア杯3位決定戦

|

アジア杯3位決定戦日本対韓国が先ほど終わった。韓国が PK 戦で勝利した。

韓国の気迫が凄まじかった。韓国の精神的勝利という感じ。こういう勝ち方もあるわけである。延長後半戦から日本は破れるべくして破れるような予感がした。どんなに中盤でうまく立ち回ってもゴール前でどっちらけだと勝てないということ。これが日本代表の現実だと思った。

よく考えてみると,サウジアラビア,イラク,韓国,日本の4強。順当ではないか。サッカーの面白さは現実を見せつけられることと悟る。「試合にも人生にも負けることがある」との試合後のオシム監督の言葉。

日本サッカー協会のホームページを見ると,2050 年までにワールド杯優勝を目標に掲げているそうである。そんな先の目標に対して誰が約束をグリップできるのかと笑ってしまうが,遠い道のりであることは確かなのである。オシムの言うとおり「負けることもある」と思って応援しないと,気持ちまで遥か遠くの到着点にうんざりしてしまう。そうは言ってもよいサッカーを日本代表は見せてくれた。

ドーハの悲劇,ジョホールバルの歓喜,マイアミの奇跡,カイザースラウテルンの悪夢。今回はなんだろう。ハノイの残念。次はオリンピック予選が楽しみである。J では柏レイソルにも頑張って欲しいのだけど。

NOP 命令

|

大型汎用機(メインフレーム)の機械命令(マシン語)に NOP 命令というのがある。私は二十年前に計算機プログラミングを習いはじめた時,面食らったもののひとつである。これは要するに「何もしない」という命令(NOP = No OPeration)なのである... ドキュメント作成システム LaTeX(「ラテック」,「ラテフ」あるいは「レイテック」と読む。「ラテックス」じゃないよ。それじゃコンドームになっちまう) を使う方は,同様に「何もしない」\relax 命令をご存知のはずである。

「何もしない」命令なんてどうして必要なのだろうかと誰しも思うだろう。ところが沈黙が文芸表現において意味をもつように「何もしない」命令が素晴らしいトリックを実現する場合がある。計算機の世界でも,沈黙が時に雄弁に勝ることがある。

例えば,アセンブラで書いたプログラムにおいて BC(Branch on Condition)命令で条件分岐をする手続きがあり,通常はフラグレジスタの値によって分岐するわけだが,運用上の問題からその条件分岐をさせたくないことが起こったとしよう。そのような場合,実行時パッチ(パッチとはプログラム訂正コード。訂正したい部分だけのコードなのでパッチ=「継ぎ接ぎ」と呼ばれる。大型汎用機にはディスク上のプログラムそのものを書き換えるのではなく,メモリにロードする時点でパッチを適用できる機能がある。アセンブラで書いたプログラムでないとこんな芸当はできない)で記憶装置にこのプログラムをローディングする際に,BC 命令を NOP 命令で書き換えたりしたものである。これにより分岐命令が無効化され,いかなる条件においても次の命令以降が実行されるわけだ。

汎用機のコーディングにはこれに類するトリックがゴマンとあった。先輩のプログラムをメンテナンスした時のこと,意味不明の領域確保命令が書かれていて「これ何ですか」と聞いた。アセンブラは領域の制御をすべてプログラマの知性に委ねることができる。記憶装置のどの位置にどのバイナリコードが配置されているかが正確に分る。ローディングされた時,高速化の鍵を握るループ処理がきちんとプロセッサの超高速バイポーラ一次キャッシュに収納可能かを正確に設計することができる。記憶域セグメントに余裕があると,プログラムの問題修正時にパッチをあてる領域を確保しておくことがある。こうしておくとメモリ配置に影響のある実行サイズを変えることなくプログラムに追加/修正コードを付加できるわけだ。先輩の領域確保命令の意図はそのようなものであった。

LaTeX の \relax についても一度定義したマクロ命令を無効化するのに利用でき,同じマクロ命令の意味を状況に応じて変更する使い方がある。もちろんそのほかに「何もしない」ことが逆説的に機能するいろんな局面がある。さあ,リラックスしてプログラムに魔法をお掛けしよう — LaTeX の作者・クヌース教授の懐の深さが知れるというものである。

「何もしない」命令。これは計算機科学者による最高のデジタル・ジョークに違いない。

アジア杯

|

サッカー・アジア杯韓国対イラン戦をテレビで観た。どちらも決め手を欠いて 0-0 のまま,PK 戦で韓国が勝利した。点が入らずファウルの多い,面白味のない試合。「おお凄い」という見せ場がまったくなかった。韓国は精神的にタフなサッカーを見せてくれるので私の好きなチーム。今日は相手次第の試合だったのかも知れない。

昨夜,日本も PK 戦の果てに因縁のオーストラリアに辛勝したけれども,内容からすると素人目に見ても今日の韓国よりも上かなという印象がある。気温35度という殺人的な環境で 120 分走り回り,オーストラリアを追い詰めた日本チームの姿に,感動を覚えた。決定力云々はこんな試合を見せてくれればどうでもよいではないか。

いずれにせよ,韓国も日本も勝ち進んで,日韓の決勝戦を観たいものである。韓国は日本が相手だと凄まじい闘争心を剥き出しに見せてくれる。そこが何より楽しみなのである。

TeX のタイプセット結果 dvi をフォント埋め込み PDF に変換すると,ときおりフォントが文字化けすることがある。MonTeX ウイグル文字 Type1 フォントを埋め込んだ PDF がイメージセッターで化けた例を私は知っている。Adobe Reader 8 の抽出失敗問題に見る現象もそのひとつといえる。

また TeX-dvips で作成した EPS を Adobe Illustrator などで開くと,Type1 フォントが参照できず正しく表示できないことがある。TeX の数式フォントもこの範疇に属する。

このようなときには Ghostscript epswrite デバイスを利用することによりフォントをアウトライン化してベクトル画像として EPS に取り込む手段がある。つまりこうして生成した EPS ファイルを \includegraphics 命令で TeX 文書に挿入したり,Illustrator で編集するわけである。その手順を以下に示す。この方法は三重大学の奥村先生に教えていただいた。

まず,取り込みたい TeX 原稿 (ウイグル文字の例) を以下のように準備する。ウイグル文字のテキストボックスだけが切り出されるようにするため,\pagestyle{empty} を指定するところがポイントである。

% montex.tex ウイグル文字左→右縦書き例〜稲垣さんのコードを拝借。
\documentclass[12pt]{tarticle}
\usepackage{mls}% MonTeX
\usepackage{LRtate}% by iNOUEさん
\setlength{\textwidth}{320pt}%
\pagestyle{empty}%
\begin{document}
 
\begin{LRtate}
\tbaselineshift0pt%
\SetDocumentEncodingBicig%
\noindent%
17||18 d'ugar zagun-u munggul-un neiigem, ulus tuiru, shasin-u
uiiles-tu, ilangguy=a uralig-un kuikzil-du uncugui ekurge
kuiicedgeksen uindur gegen zanabazar, cingkis xagan-u aldan
urug-un izagur surbulzidan abadai saiin nuyan xan-u kuiutuisiyedu 
xan gumbudurzi-yin ger-tu 1635 un-du tuiruksen.
\end{LRtate}
 
\end{document}

これをコンパイルし,dvi ファイルを dvips で EPS に変換する。コンパイルには MonTeX,iNOUE さんの LRtate.sty が必要である。MonTeX の Type1 フォントも利用可能になっていなければならない。

% platex montex
% dvips -E -D 10000 montex.dvi -o montex.eps

次に,Ghostscript epswrite デバイスでアウトライン化を施す。

% gs -dNOPAUSE -dBATCH -sDEVICE=epswrite \
  -sOutputFile=uol.eps montex.eps

同様の方法でアウトライン化した数式とともに,Illustrator で開いた状態を次の図に示す。文字,数式はいまやベクトル画像であって,形式に相応した Illustrator 編集操作が可能になる。ロゴ作成などに応用できる。

outline.jpg

TeX 原稿にこれらのアウトライン化した EPS を graphicx パッケージ \includegraphics 命令で挿入してもよい。PDF を生成すると,ウイグル文字も数式もベクトル画像として埋め込まれる。文書プロパティを確認すると,フォントとしては扱われていないことが分る (下図のとおり,和文に使用した IPA フォントしか現われない)。

pdfproperty.jpg

Windows XP に Adobe Reader 8 をインストールした。多言語 TeX 文書 PDF を読み込むと,Type1 で埋め込んだ教会スラヴ語フォント slav10 について「Type1 フォントの抽出に失敗しました」とのメッセージを出力し,文字が表示されない。Adobe Reader 7 まではまったく問題がなかった。最近 8.1 がリリースされたけれど,まだ変わりがない。Type1 フォントは廃れつつあるとの話も聞こえてくるので,Adobe はこのあたりの移行性確保について手を抜いたのか。

これは dvipdfmx で生成した PDF である。dvips -> Ghostscript による PDF だときちんと表示されることが判った。つまり dvipdfmx の問題か。dvipdfmx は T2A キリルフォントについてもアクセントを付加した文字が重なってしまう問題を抱えている。Type1 フォントの作りにも問題があるのかも知れない。しかしながら,いずれの現象もその条件をつきとめられないので,作者にどう連絡をしたものか悩む。

まあ,個人的には普段,UNIX 版 Adobe Reader 7.0,Mac OS X Adobe Acrobat 7 を使っていて,この問題がないので困らないのだけど。これらも 8 にバージョンアップすると問題が発現するとなると頭が痛い。Ghostscript で PDF を作らないといけないのか。でもこの場合,PDF のサイズがでかくなってしまうようで,それも面白くない。

※ 2009/1/30 付記:この問題はその後解決した。記事「教会スラヴ語 SlavTeX Type1 フォントと Adobe Reader 8」を参照。

Ghostscript 8.54 (CJK フォント)

|

普段私は TeX 文書を PDF にすることが多く,この際 dvipdfmx しか用いない。かつては PostScript にして印刷したものだが,最近はほとんど dvips,Ghostscript を使わなくなってしまった。しかし,先に Beamer を試したところ dvipdfmx で生成した PDF だとアイコンでジャンプする機能が有効にならないという問題があり,dvips,Ghostscript で PDF にする環境を久しぶりに整備した。ところが OTF 中国語,韓国語でフォントを拾うことができず悩んでしまった。いろいろ調査・試行してなんとかうまくいった。

OTF パッケージにより日本語,中国語,韓国語を組版し, dvips,Ghostscript でフォント埋め込み PDF を作成したい pTeX ユーザで,同じ悩みに陥った方のためにも,備忘録として少し整理しておく。土村さんの ptetex3,OTF がすでに組込まれているものとしている。FreeBSD,Mac OS X 環境である。Linux でも通用すると思う。

  1. Ghostscript 8.54 のインストール

    Ghostscript 8.54 を奥村先生のページを参考に組込む。私の場合,FreeBSD においてパッケージ依存関係で勝手にインストールされた Ghostscript 7.07 が /usr/local にすでに陣取っているので,8.54 は /usr/local/teTeX を localbase とした。もちろん,パスは /usr/local/bin よりも /usr/local/teTeX/bin が優先して検索されるよう設定しておく。ghostscript-8.54-gpl.tar.bz2ghostscript-fonts-std-8.11.tar.gz を $HOME/tmp 下にダウンロードしてあるものとする。

    % setenv GSDIR /usr/local/teTeX/share/ghostscript
    % cd ~/tmp
    % tar jxvf ghostscript-8.54-gpl.tar.bz2
    % cd ghostscript-8.54-gpl
    % ./configure --prefix=/usr/local/teTeX
    % make
    % sudo make install
    % cd $GSDIR
    % sudo tar zxvf ~/tmp/ghostscript-fonts-std-8.11.tar.gz 
    
  2. Font, CMap ファイルの追加

    Ghostscript のインストール(Mac OS X 10.4 Tiger)」サイトの解説「日本語フォントのインストール(3/3)」にある Font.tar.bz2 をダウンロード/展開し,Font ディレクトリごと $GSDIR/8.54/Resource 下に格納する。念のため,CMap: adobe-cmaps-200204.zip, acro5-cmaps-2001.zip, aj16.tar.Z を取って来て,CMap 下に追加する。

    % cd ~/tmp
    % tar jxvf Font.tar.bz2
    % sudo mv Font $GSDIR/8.54/Resource
    % zcat aj16.tar.Z | tar xvf -
    % sudo mv aj16/CMap/* $GSDIR/8.54/Resource/CMap
    
  3. 日中韓 TrueType フォント

    日中韓フォントはフリーの TrueType フォントをダウンロードし展開しておく。IPA 日本語フォントUn Fonts 韓国語フォントArphic 中国語フォントを設定することとする。私の場合,X11 のフォントディレクトリにインストールし,TeX からも参照できるように TeX ツリーからシンボリックリンクを設定している。

    % sudo ln -sf /usr/X11R6/lib/X11/fonts/TrueType \
      /usr/local/teTeX/share/texmf-local/fonts/truetype/X11
    % sudo mktexlsr
    
  4. フォントマップの調整

    上記日中韓フォントを使うように updmap 管理下のフォントマップを調整する。OTF パッケージを ptetex3 インストーラから組込むと,/usr/local/teTeX/share/texmf/fonts/map/dvipdfm/ 下に otf-cktx.map があるはずである。これは OTF パッケージの出力する中国語,韓国語のフォントについて DVIWARE で参照されるものである。これに対して,例えば以下 (一部) のように,Arphic, Un Fonts を参照するよう指定する。

    % Korean
    otf-ckmr-h    Identity-H     UnBatang.ttf
    otf-ckmr-v    Identity-V     UnBatang.ttf
    otf-ckgr-h    Identity-H     UnDotum.ttf
    otf-ckgr-v    Identity-V     UnDotum.ttf
     
    % Chinese Simplified
    otf-ccgr-h    Identity-H     gkai00mp.ttf
    otf-ccgr-v    Identity-V     gkai00mp.ttf
    otf-ccmr-h    Identity-H     gbsn00lp.ttf
    otf-ccmr-v    Identity-V     gbsn00lp.ttf
     
    % Chinese Traditional
    otf-ctgr-h    Identity-H     bkai00mp.ttf
    otf-ctgr-v    Identity-V     bkai00mp.ttf
    otf-ctmr-h    Identity-H     bsmi00lp.ttf
    otf-ctmr-v    Identity-V     bsmi00lp.ttf
    ...
    

    私の otf-cktx.map をリンクしておく。

    次に updmap-sys --edit として,updmap.cfg 編集画面に次の行があるか確認する。なければ追加する。

    KanjiMap otf-cktx.map
    KanjiMap ptex-ipa.map
    

    pTeX フォントにヒラギノを拾うように指定している方は rml, rmlv, gbm, gbmv というフォント名に対し,ヒラギノ otf フォントを設定した ptex-hiragino.map の行が updmap.cfg にあると思う。当然ユーザの選択次第であるが,pTeX フォントを IPA フォントで表示したいならばこれをコメントアウトし,ptex-ipa.map を活かすようにしよう。

    updmap.cfg 編集が完了したら updmap-sys でフォントマップを更新する(updmap --edit で変更していればエディタ終了とともに自動的にフォントマップ更新処理がはじまる)。

  5. cidfmap の調整

    Ghostscript の TrueType / OpenType フォント参照定義である $GSDIR/8.54/lib/cidfmap を updmap のマップに合わせ修正する。以下の CJK 関連の定義 (部分) には,もともとの日中韓フォントの設定も含んでいるが,/ipam, /ipag, /gbsn00lp, /gkai00mp, /bsmi00lp, /bkai00mp のエントリは updmap マップに合わせ追加した定義である。updmap で参照するフォントマップ,例えば ptex-ipa.map に ipam.ttf が指定されていると,dvips がフォント名称として ipam-H 出力する結果,Ghostscript は cidfmap の /ipam エントリの指定を参照するためである。これがないと dvips が出力するフォントを Ghostscript が参照できない。

    /Ryumin-Light        /IPAMincho  ;
    /Ryumin-Medium       /IPAMincho  ;
    /GothicBBB-Medium    /IPAGothic  ;
    ...
    /IPAMincho 
    %% Japanese IPA Fonts
    << /FileType /TrueType  /CSI [(Japan1) 6]
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/ipam.ttf) >> ;
    /IPAGothic 
    << /FileType /TrueType  /CSI [(Japan1) 6]
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/ipag.ttf) >> ;
    %%% added from ptex-ipa.map
    /ipam 
    << /FileType /TrueType /CSI [(Japan1) 6] 
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/ipam.ttf) >> ;
    /ipag 
    << /FileType /TrueType /CSI [(Japan1) 6] 
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/ipag.ttf) >> ;
    %% Chinese Arphic Fonts
    %% Chinese Simplified
    /BousungEG-Light-GB  
    << /FileType /TrueType   /CSI [(GB1) 5] 
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/gbsn00lp.ttf) >> ;
    /GBZenKai-Medium  
    << /FileType /TrueType   /CSI [(GB1) 5] 
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/gkai00mp.ttf) >> ;
    %% Chinese Traditional
    /ShanHeiSun-Light  
    << /FileType /TrueType   /CSI [(CNS1) 5]
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/bsmi00lp.ttf) >> ;
    /ZenKai-Medium  
    << /FileType /TrueType   /CSI [(CNS1) 5]
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/bkai00mp.ttf) >> ;
    %%% added from otf-cktx.map
    /gbsn00lp 
    << /FileType /TrueType /CSI [(GB1) 5]  
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/gbsn00lp.ttf) >> ;
    /gkai00mp 
    << /FileType /TrueType /CSI [(GB1) 5]  
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/gkai00mp.ttf) >> ;
    /bsmi00lp   
    << /FileType /TrueType /CSI [(CNS1) 5] 
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/bsmi00lp.ttf) >> ;
    /bkai00mp 
    << /FileType /TrueType /CSI [(CNS1) 5] 
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/bkai00mp.ttf) >> ;
    %% Korean Un Fonts
    /UnBatang      
    << /FileType /TrueType /CSI [(Korea1) 2] 
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/UnBatang.ttf) >> ;
    /UnBatang-Bold  
    << /FileType /TrueType /CSI [(Korea1) 2] 
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/UnBatangBold.ttf) >> ;
    /UnDotum        
    << /FileType /TrueType /CSI [(Korea1) 2] 
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/UnDotum.ttf) >> ;
    /UnDotum-Bold   
    << /FileType /TrueType /CSI [(Korea1) 2] 
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/UnDotumBold.ttf) >> ;
    /UnGraphic      
    << /FileType /TrueType /CSI [(Korea1) 2] 
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/UnGraphic.ttf) >> ;
    /UnGraphic-Bold 
    << /FileType /TrueType /CSI [(Korea1) 2] 
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/UnGraphicBold.ttf) >> ; 
    /UnGungseo      
    << /FileType /TrueType /CSI [(Korea1) 2] 
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/UnGungseo.ttf) >> ;
    /UnPilgi        
    << /FileType /TrueType /CSI [(Korea1) 2] 
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/UnPilgi.ttf) >> ;
    /UnPilgi-Bold   
    << /FileType /TrueType /CSI [(Korea1) 2] 
    /Path (/usr/X11R6/lib/X11/fonts/TrueType/UnPilgiBold.ttf) >> 
    

    私の cidfmap をリンクしておく。(※ 当然,このなかのフォントファイルのパス情報はお使いの環境に合わせて変更が必要である。また,8.70 以降の cidfmap は場所が 8.7x/Resource/Init/ に変更されたので注意)

  6. bkmk2uni のインストール

    角藤先生の bkmk2uni をインストールする。これは dvips 出力の PDF 日本語文字列を Unicode に変換するツールである。PDF のしおりなどを文字化けなく日本語出力することが可能となる。W32TeX 向けのものであるが,C でコンパイルすれば UNIX 系でも利用できる。角藤先生は,TeX 周辺プログラムを日本語できちんと使うに当たって本当に核心をついたユーティリティを提供してくださる。UNIX 系ユーザと言えども角藤先生の活動はチェックしておくとよい。

    % cd ~/tmp
    % gunzip bkmk2uni.c.gz
    % cc -g -o bkmk2uni bkmk2uni.c
    % sudo cp bkmk2uni /usr/local/teTeX/bin
    % rehash
    
  7. PDF の生成

    以上で準備は完了である。LaTeX でプレゼンテーション---Beamer のサンプル (UTF-8,UNIX 行末形式) を dvips 版に書き換えたもので例を示す。

    % utf82tex -qtx < multigs.tex | nkf -e > multigs.euc
    % platex multigs.euc
    % platex multigs.euc
    % dvips -Ppdf -T128mm,96mm -z -f multigs.dvi |\
      bkmk2uni -e > multigs.ps
    % gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite \
      -sOutputFile=multigs.pdf multigs.ps
    

    PS -> PDF 変換は ps2pdf ではなく gs -sDEVICE=pdfwrite ... を使うのがよい。ps2pdf は -dSAFER オプションをデフォルトで含んでおり,上記 CJK フォントを使う場合,標準的なフォント名ではないためかエラーとなってしまうのだ。

    TrueType フォントの埋め込みにかなりの時間を要する (CID フォントのエミュレーションに恐ろしく CPU コストがかかるようである)。固まったかと思うくらいなので注意。サンプル multigs.ps の変換に Mac OS X / 1.8GHz PowerPC G5 1GB DDR で 1 分半程度かかった。また dvipdfmx の生成する PDF に比べ,Ghostscript のものはサイズが大きくなる傾向がある。

    ともあれ,生成物 multigs.pdf は,右下のアイコンをクリックするとさまざまなジャンプ動作を行うはずである。上記マップ設定では。dvipdfmx でもフォント埋め込みが可能である。

    multigs サンプル原稿のアーカイブを掲載しておく。コンパイルのためには Beamer,OTF のほか,ThaiLaTeX タイ語,VnTeX ヴェトナム語,OldSlav 教会スラヴ語,skt サンスクリット語,ArabTeX アラビア語/ヘブライ語,Teubner ギリシア/ラテン古典語の各言語パッケージ環境が必要である。


以上,Ghostscript 8.54 を CJK に馴染ませる方法を辿ったわけだが,実は pTeX 縦組がダメである。このあたりは GNU Ghostscript 7.07 が優れている。7.07 は TrueType フォントが扱えるし,パッチを適用すればヒラギノなどの OpenType フォントも利用可能であるという。数ある日本語 Linux ディストリビューションも FreeBSD Japanese パッケージもいまだに 7.07 を標準としているところを見ると,CJK ハンドリングに関しては 7.07 の選択がベストといえるかも知れない。新バージョンの追っかけが必ずしも適切ではないということか。

Смирнов 歌仙を巻く

|

Д. Смирнов からメールをもらった。あるロシア人となんと歌仙を巻いたという。初折の表,裏,名残の表,裏,計三十六句,五七五,七七の音節数を踏まえたロシア語詩をいただいた。彼は Е. Денисов エディソン・デニソフの愛弟子の作曲家だけど,音楽評論家,詩人でもある。О. Мандельштам オシップ・マンデリシュタームの詩を英訳したりもしている。松尾芭蕉の大ファンである。

先週メールをもらったがなかなか返信できず,今日やっとひととおり読んで感想を書き送った。連句の命は連衆の個性による変化とダイナミズム。ジャンル規範は,足枷であるがゆえに逆に次の詩句の呼び水ともなり,サッカーで素晴らしいアシストをみるようなスリリング,優雅を齎す。ロシアの歌仙もそういう特質が読み取れて興味深かった。

こちらに掲載されている。関心のあるかたはご覧あれ。

Utf82TeX サンプル差換え

|

TeX Q and A で ZR さんから古典ギリシア語表記について指摘があった。ttk さん作 upTeX ギリシア語サンプルにおいて,ギリシア語の elision (省音) 記号が apostrophe ではなく koronis になっているというものだった。ZR さんの鋭い指摘に感銘を受けた。なおかつ elision のあとの空白がないという誤りもあった。ttk さんは私が Utf82TeX に添付したものから引用なさっていたわけで,私は,すぐさまこの誤りは私に起因する旨,書き込みを行った。

私はこのギリシア語サンプルを田中利光先生の『新ギリシャ語入門』(大修館書店,1994年)から採ったのだが,誤りをそのまま引いていたわけである。改めて岩波全書の『ギリシア語入門 改訂版』(田中美知太郎,松平千秋共著)で省音を調べて記述例を確認すると,確かに koronis ではなく apostrophe ('' と二つ記す) で表記すべきであり,また語末に記すのだからその後に空白が続くことも納得できた。

今日お休みだったこともあり,やっとこのサンプルのバグを訂正してリリースした。Utf82TeX の解説 Web 頁そのドキュメントサンプル文書アーカイブなど同じ誤りを含むファイルを洗い出すのが面倒であったが,すべて訂正した。
 

昨夜,久しぶりにサイトの TeX 関係ページを更新した。CJK パッケージ韓国語の書体について。LaTeX Beamer のプレゼンテーションを少し齧って,dvips,ps2pdf で多言語プレゼン PDF を作成しようとしたら,gs 8.54 で中国語,韓国語のフォントがうまく拾えずいろいろ悩んだ。自分で書いた CJK パッケージ記事の内容もド忘れしていて,再度中韓のフォントについて調べたりする過程で,ちょっと手直しすべき箇所を見つけたのだった。

ここのところ仕事にやっぱりハマりまくっていて,奥村先生の TeX Q and A もろくにチェックできていない。Q and A を覗いてはいるが,ttk さんの upTeX のあれこれ,稲垣さんの japanese.ldf がとうとう CTAN にアップされた話(パチパチ),jTeX and Babel に纏わる栗山さん・ZR さん(この方の該博な知識には感心する)の高度な話題など,最近の興味深いスレッドをただ見過ごすばかりである。まったくついていけなくなってしまった...

そろそろ upTeX を私も勉強してみようかなと思っているんだけど...

***

入矢義高著『日本文人詩選』(中公文庫,1992 年刊)を読む。日本の漢詩人集。京急川崎駅の露店で古本を見つけ 400 円で購入。

素娥舞罷月侵珮  素娥舞い罷っては月は珮を侵し
粉蝶夢囘香染衣  粉蝶夢囘めて香りは衣を染む
 

祇園南海のこんな幻想的な詩句が素晴らしい。

日本文人詩選

入矢 義高
中央公論社 (1992/08)

郵便局へ行く

|

日本を代表する某電機メーカーとシステム構築の打合せがあり,東京丸ノ内の本社に朝一番で出かけた。とくに波乱なく終り,私は郵便局に行くことにした。通販で購入した CD の代金を振込むためである。東京中央郵便局。東京駅の正面にある日本で最大にして由緒ある局だと思われる。

窓口の機械から整理番号を抜き取ると 341 番。現在の呼び出しは 278 番。63 人待ち。窓口が 3 つあり,ひとりあたりのサービス時間を 100 秒と見積って,3,40 分か。ちょっと局内をぶらぶら歩く。記念切手が展示されていて,国際文通週間のシートがここ数年分並べられている。まだ発行が続いているんだなと懐かしさを覚える。10 分ほどして,20 人くらいは進んでいるかなと期待して窓口に戻ると 287 番。アホらしくなって,諦めて帰社することに。

でも振込みはしなくちゃいけないので,会社の最寄りの駅のすぐ近くの深川郵便局に立ち寄ることにした。整理番号 395 番。現在の呼び出しは 370 番。やはり窓口は 3 つ。先ほどの状況からすると 30 分は覚悟すべし。ところが椅子に座って窓口の様子を見ていると,ぽんぽんトランザクションが捌けていって,15 分程度で私の番と相成った。

郵便局のスピードは局によって違うようである。でも倍も差が出るものなのだろうか。窓口業務は二つの局で同じであり,手順も同じわけなんだろうから,大局的に見るとサービス時間は正規分布するはず。倍の違いはたまたまにしては大きすぎやしないか。中央郵便局は「中央」に相応しい特別な仕事をしているからか。中央郵便局での遅々とした進み具合は,指数分布の待ち時間の立ち上がった後に私が列に入ったためか。深川郵便局員が優秀だからか。こういう行政サービスの品質の違いを調査している人っているんだろうか。郵政公社には当然基礎資料はあると思うのだけど。

改めて思ったこと。サービス機関を選ぶときは小さいのがよい。そもそも待ち行列が大きくならない(建屋の外にまで並ぼうなんてやつは普通いない) からすぐサービスを受けられる。

Microsoft PowerPoint でロシア語を記述するとフォントが変更できないという書き込みが私の掲示板にあがった。さっそく Windows XP / PowerPoint 2000 で試行してみたところ,初期入力では Times New Roman 書体でロシア語が表示できるけれども,これをいったん日本語フォント(MSゴシックなど)や Arial Unicode MS などに書体変更すると,再度フォント指定ツールで Times New Roman や Palatino といった欧文書体に変更しようとしても不可能なのである。「書式コピー/貼付け」ツールで別の欧文書体の文字列から書体コピー/貼付けを行って,やっと変更ができることが判った。これは PowerPoint のバグだと思う。

そういうこともあり,多言語プレゼンテーション文書も LaTeX で作成する方法を探ってみた。奥村先生の『美文書』には Hyperref スタイル併用で slide オプションを用いる方法が記されている。インターネットを探索すると,TeXPower,Beamer などいくつも提案がある。私も弘前大学葛西先生の頁『LaTeXでプレゼンテーション・シリーズ:まとめ』を参考に Beamer を使って多言語 LaTeX プレゼンテーションを作ってみた。multi.pdf を置いておく。pLaTeX2e と Dvipds, Ghostscript で PDF を生成した。Adobe Reader などの PDF ビュアでフルスクリーンにして閲覧してみてください。

Beamer は最新バージョン 3.07 が sourceforge からダウンロードできる。LaTeX のグラフィック・パッケージ pgf 1.01,xcolor 2.00 も必要である (同じところからダウンロードできる)。TeX ツリーに格納すればよい。Beamer には様々なテーマ(プレゼンテーション・テンプレート)が添付され,かつよくできており,multi.pdf も Warsaw というテーマを用いている。Beamer の使い方詳細は添付のユーザーズガイドを参照。

Dvipdfmx で PDF を作成する場合,PDF のしおりで日本語が文字化けを起こさないようプリアンブルで以下を指定しおくとよい。Dvips の場合,これは不要である。

\AtBeginDvi{\special{pdf:tounicode EUC-UCS2}}

multi.pdf はロシア語 (Babel),古典ギリシア語 (Babel),教会スラヴ語 (OldSlav),サンスクリット語 (skt),タイ語 (ThaiLaTeX),ヴェトナム語 (VnTeX),韓国語,簡体中文,繁体中文 (以上 OTF),アラビア語,ヘブライ語 (以上 ArabTeX) の例文を掲載した。例文は CJK パッケージ,稲垣さん CTAN Directory の ArabTeX 解説,ThaiLaTeX / skt ドキュメントなどから拝借した。

通常の LaTeX でも複数の言語を混在させると問題を生ずることがある。今回 Beamer クラスを用いて多国語プレゼンテーションを作成するに際してもいくつか問題解決が必要であった。

OldSlav 教会スラヴ語パッケージと skt サンスクリット語パッケージとの間で \ZH コントロールシーケンス名が重複するので,skt.sty を読み込む直前において,さしあたり使用しない OldSlav の \ZH を無効にする (\let\ZH=\relax) 必要があった。

アラビア語,ヘブライ語については私自身で 7 ビット化した ArabTeX パッケージを使用した。しかしながら multi.tex 単一原稿に ArabTeX テキストを記述すると dimen が枯渇してしまうエラーが発生した。Beamer と ArabTeX どちらかが dimen レジスタを多用しているようである。そこで ArabTeX を使った部分だけ別原稿にして EPS ファイルに出力し,multi.tex において \includegraphics 命令でこれを挿入する手段をとってみた。この方法ならば 7 ビット化しない標準の ArabTeX を LaTeX (latex コマンド) で処理してもよい。

サンプルの原稿と素材すべてのリンクを以下に掲げる。

主原稿のコンパイルには Utf82TeX プリプロセッサ,角藤先生の bkmk2uni が必要である。multi.pdf を生成するには以下のとおりとする。

% utf82tex -qtx < multi.tex | nkf -e > multi.euc
% platex --kanji=euc multi.euc
% platex --kanji=euc multi.euc
% dvips -Ppdf -T128mm,96mm -z -f multi.dvi | bkmk2uni -e > multi.ps
% gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=multi.pdf multi.ps

Beamer は本来 pdfLaTeX で PDF を生成することを想定している。PS to PDF 変換は ps2pdf (Ghostscript) でもよい。CJK フォントが含まれると ps2pdf はエラーとなるかも知れない。そのときは上記のとおり gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=出力PDF psファイル で PDF 変換を行う。CJK 向けの Ghostscript の調整については,Ghostscript 8.54 についてのブログ記事に纏めた。Dvipdfmx の場合はアイコンのリンクが機能しないなど制限があるようである。そのうち解決されるかも知れない。

arab.tex から独自に EPS を生成したいなら,次のようにする。ArabTeX の Type1 フォントが使えないと EPS の生成 (Dvips) はおそらくエラーになるだろう (PK フォントが埋め込まれるのをチェックアウトするため私は -D 10000 オプションを使うことが多い)。

% platex arab.tex
% dvips -E -D 10000 arab.dvi -o arab.eps

余談。サンプル作成のため Gnuplot のグラフを準備した。グラフの座標軸を普段は英字ですませているが,今回は日本語の文字化けを正すのに苦労した。このため奥村先生のサイトの記事を参考に Ghostscript 8.54 をインストールし,EPS 出力時のフォント指定 (Gnuplot の命令による) を GothicBBB-Medium-EUC-H として EUC で日本語を書いたところ,きれいな日本語が出力できた。

※ 永田先生にいろいろ教えていただきました。ありがとうございます:永田先生の Weblog

Moon Calendar

Profile

ISAO YASUDA。システムエンジニア。神奈川県在住。昭和 30 年代を懐かしむオヤジ。ロシアに興味があります。
[more], [About our site]

Notice

この文書はフィクションであり,実在する個人,団体等とは一切関係ありません。

R-18 指定サイトです。そのうち「18 歳以上ですか」の認証を入れる予定です。

文書の記述内容は無保証です。不適切な表現があればコメントにてご指摘ください。

コメント,トラックバックは,現在,運用を停止しています。ご意見等ありましたら isao@yasuda.homeip.net 宛電子メールにてお願いします。

Links

About this archive

Entries at 2007年7月 in chronological order.

Previous: 2007年6月

Next: 2007年8月

Recent Entries in Main Index.
All Entries in Archive Index.

February 2012

Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
Powered by Movable Type 4.1 blog counter