所以,我只想使用 REGEX 转换第一个字母,然后绕过函数将其大写。 但是 Typst 返回 “找到字典中的预期字符串或内容”
这是来源:
#let text="oh this is it"
#text.replace(regex("^\w"), m=>upper(m))
哦,如果您对自定义函数作为 Typst 中的回调有深入了解,我会很高兴,因为我真的很难找到关于它的良好文档。
谢谢
我尝试了该代码,我希望第一个字符能够被升级,但没有成功
所以,我终于可以解决这个问题了。
虽然 Typst 脚本看起来像 JS,但实现细节有点令人困惑,因为文档缺少此类细节。
此表达式将返回预期的字符串或字典中找到的内容
#text.replace(regex("^\w"), m=>upper(m))
问题出在
m=>upper(m)
。因此,Typst 将捕获的 m
匹配视为 Dictionary 而不是捕获的直接值,而 upper()
期望其参数为字符串或内容。
修复很简单。
repr(m)
查看字典的键。
它会返回
(start: 0, end: 1, text: "o", captures: ())
.text
字典键,因此我们将字符串作为 upper()
函数的有效值。upper(m.text)
完整固定代码:
#let text="oh this is it"
#text.replace(regex("^\w"), m=>{
repr(m)
upper(m.text)
})