Algorithmicx 包在自定义块下中断

Algorithmicx 包在自定义块下中断

我在 algorithmicx 包中定义了一个名为的新块Class。我想在这个新块中插入一个新页面的断点,但出现了错误:

包 algorithmicx 错误:有些块没有关闭!!!。

缺失数字,视为零。\结束

这是我重现错误的最小工作示例:

\documentclass{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\begin{document}
    \begin{algorithm}
        \algblock[Class]{Class}{End}
        \caption{Class: Part 1}\label{case_class_1}
        
        \begin{algorithmic}[1]
            \Class
            \Statex
            \Function{function 1}{ }
            \State do some stuff
            \EndFunction
            
            \algstore{bkbreak}

        \end{algorithmic}
    \end{algorithm}
    % BREAK
    \begin{algorithm}[h]
        \algblock[Class]{Class}{End}
        \caption{Class: Part 2}\label{case_class_2}
        
        \begin{algorithmic}[1]
            \algrestore{bkbreak}
            \Statex
            \Function{function 2}{ }
            \State do some stuff
            \EndFunction
            \End
        \end{algorithmic}
    \end{algorithm}
\end{document}

错误:

第 32 行:缺少数字,视为零。\结束

第 33 行:程序包 algorithmicx 错误:某些块未关闭!!!。 \end{algorithmic}

答案1

在前言中定义新块,而不是在环境中定义两次algorithm。此外,如果第二个浮点数超过第一个浮点数(没有选项),[h]第二个环境的选项可能会有问题,因为then 可能会在 之前执行。algorithm[h]\algrestore\algstore

在此处输入图片描述

\documentclass{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\algblock[Class]{Class}{End}
\begin{document}
\begin{algorithm}
  \caption{Class: Part 1}\label{case_class_1}
  \begin{algorithmic}[1]
    \Class
    \Function{function 1}{ }
    \State do some stuff
    \EndFunction
    \algstore{bkbreak}
  \end{algorithmic}
\end{algorithm}
% BREAK
\begin{algorithm}
  \caption{Class: Part 2}\label{case_class_2}
  \begin{algorithmic}[h]
    \algrestore{bkbreak}
    \Function{function 2}{ }
    \State do some stuff
    \EndFunction
    \End
  \end{algorithmic}
\end{algorithm}
\end{document}

相关内容