算法中的行号

算法中的行号

我想更改算法中行号的第一个数字,但该怎么做?这是我的例子:

\documentclass[12pt]{beamer}
\usepackage{amsmath, amsfonts, amssymb, amsthm}
\usepackage{algorithmic, algorithm}
\usepackage{float}
\renewcommand\thealgorithm{}

    \begin{document}
    \begin{frame}[t, fragile]
    \frametitle{...}
       \begin{algorithm}[H]
       \caption{...}
       \begin{algorithmic}[1]
          \STATE ...
       \end{algorithmic}
       \end{algorithm}
    \end{frame}
    \end{document}

例如,第一个状态应编号为 2。

答案1

行号algorithmic(来自algorithms) 由计数器控制ALC@line。以下 MWE 定义\setalglineno{<num>}允许您修改任何行的编号algorithmic

从第 2 行开始的算法截图

\documentclass[12pt]{beamer}

\usepackage{algorithmic,algorithm,float}

\renewcommand\thealgorithm{}
\newcommand{\setalglineno}[1]{%
  \setcounter{ALC@line}{\numexpr#1-1}}

\begin{document}

\begin{frame}[t, fragile]
  \frametitle{...}
  \begin{algorithm}[H]
    \caption{...}
    \begin{algorithmic}[1]
      \setalglineno{2}% Set following line number to 2
      \STATE ...
    \end{algorithmic}
  \end{algorithm}
\end{frame}

\end{document}

事实上,\setalglineno{<num>}设置ALC@line<num>-1,因为算法设置在一个列表中,其中每一行计数器都会增加它已设置。因此,从技术上讲,要获得编号为 2 的行,您需要将计数器值设置为 1。

类似的设置可在以下环境(或同等环境中)使用algpseudocodealgorithmicx。对于这些你必须使用ALG@line而不是ALC@line虽然。

答案2

当算法分布在多个部分时,为每个标签发明一个新名称(正如 Werner 的解决方案所要求的那样)可能会很麻烦。

基于行号只是计数器这一事实,这里还有另一种方法:为行号创建一个新计数器。当算法环境关闭时,保存计数器。当恢复算法时,恢复计数器。

梅威瑟:

行号延续的屏幕截图

对应代码(ALG@line@前缀任意选择):

\documentclass[12pt]{report}
\usepackage{algorithm,algpseudocode}

\newcommand{\alglinenoNew}[1]{\newcounter{ALG@line@#1}}
\newcommand{\alglinenoPop}[1]{\setcounter{ALG@line}{\value{ALG@line@#1}}}
\newcommand{\alglinenoPush}[1]{\setcounter{ALG@line@#1}{\value{ALG@line}}}

\begin{document}

Start:
\begin{algorithmic}[1]
    \State First
    \alglinenoNew{alg1}
    \alglinenoPush{alg1}
\end{algorithmic}

Continuation:
\begin{algorithmic}[1]
    \alglinenoPop{alg1}
    \State Second
    \State Third
    \alglinenoPush{alg1}
\end{algorithmic}

More:
\begin{algorithmic}[1]
    \alglinenoPop{alg1}
    \State Fourth
    \alglinenoPush{alg1}
\end{algorithmic}
\end{document}

相关内容