2012-04-30

MusiXTeX 筆記之初級篇

varline

話說有的巨集無法 input 到文件裡,compile 時過不去,例如 musixps.tex,因此本來想說有斜度的漸強漸弱做不出來。碰碰運氣翻找安裝程式時附的案例,看到 traeumer.tex 有個變通的方法,但整份只展示了漸強的做法,漸弱怎麼辦呢?

在 traeumer.tex 裡,有斜度的漸強是運用 varline 做出來的:
\def\slopecresc#1#2#3#4{\rlap{\varline{#1}{#2\noteskip}{#3}}%
    \rlap{\varline{#1}{#2\noteskip}{#4}}}%
varline 怎麼用?根據安裝程式時所附的使用說明 musixdoc.pdf,其用法是這樣:
varline{h}{l}{s}
h 指高度,l 是長度,s 為斜度,這三個值都是數字,非自然數時要各自以大括號括起來。它要位於所在音符之前,不可以用 znotes 的方式。

左上即為有斜度的漸強。如此可以看出,上面的漸強做法分別定義了兩條直線的高度、長度和角度,這兩條直線共用同一個高度和長度,所不同者為斜度,如此一共是四個變數。實際使用時,在要加上漸強符號的音符之前這樣寫:
/slopecresc{}{}{}{}
大括弧裡都是數字。數字為自然數時,可省略括弧。終於明白它在幹嘛之後,想說一定也可以依樣畫葫蘆,做出有斜度的漸弱吧。
\def\slopedecresc#1#2#3#4#5{\rlap{\varline{#1}{#3\noteskip}{#4}}%
    \rlap{\varline{#2}{#3\noteskip}{#5}}}%
上面的式子可以做出漸弱,它同樣定義了兩條線,其起始高度不同,距離相同,斜度不同,因此共有五個變數。實際使用時,在要加上漸弱符號的音符之前這樣寫:
/slopedecresc{}{}{}{}{}
在實驗過程中,發現斜度過於接近 0 時,例如可能在正負 2 之內,小數點後面的值似乎會直接略過,而大一點的值,可能會使得兩條線長短不同。後者的解決方法就是讓兩條線各有自己的長度變數,前者大概無解吧。也就是這個做法無法有極小角度,因此某些狀況還是不能用。很可惜。

此外,為了讓兩條線最終是交會在一起,而不是交叉過頭或根本碰不到,必須嘗試各種數字組合(漸強則沒有這個問題)。或許經驗比較多之後,可以很直覺地百發百中。

(其實比較需要知道的是,到底為什麼有些巨集無法載入。)

相關文章

MusiXTeX 筆記之基礎篇
MusixTex 筆記之 slurs & ties

No comments:

Post a Comment