有没有办法在公式中将 −= 写成一个符号

有没有办法在公式中将 −= 写成一个符号

在编程中-=+=和其他类似的运算符非常流行。但我无法在 Latex 方程中很好地编写此类运算符。

例如当我使用时,x += \frac{\partial C}{\partial x}我得到以下公式:

在此处输入图片描述

问题是它们+=之间的距离有点太远了。有没有乳胶运算符可以将它们写得更近一些?

答案1

您可以使用

\[
x \mathrel{+}= \frac{\partial C}{\partial x}
\]

这样将不会在 + 和 = 符号之间添加空格,并将整个块视为单个关系符号。

当然,定义会更好:

\newcommand{\pluseq}{\mathrel{+}=}
\newcommand{\minuseq}{\mathrel{-}=}

a \pluseq b \minuseq c

将打印

在此处输入图片描述

答案2

+-中的运算符+=应该-=是关系运算符,如 egreg 中所示回答,因为 TeX 没有在+/-和之间设置空格=,整个表达式+=/-=变成了关于前后间距的关系符号。

此答案尝试自动解决方案。+-符号仅在数学模式下处于活动状态。 然后可以检查活动字符是否后面跟着等号。 如果为正数,则使用+-运算符的关系版本,否则采用原始二进制版本。

需要做一些额外的工作来实现兼容性amsmath

\documentclass{article}

\usepackage{amsmath}

% save original binary + and - as \binplus and \binminus
\mathchardef\binplus=\the\mathcode`+
\mathchardef\binminus=\the\mathcode`-

% define relational + and -
\mathchardef\relplus=\numexpr\the\binplus + "1000\relax
\mathchardef\relminus=\numexpr\the\binminus + "1000\relax

% define active + and -, which check for a following =
\makeatletter
\catcode`+=\active
\catcode`-=\active
\def+{\@ifnextchar=\relplus\binplus}
\def-{\@ifnextchar=\relminus\binminus}
\@makeother\+
\@makeother\-
\makeatother

% enable active + and - for math mode
\AtBeginDocument{%
  \mathcode`+="8000\relax
  \mathcode`-="8000\relax
}

% patch \newmcodes@ of package `amsopn.sty'
\usepackage{etoolbox}
\makeatletter
\@ifpackageloaded{amsopn}{%
  \patchcmd\newmcodes@{%
    \mathchardef\std@minus\mathcode`\-\relax
  }{%
    \let\std@minus\binminus
  }{}{\errmessage{\noexpand\newmcodes@ could not be patched}}%
}{}
\makeatother

\begin{document}
\[
   a += b + c \qquad x -= y - z \qquad \operatorname{foo-bar}
\]
\end{document}

结果

相关内容