
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:
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
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}