Considere el siguiente ejemplo, colocando equation*
s dentro de un algorithm
entorno:
\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}
Esto produce el siguiente resultado:
El problema es el espaciamiento de las ecuaciones. En concreto, en la línea 2 vemos que se añade mucho espacio vertical, donde no se necesita ninguno. De hecho, la línea 7 muestra que es posible agregar algo de texto antes de que comience la ecuación dentro del espacio en blanco que queda en el diseño. Es más, la línea número 2 está encima de la ecuación en lugar de alinearse con ella.
¿Hay alguna manera de hacer que las ecuaciones se comporten de forma más natural y evitar la introducción de espacio adicional?
Respuesta1
Truco rápido:
\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}
Respuesta2
Definiría un entorno específico.
\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}
Con un simple cambio, puedes obtener una sangría fija:
\NewDocumentEnvironment{algoequation}{b}{%
\par\hspace*{\algomargin}$\displaystyle#1$\par
}{}
Es por eso que se recomienda definir un entorno específico: no está atado a una representación particular y puede modificar fácilmente la definición, pero no el código del documento.
Nota al margen.Por favor, no lo utilice standalone
para tales ejemplos.