多年来我一直在使用 Latex,但我是嵌入式 luacode(使用 Lualatex)的新手。下面你可以看到一个简化的例子:
\begin{filecontents*}{data.json}
[
{"firstName":"Max", "lastName":"Möller"},
{"firstName":"Anna", "lastName":"Smith"}
];
\end{filecontents*}
\documentclass[11pt]{article}
\usepackage{fontspec}
%\setmainfont{Carlito}
\usepackage{tikz}
\usepackage{luacode}
\begin{document}
\begin{luacode}
require("lualibs.lua")
local file = io.open('data.json','rb')
local jsonstring = file:read('*a')
file.close()
local jsondata = utilities.json.tolua(jsonstring)
tex.print('\\begin{tabular}{cc}')
for key, value in pairs(jsondata) do
tex.print(value["firstName"] .. ' & ' .. value["lastName"] .. '\\\\')
end
tex.print('\\hline\\end{tabular}')
\end{luacode}
\end{document}
执行 Lualatex 时出现以下错误:
LuaTeX error [\directlua]:6: attempt to index field 'json' (a nil value) [\directlua]:6: in main chunk. \end{luacode}
注释该行时\usepackage{fontspec}
,将产生输出。或者,可以通过注释utilities.json.tolua(jsonstring)
和所有以下 lua 代码行来避免错误。
所以问题是:如何在不生成错误消息的情况下同时使用“fontspec”包和 json-data?除此之外,我还有另一个问题:如何在 luacode 的输出中启用德语变音符号(参见示例中的第一个“lastName”:Möller)?
啊,我在 Ubuntu 16.04 上使用 TeX Live 2015/Debian。
谢谢你,杰罗姆