前几天下面的公式编译得很好,现在却不行了,在主题标题中给出了错误。如果我删除公式,整个文档就可以编译得很好。
问题始于,为了在同一文档中容纳不同的长方程,我为该长方程添加了\usepackage{breqn}
和 使用dmath
。如果我注释掉\usepackage{breqn}
,一切正常。但其他方程式上是否有此包都没有问题。我从未遇到过这样的事情。
\begin{equation}
U(x_h, Y) = \left(
\alpha Y^\frac{\theta - 1}{\theta} + (1 - \alpha)
\left(
\sum_{h = 1}^n \beta_h x_h^\frac{\sigma - 1}{\sigma}
\right)^{\frac{\theta - 1}{\theta}/\frac{\sigma}{\sigma-1}}
\right)^\frac{\theta}{\theta - 1}
\end{equation}
答案1
适用于默认原始上标解析的事实x^\frac{1}{2}
是其定义的偶然,\frac
其永远不应在文档标记中使用。
对于任何可以使用\newcommand
或\def
规则定义的命令,如果省略括号,则下一个标记将被视为括号,在这种情况下
x^\frac{1}{2}
相当于
x^{\frac} {1}{2}
很明显\frac
没有参数,并且在解析参数时会看到上标的结尾并产生extra }
标题中看到的错误。
这正是这里发生的事情,breqn
使许多字符“数学活跃”,并赋予它们宏定义,以便^
使用宏参数规则获取其参数。对于使用单个字母或括号表达式的任何普通文档,这没有区别,但如果您依赖于隐藏的内部括号组,您会看到区别,因为该括号组\frac
可用于原始上标列表解析,但不可用于宏参数解析。
这项工作没有错误:
\documentclass{article}
\usepackage{breqn}
\begin{document}
\begin{equation}
U(x_h, Y) = \left(
\alpha Y^{\frac{\theta - 1}{\theta}} + (1 - \alpha)
\left(
\sum_{h = 1}^n \beta_h x_h^{\frac{\sigma - 1}{\sigma}}
\right)^{\frac{\theta - 1}{\theta}/\frac{\sigma}{\sigma-1}}
\right)^{\frac{\theta}{\theta - 1}}
\end{equation}
\end{document}