Использует только половину страницы / Правая сторона страницы пуста

Использует только половину страницы / Правая сторона страницы пуста

Я новичок в Tex и пытаюсь написать алгоритм с использованием LaTeX на Overleaf, но используется только левая половина страницы, а остальная часть строки переносится на следующую строку.

введите описание изображения здесь

Можете ли вы сказать мне, что я сделал не так?


 \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

Проблема возникает из-за того, что структуры в вашем алгоритме не закрыты. То есть, \IFs должно иметь закрытие \ENDIF, \WHILEs должно иметь закрытие \ENDWHILEи \FORs должно иметь закрытие \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, и это сработало отлично. Это действительно проблема новичка. Надеюсь, это поможет всем, кто столкнулся с той же проблемой.

Связанный контент