breqn 和下标以及花括号

breqn 和下标以及花括号

使用该软件包时,breqn我遇到了一些编译错误。没有该软件包,它也能正常工作。(我使用的是 xelatex。)

\documentclass[a4paper,12pt]{scrbook}

\usepackage{breqn}
\newcommand{\cat}[1]{\mathbf{#1}}

\begin{document}
This does not work: $A_\cat{C} = 0$.
\end{document}

给出了(不太有用的)错误:

! Argument of \cat has an extra }.
<inserted text> 
                \par 
l.7 This does not work: $A_\cat
                               {C} = 0$.

现在可以通过在 周围添加额外的花括号来轻松修复此问题\cat{C}

因为我有一个解决方案,所以我的实际问题是:在这种情况下,在纯 LaTeX 中省略花括号是否是错误的(或坏习惯)?

并且:如何才能breqn打破这一点?

答案1

这是一个坏习惯。官方 (Latex 手册) 语法总是带有括号,尽管x_{2}每个人都知道这样x_2做是可行的。

事实是,x_\mathbf{x}它与 tex 基元解析的细节_以及它与宏参数解析完全不同有关。如果你有\x一个带有一个参数的宏,那么

\x\mathbf{x}

只是 \mathbf如果没有\mathbf的论点{x},事情就会出错。

通常,创建_一个活动角色然后将其定义为

\def_#1{\sb{#1}}

并且可能还包括额外的处理。

如果你这样做并省略括号,你最终会得到

 x_\mathbf{x}

存在

 x\sb{\mathbf}  {x}

事情就出错了。

tex4ht需要(至少我上次检查时)这个来生成 html 标记,breqn显然需要它来做它需要做的事情,如果你不支撑它,许多编辑器同样不知道下标在哪里结束。

相关内容