Ich bin ganz neu bei Tex und versuche, mit LaTeX einen Algorithmus auf Overleaf zu schreiben, aber es wird nur die linke Hälfte der Seite verwendet, während der Rest der Zeile an die nächste Zeile gesendet wird.
Können Sie mir sagen, was ich falsch gemacht habe?
\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}
Antwort1
Das Problem entsteht dadurch, dass die Strukturen in Ihrem Algorithmus nicht geschlossen werden. Das heißt, \IF
s sollte ein schließendes haben \ENDIF
, \WHILE
s sollte ein schließendes haben \ENDWHILE
und \FOR
s sollte ein schließendes haben \ENDFOR
. Darüber hinaus können Sie keine doppelten Indizes der Form haben a_b_c
; stattdessen suchen Sie wahrscheinlich nach a_{b_c}
. Schließlich \cdot
ist ein mathematisches Symbol und kann daher nur innerhalb von $
... verwendet werden $
.
\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}
Ich habe auch einige kleinere Änderungen an Ihrem Codierstil vorgenommen, nur um Konsistenz zu gewährleisten.
Antwort2
Ich glaube, mein Fehler bestand darin, das Symbol "-" auf meiner Tastatur zu verwenden, was für die Subtraktion in LaTeX nicht korrekt zu sein scheint.
Ich habe \textminus verwendet und es hat perfekt funktioniert. Es war wirklich ein Anfängerproblem. Ich hoffe, dass es jedem hilft, der vor dem gleichen Problem steht.