Soy muy nuevo en Tex, estoy intentando escribir un algoritmo usando LaTeX en el dorso, pero solo se usa la mitad izquierda de la página mientras que el resto de la línea se envía a la siguiente.
¿Puedes decirme qué hice mal?
\documentclass{IEEEtran}
\usepackage{algorithmic}
\begin{document}
%\begin{algorithm}
%\caption{Algorithm for ...}
\textbf{Algorithm:GraphPaths(capital,Cryptocurrencies[])}
\begin{algorithmic}[1]
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
\REQUIRE capital, Cryptocurrencies [];
\ENSURE Augmenting paths and total arbitrage
\\ \textit{Initialisation} :
\STATE Path = [];
\FOR {$i$ in $Currencies$ }
\WHILE{$Currencies_i.market[0]$\textless$Currencies_i.market[n]$:}
\STATE volume = min($market_i_0$, $market_i_n$, $capital$);
\STATE $market_i_0$, $market_i_n$-=volume;
\IF {capital\textgreater volume}
\STATE capital = capital-volume+volume\cdot($market_i_n.price$- $market_i_0.price$);
\ELSE capital+=volume\cdot($market_i_n$.price - $market_i_0$.price);
\STATE Path.add{$Currencies_i.market[0]$,$Currencies_i.market[n]$}
\IF {$market.volume$ $\leq$ 0 in $Currencies$:}
\STATE remove: $.market[x]$;
\ENDFOR
\RETURN {Path, capital}
\end{algorithmic}
%\end{algorithm}
\end{document}
Respuesta1
El problema surge de no cerrar las estructuras dentro de su algoritmo. Es decir, \IF
s debería tener un cierre \ENDIF
, \WHILE
s debería tener un cierre \ENDWHILE
y \FOR
s debería tener un cierre \ENDFOR
. Además, no puede tener subíndices dobles del formulario a_b_c
; en lugar de eso, probablemente estés buscando a_{b_c}
. Finalmente, es un símbolo matemático y, por lo tanto , \cdot
solo puede usarse dentro de $
....$
\documentclass{IEEEtran}
\usepackage{algorithmic}
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
\newcommand{\NONUMSTATE}{\item[]}
\newcommand{\VAR}{\textnormal}
\newcommand{\minusbecomes}{\mathrel{{-}{=}}}
\newcommand{\plusbecomes}{\mathrel{{+}{=}}}
\begin{document}
\noindent
\textbf{Algorithm: GraphPaths(capital,Cryptocurrencies [])}
\begin{algorithmic}[1]
\REQUIRE capital, Cryptocurrencies [];
\ENSURE Augmenting paths and total arbitrage
\NONUMSTATE \textit{Initialisation}:
\STATE Path = [];
\FOR {$i$ in $\VAR{Currencies}$}
\WHILE{$i.\VAR{market}[0] < .\VAR{market}[n]$}
\STATE $\VAR{volume} = \min(\VAR{market}_{i_0}, \VAR{market}_{i_n}, \VAR{capital})$;
\STATE $\VAR{market}_{i_0}, \VAR{market}_{i_n} \minusbecomes \VAR{volume}$;
\IF {$\VAR{capital} > \VAR{volume}$}
\STATE $\VAR{capital} \plusbecomes
\VAR{capital} - \VAR{volume} + \VAR{volume} \cdot (\VAR{market}_{i_n}.\VAR{price} - \VAR{market}_{i_0}.\VAR{price})$;
\ELSE
\STATE $\VAR{capital} \plusbecomes \VAR{volume} \cdot (\VAR{market}_{i_n}.\VAR{price} - \VAR{market}_{i_0}.\VAR{price})$;
\ENDIF
\STATE Path.add $i.\VAR{market}[0], i.\VAR{market}[n]$
\IF {$\VAR{market}.\VAR{volume} \leq 0$ in $\VAR{Currencies}$}
\STATE remove $.\VAR{market}[x]$;
\ENDIF
\ENDWHILE
\ENDFOR
\RETURN Path, capital
\end{algorithmic}
\end{document}
También introduje algunos cambios menores en su estilo de codificación, solo para brindar coherencia.
Respuesta2
Creo que mi error fue usar el símbolo "-" de mi teclado, que parece ser una forma incorrecta de restar en LaTeX.
Utilicé \textminus y funcionó perfectamente, realmente era un problema para principiantes, espero que ayude a cualquiera que se enfrente al mismo problema.