在尝试将一些 Lua 代码与用 编写的图表结合起来时,出现了完全错误。我不知道是什么原因导致了这个问题,因为错误消息对我来说有点晦涩难懂。以下是在没有包pgfplots
的情况下编译良好的示例:luatex
fontspec
\documentclass[12pt]{article}
\usepackage{pgfplots}
\usepackage{fontspec}
\usepackage{luacode}
\usepackage{filecontents}
\begin{filecontents*}{test.txt}
some text
\end{filecontents*}
\begin{luacode*}
function readtxt()
file = io.open("test.txt", "r")
text = file:read("*all")
return tex.print(text)
end
\end{luacode*}
\begin{document}
\directlua{readtxt()}
\begin{tikzpicture}
\begin{axis}
\addplot[] coordinates {(0.0, 0.0) (1,1)};
\end{axis}
\end{tikzpicture}
\end{document}
启用后fontspec
,总共 58 条错误消息中的第一个是:
! LuaTeX error ...)/MiKTeX 2.9/tex/luatex/luaotfload/otfl-font-def.lua:239: att
empt to call field 'suffix' (a nil value).
<to be read again>
relax
l.26 \end{axis}
The lua interpreter ran into a problem, so the
remainder of this lua chunk will be ignored.
! Font \EU2/lmr/m/n/8=file:lmroman8-regular:script=latn;+trep;+tlig; at 8pt not
loadable: metric data not found or bad.
<to be read again>
relax
l.26 \end{axis}
I wasn't able to read the size data for this font,
so I will ignore the font specification.
不知何故,Luapgfplots
和fontspec
。单独来看,它们都运行良好。这个问题报告了一些相互作用:fontspec 与执行字符串相关搜索和替换操作的一些 lua 代码之间的交互不良但这似乎无关。
知道这里发生什么事了吗?
答案1
该问题与 pgfplots 无关:如果您只是尝试\directlua
通过发出 来更改字体,则会出现同样的错误\tiny
。
问题的根源在于文件句柄的名称。luaotfload 可能也使用了这个名称。如果我将名称更改为 fileA,则一切正常:
\documentclass[12pt]{article}
\usepackage{fontspec}
\usepackage{luacode}
\usepackage{filecontents}
\begin{filecontents*}{test.txt}
some text
\end{filecontents*}
\begin{luacode*}
function readtxt()
fileA = io.open("test.txt", "r") --changed
text = fileA:read("*all")
return tex.print(text)
end
\end{luacode*}
\begin{document}
\directlua{readtxt()}
\tiny abc
\end{document}