名前: ZR 日時: 2007-10-03 18:20:39 IPアドレス: 124.87.233.*
>>49686 少々難しい話ですが、少し詳しく説明しておきます。 map ファイルというのは "dvipdfmx の" map ファイルです。ということは TeX (tex, latex, platex 等) はそれには感知していません。従って、 先の例(>>49683)では、TeX は「cmr10 の字幅」を基に文字の位置を決めて います。ところが、PDF 変換で使われるのは字幅が異なる cmtt10 です。 # 'iiiii' は cmr10 より cmtt10 の方がずっと幅が広い。 これでは文字の位置がずれるのは当然です。 これだけ聞くと、「1 文字毎に重なったり隙間が開いたりする」のでは ないかと思うかもしれません。ところが実際には dvipdfmx は「文字(と空白) の水平の並び」に対しては、使用のフォント(cmtt10)の幅を保ったまま 出力するようです(だからどんどんすれが大きくなります)。そして、 「文字でないもの」を出力した瞬間に「本来の位置」に戻り、そこでずれが 露呈します。 要するに、連続して文字を出している間は dvipdfmx はずれていることに 気づかないということです。 さて、LaTeX の既定の設定ではアンダースコア(\_)は文字としてでなく 「罫線」として出力されます。従って、\_ のところですれが起こって しまう訳です。ところが「T1 エンコーディングを設定する」と \_ も文字 扱いになります。だから「最後まで誤魔化しきれる」訳です。 勿論これは結局「誤魔化し」に過ぎません。じゃあこの場合の正しい方法は というと…、残念ながらかなり難しい話になってしまいます。 # 世の中には「LaTeX で 〜フォント を使う為のパッケージ」というのが多数 # 存在しますが、このことは逆に、初級者が新しいフォントを LaTeX に導入する # ことの難しさを表していると思います。 # 和文フォントに関しては map で対応フォントを変更して構いません。
この書き込みへの返事: