musixpss - MusiXTeXの拡張:MetaPostによるスラーのPostScript化

version 0.54 [2017/08/17]

はじめに

 MusiXTeXではスラー・タイはフォントによって描かれます。従ってフォントがない曲線は描けず、長いスラーでは継ぎ目が入るので汚くなりがちです。
 そこで、「より美しく、より柔軟に」スラー・タイを描くために、MetaPostの力を借りてスラー・タイをPostScriptで描く拡張パッケージを製作しました。
 以下の記述でスラーという場合、特に断りがない限りスラーとタイの両方を含むものとします。MusiXTeXの核心部分ではスラーとタイの区別はないためです。

特徴

難点

このパッケージの内容

※可読ファイル (html, tex, mp, c) はすべてCRLF改行(MS-DOSスタイル)にしています。

必要なもの

インストール方法

  1. まず、TeX、MusiXTeX、およびMetaPostが動くようになっていることが前提です。
  2. ファイル musixpss.tex を、TeXが入力ファイルとして認識できるディレクトリに置いてください。とりあえずは作成中の楽譜と同じところに置けば大丈夫です。常用するならば、例えば $TEXMF/tex/generic/musixtex/misc/ に置けば良いでしょう。 C:\w32tex\share\texmf-dist/tex/generic/musixtex/misc
  3. ファイル musixpss.mp を、MetaPostが入力ファイルとして認識できるディレクトリに置いてください。とりあえずは作成中の楽譜と同じところに置けば大丈夫です。常用するならば、例えば $TEXMF/metapost/musixtex/misc/ に置けば良いでしょう。
  4. OSがMicrosoft Windowsの場合、ファイル musixpss.exePATH が設定されているディレクトリに置きます。実際にはMusiXTeX本体のインストールの時に musixflx.exe を置いたのと同じディレクトリに置くと良いでしょう。
    Microsoft Windows以外のOSをご使用の場合は、 musixpss.c を44-45行目を修正の上、適当にコンパイルし(例: gcc -Wall -O2 musixpss.c -o musixpss )、実行ファイルを適切な場所に置いてください。

使い方

ここでは、処理するMusiXTeX楽譜ソースファイルが foo.tex であるとします。

  1. 通常の手順で foo.tex を作ります。
  2. \input musixtex.tex の次に、 \input musixpss.tex\relax の1行を加えます。
  3. 通常の手順通り、MusiXTeXの第1から第3パスまでを実行します。
    tex foo
    musixflx foo
    tex foo
    このとき、 No file foo.slu.1.mps. といったメッセージが画面に表示されます。また、通常の foo.mx1 foo.mx2 foo.dvi に加えてスラーの各種パラメータが書かれた foo.slu というファイルができます。
  4. (第4パス)サポートプログラム musixpss.exe を実行します。
    musixpss foo
    これにより、 foo.slu からMetaPostソースファイル foo.mp が生成されます。コマンドラインに拡張子指定があってもなくても強制的に .slu と見なされます。
  5. (第5パス)MetaPostを実行します。
    mpost foo
    MetaPostの起動コマンドはシステムにより、 mp である場合もあります。終了すると、 foo.slu.1.mps foo.slu.2.mps ... というように、個々のスラーの描画命令を含んだEPSファイルがスラーの数だけ生成されます。
  6. (第6パス)再度TeXを実行します。
    tex foo
    今回は No file foo.slu.1.mps. などという表示は出なくなり、dviファイルにスラーを取り込む \special が書き込まれます。
  7. これでdviファイルが完成しています。DVIwareを実行します。

 なお、楽譜を変更してタイプセットし直す場合、基本的には foo..slu.1.mps などのEPSファイルは消さなくても大丈夫です。特に foo.mx2foo.slu の内容が両方とも変化しないような変更ならば、MusiXTeXを1回実行するだけで良い場合があります。  ただし、スラーの数や形が変わるような変更で、MusiXTeXの第1パスからやり直す場合は、通常モードおよびpdfTeX専用モード(次項参照)ではこれらEPSファイルを消しておくと、第2パスの処理速度が上がります。

オプション

動作モードの指定

 このパッケージは様々な環境に対応するために、3種類の基本動作モードを持っています。

 何も指定しない場合は通常モードになります。特に理由がなければ、通常モードをお使いください。
 dvips/dvipdfm最適化モードは、内部の処理が非常に簡素であるため高速にタイプセットできるほか、位置決め精度がよい、手順の第6パスが不要になる、等の利点があります。ただし、LaTeX2eレベルでdvips互換をうたっていても低レベルの命令が完全互換でないDVIware(dviout)では、正しい結果が得られなくなります。お使いのdviドライバで通常モードと同じ出力が得られることを確認の上ご使用ください。
 pdfTeX専用モードはその名のとおりです。pdfTeX(ver.1.10a-devel以降)で使えます。
 これら以外のDVIware(xdvi等)に対応することも考えられますが作者にはその環境がありませんので、情報提供とベータテストにご協力をお願いいたします。

バージョン0.52で、自動選択モードを追加しました。組版エンジンが普通のTeXかpdfTeXかをマクロが検出し、適切な動作モードを自動選択します。それ以外の動作は選択された基本モードと同じです。

動作モード 通常モード dvips最適化モード pdfTeX専用モード 通常・pdfTeX自動切換 dvips・pdfTeX自動切換え
一般のDVIware※ OK 可否はDVIwareにより異なる NG OK 可否はDVIwareにより異なる
dvips/dvipdfm(x) OK OK NG OK OK
pdfTeX NG NG OK OK OK
※LaTeX2eのgraphicx packageに [dvips] オプションを指定した場合のdviファイルが正しく表示できるDVIwareなら何でも良い。(例えばdviout)
動作モード 通常モード dvips最適化モード pdfTeX専用モード
ソースファイルの記述 \input musixtex
\input musixpss
\relax
\input musixtex
\input musixpss
\relax
\psslurmode{dvips}%
\input musixtex
\input musixpss
\relax
\psslurmode{pdftex}%
処理手順 全6パス
+ DVIware
  1. tex foo
  2. musixflx foo
  3. tex foo
  4. musixpss foo
  5. mpost foo
  6. tex foo
  7. %DVIWARE% foo
全5パス
+ dvipsまたはdvipdfm(x)
  1. tex foo
  2. musixflx foo
  3. tex foo
  4. musixpss foo
  5. mpost foo
  6. dvips foo
    (or dvipdfm(x) foo)
全6パス
+ Acrobat Reader
  1. pdftex foo
  2. musixflx foo
  3. pdftex foo
  4. musixpss foo
  5. mpost foo
  6. pdftex foo
  7. (AcroRd32) foo
operation mode 通常・pdfTeX自動切換 dvips・pdfTeX自動切換え
code \input musixtex
\input musixpss
\psslurmode{auto-pdftex-general}%
\input musixtex
\input musixpss
\psslurmode{auto-pdftex-dvips}%

スラーの太さの調整

  \psslurthickadj というマクロを任意の実数に再定義すると、スラーの太さがデフォルトの \psslurthickadj 倍になります。例えば \def\psslurthickadj{2.5} とするとデフォルトの2.5倍の太さになります。

PS化スラーと従来のフォントによるスラーの切り替え

 このパッケージを読み込んだ状態で、何らかの理由によりPS化スラーでなくフォントによるスラーを使いたい場合、楽譜ソースファイルの任意の場所で、PS化スラーと従来のフォントによるスラーを切り替えることができます。

中間EPSファイルの削除機能

 海外ユーザーから「中間EPSファイルを削除できるようにして欲しい」との要望が多くあり、実装しました。また、通常モードおよびpdfTeX専用モードで、楽譜を変更してMusiXTeXの第1パスからタイプセットし直す場合のEPSファイル一括削除にも利用できます。

musixpss -clean foo.slu
(ファイル名の .slu は無くても構いません)または同じことですが
musixpss foo.slu -clean

とすると、すべての中間EPSファイル foo.slu.1.mps, foo.slu.2.mps, ...foo.slu.n.mps を削除します。ただし、実装は手抜きであり、環境によっては意図に反して本来必要なファイルを削除してしまうかもしれませんので、サポートプログラムのソースファイルを検討の上、注意して使用してください。

取り扱い

 このパッケージの著作権は作者にあります。使用条件はGNU GPL ver.2またはそれ以降に準拠したフリーソフトウェアとします。同梱の gpl-2.0.txt ファイルを参照して下さい。作者はこのパッケージに対して当面の間GNU GPL ver.2を判断基準としますが、このパッケージの一部を別のプログラムへ組み込む際に最新のGNU GPL ver.3への移行を妨げるものではありません。GNU GPL ver.2の邦訳は http://www.opensource.jp/gpl/gpl.ja.html などから得られますが、現在GNU GPLはver.3が最新版として頒布されているためver.2の邦訳の取得永続性については保証されないものと考えられます。

参考

作者

Hiroaki MORIMOTO <CQX05646 (atmark) nifty (dot) com>

謝辞

Luigi Cataldi氏には、pdfTeXにおける動作確認と、説明書のイタリア語への翻訳(v0.51.1、v0.53)をしていただきました。ここに感謝いたします。


更新履歴

version 0.10 [2001/02/10]

version 0.20 [2001/02/23]

version 0.21 [2001/04/30]

version 0.22 [2001/06/15]

version 0.23 [2001/10/17]

version 0.30 [2001/10/21]

version 0.40 [2001/11/03]

version 0.41 [2002/06/01]

version 0.50 [2003/01/05]

version 0.51 [2004/02/21]

version 0.52 [2007/01/01]

version 0.53 [2009/07/21]

version 0.54 [core modules on 2017/08/12, documents on 2017/08/17]

TODO:


Copyright (C) 2001-2017 Hiroaki MORIMOTO (Kuuku).
ご意見やバグレポ等歓迎いたします。'TeX-music Mailing List'(英語)または直接e-mailにてお知らせください。