есть ли способ записать −= как один символ в формулах

есть ли способ записать −= как один символ в формулах

В программировании -=и +=другие подобные операторы довольно популярны. Но я не могу написать такой оператор красиво в уравнениях 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}

Результат

Связанный контент