Sou muito novo no Tex, estou tentando escrever um algoritmo usando LaTeX no Overleaf, mas apenas a metade esquerda da página é usada enquanto o resto da linha é enviado para a próxima linha.
Você pode me dizer o que eu fiz de errado?
\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}
Responder1
O problema decorre de não fechar as estruturas do seu algoritmo. Ou seja, \IF
s deveria ter fechamento \ENDIF
, \WHILE
s deveria ter fechamento \ENDWHILE
e \FOR
s deveria ter fechamento \ENDFOR
. Além disso, você não pode ter subscritos duplos no formato a_b_c
; em vez disso, você provavelmente está atrás de a_{b_c}
. Finalmente, \cdot
é um símbolo matemático e, portanto, só pode ser usado 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}
Também introduzi algumas pequenas alterações em seu estilo de codificação, apenas para fornecer consistência.
Responder2
Acho que meu erro foi usar o símbolo "-" do meu teclado, que parece ser uma forma incorreta de fazer subtração no LaTeX.
Usei \textminus e funcionou perfeitamente, foi realmente um problema de novato, espero que ajude quem está enfrentando o mesmo problema.