Lua 重新实现 PGF 数学?

Lua 重新实现 PGF 数学?

我在我的系统上查看了 TeXLive 2016 的 texmf-dist 树,并找到了 Lua 中的函数实现,该实现捆绑在该目录中的pgfmath(未记录的)PGF 库中。luamath2016/texmf-dist/tex/generic/pgf/libraries/luamath

使用该库代替fpupgfmath似乎有效,并且它能以更高的精度产生正确的答案,但是文档中没有任何地方提及它。编辑这是我正在处理的文档中的代码片段:

\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}(或更新版本)并使用 翻译文档lualatexpgfplots将把其中许多算法转移到 lua(精度更高,速度更快)。此部分的参考文档位于pgfplotsmanual 关键字中lua backend

该库的独立版本也可以作为 获得\usepgflibrary{luamath}。这可以让\pgfluamathparse{<expression>}你自己发现。此外,它允许说

\pgfkeys{luamath=parser}

在这种情况下代替 \pgfmathparse

luamath 解析器支持已知的所有(或几乎所有?)数学函数pgf。为了还支持 TeX 寄存器和维度算法(如\count010pt),它支持 TeX 后备:它尝试在 LUA 中计算,如果这是不可能的,它就会在 TeX 中计算。

它还支持\pgfkeys{luamath/output format=fixed|float}float理解的格式\usepgflibrary{fpu}(也支持\pgfmathprintnumber)。

还有一个 LUA API,它不需要 TeX 宏作为入口点,但这有点超出了该答案的范围。

该库最终将成为官方文档的一部分。


还有其他选择(例如luamath=only computation未经测试实验

相关内容