![无法在水平模式下使用 `\numexpr`](https://linux22.com/image/396374/%E6%97%A0%E6%B3%95%E5%9C%A8%E6%B0%B4%E5%B9%B3%E6%A8%A1%E5%BC%8F%E4%B8%8B%E4%BD%BF%E7%94%A8%20%60%5Cnumexpr%60.png)
我尝试学习使用\numexpr
但在基础知识上遇到了一些麻烦。etex_man 不够详细,无法在这种情况下提供帮助。
以下是 MWE:
\documentclass{article}
\begin{document}
Hi \numexpr 6 + 1 \relax
\end{document}
当我从 TexLive 调用 pdflatex 时出现的错误是“您不能在水平模式下使用‘\numexpr’。”如果我切换到垂直或数学模式,也会出现类似的错误。
显然我遗漏了一些基本的东西。有人能告诉我吗?
答案1
\numexpr
是一个附加项目,可以在 TeX 寻找 的上下文中使用<number>
。
就其语法而言,它基本上是一个“未命名的计数器寄存器”,并且不允许“裸露”。
它本质上的工作原理类似于\countX
(其中\countX
代表“无法到达”的计数寄存器号),在这个未命名的寄存器中加载表达式的值之后。
因此,就像您不能说Hi \count232
打印存储在中的值一样\count232
,您也不能说
Hi \numexpr 6+1\relax
只需考虑\count232
并\numexpr 6+1\relax
参考抽象数,它独立于其表示而存在。您需要访问此抽象数字的表示:
Hi \number\count232
Hi \romannumeral\count232
Hi \number\numexpr 6+1\relax
Hi \romannumeral\numexpr 6+1\relax
TeX 的基本框架仅提供\number
(用于十进制表示)和\romannumeral
(用于小写罗马数字表示)。附加软件包可能会提供其他表示。
答案2
您需要在表达式前面加上\number
或:其工作原理类似于 TeX 。或者,您可以使用包来提供薄包装器\the
\numexpr
\count
xfp
\documentclass{article}
\usepackage{xfp}
\begin{document}
\number\numexpr 1 + 2 * 3 \relax
\the\numexpr 1 + 2 * 3 \relax
\inteval{1 + 2 * 3}
\end{document}