您不能在数学模式下使用“\spacefactor”

您不能在数学模式下使用“\spacefactor”

昨天我将TexLive2017安装到Linux Mint中以使用lualatex,现在安装了lualatex 1.0.4。但是下面这么简单的代码无法正常工作。

\documentclass{ltjarticle}
\usepackage{luatexja}
% \documentclass{article}

\begin{document}

\begin{eqnarray}
f(x) = x^2 + 4 \label{eq:1}
\end{eqnarray}

then we can find
\begin{eqnarray}
a = 4.\ \ \ (\mathrm{by\ eq.(\ref{eq:1})})
\end{eqnarray}

\end{document}

错误信息是这样的。

*! You can't use `\spacefactor' in math mode.
\@setref ...d}\else \expandafter #2#1\spacefactor 
                                                  \@m {}\fi 
l.13 a = 4.\ \ \ (\mathrm{by\ eq.(\ref{eq:1})}
                                            )
? 
Missing character: There is no è (U+00E8) in font cmex10!
[1*

我从头写代码,另存为新名字,第一次编译,编译成功,没有任何错误,说明\label{eq:1}和\ref{eq:1}绑定的时候出错了。

我该如何解决这个问题?此代码在我的 Mac(texlive2016,lualtex 0.95.0)上正常运行。如果我注释掉前两行并取消注释第三行,问题就会立即解决,但我必须使用 luatex 日语包,因为我是日本人。

答案1

您发现的问题与 Lua(La)TeX 没有直接关系。相反,它似乎与在\mathrm{...}包装器中插入空格有关。我建议您加载amsmath包并使用\text{...}包装器。

哦,请不要使用严重贬低的eqnarray环境。相反,使用equation单行方程的环境和多行方程的align环境(由包提供)。amsmath

\documentclass{ltjarticle}
\usepackage{amsmath} % for '\text' macro
\usepackage{luatexja}
\usepackage{cleveref} % optional, for '\cref' macro

\begin{document}    
\begin{equation} \label{eq:1}
f(x) = x^2 + 4 
\end{equation}
then we can find
\begin{equation}
a = 4\quad(\text{by \cref{eq:1}})
\end{equation}  
\end{document}

相关内容