Edited at

LaTeXの環境構築がクソ^H^H苦行すぎる(macOS Mojave+MacTex 2018)

<追記1>

はてなブックマークで、LaTeX2e 美文書作成入門のサポートページを教えてもらいました。そこにMojaveでヒラギノを利用する方法が紹介されており、試したところ、macOS Mojave + MacTeX2018 の環境でヒラギノフォントが使えました。

この場を借りてお礼申し上げます。ありがとうございました。

こんな簡単な方法がすでにあるなら、最初からTeX WikiのTeX Live/Macに書いといてくれたら良かったのに。

</追記1>

<追記2>

今確認したら、TeX Wikiのページが大きく書き直されてる・・・

たとえばMojaveでヒラギノフォントを使うための手順が書かれていたこのページから、手順が消されてます。だめじゃん!

ヒラギノフォントを使うための専用ページが作られて、手順はそちらに移動してました(分かりにくい・・・)。

ていうか、なんでこれへのリンクをTeX Live/Macのページへ追加しないのだろうか。頑なにリンクしない理由がわからない。

そして説明を改善したならひとこと教えてくれてもいいだろうにね。Twitterで教えてもらいました。ありがとうございます。

</追記2>

<追記3>

MacTeX 2018のデフォルトでヒラギノフォントが使えないことを問題にしているつもりはありません(そう読めたのなら申し訳ありません)。

「この通りにすればMojaveでヒラギノが使える」とTeX Wikiに書いてある手順を実行しても使えなかったことを問題としています。

またすでに手軽な解決策があるのに、TeX Wikiで紹介がなく、かつ知名度が低くてGoogle検索で上位にこない(つまり紹介が足りない)ことも問題だと思います。このページからリンクすることで、少しでも検索結果の上位に出ますように。

</追記3>

(以下本文)


技術同人誌といえば、LaTeXですね!(偏見)。

さて、次回の技術書典06に向けてmacOSとMacTeXをクリーンインストールし直したところ、ヒラギノフォントが有効化できないという症状に悩まされています。かわりにIPAフォントが使われるという、悲しい状態です。IPAフォントは生理的に受け付けないので、困ってます。

(正確にはLaTeXというよりdvipdfmx関連の問題です。)

LaTeXをよく知らない人は、LaTeXという壁がいかに高いか、感じてください。


TL;DR


  • クリーンインストールした macOS Mojave に MacTeX 2018 をインストール。

  • ヒラギノフォントを使おうと頑張ったが、どうあがいてもIPAフォントになってしまう。

  • フォント設定用スクリプトの中まで追っかけたところ、拡張子が「*.otf」であるフォントが期待されているが、Mojaveには「*.ttc」というフォントしかなかった。← イマココ

たかがヒラギノフォントを使うという、それだけのことがLaTeXでは簡単にはいきません。

LaTeXをよく知らない人は、LaTeXという壁がいかに高いか、感じてください。


作業の記録


MacTeX 2018 をインストールしたけど dvipdfmx がエラー

まず「mac latex インストール」で検索し、TeX Wiki のページに到達。

その解説を読みながら、MacTeX 2018 をダウンロードしてインストール。

そして過去に作ったLaTeXファイルをコンパイルすると、dvipdfmxがこんなエラーを出した。

dvipdfmx:warning: Could not locate a virtual/physical font for TFM "uphgothb-h".

dvipdfmx:warning: >> This font is mapped to a physical font "HiraKakuPro-W6.otf".
dvipdfmx:warning: >> Please check if kpathsea library can find this font: HiraKakuPro-W6.otf
dvipdfmx:fatal: Cannot proceed without .vf or "physical" font for PDF output...

「HiraKakuPro-W6.otf」というフォントが見つからないようだ。


悪戦苦闘の始まり

というわけで、「latex HiraKakuPro-W6.otf」でぐぐり、次のようなページをみつける。

$ which kanji-config-updmap-sys

/Library/TeX/texbin/kanji-config-updmap-sys
$ sudo kanji-config-updmap-sys hiragino-elcapitan-pron
Cannot find ptex-fontmaps-macos-data.dat, skipping!
NOT EXIST ptex-hiragino-elcapitan-pron.map

「NOT EXIST」と言われたよ。「ptex-hiragino-elcapitan-pron.map」というファイルを探したけど、確かにないな。

$ sudo find /usr/local/texlive/2018 -name ptex-hiragino-elcapitan-pron.map

どうも別名になっているようだ。

$ sudo find /usr/local/texlive/2018 -name 'ptex-hiragino-*.map'

/usr/local/texlive/2018/texmf-dist/fonts/map/dvipdfmx/ptex-fontmaps/hiragino/ptex-hiragino-04.map
/usr/local/texlive/2018/texmf-dist/fonts/map/dvipdfmx/ptex-fontmaps/hiragino-pron/ptex-hiragino-pron.map
/usr/local/texlive/2018/texmf-dist/fonts/map/dvipdfmx/ptex-fontmaps/hiragino-pron/ptex-hiragino-pron-04.map

名前を変えて実行してみる。

$ sudo kanji-config-updmap-sys hiragino-pron

hiragino-pron not available, falling back to auto!
CURRENT family for ja: noEmbed
Standby family : ipa
Standby family : ipaex
...

うぎゃー!IPAフォントになりやがった!クソかよ!

このページ https://qiita.com/zr_tex8r/items/15ec2848371ec19d45ed には、自分でフォントマップファイルを作る方法が解説されているのだが・・・読んでみたけど「手順1」からしてよく分からなかった。論理フォント?物理フォント?なにそれ?LaTeX上級者なら知ってて当たり前なんだろうけど。


気を取り直す

ここで検索ワードを「latex mojave HiraKakuPro-W6.otf」に変更して、再度ぐぐる。

このページに次のような説明があった。


そのため macOS Sierra / OS X El Capitan に付属する

ヒラギノフォントは TeX Live 2018 以降はサポートされません。

TeX Live 2018 以降は TeX Live に収録できないパッケージを

補完するためのリポジトリである TLContrib から

japanese-otf-nonfree, japanese-otf-uptex-nonfree,

ptex-fontmaps-macos, cjk-gs-integrate-macos を

別途インストールして設定する必要があります。


やっぱりEl Captain時代の記事を参考にしちゃいけないのね。

というか、この説明がなんで https://texwiki.texjp.org/?TeX%20Live%2FMac にないの?

とりあえず、そのページに載っている手順を実行。

## tlmgr を実行して TeX Live を最新の状態に更新します。

$ sudo tlmgr update --self --all

## TLContrib から japanese-otf-nonfree, japanese-otf-uptex-nonfree,
## ptex-fontmaps-macos, cjk-gs-integrate-macos をインストールします。
$ sudo tlmgr repository add http://contrib.texlive.info/current tlcontrib
$ sudo tlmgr pinning add tlcontrib '*'
$ sudo tlmgr install japanese-otf-nonfree japanese-otf-uptex-nonfree \
ptex-fontmaps-macos cjk-gs-integrate-macos

## cjk-gs-integrate を --link-texmf --cleanup オプション付きで実行します。
$ sudo cjk-gs-integrate --link-texmf --cleanup

## cjk-gs-integrate-macos を --link-texmf オプション付きで実行します。
$ sudo cjk-gs-integrate-macos --link-texmf

## mktexlsr を実行します。
$ sudo mktexlsr

## 最後に,macOS Mojave / macOS High Sierra / macOS Sierra / OS X El Capitan
## に付属するヒラギノフォントを埋め込むためのマップファイルを指定します。
## macOS Mojave / macOS High Sierra の場合は
$ sudo kanji-config-updmap-sys --jis2004 hiragino-highsierra-pron
## macOS Sierra / OS X El Capitan の場合は
$ sudo kanji-config-updmap-sys --jis2004 hiragino-elcapitan-pron
## を実行します。

## 以上で,ヒラギノフォントを pLaTeX / upLaTeX + dvipdfmx で PDF に埋め込むことができます。

実行してみたけど、・・・だめでした!

$ sudo kanji-config-updmap-sys --jis2004 hiragino-highsierra-pron

hiragino-highsierra-pron not available, falling back to auto!
CURRENT family for ja: noEmbed
Standby family : ipa
Standby family : ipaex
...

やはり、ヒラギノじゃなくてIPAフォントが使われている。クソかよ。


悪戦苦闘が続く

再度、検索ワードを「mojave kanji-config-updmap-sys」に変更してぐぐる。

上から10件目で、MojaveにMacTexをインストール (http://www.gifu-nct.ac.jp/elec/deguchi/deguchi/mojave/) した人のメモが見つかる。以下引用:

brew cask install mactex

source /etc/profile

sudo tlmgr update --self --all

sudo tlmgr repository add http://contrib.texlive.info/current tlcontrib
sudo tlmgr pinning add tlcontrib '*'
sudo tlmgr install ptex-fontmaps-macos cjk-gs-integrate-macos japanese-otf-nonfree
sudo cjk-gs-integrate --link-texmf --cleanup

sudo vi /Library/TeX/texbin/cjk-gs-integrate-macos
以下の行を追加
L51: } elsif ($macos_ver_minor==14) {
L52: $addname = "highsierra"; # mojave

sudo cjk-gs-integrate-macos --link-texmf
sudo mktexlsr
sudo kanji-config-updmap-sys --jis2004 hiragino-pron

なんと、/Library/TeX/texbin/cjk-gs-integrate-macos を直接編集してMojaveに対応させる必要があるらしい!なんでこの情報がTeX Wikiに載ってないんだよ・・・

$ sudo cp /Library/TeX/texbin/cjk-gs-integrate-macos{,.orig}

$ sudo vi /Library/TeX/texbin/cjk-gs-integrate-macos
$ sudo diff -u /Library/TeX/texbin/cjk-gs-integrate-macos{.orig,}
--- /Library/TeX/texbin/cjk-gs-integrate-macos.orig
+++ /Library/TeX/texbin/cjk-gs-integrate-macos
@@ -48,6 +48,8 @@
$addname = "sierra";
} elsif ($macos_ver_minor==13) {
$addname = "highsierra";
+ } elsif ($macos_ver_minor==14) {
+ $addname = "highsierra"; # mojave
}
}
}

これでコマンドを再実行。

$ sudo cjk-gs-integrate-macos --link-texmf

$ sudo mktexlsr
$ sudo kanji-config-updmap-sys --jis2004 hiragino-pron
$ sudo kanji-config-updmap-sys --jis2004 hiragino-highsierra-pron
hiragino-highsierra-pron not available, falling back to auto!
CURRENT family for ja: noEmbed
Standby family : ipa
Standby family : ipaex
...

だめだ、やっぱりIPAフォントが使われる。

こりゃソースコードを追うしかないのか。


ソースコードを調べる悪あがき

さっき実行したスクリプト kanji-config-updmap-sys は、結局のところ kanji-config-updmap --sys を呼び出しているだけだった。

なのでスクリプト kanji-config-updmap を編集して、not available, falling back to auto! というエラーメッセージを出してるところを探す。

 :

379 if ($representatives{$opt_mode}{$rep}{'available'}) {
380 SetupMapFile($opt_mode, $rep);
381 } else {
382 printf STDERR "$rep not available, falling back to auto!\n";
383 SetupReplacement($opt_mode, "auto");
384 }
:

ここで $representatives{$opt_mode}{$rep} の値をprintデバッグすると、こんな内容だった。

*** debug: $representatives{$opt_mode}{$rep} = {

'available' => '',
'priority' => '30',
'file' => 'HiraMinProN-W3.otf'
};

ふーむ、HiraMinProN-W3.otf というフォントファイルが見つからないのが原因みたい。

sudo find / -name 'HiraMinProN*.*' 2>/dev/null で調べたけど、そんなフォントファイルはなかった。

これが原因か。


macOS のフォントはどこにあるの?

macOS Mojavi だと、各種フォントファイルはどこにあるのだろう?

$ sudo find / -name '*.otf' -o -name '*.ttf' 2>/dev/null | less

で調べたところ、以下にあるらしい。


  • /Library/Fonts

  • /System/Library/Fonts

このうち、ヒラギノのフォントは後者にある。

$ ls /System/Library/Fonts | less

...
Hiragino Sans GB.ttc
...
ヒラギノ丸ゴ ProN W4.ttc
ヒラギノ明朝 ProN.ttc
ヒラギノ角ゴシック W0.ttc
ヒラギノ角ゴシック W1.ttc
ヒラギノ角ゴシック W2.ttc
ヒラギノ角ゴシック W3.ttc
ヒラギノ角ゴシック W4.ttc
ヒラギノ角ゴシック W5.ttc
ヒラギノ角ゴシック W6.ttc
ヒラギノ角ゴシック W7.ttc
ヒラギノ角ゴシック W8.ttc
ヒラギノ角ゴシック W9.ttc

おそらくだが、LaTeX(正確には dvipdfmx コマンド)がこれを使うように、シンボリックリンクを作成するか何かしないといけないのだろう。

その方法を探すべく、「latex mojave ヒラギノ角ゴシック」で検索すると、次のような記事が見つかった。

2015年10月の記事なので心配だが、他によさそうなのが見つけられなかったので、このページを参考にする。

この記事によると、次のようなシンボリックリンクを作成すればいいらしい。

HiraginoSerif-W3.ttc -> /System/Library/Fonts/ヒラギノ明朝 ProN W3.ttc

HiraginoSerif-W6.ttc -> /System/Library/Fonts/ヒラギノ明朝 ProN W6.ttc
HiraginoSans-W0.ttc -> /System/Library/Fonts/ヒラギノ角ゴシック W0.ttc
HiraginoSans-W1.ttc -> /System/Library/Fonts/ヒラギノ角ゴシック W1.ttc
HiraginoSans-W2.ttc -> /System/Library/Fonts/ヒラギノ角ゴシック W2.ttc
HiraginoSans-W3.ttc -> /System/Library/Fonts/ヒラギノ角ゴシック W3.ttc
HiraginoSans-W4.ttc -> /System/Library/Fonts/ヒラギノ角ゴシック W4.ttc
HiraginoSans-W5.ttc -> /System/Library/Fonts/ヒラギノ角ゴシック W5.ttc
HiraginoSans-W6.ttc -> /System/Library/Fonts/ヒラギノ角ゴシック W6.ttc
HiraginoSans-W7.ttc -> /System/Library/Fonts/ヒラギノ角ゴシック W7.ttc
HiraginoSans-W8.ttc -> /System/Library/Fonts/ヒラギノ角ゴシック W8.ttc
HiraginoSans-W9.ttc -> /System/Library/Fonts/ヒラギノ角ゴシック W9.ttc
HiraginoSansR-W4.ttc -> /Library/Fonts/ヒラギノ丸ゴ ProN W4.ttc

しかし、どのディレクトリにシンボリックリンクを作ればいいのか分からない。記事では「TEXMFLOCAL 内」としか書いてないから、具体的にどこかまるで不明。世の中のLaTeXの説明は、こういうところに配慮足りないから、分かってる人向けの記事ばかりにどうしてもなるよね。ひとこと説明があるだけでだいぶ違うのに。

さて「TEXMFLOCAL 調べ方」でぐぐって、このページ を見つけ、TEXMFLOCAL は /usr/local/texlive/texmf-local であることが判明(MacTeX 2018の場合)。ぐぐる以外の調べ方は不明。ここでようやく、TEXMFLOCALの「MF」はメタフォントのことかと気付く。気付いたところで何の役にも立たないけど。

それでは /usr/local/texlive/texmf-local の中を調べてみましょう。他のフォントへのシンボリックリンクがあるはずです。

$ ls -F /usr/local/texlive/texmf-local

bibtex/ fonts/ metapost/ tlpkg/
dvips/ ls-R tex/ web2c/

ないじゃん!なんだよ「TEXMFLOCAL 内」とか書いてるくせに、シンボリックリンクないじゃん!これのどこに作ればいいんだよ!むかつくわー。

さきほどのページによると、*.ttc ファイルを探せばいいみたい。

$ cd /usr/local/texlive/texmf-local

$ find . -name '*.ttc'
./fonts/opentype/cjk-gs-integrate/HiraginoSans-W0.ttc
./fonts/opentype/cjk-gs-integrate/AppleSDGothicNeo.ttc
./fonts/opentype/cjk-gs-integrate/HiraginoSans-W1.ttc
./fonts/opentype/cjk-gs-integrate/HiraginoSans-W3.ttc
./fonts/opentype/cjk-gs-integrate/HiraginoSansR-W4.ttc
./fonts/opentype/cjk-gs-integrate/HiraginoSans-W2.ttc
./fonts/opentype/cjk-gs-integrate/HiraginoSans-W6.ttc
./fonts/opentype/cjk-gs-integrate/PingFang.ttc
./fonts/opentype/cjk-gs-integrate/HiraginoSans-W7.ttc
./fonts/opentype/cjk-gs-integrate/HiraginoSans-W5.ttc
./fonts/opentype/cjk-gs-integrate/HiraginoSans-W4.ttc
./fonts/opentype/cjk-gs-integrate/Klee.ttc
...

あれー、ヒラギノあるじゃん。

$ cd /usr/local/texlive/texmf-local

$ cd ./fonts/opentype/cjk-gs-integrate/
$ ls -l Hiragino*
lrwxr-xr-x 1 root wheel 62 Dec 8 16:37 HiraginoSans-W0.ttc@ -> /System/Library/Fonts/ヒラギノ角ゴシック W0.ttc
lrwxr-xr-x 1 root wheel 62 Dec 8 16:37 HiraginoSans-W1.ttc@ -> /System/Library/Fonts/ヒラギノ角ゴシック W1.ttc
...

なんだよー、もうシンボリックリンクあるじゃん。むかつくわー。

じゃあ何が問題だったんだよ!


まさに泥沼

もう一度、スクリプト kanji-config-updmap のエラーメッセージとデバッグメッセージを見直すと、フォント名は「HiraMinProN-W3.otf」だった。「*.ttc」じゃないのね。

*** debug: $representatives{$opt_mode}{$rep} = {

'available' => '',
'priority' => '30',
'file' => 'HiraMinProN-W3.otf'
};

「*.otf」ファイルを探してみると、/System/Library/Fonts にあった。

$ sudo find /Library/Fonts -name '*.otf'

/Library/Fonts/STIXGeneralItalic.otf
/Library/Fonts/STIXIntUpSmReg.otf
/Library/Fonts/STIXGeneral.otf
...

$ sudo find /System/Library/Fonts -name '*.otf'
/System/Library/Fonts/SFCompactDisplay-Heavy.otf
/System/Library/Fonts/SFNSRounded-Black.otf
/System/Library/Fonts/SFCompactText-Medium.otf
...

でもHiraginoっぽいフォントはない。

仕方ないので「Mojave HiraMinProN-W3.otf」でぐぐったが、有益な情報は見つからず。


詰み

これで詰みだ。現状を説明すると:


  • 環境:macOS 10.14 Mojave(クリーンインストール)、MacTeX 2018

  • やりたいこと:LaTeX (dvipdfmx) でヒラギノフォントを使いたい。


  • TeX Wikiこちらに書かれてる手順を実行すると、ヒラギノじゃなくてIPAフォントになった。クソである。

...(snip)...

$ sudo kanji-config-updmap-sys --jis2004 hiragino-highsierra-pron
hiragino-highsierra-pron not available, falling back to auto!
CURRENT family for ja: noEmbed
Standby family : ipa
Standby family : ipaex
...(snip)...


  • スクリプト kanji-config-updmap にデバッグprintを仕込んでみると、「HiraMinProN-W3.otf」というフォントファイルが見つからないのが原因らしい。

  • しかし /Library/Fonts にも /System/Library/Fonts にも、そのようなフォントがない。そもそもmacOS Mojaveでは、otfフォント自体がないようだ。

  • これ以上の情報はぐぐっても見つからず。Mojaveが出てから結構な日数が経過してるはずなんだけどね。

LaTeXという壁がいかに高いか、感じ取れたでしょうか。


何が問題なのか


  • 「MacTeX」と名討っているのに、macOS標準フォントが使えない。ムカつく。

  • TeX Wikiのインストールページ と、Mojaveでの問題点を説明したページ が分かれている。せめて前者から後者へのリンクが欲しい(すでにあったらごめんなさい)。

  • そのページに書かれてある手順を実行してもエラーになる。それは仕方ないとしても、


    • コマンドの実行が失敗したときに、なぜ失敗したのかが不明。今回なら
      hiragino-highsierra-pron not available, falling back to auto!
      というエラーメッセージが出たけど、これを読んでもなぜ失敗したのかが分からない。

    • コマンドの実行が成功したときも、成功したことを確認する手段を説明してほしい。たとえば
      sudo cjk-gs-integrate --link-texmf --cleanup
      を実行しても、これで何がどう変わるのかが説明がないから、成功したのかどうか分からない(終了ステータスを調べるぐらいしかない)。このコマンドによってXXXファイルが作成されました、作成されたファイルを確認してみましょう、というような説明がない。

    • そうではなくて、たとえば
      sudo kanji-config-updmap-sys --jis2004 hiragino-highsierra-pron
      のコマンドを実行したら次は
      sudo kanji-config-updmap-sys status
      を実行させて、ヒラギノフォントが使われている(または使われていない)ことを確認できるような説明をしてほしい。



macOSはリリースのたびにフォント周りが変更されるので、それに追従するのが面倒くさいことは分かります。けどそのこととは別に、インストール方法の説明を改善することはできるはずなので、もしTeX Wikiの中の人がいたらご一考をお願いします。


結論

LaTeX(の環境構築)はクソ。