existe uma maneira de escrever −= como um símbolo nas fórmulas

existe uma maneira de escrever −= como um símbolo nas fórmulas

Na programação -=, +=e outros operadores semelhantes são bastante populares. Mas não consigo escrever esse operador bem nas equações do Latex.

Por exemplo, quando uso, x += \frac{\partial C}{\partial x}obtenho a seguinte fórmula:

insira a descrição da imagem aqui

O problema é que +=estão muito distantes. Existe algum operador de látex que permita escrevê-los mais próximos?

Responder1

Você pode usar

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

isso não adicionará espaço entre os sinais + e = e tratará todo o bloco como um único símbolo de relação.

É claro que uma definição será melhor:

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

e

a \pluseq b \minuseq c

iria imprimir

insira a descrição da imagem aqui

Responder2

Os operadores +e -em +=e -=devem ser operadores relacionais como visto no egregresponder, porque o TeX não define um espaço entre +/ -e =e toda a expressão +=/ -=torna-se um símbolo relacional em relação ao espaçamento antes e depois.

Esta resposta tenta uma solução automática. Os +símbolos -e ficam ativos apenas no modo matemático. Então o caractere ativo pode verificar se está seguido do sinal de igual. Se positivo, a versão relacional dos operadores +e -é usada, caso contrário, a versão binária original é usada.

É necessário um pouco de trabalho adicional para obter compatibilidade com 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}

Resultado

informação relacionada