更改算法包中的行号

更改算法包中的行号

我想让以下代码的行号不是从 1 开始,而是从 12 开始(因为它是从较大的代码中截取的)。因此,它应该是 12,13,14,15,而不是 1,2,3,4。

\documentclass{article}
\usepackage{algorithm}
\usepackage[noend]{algpseudocode}
\begin{document}

\begin{algorithm}[h]
  \begin{algorithmic}[1]
    \If{$(w,s')$ not in $Q$}                      \Comment{insert}
      \State $k(w,s')  \gets d_{r}(w,s') + \pi_{w,s'}$
    \Else                                        \Comment{decrease}
      \State $k(w,s') \gets d_{r}(w,s')+ \pi_{w,s'}$
    \EndIf
  \end{algorithmic}
\end{algorithm}

\end{document}

在此处输入图片描述

答案1

将计数器设置ALG@line为所需的值:

\documentclass{book}
\usepackage{algorithm,algpseudocode}

\begin{document}

\begin{algorithm}[h]
  \begin{algorithmic}[1]
\makeatletter
\setcounter{ALG@line}{11}
\makeatother
    \If{$(w,s')$ not in $Q$}                      \Comment{insert}
      \State $k(w,s')  \gets d_{r}(w,s') + \pi_{w,s'}$
    \Else                                        \Comment{decrease}
      \State $k(w,s') \gets d_{r}(w,s')+ \pi_{w,s'}$
    \EndIf
  \end{algorithmic}
\end{algorithm}

\end{document}

更好的方法是使用 \algstore 和 \algrestore,因为该机制会自动保存行号、缩进、当前算法的打开块并关闭所有块;请参阅 algorithmicx 文档的第 2.6 节分解长算法。

相关内容