我多年来一直在使用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数据?除此之外我还有另一个问题:如何在luacode输出中启用德语变音符号(参见示例中的第一个“lastName”:Möller)?
啊,我在Ubuntu 16.04上使用TeX Live 2015 / Debian。
谢谢你, 杰罗姆