話說有的巨集無法 input 到文件裡,compile 時過不去,例如 musixps.tex,因此本來想說有斜度的漸強漸弱做不出來。碰碰運氣翻找安裝程式時附的案例,看到 traeumer.tex 有個變通的方法,但整份只展示了漸強的做法,漸弱怎麼辦呢?
在 traeumer.tex 裡,有斜度的漸強是運用 varline 做出來的:
\def\slopecresc#1#2#3#4{\rlap{\varline{#1}{#2\noteskip}{#3}}%varline 怎麼用?根據安裝程式時所附的使用說明 musixdoc.pdf,其用法是這樣:
\rlap{\varline{#1}{#2\noteskip}{#4}}}%
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