Betrachten Sie das folgende Beispiel zum Platzieren von equation*
s innerhalb einer algorithm
Umgebung:
\documentclass{standalone}
\usepackage{amsmath}
\usepackage{algorithm2e}
\LinesNumbered
\begin{document}
\begin{algorithm}[H]
\SetAlgoLined
\KwData{this text}
\KwResult{how to write algorithm with \LaTeX2e }
\ForEach{first loop} {
\begin{equation*}
a^2 + b^2 = c^2
\end{equation*}
After \;
After \;
After \;
}
\ForEach{second loop} {
Before
\begin{equation*}
a^2 + b^2 = c^2
\end{equation*}
After \;
After \;
After \;
}
\caption{How to write algorithms}
\end{algorithm}
\end{document}
Dies erzeugt die folgende Ausgabe:
Das Problem ist der Abstand zwischen den Gleichungen. Insbesondere in Zeile 2 sehen wir, dass viel vertikaler Platz hinzugefügt wurde, wo keiner benötigt wird. Tatsächlich zeigt Zeile 7, dass es möglich ist, vor Beginn der Gleichung innerhalb des im Layout verbleibenden Leerraums etwas Text hinzuzufügen. Darüber hinaus steht die Zeilennummer 2 über der Gleichung und nicht mit ihr ausgerichtet.
Gibt es eine Möglichkeit, die Gleichungen natürlicher zu gestalten und den zusätzlichen Platzbedarf zu vermeiden?
Antwort1
Schneller Hack:
\documentclass{standalone}
\usepackage{amsmath}
\usepackage{algorithm2e}
\LinesNumbered
\begin{document}
\begin{algorithm}[H]
\SetAlgoLined
\KwData{this text}
\KwResult{how to write algorithm with \LaTeX2e }
\ForEach{first loop} {
\parbox{\hsize}{%
\[
a^2 + b^2 = c^2
\]
}\par
After \;
After \;
After \;
}
\ForEach{second loop} {
Before\par
\parbox{\hsize}{%
\[
a^2 + b^2 = c^2
\]
}\par
After \;
After \;
After \;
}
\caption{How to write algorithms}
\end{algorithm}
\end{document}
Antwort2
Ich würde eine bestimmte Umgebung definieren.
\documentclass{article}
\usepackage{amsmath}
\usepackage{algorithm2e}
\NewDocumentEnvironment{algoequation}{b}{%
\par\makebox[\dimeval{\hsize}]{$\displaystyle#1$}\par
}{}
\LinesNumbered
\begin{document}
\begin{algorithm}[H]
\SetAlgoLined
\KwData{this text}
\KwResult{how to write algorithm with \LaTeX2e }
\ForEach{first loop} {
\begin{algoequation}
a^2 + b^2 = c^2
\end{algoequation}
After \;
After \;
After \;
}
\ForEach{second loop} {
Before
\begin{algoequation}
a^2 + b^2 = c^2
\end{algoequation}
After \;
After \;
After \;
}
\caption{How to write algorithms}
\end{algorithm}
\end{document}
Mit einer einfachen Änderung können Sie stattdessen eine feste Einrückung erhalten:
\NewDocumentEnvironment{algoequation}{b}{%
\par\hspace*{\algomargin}$\displaystyle#1$\par
}{}
Aus diesem Grund empfiehlt es sich, eine bestimmte Umgebung zu definieren: Sie sind nicht an eine bestimmte Darstellung gebunden und können die Definition problemlos ändern, nicht jedoch den Dokumentcode.
Randnotiz.Bitte nicht standalone
für solche Beispiele verwenden.