在以 if 开头的行上用算法进行注释,并使用 reveal/visible

在以 if 开头的行上用算法进行注释,并使用 reveal/visible

我正在尝试修改此代码,变成以下一个:

\documentclass{beamer}
\usepackage[utf8]{inputenc} 
\usepackage[english]{babel}
\usepackage[plain]{algorithm}
\usepackage{algorithmic}
\usepackage{array}
\usepackage{eqparbox}
\renewcommand\algorithmiccomment[1]{%
  \eqparbox{COMMENT}{#1}%
}

\begin{document}
\begin{frame}
\begin{algorithm}[H]
  \begin{algorithmic}[1]
    \STATE $x := 1$ \visible<2->{\COMMENT{$x_1 \in [1;1]$}}
    \WHILE[\visible<2->{\COMMENT{whatever}}]{{$x < 10000$}
      \STATE $x := x+1$     \COMMENT{bla}
      \ENDWHILE
  \end{algorithmic}
\end{algorithm}
\end{frame}

\end{document} 

我只想让 if 块的注释出现在第二张不同的幻灯片上。这就是我使用的原因\uncover,但这在编译期间不被接受pdflatex

错误! Undefined control sequence.(如果你愿意,我可以粘贴日志)

我该如何改变这种情况?提前致谢

编辑:最好的选择可能是使用 algorithmicx。因此,注释\While必须推送到同一行的末尾,而不是像\WHILE[]

答案1

这是请求吗?我不确定,但有时最好使用该\only命令。

\documentclass{beamer}
\usepackage[utf8]{inputenc} 
\usepackage[english]{babel}
\usepackage[plain]{algorithm}
\usepackage{algorithmic}
\usepackage{array}
\usepackage{eqparbox}
\renewcommand\algorithmiccomment[1]{%
  \eqparbox{COMMENT}{#1}%
}

\begin{document}
\begin{frame}
\begin{algorithm}[H]
  \begin{algorithmic}[1]
    \only<1>{%
      \STATE $x := 1$
      \WHILE[]{$x < 10000$}
      \STATE $x := x+1$     \COMMENT{bla}
      \ENDWHILE
    }%
\only<2->{%
  \STATE $x := 1$ {\COMMENT{$x_1 \in [1;1]$}}
  \WHILE[\COMMENT{whatever}]{$x < 10000$}
  \STATE $x := x+1$     \COMMENT{bla}
  \ENDWHILE
}%
\end{algorithmic}
\end{algorithm}
\end{frame}

\end{document} 

相关内容