算法中的“While”保持在同一行

算法中的“While”保持在同一行

我不知道为什么我的“While”停留在同一行。任何帮助都将不胜感激。谢谢!

\documentclass[9pt,handout,compress,rgb]{beamer}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[noend]{algpseudocode}
\usepackage[justification=centering]{caption} 
\usepackage{float} 
\usepackage{ragged2e}
\usepackage[vlined,ruled]{algorithm2e}
\usepackage{comment}


\captionsetup{labelsep = period} 


\algrenewcommand\algorithmicrequire{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}


\begin{document}
\begin{frame}

\begin{algorithm}[H]
\NoCaptionOfAlgo \caption{\textbf{Algorithm:} Finding $z$} 
\begin{algorithmic}
\Require{$x, y$}
\Ensure{$z$}
\State $s \gets 0$
\State $j \gets 1$  \hfill\COMMENT{iteration number}
\While{$s <  k$}{
  \State $t \gets 1$
  \State $f \gets true$
  \While{$(t \ge 4)$ and $f$} 
     {
       \State $x \gets 3$  
       \If{$f$ is negative}
            {
             \State $t \gets f-1$
             \State $f \gets$ false
            }
       \State $t \gets 3$
      }
  \State Assign $x$ to $y$
  \State $s \gets 5$
  \State $j \gets 55$
  }
\end{algorithmic}
\end{algorithm}

\end{frame}
\end{document} 

答案1

while您的代码无法编译。只要有错误,就没有必要担心在哪行中出现 is。出现错误后,LaTeX 只会检查文档的其余部分,而不一定会产生合理的输出。

在这种情况下,错误消息非常清楚:

! Undefined control sequence.
\beamer@doifinframe ...State $j \gets 1$ \COMMENT 
                                                  {iteration number} \While ...
l.50 \end{frame}

这告诉您该宏\COMMENT根本不存在。相反,您必须使用包定义的众多注释宏之一algorithm2e,例如\tcc*{...}右对齐内联注释。

用纯algorithm2e语法来说:

\documentclass[9pt,handout,compress,rgb]{beamer}
%\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}

\usepackage[justification=centering]{caption} 
\usepackage{float} 
\usepackage{ragged2e}
\usepackage[vlined,ruled]{algorithm2e}
%\usepackage[noend]{algpseudocode}
\usepackage{comment}


\captionsetup{labelsep = period} 


\SetKwInOut{Input}{Input}
\SetKwInOut{Output}{Output}

\begin{document}
\begin{frame}

\begin{algorithm}[H]
\NoCaptionOfAlgo \caption{\textbf{Algorithm:} Finding $z$} 
\Input{$x, y$}
\Output{$z$}

$s \gets 0$

$j \gets 1$ \tcc*{iteration number}

\While{$s <  k$}{
  $t \gets 1$
  
  $f \gets true$
  
  \While{$(t \ge 4)$ and $f$} 
     {
        $x \gets 3$  
      
       \If{$f$ is negative}
            {
              $t \gets f-1$
              
              $f \gets$ false
            }
        $t \gets 3$
      }
   Assign $x$ to $y$
   
   $s \gets 5$
   
   $j \gets 55$
  }
\end{algorithm}

\end{frame}
\end{document} 

在此处输入图片描述

相关内容