LuaLaTex使用fontspec包和luacode读取JSON文件

时间:2018-02-04 17:10:00

标签: json lua latex fontspec

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

谢谢你, 杰罗姆

0 个答案:

没有答案