我尝试将 fontawesome 符号作为变量传递给 MetaFun,但没有成功。
我尝试过直接通过变量传递符号
\usesymbols [fontawesome]
\startuniqueMPgraphic{MPfa}{symbol}
picture pic ;
pic := textext.rt(\MPvar{symbol}) ;
draw pic ;
\stopuniqueMPgraphic
\starttext
\useMPgraphic{MPfa}{symbol=\symbol[fontawesome-solid][font-awesome]}
\stoptext
仅传递 fontawesome 标志
\usesymbols [fontawesome]
\startuniqueMPgraphic{MPfa}{symbol}
picture pic ;
pic := textext.rt(\symbol[fontawesome-solid][\MPvar{symbol}]) ;
draw pic ;
\stopuniqueMPgraphic
\starttext
\useMPgraphic{MPfa}{symbol=font-awesome}
\stoptext
使用MPtext
和MPString
两者MPvar
\usesymbols [fontawesome]
\setMPtext{fa}{\symbol[fontawesome-solid][font-awesome]}
\startuniqueMPgraphic{MPfa}{symbol}
picture pic ;
pic := textext.rt(\MPString{\MPvar{symbol}}) ;
draw pic ;
\stopuniqueMPgraphic
\starttext
\useMPgraphic{MPfa}{symbol=fa}
\stoptext
并且没有MPvar
\usesymbols [fontawesome]
\setMPtext{fa}{\symbol[fontawesome-solid][font-awesome]}
\startuniqueMPgraphic{MPfa}{symbol}
picture pic ;
pic := textext.rt(\MPString{symbol}) ;
draw pic ;
\stopuniqueMPgraphic
\starttext
\useMPgraphic{MPfa}{symbol=fa}
\stoptext
但是似乎什么都编译不了。我错过了什么?
答案1
我知道这是一个迟来的答案,但以下技巧可能对其他 ConTeXt 用户有帮助:s::
在变量名前加上前缀并使用\MPvariable
而不是\MPvar
让您传递字符串:
\usesymbols[fontawesome]
\startuniqueMPgraphic{MPfa}{s::symbol}
picture pic ;
pic := textext.rt("\symbol[fontawesome][\MPvariable{symbol}]") ;
draw pic;% scaled 10; %for dramatic effects
\stopuniqueMPgraphic
\startTEXpage
\useMPgraphic{MPfa}{symbol=bell}
\stopTEXpage
答案2
您的所有示例都不起作用,因为 ConTeXt 仅允许“等”命令使用少数特定参数类型\useMPgraphic
。
一个键只能有以下三种参数类型:
- 颜色的名称,
- 一个数字或
- 有效尺寸。
在您的示例中,您从未向键传递有效参数symbol
,这会导致错误消息。