我想从第四行开始添加行号,但是该\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}