使用该软件包时,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
显然需要它来做它需要做的事情,如果你不支撑它,许多编辑器同样不知道下标在哪里结束。