Оглавление алгоритма и algorithm2e вместе

Оглавление алгоритма и 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}

Связанный контент