Ich muss eine ziemlich komplexe Operation definieren. Daher möchte ich den klassischen "where"-Definitionsstil verwenden, d. h.
Foo = Bar(x,y)
WHERE
x = Baz
y = Fob
Mein bisheriger Versuch in Latex ist:
\begin{align*}
\text{Foo} = \text{Bar}(x,y) && \mathbf{where} \\
x = \text{Baz}
\end{align*}
Mit dem Ergebnis bin ich allerdings nicht ganz zufrieden:
- Das Schlüsselwort „where“ fällt nicht wirklich vom Layout auf
- Die Hilfsdefinitionen stehen auf der gleichen Ebene wie die Hauptdefinition
Gibt es also, anstatt damit herumzuspielen, eine (halb-)kanonische Möglichkeit, solche Definitionen anzuordnen?
Antwort1
Ich vermute, Sie verwenden das \text
Makro, um Dinge in Romanschrift zu setzen, aber das ist schlechte Praxis, weilsemantischfalsch: das \text
Makro sollte für den Satz von Ausdrücken wie „wo“, „für alle“, „vorbehaltlich“ usw. in Anzeigemathematikumgebungen (z. B. equation
, align
, usw.) reserviert werden.nichtfür Variablen oder Funktionsnamen. \mathrm
Hier sollten Sie stattdessen das Makro verwenden.
So würde ich Ihre Gleichungen schreiben:
\documentclass{article}
\usepackage{amsmath}
\newcommand\Foo{\mathrm{Foo}}
\newcommand\Barfun{\mathrm{Bar}}
\newcommand\Baz{\mathrm{Baz}}
\newcommand\Fob{\mathrm{Fob}}
\begin{document}
%
\begin{align*}
\Foo &= \Barfun(x,y) \\
\intertext{where}
x &= \Baz \\
y &= \Fob
\end{align*}
%
\end{document}
Antwort2
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align*}
f &= f(x,y)\\
\makebox[0.6em][l]{where} & \\
x &= g(z)\\
y &= h(z,x)
\end{align*}
\end{document}
Antwort3
Mit anderer Ausrichtung und kleinerem vertikalen Abstand:
\documentclass{article}
\usepackage{mathtools}
\DeclareMathOperator{\Barr}{Bar}
\begin{document}
\begin{align*}
& Foo = \Barr(x,y)\\
\shortintertext{where}
\begin{cases}
{} \\ {}
\end{cases}
\hspace{-1.1em}
&
\begin{array}{@{}l}
x= Baz\\[6pt]
y= Fob
\end{array}
\end{align*}
\end{document}
Antwort4
Andere Option.
Wenn der Funktionsname mehr als einen Buchstaben hat, wird er normalerweise aufrecht gesetzt. Wenn Sie ihn nur ein- oder zweimal verwenden, können Sie verwenden \operatorname{Foo}
, aber wenn Sie ihn öfter verwenden, lohnt es sich vielleicht, einen neuen Befehl dafür zu definieren:
\documentclass{scrartcl}
\usepackage{mathtools}
\DeclareMathOperator\Fo{Foo}
\DeclareMathOperator\Ba{Bar}
\DeclareMathOperator\Bz{Baz}
\DeclareMathOperator\Fb{Fob}
\begin{document}
\begin{align*}
\Fo &= \Ba(x,y) \\ \intertext{where}
x &= \Bz \\
y &= \Fb
\end{align*}
\end{document}
Nach einer kurzen Diskussion wurde gezeigt, dass \operatorname{A}+\operatorname{B}
es \mathrm{A}+\mathrm{B}
unterschiedliche Ergebnisse gibt (die ich nicht wusste). Meine Antwort ist also nicht unbedingt richtig (wahrscheinlich nicht).
Ich lasse es hier für den Fall, dass es sich tatsächlich um Betreiber handelt.