在 Typst 中显示彩色数学内容的自定义函数

问题描述 投票:0回答:1

我想在 Typst 中创建一个自定义函数,它允许我为数学模式内的内容着色,例如

s^+
使用参数中指定的颜色(内容当然也应该是参数)。

所以我的尝试是基于this reddit post,但答案中缺少颜色参数。 我最好的解决方案是

#let colMath(x, color) = text(fill: color)[$#x$]
,但是我必须使用
#colMath($s_2^-$, red)
之类的东西来调用它,即使函数调用已经处于数学模式。当我删除 # 时,我也可以删除
$s_2^-$
,但随后它会显示“变量 red 未定义”。 我想部分问题是我不太明白何时使用 # 何时不使用。

感谢您的帮助或建议:)

colors scripting typst
1个回答
0
投票

发生错误是因为像

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)$
© www.soinside.com 2019 - 2024. All rights reserved.