虚假错误?“\genfrac 的参数有一个额外的 }。”带有 \usepackage{breqn}

虚假错误?“\genfrac 的参数有一个额外的 }。”带有 \usepackage{breqn}

前几天下面的公式编译得很好,现在却不行了,在主题标题中给出了错误。如果我删除公式,整个文档就可以编译得很好。

问题始于,为了在同一文档中容纳不同的长方程,我为该长方程添加了\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}

相关内容