为什么 beamer 框架中 algorithm2e 包的 \LinesNumbered 命令不起作用?

为什么 beamer 框架中 algorithm2e 包的 \LinesNumbered 命令不起作用?

我想从第四行开始添加行号,但是该\LinesNumbered命令根本不起作用。

\documentclass{beamer}
\usepackage{algorithm2e}
\begin{document}
\begin{frame}
  \begin{algorithm}[H]
    \DontPrintSemicolon
    \KwSty{type} val : \KwSty{real}$[k]$\;
    \KwSty{type} ind : \KwSty{int}$[k]$\;
    \KwSty{type} ptr : \KwSty{int}$[m+1]$\;
    \LinesNumbered
    \ForEach{row $i$}{
      \For{$l=ptr[i]$ \KwTo $prt[i+1]-1$}{
     $ y[i] \leftarrow y[i]+val[l] \cdot x[ind[l]]$ \;
      }
    }
  \end{algorithm}
\end{frame}

\end{document}

其输出为:

在此处输入图片描述

但我希望它看起来像这样:(我怎样才能添加红色ind[l]?)

在此处输入图片描述

答案1

这不是环境的问题frame...\LinesNumbered只有在环境之外发布时才有效algorithm

但你可以使用

\everypar={\nl}

反而。

MWE(我还添加了红色文本着色ind[l]并改进了数学运算符)

\documentclass{beamer}
\usepackage{algorithm2e}

\DeclareMathOperator{\ind}{ind}
\DeclareMathOperator{\val}{val}
\DeclareMathOperator{\ptr}{ptr}
\DeclareMathOperator{\row}{row}

\begin{document}
\begin{frame}
  \begin{algorithm}[H]
    \DontPrintSemicolon
    \KwSty{type} val : \KwSty{real}$[k]$\;
    \KwSty{type} ind : \KwSty{int}$[k]$\;
    \KwSty{type} ptr : \KwSty{int}$[m+1]$\;
    \everypar={\nl}
    \ForEach{$\row i$}{
      \For{$l=\ptr[i]$ \KwTo $\ptr[i+1]-1$}{
     $ y[i] \leftarrow y[i]+\val[l] \cdot x[\textcolor{red}{\ind[l]}]$ \;
      }
    }
  \end{algorithm}
\end{frame}
\end{document} 

在此处输入图片描述

相关内容