![您不能在数学模式下使用“\spacefactor”](https://linux22.com/image/364161/%E6%82%A8%E4%B8%8D%E8%83%BD%E5%9C%A8%E6%95%B0%E5%AD%A6%E6%A8%A1%E5%BC%8F%E4%B8%8B%E4%BD%BF%E7%94%A8%E2%80%9C%5Cspacefactor%E2%80%9D.png)
昨天我将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}