fontspec、lua 和 pgfplots 之间的奇怪交互

fontspec、lua 和 pgfplots 之间的奇怪交互

在尝试将一些 Lua 代码与用 编写的图表结合起来时,出现了完全错误。我不知道是什么原因导致了这个问题,因为错误消息对我来说有点晦涩难懂。以下是在没有包pgfplots的情况下编译良好的示例:luatexfontspec

\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.    

不知何故,Luapgfplotsfontspec。单独来看,它们都运行良好。这个问题报告了一些相互作用: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} 

相关内容