MetaPost 雜談
 

返回

作一個畫雙綫的宏:

從 z1 到 z2 畫一條雙綫,似乎可以用

draw z1--z2 withpen pencircle scaled 1pt;

undraw z1--z2 withpen pencircle scaled .5pt;

不過這樣是有點缺陷美的,把兩個端點処放大一下應該就能看出來這不是什麽所謂的雙綫(我猜的,沒有測試,如果我瞎説請以頁底的地址給我 email,謝謝),只有自己定義一個宏了:

newinternal llwidth;
llwidth:=2;

vardef dline expr p =
  save q,r,e,b; path q,r; pair e,b;
  e = point length p of p;
  r = p;
  q = gobble(p shifted -e cutafter makepath(pencircle scaled llwidth))
    cuttings;
  b = point length 0 of (q rotated 90);
  r shifted b
enddef;

def drawll expr p = _apth:=p; _dline enddef;
def _dline text t =
  %draw _apth t;
  draw dline _apth withpen currentpen  t;
  draw dline reverse _apth  withpen currentpen  t
enddef;

這個定義現在看看沒有什麽了不起的,不過那是我在 05 年剛學習 MetaPost 的時候研究嘗試了很多次得到的,因此特此紀念