TEXを多書体化して、文書中で自由にフォントを変えられるようにします。
目次
TeXを多書体化するには主に2つの方法があります。
- pLaTeXを使ったまま(強引に)多書体化
- XeLaTeXを使う
pLaTeXを使ったまま多書体化する
利点
- 普段使っているpLaTeXがそのまま使える。
欠点
- 手順が面倒
- OpenTypeフォントの従属欧文を使いたい場合、w32texではインストールされない他のツールを用いる必要がある
普段使っているpLaTeXがそのまま使えるのは大きな利点でしょう。XeLaTeXもpLaTeXの文章を殆ど流用できるとはいえ、少なくともプリアンブルは書き換えないといけません。
和文部分を多書体化する(TrueType・OpenType共通)
- フォントファイル(ここでは
hogemincho.ttf
)をダウンロード。作業フォルダに保存。 c:¥w32tex
内の何処かにあるjis.tfm
を作業フォルダにコピー。ファイル名を好きな名前(ここではhoge).tfm
に変更。- コマンドプロンプトを開く。カレントディレクトリを作業フォルダに。
makejvf hoge.tfm hoge
を実行。hoge H hogemincho.ttf
と書いたmapファイル(ここではfont-hoge.map
)を作業フォルダに作る。- 以下をプリアンブルに書き加える。
\AtBeginDvi{\special{pdf:mapfile font-hoge}} \DeclareKanjiFamily{JT1}{hoge}{} \DeclareFontShape{JT1}{hoge}{m}{n}{<-> s * [0.961] hoge}{} \DeclareFontShape{JT1}{hoge}{bx}{n}{<-> s * [0.961] hoge}{} \DeclareKanjiFamily{JY1}{hoge}{} \DeclareFontShape{JY1}{hoge}{m}{n}{<-> s * [0.961] hoge}{} \DeclareFontShape{JY1}{hoge}{bx}{n}{<-> s * [0.961] hoge}{}
蛇足:以下をプリアンブルに書き加えるとPDFの用紙サイズが正しくなる。
\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}
同じように、以下をプリアンブルに加えると指定したマップファイルをコンパイル時に読み取らせることができる。
\AtBeginDvi{\special{pdf:mapfile font-hoge}}
TrueTypeの従属欧文を使う
c:¥w32tex
内の何処かにあるUnicode.sfd
を作業フォルダにコピー。- コマンドプロンプトで「
ttf2tfm hogemincho.ttf 好きな名前(ここではhogeA)@Unicode@
」を実行。
この時、hogeA4f.tfm
みたいなファイルが沢山できるが、この際hogeA00.tfm
以外は削除してもらっても構わない。 c:\w32tex
内の何処かにあるttfonts.map
をメモ帳で開き、何処でもいいのでhoge@Unicode@ hogemincho.ttf
を書き加える。c:\w32tex
内の何処かにあるcid-x.map
をメモ帳で開き、何処でもいいのでhoge@Unicode@ UniJIS-UCS2-H hogemincho.ttf
を書き加える。- 以下をプリアンブルに書き加える。
\DeclareFontFamily{OT1}{hogeA}{} \DeclareFontShape{OT1}{hogeA}{m}{n}{ <-> s * hogeA00}{} \DeclareFontShape{OT1}{hogeA}{bx}{n}{ <-> s * hogeA00}{}
OpenTypeの従属欧文を使う
一番厄介です。PXacidパッケージを使います。
PXacidの実行にはw32texの他にPerlのインストールが必須です。
ActivePerl Downloads – Perl Binaries for Windows, Linux and Mac
以後、c:¥w32tex
内の何処かにあるrunscr.exe
をpxacid.exe
の名前で作業フォルダにコピーし、pxacid.plやフォントファイル(.otfかそのシンボリックリンク)を作業フォルダに置いた前提で話を進めます。
> pxacid hogea hogemincho.otf
とすれば、ファイルが生成されます。生成されたファイルのうち、
hogea-r-j40.ofm hogea-r-ot1.tfm hogea-r-ot1.tfm
以外は使用しないこととしますので、削除しても問題ありません。フォント定義ファイル(.fd)やmapファイルも自動生成されますが、和文部分と一緒にプリアンブルに書きまとめるのが収まりが良いように思われるので使いませんでした。
次に、以下を記述したmapファイル(ここではfont-hoge.map
)を作ります。既にmapファイルを作ってある場合は書き足してください。
hogea-r-j40 Identity-H hogemincho.otf
最後に、以下をプリアンブルに加えます
\AtBeginDvi{\special{pdf:mapfile font-hoge}} \DeclareFontFamily{OT1}{hogea}{} \DeclareFontShape{OT1}{hogea}{m}{n}{<-> s * [0.961] hogea-r-ot1}{}
蛇足:シンボリックリンクの作成
シンボリックリンクの作成には、コマンドプロンプトを管理者として実行する必要がある。コマンドプロンプトを管理者として実行するには、「スタート>すべてのプログラム>アクセサリ」の順でたどり、「コマンドプロンプト」を右クリックして「管理者として実行」をクリックする。
あとは、以下のコマンドを入力すればシンボリックリンクが作成できる。
mklink /d "リンク先" "リンク元(ファイルが現存)"
XeLaTeXを使って多書体化する
利点
- とても簡単に多書体化できる
- 日本語対応は既にpLaTeX並に充実している
欠点
- pLaTeXと比較すると利用できるパッケージが少ないかも知れない
- 画像を多用した場合、コンパイルが遅くなる
画像を多用した場合、コンパイルが遅くなるのはXeLaTeXの特徴でしょう。pLaTeXでは初回コンパイル時に画像を読み取ってBoundingBox値を.xbbファイルに記録するので、二回目以降はコンパイルが早く終わりますが、XeLaTeXでは.xbbファイル或いはそれに準ずるファイルが生成されないので、恐らくコンパイルの度に画像を読み取っているのでしょう。
結局どっちを使ったか
はじめはXeLaTeXを使っていましたが、
- 画像を多用した場合、コンパイルが遅くなる
\verb/.../
や\texttt{...}
を使った時の文字位置が少々ずれて見栄えが悪い\includegraphics[...]{...}
のファイル名に全角文字が使えない
などの理由で、後にpLaTeXでもOpenTypeの従属欧文が使えることを知ってから使うのを辞めました。