MetaPost - 如何关闭“当...时结束”消息?

MetaPost - 如何关闭“当...时结束”消息?

考虑以下代码:

beginfig(1);

i:=0;

forever: 

    if odd i:
        show(i);
        exitif true;
    fi

    i:=i+1;
endfor

endfig;

end

当我运行它时,我得到了(end occurred when if on line 13 was incomplete)

有没有什么办法可以关闭这些消息?

答案1

可能有更好的方法,但与 TeX 中的条件类似,一种方法是确保在执行fi之前展开exitif。例如

beginfig(1);

i:=0;

forever: 

    if odd i:
        show(i);
        expandafter exitif expandafter true expandafter;
    fi

    i:=i+1;
endfor
endfig;

end

或者

beginfig(1);

i:=0;

forever: 

    if odd i:
        show(i);
        scantokens "fi"
        exitif true;
    fi

    i:=i+1;
endfor
endfig;

end

在第二个版本中,当条件为假时scantokens隐藏第一个fi,而当条件为真时执行第一个,并fi跳过第二个。

相关内容