
En este formato de algoritmo, quiero que "Considerando el jésimo..." tenga la misma sangría incluso en la nueva línea.
El código es el siguiente:
\documentclass{article}
\usepackage{amsmath}
\usepackage{algorithm}
\usepackage[noend]{algpseudocode}
\makeatletter
\def\BState{\State\hskip-\ALG@thistlm}
\makeatother
\begin{document}
\begin{algorithm}
\caption{hello}\label{euclid}
\begin{algorithmic}[1]
\Procedure{ASAPP}{}
\State $\textit{i} \gets \text{0}$, $\textit{j} \gets \text{0}$, $\textit{k} \gets \text{0}$
\While {i $\leq$ nom}
\While {j $\leq C_{i}$}
\State Considering the \textit{j}th edge of the \textit{i}th metabolite, \textit{x} and \textit{y} contains the vertices of the \textit{j}th edge
\State $\textit{k} \gets \text{\textit{j} + 1}$
\While { k $\leq C_{i}$}
\State Considering the \textit{k}th edge of the \textit{i}th metabolite, \textit{x1} and \textit{y1} contains the vertices of the \textit{k}th edge.
\EndWhile
\EndWhile
\EndWhile
\BState \emph{top}:
\EndProcedure
\end{algorithmic}
\end{algorithm}
\end{document}
Respuesta1
Puedes usartabularx
para calcular el ancho de un cuadro que cabría hasta el final de la línea:
\documentclass{article}
\usepackage{amsmath,algorithm,tabularx}
\usepackage[noend]{algpseudocode}
\makeatletter
\newcommand{\multiline}[1]{%
\begin{tabularx}{\dimexpr\linewidth-\ALG@thistlm}[t]{@{}X@{}}
#1
\end{tabularx}
}
\makeatother
\begin{document}
\begin{algorithm}
\caption{hello}
\begin{algorithmic}[1]
\Procedure{ASAPP}{}
\State $i \gets 0$, $j \gets 0$, $k \gets 0$
\While { $i \leq \text{nom}$ }
\While {$j \leq C_i$ }
\State \multiline{%
Considering the $j$-th edge of the $i$-th metabolite,~$x$ and~$y$
contains the vertices of the $j$-th edge}
\State $k \gets j + 1$
\While { $k \leq C_i$ }
\State \multiline{%
Considering the $k$-th edge of the $i$-th metabolite,~$x_1$ and~$y_1$
contains the vertices of the $k$-th edge.}
\EndWhile
\EndWhile
\EndWhile
\EndProcedure
\end{algorithmic}
\end{algorithm}
\end{document}
\multiline{<stuff>}
establece su contenido en un tabularx
que está alineado en la [t]
operación dentro de una X
columna. El ancho de esta columna es la diferencia de una sangría de línea regular \linewidth
menos la sangría de línea del algoritmo actual.
Respuesta2
Si uno puede vivir con el salto de línea manual, entonces a \Longunderstack[l]{}
es una opción
\documentclass{article}
\usepackage{amsmath}
\usepackage{algorithm}
\usepackage[noend]{algpseudocode}
\usepackage{stackengine}
\setstackEOL{\\}
\makeatletter
\def\BState{\State\hskip-\ALG@thistlm}
\makeatother
\begin{document}
\begin{algorithm}
\caption{hello}\label{euclid}
\begin{algorithmic}[1]
\Procedure{ASAPP}{}
\State $\textit{i} \gets \text{0}$, $\textit{j} \gets \text{0}$,
$\textit{k} \gets \text{0}$
\While {i $\leq$ nom}
\While {j $\leq C_{i}$}
\State \Longunderstack[l]{Considering the \textit{j}th edge of the
\textit{i}th metabolite, \textit{x} and \textit{y}\\
contains the vertices of the \textit{j}th edge}
\State $\textit{k} \gets \text{\textit{j} + 1}$
\While { k $\leq C_{i}$}
\State \Longunderstack[l]{Considering the \textit{k}th edge of the
\textit{i}th metabolite, \textit{x1} and \textit{y1}\\
contains the vertices of the \textit{k}th edge.}
\EndWhile
\EndWhile
\EndWhile
\BState \emph{top}:
\EndProcedure
\end{algorithmic}
\end{algorithm}
\end{document}