我想在 Typst 中创建一个自定义函数,它允许我为数学模式内的内容着色,例如
s^+
使用参数中指定的颜色(内容当然也应该是参数)。
所以我的尝试是基于this reddit post,但答案中缺少颜色参数。 我最好的解决方案是
#let colMath(x, color) = text(fill: color)[$#x$]
,但是我必须使用 #colMath($s_2^-$, red)
之类的东西来调用它,即使函数调用已经处于数学模式。当我删除 # 时,我也可以删除 $s_2^-$
,但随后它会显示“变量 red 未定义”。
我想部分问题是我不太明白何时使用 # 何时不使用。
感谢您的帮助或建议:)
发生错误是因为像
red
这样的变量仅在打字代码模式中定义,而不是在数学模式中定义。您可以通过将 red
定义为外部作用域中的变量(即使用 #let red = red
)来解决此问题。由于内部作用域(数学模式)可以访问外部级别的所有变量,因此这不再依赖于可访问的内置名称,而是像任何其他变量/函数/等一样对待它。
总之:您对
#
的理解是正确的——它进入代码模式,公开 red
和类似的内置函数。当数学模式处于活动状态时,您必须在外部作用域中显式声明这些变量。
#let colMath(x, color) = text(fill: color)[$#x$]
#let red = red
$a x^2 + b x + c colMath(s_2^-, red)$