我想使用一些 LuaTeX (LuaLaTeX 和 ConTeXt) 的 C .so 库,例如利马特更具体地说,我想做类似的事情
%\documentclass{article} % LuaLaTeX
%\usepackage{luacode} % LuaLaTeX
%\begin{luacode*} in LuaLaTeX
\startluacode % ConTeXt
--This works in Lua, but does not work in LuaTeX
imath = require "imath"
z = imath.new(3)
z = z^48
\stopluacode
%\end{luacode*} in LuaLaTeX
%\begin{document} % LuaLaTeX
\starttext
\directlua{tex.print(z)}
\stoptext
%\end{document} % LuaLaTeX
我读过有关重新编译 LuaTeX 或使用外部库函数的文章,但我不知道如何实现这些解决方案。顺便问一句,我想知道是否可以像加载dofile
Lua 库那样加载 .so 文件。
答案1
LuaTeX 函数允许您将 catcode 表作为第一个参数传递。因此,如果第一个参数是数字(如您的示例中所示),则不会打印,而是将其解释为 catcode 表。
您可以通过先转换为字符串来避免这种情况:
\documentclass{article} % LuaLaTeX
\usepackage{luacode} % LuaLaTeX
\begin{luacode*}
imath = require "imath"
z = imath.new(3)
z = z^48
\end{luacode*}
\begin{document}
\directlua{tex.print(tostring(z))}
\end{document}