読者です 読者をやめる 読者になる 読者になる

Asymptoteの日本語設定(Mac)

昔はAsymptoteで日本語を使うことはできなかったそうですが、今は使えるということを知ったので、その設定をしてみました。
ですが、想像以上に困難な道のりで、Twitterのフォロワーさんにも助けていただきながら、結局設定に3日間もかかってしまいました…
その顛末を、ここに書き留めておきたいと思います。

始めは、TeX Wikiに書いてある通り、ちょっとcongig.asyを編集すればいいのだろうと思っていたところ、なぜか文字化けします。

困ってTeX Wikiを見ると、
  platex のデフォルトがUTF-8になっていない場合は "platex-utf8" とする。
と書いてあります。
ここが原因、つまりUTF-8の文書をうまく処理できていないのだろうと思い、書いてある通り、エイリアスを作ったりバッチファイルを作るものの、ことごとくうまく行きません。
まず、texcommand="platex -kanji=utf8"としたところ、エラーが出ます。
よく見ると、これはできないと、TeX Wikiにも書いてあります。

エイリアスは、そもそもコマンドが作れませんでした。
.bash_profileに書くだけでは、Asymptote側からはそのエイリアスは使えないみたいですね。
バッチファイルについては、作ってみて、動いてはいるのですが、TeXが起動した後、ファイルの指定待ち状態になっています。
引数を取るようにすれば良いのかと思い、そう変えてみるものの、うまく行かず、断念しました。
後で分かったことですが、僕の環境ではplatexは何もオプションを付けなくてもUTF-8の文書を正しく処理できるようで、これは意味のない作業であったことが分かりました。

ここで、フォロワーさんに、-keepコマンドを付けると途中で生成されたファイルが残るので、その中の.texファイルをタイプセットしたらどうか、というご教示を受け、試してみますが、日本語は文字化けしませんが、グラフが半分に切れてしまいます。
これもうまく行きません。

ですが、これで、少し進展しました。
他の生成されたファイルをプレビュー.appで眺めてみると、.psファイル以降がおかしいようです。
ここで、-vvオプションを付けてAsymptoteを実行すると、Asymptoteが内部で何をやっているのかが表示されます。
これを見ると、
TeXでdviファイルを作成→dvipsでpsに→psをepsに→epsをGhostscriptでpdfに
という流れのようなので、dvipsがおかしいのではないかと思いました。
ですが、dvipsの設定は、ヒラギノを使うなら、

sudo updmap-sys --setoption kanjiEmbed hiragino

で済みますので、これは前にやっていますし、もう一度やっても変化はありませんでした。

次に、このサイトを見ると、どうやらMacのプレビュー.appも怪しそうです。
そこで、gvを使ってファイルを開いてみようとするのですが、今度はgvが起動しません。
Homebrewでインストールしたものなのですが、これは未だに起動できないままで、原因は調査中です。

仕方がないので、ここから設定済みの.app形式のバイナリをダウンロードしてみると、やっと使えました。
このgvで眺めると、なんと、Asymptoteによって途中で生成されたepsファイルを開くと、日本語がちゃんと表示されます!
なので、epsファイルまでは、正しく生成されていたようで、これを開くと文字化けするのは、プレビュー.appのバグだったようです。

そうなると、問題になるのは最後のGhostScriptでdviをpdfにする行程です。
つまり、GhostScript(以下gs)の日本語設定がうまく行っていないようです。
そこで、TeX Wikiのこのページを参考に、シンボリックリンクを貼ったり、cidfmapを編集したり、と設定を行いますが、やはりうまく行かない。
そこで、最後、先ほどのここの設定済みのバイナリ(「パッケージの内容を表示」で見る)と比較して、足りないリンクを張ったりしたところ、やっと文字化けが直りました。

ちなみに、GhostScriptの中身で直したところは、

  • (色々)/ghostsciprt(色々)/Resource/Init/cidfmap
  • (色々)/ghostsciprt(色々)/Resource/Font/ の中身
  • (色々)/ghostsciprt(色々)/Resource/CIDFont/ の中身

です。
基本的に、先ほどの設定済みバイナリのものから、

  • cidfmapの内容をコピー
  • Fontの中身で、最初に"Hira"と付いているファイルをコピー
  • CIDFontの中身で、最初に"Hira"と付いているファイルをコピー 

すればOKのはずです。
なお、設定済みのバイナリは、cidfmapは、cidfmap.pubのシンボリックリンクとなっているので、これをテキストエディタで開き、中身をコピーする等します。
 
という訳で、とても疲れました。
結局原因は、GhostScriptにありました。
同じような症状の方に参考になれば幸いです。