これらは毎日打つコマンドではなく、TeX 環境の 整合性を保つための保守ツール です。updmap と kanji-config-updmap は「どのフォントを PDF に埋め込むか」を管理し、mktexlsr と fmtutil は TeX が頼る データベースと事前生成フォーマット を更新します。フォントやパッケージを手で入れたとき、あるいは「ファイルが見つからない」ときに出番が来ます。
保守ツールは「探す」「埋め込む」「起動する」を直す
TeX の故障は大きく三つに分けると見通しがよくなります。ファイルを置いたのに見つからないなら 探索データベース、PDF のフォントが思ったものにならないなら フォントマップ、エンジンが起動時に .fmt を読めないなら フォーマットファイル の問題です。mktexlsr、updmap、fmtutil はそれぞれこの三つを直す道具です。闇雲に全部を叩くより、どの層が壊れているかを先に決めると、共有環境や CI を汚しにくくなります。
updmap — フォントマップを管理
DVI ドライバ(dvips・dvipdfmx)や pdftex は、TeX 上のフォント名と 実際のフォントファイル の対応、そして埋め込み方法を フォントマップ から知ります。updmap は、有効化されたマップファイルと設定をまとめて、その合成マップを再生成するコマンドです。新しいフォントのマップを有効にしたあとに走らせます。updmap-sys はシステム全体(管理者権限)、updmap はユーザ個人の設定(システム設定を上書き)に作用します。
設定は --setoption キー 値 で updmap.cfg に書き込み、マップは --enable Map foo.map / --disable で出し入れします。変更後に updmap(または updmap-sys)を実行すると反映されます。実務上の注意は、ユーザ設定とシステム設定を混ぜないことです。共有マシンや CI では updmap-sys に統一し、個人の試行錯誤だけ updmap に留めると、別の人の PDF だけフォントが変わる事故を避けられます。
updmap-sys --enable Map myfont.map # マップを有効化 / enable a map
updmap-sys # 合成マップを再生成 / regenerate the mapskanji-config-updmap — 埋め込む日本語フォントを選ぶ
日本語(CJK)の埋め込みフォントは、dvi→pdf 変換(dvipdfmx)の段階 で決まります。それを選ぶ手軽な道具が kanji-config-updmap(texjporg)。内部では updmap の jaEmbed(旧 kanjiEmbed)オプションを設定し、よく使われる和文フォントを探して切り替えます。status で現在の設定を確認、auto で自動選択、フォント名を渡せばその系統(例:ipaex・hiragino-pron・noto-otc)に切り替わります。
kanji-config-updmap-sys status # 現在の和文フォントを表示 / show the current font
kanji-config-updmap-sys ipaex # IPAex フォントを埋め込む設定に / embed IPAexmktexlsr / texhash — ファイル DB を更新
TeX は kpathsea ライブラリと ls-R というファイル名データベースを使い、巨大な texmf ツリーから目的のファイルを高速に探します。手でファイルを texmf ツリーに置いた だけでは TeX はそれを認識しません。mktexlsr(別名 texhash)で ls-R を再構築すると、新しいファイルが見つかるようになります。
mktexlsr # ls-R を再構築(= texhash)/ rebuild ls-R (same as texhash)fmtutil — フォーマットを再生成
pdflatex などは、起動時に フォーマットファイル(.fmt、例:latex.fmt) を読み込みます。これは「フォーマット(LaTeX など)を読み込んだ直後のエンジン状態」を丸ごと保存したもので、毎回ゼロから読み直さずに 素早く起動 するための仕組みです。fmtutil はこの .fmt を再生成します。フォーマットに関わる変更をしたときや、.fmt が壊れ「format file が見つからない」エラーが出たときに使います。fmtutil-sys はシステムツリーに作用し、fmtutil --byfmt latex で 1 つだけ、fmtutil-sys --all で全部を作り直します。ふつうのパッケージ追加で毎回実行するものではなく、エンジン起動時の異常を直す最後の保守手段だと考えます。
fmtutil --byfmt pdflatex # pdflatex の .fmt を作り直す / rebuild just pdflatex
fmtutil-sys --all # すべてのフォーマットを再生成 / rebuild every format直す順番を決める
kpsewhich mypackage.styで見つからなければ、TEXMF の置き場所とmktexlsrを確認します。- PDF の日本語フォントだけがおかしいなら、まず
kanji-config-updmap-sys statusで現在のjaEmbedを見ます。 - 欧文フォントを追加した直後だけおかしいなら、対象の
.mapをupdmap-sys --enable Map ...で有効化したかを確認します。 I cannot find the format fileのようにエンジン起動前で止まるなら、fmtutil --byfmtでそのフォーマットだけ作り直します。
いつ使うか
- フォントを手で入れた →
updmap(日本語の埋め込みはkanji-config-updmap)。 - ファイルやパッケージを texmf に手で置いた →
mktexlsr(texhash)。 - フォーマット関連を変えた/
.fmtが壊れた →fmtutil。 - ふだんは TeX Live マネージャ
tlmgrがこれらを自動で呼ぶので、手で叩くのは保守のときだけです。