我在我的系统上查看了 TeXLive 2016 的 texmf-dist 树,并找到了 Lua 中的函数实现,该实现捆绑在该目录中的pgfmath
(未记录的)PGF 库中。luamath
2016/texmf-dist/tex/generic/pgf/libraries/luamath
使用该库代替fpu
或pgfmath
似乎有效,并且它能以更高的精度产生正确的答案,但是文档中没有任何地方提及它。编辑这是我正在处理的文档中的代码片段:
\pgfplotstablecreatecol[%
create col/assign/.code={%
\pgfluamathparse{ln(\thisrow{vtitre})}
\pgfkeyslet{/pgfplots/table/create col/next content}\pgfmathresult
},
]{lnvtitre}\titretable
这个库可以使用了吗,还是一个实验性的新功能?Luatex 本身仍被认为是实验性的,但我去年一直在使用它,没有出现任何问题。
答案1
该luamath
库在 pgfplots 中被广泛使用:如果您编写\pgfplotsset{compat=1.12}
(或更新版本)并使用 翻译文档lualatex
,pgfplots
将把其中许多算法转移到 lua(精度更高,速度更快)。此部分的参考文档位于pgfplots
manual 关键字中lua backend
。
该库的独立版本也可以作为 获得\usepgflibrary{luamath}
。这可以让\pgfluamathparse{<expression>}
你自己发现。此外,它允许说
\pgfkeys{luamath=parser}
在这种情况下代替 \pgfmathparse
。
luamath 解析器支持已知的所有(或几乎所有?)数学函数pgf
。为了还支持 TeX 寄存器和维度算法(如\count0
或10pt
),它支持 TeX 后备:它尝试在 LUA 中计算,如果这是不可能的,它就会在 TeX 中计算。
它还支持\pgfkeys{luamath/output format=fixed|float}
所float
理解的格式\usepgflibrary{fpu}
(也支持\pgfmathprintnumber
)。
还有一个 LUA API,它不需要 TeX 宏作为入口点,但这有点超出了该答案的范围。
该库最终将成为官方文档的一部分。
还有其他选择(例如luamath=only computation
)未经测试和实验。