对齐中用户定义命令的问题

对齐中用户定义命令的问题

我创建了一个命令\newcommand{\br}[1]{$\left\{{#1}\right\}$} 来提供围绕输入的左花括号和右花括号。

\br{g \in G : \theta(g) = M/N}在我尝试按如下方式使用它之前,这种用法非常有效:

\begin{align*}
\ker\theta &= \br{g \in G : \theta(g) = M/N} \\
&= \br{g \in G : (M/N)Ng = M/N}
\end{align*}
  1. 是否有更好的宏用于封闭{}

  2. 有没有办法在对齐内使用这个或更好的宏?


更新

我定义的宏还有另一种方法,\Set称为布拉克特包。这是由于如何自动调整集合理解中的垂直条的大小?评论者什里瓦萨

\usepackage{braket}
\begin{align*}
\ker\theta &= \Set{g \in G \colon \theta(g) = M/N} \\
&= \Set{g \in G \colon (M/N)Ng = M/N}
\end{align*}

使用 Set 进行方程对齐

答案1

这里的问题是align*(以及所有显示数学环境)会自动将您进入数学模式,因此$...$如果您在那里使用它,则在这样的环境中使用的定义将会导致错误。

从定义中省略$符号。如果它随后在文本中使用,最好明确地将它们包含在输入流中 - 这将清楚地表明其中的内容是数学,从而当您在文件中查找某些内容时更容易找到。

另一种可能性是在定义中使用\ensuremath,这样无论在数学模式下还是不在数学模式下它都能同样好地工作。然而,这并不被真正推荐,因为它掩盖了命令的性质。这里给出了一些不使用它的其他原因:何时不应使用 \ensuremath 作为数学宏?

相关内容