gibt es eine Möglichkeit, −= als ein Symbol in Formeln zu schreiben

gibt es eine Möglichkeit, −= als ein Symbol in Formeln zu schreiben

In der Programmierung sind und andere ähnliche Operatoren recht beliebt. Aber ich bin nicht in der Lage -=, +=solche Operatoren ordentlich in Latex-Gleichungen zu schreiben.

Wenn ich beispielsweise verwende, x += \frac{\partial C}{\partial x}erhalte ich die folgende Formel:

Bildbeschreibung hier eingeben

Das Problem ist, dass +=sie irgendwie zu weit auseinander liegen. Gibt es einen Latex-Operator, mit dem man sie näher zusammen schreiben kann?

Antwort1

Sie können

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

Dadurch wird zwischen den Zeichen + und = kein Leerzeichen eingefügt und der gesamte Block als einzelnes Relationssymbol behandelt.

Besser wäre natürlich eine Definition:

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

Und

a \pluseq b \minuseq c

würde drucken

Bildbeschreibung hier eingeben

Antwort2

Die Operatoren +und -in +=und -=sollten relationale Operatoren sein, wie in egregsAntwort+, da TeX zwischen / -und kein Leerzeichen setzt =und der gesamte Ausdruck +=/ -=zu einem relationalen Symbol bezüglich des Abstands davor und danach wird.

Diese Antwort versucht eine automatische Lösung. Die Symbole +und -werden nur im Mathematikmodus aktiviert. Dann kann das aktive Zeichen überprüft werden, ob ihm das Gleichheitszeichen folgt. Wenn dies positiv ist, wird die relationale Version der Operatoren +und -verwendet, andernfalls wird die ursprüngliche binäre Version verwendet.

Ein wenig zusätzliche Arbeit ist erforderlich, um die Kompatibilität mit Folgendem zu erreichen 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}

Ergebnis

verwandte Informationen