MusiXTeXのアレなところ
(La)TeXで楽譜が書ける(楽とは言ってない)パッケージである MusiXTeX ですが, いくつかアレなところがありまして…… 以下は Ver 1.28での挙動です.
音符の高さでの数字指定でアレ
\ha
などの符尾の方向を自動で決定する音符を出力する命令で, これの高さを数字指定すると符尾の方向が正しく出力されません.
例えば
\begin{music} \nostartrule \startpiece \Notes \ha{0}\ha{2}\ha{4}\ha{6}\ha{8}% \en\setdoublebar \endpiece% \end{music}
というコードでは, \ha{0}
と\ha{2}
では符尾が上に出ることを期待するのですが, 残念ながらそうはならず全て下向きの符尾が出ることになります.
これは\xgetn@i
というマクロの定義が原因で, musixtex.texの3164行目にあたる文を\ifnum\n@viii<\maxdimen \n@i#1 \fi
と書き換えて定義しなおすことで解決します1.
\Tqb*
, \Qqb*
での数字指定でアレ
連桁を半自動的に書けるこれらのマクロも数字指定で挙動がおかしくなります. 例えば
\begin{music} \nostartrule% \startpiece% \Notes \Dqbu{1}{3}\Dqbu{2}{4}% \Tqbu{1}{3}{5}\Tqbu{2}{4}{6}% \Qqbu{1}{3}{5}{7}\Qqbu{2}{4}{6}{8}% \en\setdoublebar \endpiece% \end{music}
では\Tqbu
, \Qqbu
でおかしな挙動が確認できるでしょう.
これは\C@Tq
および\C@Qq
の定義が原因で, それぞれ内部の\qb0{#1#2}
(あるいは\qb0{#1#2#3}
)を\qb0{#1}\qb0{#2}
(あるいは\qb0{#1}\qb0{#2}\qb0{#3}
)というようにして定義しなおすと解決します.
BibLaTeX との併用でアレ
BibLaTeX とは\addspace
マクロが競合しています.
これを回避するためには
- BibLaTeX を読み込み,
\addspace
を別名のマクロ, 例えば\biblatex@addspace
に(\let
を用いて)退避させて,- MusiXTeX を読み込み,
\addspace
を別名のマクロ, 例えば\musixtex@addspace
に(\let
を用いて)退避させて,\addspace
を退避させたAに(\let
を用いて)戻す
というようなことをする必要があります(noconflict パッケージを使えれば少し書くのは楽になるけど, 本質は変わらない).
またmusic
環境に入るときに, 内部で\let\addspace\musixtex@addspace
のようにして, \addspace
を MusiXTeX のものにしておく必要があります.
まあ控えめに言っても面倒すぎるので, music
環境を別の環境(例えばMusic
環境)でラッピングして, そこで\let\addspace\musixtex@addspace
というようにするよう定義するのがいいと思います.
その他
そもそも書くのがかなり面倒だというのが一番キツいところではある.