我不知道为什么我的“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}