algorithm 和 algorithm2e 的目录一起

algorithm 和 algorithm2e 的目录一起

算法的内容认为,一个使用的算法algorithm是一种算法,而另一个使用的算法algorithm2e是另一种算法,而不是用另一个包导入的第二个算法,而是不同的实体或其他东西,在我看来,这是不行的。

我想要这个:

  1 algo 1..................... page of algo 1
1 algo 2..................... page of algo 2

更改为:

1 algo 1..................... page of algo 1
2 algo 2..................... page of algo 2

上面的对齐和编号已更改。

以下是基于的最小示例问题:

\documentclass{article}
\usepackage{algorithm} 
\usepackage{algorithmic}  
\usepackage[algo2e]{algorithm2e} 
\renewcommand{\listalgorithmname}{List of Algorithms}
\addtocontents{loa}{\protect\thispagestyle{empty}}

\begin{document}
    \listofalgorithms
    \smallskip
    \begin{algorithm}%>- from algorithm package
        test
        \caption{algo 1}
    \end{algorithm}

    \begin{algorithm2e}%>- from algorithm2e package
        test
        \caption{algo 2}
    \end{algorithm2e}
\end{document}

输出: 在此处输入图片描述


编年史

我已经准备好论文了。然而,就在昨晚,我们提交了一篇基于论文的论文。我也必须提交我的论文,我想把论文中写到的一些算法纳入论文中。由于多种原因,我遇到了这样的情况:有人会为我的问题提供解决方案,或者我会直接放弃论文,而没有论文算法,这当然会导致论文心碎。:)

论文的算法是用 编写的algorithm2e,而毕业论文的算法是用algorithm和编写的algorithmic。我明天一早就要提交,因此没有时间重写它们(我现在正在其他部分编辑我的论文),这就是为什么我要么听取社区的解决方案,要么将论文的算法留在我的论文之外!

答案1

一种快速解决方案是在每个算法内部使用\setcounter。此外,为了使算法在算法列表中对齐,您需要重新定义\listof命令\l@algocf并设置\@dottedtocline所需的水平间距。以下是代码:

\documentclass{article}
\usepackage{algorithm} 
\usepackage{algorithmic}  
\usepackage[algo2e]{algorithm2e} 
\renewcommand{\listalgorithmname}{List of Algorithms}
\addtocontents{loa}{\protect\thispagestyle{empty}}

% add this to align the list of algorithms
\makeatletter
  \renewcommand*{\listof}[2]{%
    \@ifundefined{ext@#1}{\float@error{#1}}{%
      \@namedef{l@#1}{\@dottedtocline{1}{1em}{2.3em}}% line of the list (change from 1em to the desired value)
      \float@listhead{#2}%
      \begingroup\setlength{\parskip}{\z@}%
        \@starttoc{\@nameuse{ext@#1}}%
      \endgroup}}
  \renewcommand*\l@algocf{\@dottedtocline{1}{1em}{2.3em}}% line of the list (change from 1em to the desired value)
\makeatother

\begin{document}
    \listofalgorithms
    \smallskip
    \begin{algorithm}%>- from algorithm package
      \setcounter{algorithm}{0}% set the counter for the 1st algorithm
        test
        \caption{algo 1}
    \end{algorithm}

    \begin{algorithm2e}%>- from algorithm2e package
      \setcounter{algocf}{1}% set the counter for the 2nd algorithm
        test
        \caption{algo 2}
    \end{algorithm2e}

    \begin{algorithm}%>- from algorithm package
      \setcounter{algorithm}{2}% set the counter for the 3rd algorithm
        test
        \caption{algo 3}
    \end{algorithm}

    \begin{algorithm2e}%>- from algorithm2e package
      \setcounter{algocf}{3}% set the counter for the 4th algorithm
        test
        \caption{algo 4}
    \end{algorithm2e}
\end{document}

相关内容