ConTeXt:带有 MetaFun 的 Fontawesome 符号

ConTeXt:带有 MetaFun 的 Fontawesome 符号

我尝试将 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

使用MPtextMPString两者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

一个键只能有以下三种参数类型:

  1. 颜色的名称,
  2. 一个数字或
  3. 有效尺寸。

在您的示例中,您从未向键传递有效参数symbol,这会导致错误消息。

相关内容