저는 Tex를 처음 접했습니다. Overleaf에서 LaTeX를 사용하여 알고리즘을 작성하려고 하는데 페이지의 왼쪽 절반만 사용되고 나머지 줄은 다음 줄로 전송됩니다.
내가 뭘 잘못했는지 말해줄 수 있나요?
\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}
답변1
문제는 알고리즘 내의 구조를 닫지 않아서 발생합니다. 즉, \IF
s에는 종결이 있어야 하고 \ENDIF
, \WHILE
s에는 종결이 있어야 하며 \ENDWHILE
, \FOR
s에는 종결이 있어야 합니다 \ENDFOR
. 또한 ; 형식의 이중 첨자를 사용할 수 없습니다 a_b_c
. 대신 당신은 아마도 a_{b_c}
. 마지막으로 는 \cdot
수학 기호이므로 $
... 내에서만 사용할 수 있습니다 $
.
\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}
또한 일관성을 제공하기 위해 코딩 스타일에 몇 가지 사소한 변경 사항을 도입했습니다.
답변2
내 실수는 LaTeX에서 뺄셈을 수행하는 잘못된 방법인 것처럼 보이는 내 키보드의 "-" 기호를 사용한 것입니다.
나는 \textminus를 사용했고 완벽하게 작동했습니다. 정말 초보자 문제였습니다. 동일한 문제에 직면한 모든 사람에게 도움이 되기를 바랍니다.