Beamer 中的算法:所有命令都在一行中

Beamer 中的算法:所有命令都在一行中

我需要将命令放在单独的行中(If、While 等)。我还尝试按照其他帖子中的建议删除算法的数字,但数字仍然存在。任何帮助都非常感谢!谢谢!

\documentclass[9pt,handout,compress,rgb]{beamer}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{amstext, amsmath, amsfonts}
\usepackage{array}
\usepackage{indentfirst}
\usepackage[noend]{algpseudocode}
\usepackage{caption}
\usepackage[justification=centering]{caption} % Figures caption
\usepackage{float} % To place figures where I want with [H]
\usepackage{FiraMono}
\usepackage{algpseudocode}
\usepackage{chngcntr}
\usepackage{ragged2e}
\usepackage[vlined,ruled]{algorithm2e}
\usepackage{comment}
\usepackage{mathtools}
\usepackage{mathrsfs}
\usepackage{wasysym}
\usepackage{marvosym}
\setbeamertemplate{itemize items}[default]

\captionsetup{labelsep = period} 


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


\begin{document}
\begin{frame}

\begin{algorithm}[H]
\renewcommand{\thealgorithm}{}
\caption*{Finding $z$} 
\begin{algorithmic}
\Require{$x, y$}
\Ensure{$z$}
\State $X \gets x$
\State $N \gets n$
\While{$s <  k$}
  \While{$(t \le k-s)$ and $f$} 
    \State $s \gets 0$
    \If{$ff$ is negative}
       \State $x \gets y-1$
       \State $ff$ \gets false
    \Endif
    \State $t \gets t+1$
  \Endwhile
  \State Assign $y$ to $z$
  \State $jf \gets j+1$
\Endwhile
\end{algorithmic}
\end{algorithm}

\end{frame}
\end{document} 

答案1

一些错误:

  • 删除\renewcommand{\thealgorithm}{},这将导致错误。
  • 您正在加载的包algorithm2e将 while 循环定义为\while{...}{...}而不是\while{...} \endwhile
  • 如果出现同样的错误
  • \get必须将 in置于\State $ff$ \gets false数学模式

更多评论:

  • 如果您同时告诉 babel 您的文档应该是英文的,那么该T2A选项似乎是一个奇怪的选择......\usepackage[T2A]{fontenc}
  • float由于 beamer 没有浮动机制,因此加载包没有多大意义
  • 不要多次加载同一个包,尤其是使用不同的选项
  • 您不需要加载所有这些ams*包,beamer 会自动加载它们。
  • indentfirst由于 beamer 不缩进段落,因此也没有多大意义

一种可能的方法使用以下algorithm2e语法:

\documentclass[9pt,handout,compress,rgb]{beamer}
%\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
%\usepackage{amstext, amsmath, amsfonts}
\usepackage{array}
%\usepackage{indentfirst}
%\usepackage[noend]{algpseudocode}
%\usepackage{caption}
\usepackage[justification=centering]{caption} % Figures caption
%\usepackage{float} % To place figures where I want with [H]
\usepackage{FiraMono}
%\usepackage{algpseudocode}
\usepackage{chngcntr}
\usepackage{ragged2e}
\usepackage[vlined,ruled]{algorithm2e}
\usepackage{comment}
\usepackage{mathtools}
\usepackage{mathrsfs}
\usepackage{wasysym}
\usepackage{marvosym}
\setbeamertemplate{itemize items}[default]

\captionsetup{labelsep = period} 


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

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


\begin{document}
\begin{frame}

\begin{algorithm}[H]
%\newcommand{\thealgorithm}{}
\NoCaptionOfAlgo
\caption{\textbf{Algorithm:} Finding $z$} 
%\begin{algorithmic}
\Input{$x, y$}
\Output{$z$}
 $X \gets x$

$N \gets n$
\While{$s <  k$}{
  \While{$(t \le k-s)$ and $f$}{
     $s \gets 0$
    \If{$ff$ is negative}{
        $x \gets y-1$
       
        $ff \gets$ false
    }
     $t \gets t+1$
  }
   Assign $y$ to $z$
  
   $jf \gets j+1$
}
%\end{algorithmic}
\end{algorithm}

\end{frame}
\end{document} 

在此处输入图片描述

相关内容