使用 LuaTeX,可以使用许多库和函数来简化 Lua 编程的各个方面。由于 Lua 语言对于大多数 TeX 用户来说还很新,我认为如果我们能够分享在学习这种语言时寻找有用的库和技术的经验,那就太好了。也许我们可以收集一份清单。
每个答案都应包含一个描述和一个小的使用示例。
欢迎使用 LuaTeX(用于排版)或 TeXLua(用于 shell 脚本)的示例。
例子:
字符串插值:
作为简单的模板引擎,可以使用一种称为“字符串插值”的技术。各种尝试都描述在lua 维基.一个简单的例子如下:
#!/usr/bin/env texlua
function interp(s, tab)
return (s:gsub('($%b{})', function(w) return tab[w:sub(3, -2)] or w end))
end
print( interp("${name} is ${value}", {name = "foo", value = "bar"}) )
在终端上打印:
foo is bar
我们可以让它使用起来更简单:
getmetatable("").__mod = interp
print( "${name} is ${value}" % {name = "foo", value = "bar"} )
在这个例子中,我们设置mod
字符串运算符来调用我们的插值函数,因此可以使用"format ${val}" % {val="hello"}
。