我编写了一个函数,用于绘制带有标签的矢量。我想为标签使用不同的字体。我已完成以下操作
texpreamble("\usepackage{amsmath}\usepackage{amsfonts}");
texpreamble("\renewcommand\vec[1]{\boldsymbol{#1}}");
arrowbar vecArrow=ArcArrow(SimpleHead);
void drawV(pair begin, real leng, real angle=0,
Label label="", align align=N,
arrowbar arrow=vecArrow, arrowbar bar=None,
picture pic = currentpicture,
pen p=currentpen,
margin margin=NoMargin,
marker marker=nomarker){
path v;
v=begin--(begin.x+leng, begin.y);
rotate(angle, begin)*v;
Label L="$\vec{...}$"; // <-- What can I do here?
draw(pic=pic, L=L, align=align, v, p=p, arrow=arrow, bar=bar);
dot(pic=pic, p=p, begin, filltype=dotfilltype);
}
drawV((0,0),5);
在我的例子中,我给出了一个简单的标签(或字符串)参数,函数将改变最终的字体,这样我就不必专门编写字体更改代码。
但我不知道如何使用L
给定的参数来格式化label
。有什么解决方案吗?
答案1
这是您函数的简化版本。如果您有任何问题或希望我展示任何其他功能,请给我留言。
texpreamble("\usepackage{amsmath}\usepackage{amsfonts}");
texpreamble("\renewcommand\vec[1]{\boldsymbol{#1}}");
unitsize(1cm);
void drawV(pair begin, real leng, real angle=0, string label="")
{
path v = shift(begin)*rotate(angle)*((0,0)--(leng,0));
string str = "$\vec{" + label + "}$";
draw(Label(rotate(angle)*str), v, Arrow(SimpleHead));
dot(begin, 3+black);
}
drawV((0,0), 5, 30, "test");