这字符串操作wiki 页面上有一个编译失败的示例。这段代码前后必须添加一些语法,但我在文档中找不到有关此内容的任何详细信息。代码片段如下:
\starttext
str = "Luxury Yacht"
rep = {
[1] = { "Luxury", "Throatwobbler" },
[2] = { "Yacht", "Mangrove" },
}
print("My name is spelled “" .. str .. "”, but it's pronounced “" .. lpeg.replacer(rep):match(str) .. "”.")
\stoptext
- 如何在我的文档中使用此功能?
- 我可以将文档中的所有文本放入其中
print()
以对所有文本进行一些更改吗?例如,将文档中的所有“apple”替换为“fruit”?
我特别感兴趣的是使用lpeg.replacer(表格)特征。
答案1
这里有两点错误。首先,您需要“转为 Lua”,这可以使用\directlua
原语来完成,但有“更高级别”的包装器:\ctxlua{...}
或。其次,您需要将输出“打印”到 TeX,这可以使用或\startluacode ... \stopluacode
来完成;后者也调用,因此您可以使用 printf 样式的参数。tex.print(...)
context(...)
string.format
\starttext
\startluacode
local str = "Luxury Yacht"
local rep = {
[1] = { "Luxury", "Throatwobbler" },
[2] = { "Yacht", "Mangrove" },
}
context("My name is spelled “%s”, but it's pronounced “%s”.", str, lpeg.replacer(rep):match(str))
\stopluacode
\stoptext
答案2
\starttext
\def\LuaTest#1#2{\directlua{
str = "#1 #2"
rep = {
[1] = { "Luxury", "Throatwobbler" },
[2] = { "Yacht", "Mangrove" },
}
tex.print("My name is spelled “" .. str .. "”, but it's pronounced “" .. lpeg.replacer(rep):match(str) .. "”.")}}
\LuaTest{Luxury}{Yacht}
\stoptext