macOS Sierra TeX Live 2017

ある Web サイト構築の手伝いをしていて,ドキュメント改訂をするために,LaTeX 文書整形システムを使おうとしたら,platex command not found

Sierra にバージョンアップしたら当然のごとく LaTeX 環境が壊れていた。今年の 5 月に自作漢詩文集『狂溟集』を改訂してから,LaTeX をまったく触らないし,TeX Live 2013 を導入してからすでに 3 年以上経つ。こんな状況下において,俺の一番大事にしている文房具であるはずの LaTeX 環境の保全を考えずに,軽率にも macOS のバージョンを上げてしまったわけである。こうして,LaTeX 環境再構築のためにまたもや計算機に使われるハメに。

バージョンアップ後も残っていた /usr/local/texlive/2013/bin/ 下のバイナリのシンボリックリンクを貼り直せば復旧するかとは思われたが,macOS は OS X 10.10 Yosemite 以降アーキテクチャが大きく変更されているので,小手先の操作でトラブルとなることも想定され,面倒でも新規に最新版 TeX Live 2017 をインストールすることにした。もちろん texmf-local 下に別途個別に組み込んだパッケージはそのまま使い続けることにした。そこまでいちいちやっている気合いはもう俺にはない。使っているうちに問題が出たらそのつど摘み取ることにした。

macOS Sierra に最新の TeX Live 2017 を導入した備忘録を残しておく。端末コマンドラインのオペレーションは Bash 前提である。

バックアップ

まずは TeX Live 2013 ディレクトリツリーバックアップから。2013texmf-local とをまるごとアーカイブする。もう使わない 2013 ディレクトリは削除。

$ cd /usr/local
$ tar zcvf ~/tmp/texlive2013-20170910.tar.gz ./texlive
$ rm -fr texlive/2013

TeX Live 2017 インストール

国内の CTAN ミラーサイトから北陸先端科学技術大学院大学の ftp サーバを選んで,ネットワークインストールすることとした。この辺りの macOS への導入手順は TeX Wiki TeX Live/Mac に詳しいので,そちらの解説も参照いただきたい。

$ cd ~/tmp/
$ curl -O http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet/\
install-tl-unx.tar.gz
$ tar zxvf install-tl-unx.tar.gz
$ cd install-tl-20170910
$ sudo ./install-tl --repository \
http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet/
...
Actions:
 <I> start installation to hard disk
 <H> help
 <Q> quit
Enter command: I
# 問い合わせに I を応答するとインストールがはじまる。
# 3500 近いパッケージの取得に 1 時間程度時間がかかる。
# バイナリのシンボリックリンク作成
$ sudo /usr/local/texlive/2017/bin/x86_64-darwin/tlmgr path add
# アップデート
$ sudo tlmgr update --self --all

ヒラギノフォント埋め込み調整

日本語フォントとしてヒラギノ N シリーズを埋め込むための設定を行う。TeX 環境からフォント本体へのシンボリックリンクとマップ登録を以下のように行う。

# ヒラギノフォントにシンボリックリンクを設定
$ cd /usr/local/texlive/2017/texmf-dist/scripts/cjk-gs-integrate
$ sudo perl cjk-gs-integrate.pl --link-texmf --force
$ sudo mktexlsr
# ヒラギノフォント N シリーズを埋め込むマップ登録
$ sudo updmap-sys --setoption jaEmbed hiragino-elcapitan-pron


言語登録とフォーマットファイル生成

次に,自作の教会スラヴ語パッケージ OldSlav の言語ハイフネーションパターンを登録して,フォーマットファイルを生成する。OldSlav 1.4 をダウンロードして texmf-local 下の TeX ツリーに格納しておく。システム標準に含まれていない言語を組み込むには,言語名とハイフネーションパターンの対を language-local.dat に記述して,同様のオペレーションを行えばよい。

今回,language-local.dat は旧 TeX Live 2013 の時に作成済みなので,そのまま用いればよかった。

$ cd /usr/local/texlive/texmf-local/tex/generic/config
$ cat language-local.dat
% Old Church Slavonic
oldchurchslavonic ocshyphen.tex
$ sudo tlmgr generate --dest language.dat language.dat
$ sudo fmtutil-sys --byhyphen language.dat

個別導入フォントのフォントマップ登録

最後に,個別にインストールしたフォントパッケージのフォントを使えるようにするため,フォントマップを登録する。ひとつひとつだと面倒なので,texmf-local/fonts/map/dvips 配下にあるマップファイルを探索してマップのリストを作成し,このリストからマップ登録スクリプトを生成して,updmap-sys によってフォントマップ登録処理を行うこととする。

$ cd /usr/local/texlive/texmf-local/fonts/map/dvips
$ for i in `find . -name "*.map" | xargs basename`
> do echo "updmap-sys --nomkmap --enable Map=$i" >> ~/tmp/addmap.sh; done
$ sudo sh ~/tmp/addmap.sh
$ sudo updmap-sys

これでやっと LaTeX でタイプセットできるようになった。俺が texmf-local 配下に個別導入したパッケージのなかには,その後 TeX Live 標準に取り込まれたものがあり,上記フォントマップ登録で重複のワーニングが出たが,タイプセットそのものには影響がないので,これの解消はまた別の機会とすることにした。