PMX/MusiXTeXで日本語を使えるようにした

PMXとは、TeXで楽譜を作るパッケージであるMusiXTeXを簡単に使えるようにするツールである。筆者はたまにちょっとした楽譜を書き留めたい時とかにPMXを使うのだが、楽譜のタイトルや作曲者の所に日本語を使えないので、いつも諦めてローマ字で書いていた。

しかし、最近、タイトルを日本語で書いた楽譜を書いて印刷したいことがあった。
MacのGarageBandではタイトルが日本語の楽譜を印刷できることがわかったので、最初はこれで作ろうとしたが、GarageBandで楽譜を入力するのは私にはかなり難しかった。メトロノームの音に合わせてタイミング良くソフトウェアキーボード入力(またはMIDI端子で接続した電子ピアノから入力)した後で微調整するくらいで済むならできそうだが、私にはタイミング良くキーボード入力(鍵盤入力)するのができない。
Webで探すと、pTeXを使えばMusiXTeXで日本語を出せるという情報が多数あり、pTeXはインストール済みだったので、PMXで日本語を使う方法を探すことにした。

改めて、日本語のタイトルと作曲者名を含む、

2 1 3 4 3 4 1 0
0 8 20 0.0

bt
./
Tt
For Elise(エリーゼのために)
%"Für Elise"とするとドイツ語フォント問題が加わる
Tc
Ludwig van Beethoven(ベートーベン)
Ap
r4 rp ( a82 e+ a ) r r4 ( e82 e+ gs ) r r4 ( a82 e+ a ) r r4 /
( e85 ds e ds e b dn c a4 ) r8 ( c- e a b4 ) r8 ( e- gs b c4 ) r2 /

このようなソースコード(test.pmx)を作り、

pmxab test
musixtex test

としてできたPDFを見ると、やはり日本語フォントが出ず、ひらがなとカタカナ部分が消失した。

使用した環境は、Ubuntu系のOSで、apt-getでtexlive-musicとtexlive-lang-japaneseをインストールしたもので、PMXとMusiXTeXのバージョンはそれぞれ2.7.4と0.16、platexやeuptexでは普通に日本語が出る。

Webの情報を頼りに、

pmxab test
euptex test
musixflx test
euptex test
dvipdf test

としてみる(musixtexコマンドはetex, musixfix, etex, dvips, ps2pdfを順に実行するのと等価らしいので、実質etexをeuptexに変えただけ)と、日本語が出たが、日本語のフォントが小さくなった。

これはhttp://kuuku.no.coocan.jp/pub/musixtex/font/index.htmlに答えが書かれており、PMXが悪さをしているらしい。
同ページにて過去のpTeX用の、この問題を解決するマクロ(musixjfn-20080801.tar.gz内のmusixjfn.tex)が提供されているので、これを拾って、test.texの"\input musixtex"の次に"\input musixjfn"を追加してみたら、dvipdfで"dvips: ! invalid char 65288 from font jis"というエラーになった(65288=FF08hは「(」のUnicode)。

upTeXの既定の横書和文フォントのTFM名は
明朝: upjisr-h
ゴシック: upjisg-h
らしいので、musixjfn.texの中身を
jis → upjisr-h
jisg → upjisg-h
と置換してやり直すと、日本語フォントが大きくなった。

これで成功だが、pmxabが出力した.texファイルを編集しないといけないのでは、pmxabを実行する度に.texファイルの編集が必要になり、面倒である。PMXのドキュメント(pmx274.pdf)の"Putting TeX Commands into the PMX File"の所に、\\で始めると.texの上の方に埋め込まれると書かれているので、PMXのソースコードを次のようにしてみると、出力された.tex内の"\input musixjfn"の場所はだいぶ下になったが、上の画像と同じ、望み通りの結果が得られた。

2 1 3 4 3 4 1 0
0 8 20 0.0

bt
./

%日本語フォントのサイズを修正する
\\input musixjfn\

Tt
For Elise(エリーゼのために)
Tc
Ludwig van Beethoven(ベートーベン)
Ap
r4 rp ( a82 e+ a ) r r4 ( e82 e+ gs ) r r4 ( a82 e+ a ) r r4 /
( e85 ds e ds e b dn c a4 ) r8 ( c- e a b4 ) r8 ( e- gs b c4 ) r2 /

なお、筆者の環境では、

kanji-config-updmap-sys ipaex

は不要だった。(既にipaexになっていた)