4

多年来我一直在使用 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。

谢谢你,杰罗姆

4

0 回答 0