Índice do algoritmo e algoritmo2e juntos

Índice do algoritmo e algoritmo2e juntos

O conteúdo dos algoritmos pensa que um algoritmo que usa algorithmé um algoritmo e um algoritmo que usa algorithm2eé outro algoritmo, não o segundo do que foi importado com o outro pacote, mas uma entidade diferente ou algo assim, o que, na minha opinião, não está OK .

Eu gostaria deste:

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

a ser alterado para isto:

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

O alinhamento e a numeração foram alterados acima.

Aqui está o exemplo mínimo, baseado emessepergunta:

\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}

Saída: insira a descrição da imagem aqui


Crônica

Eu estava com minha tese pronta. No entanto, ainda ontem à noite submetemos um artigo baseado nele. Devo enviar minha tese também e gostaria de incluir na tese alguns dos algoritmos escritos no artigo. Por vários motivos, cheguei a uma situação em que alguém vai dar uma solução para o meu problema, ou simplesmente deixarei a tese sem os algoritmos de papel, o que claro leva a uma tese de coração partido. :)

Os algoritmos do artigo são escritos com algorithm2e, enquanto os algoritmos da tese são escritos com algorithme algorithmic. Tenho que enviá-lo amanhã de manhã, portanto não tenho tempo para reescrevê-los (estou editando minha tese agora em outras seções), por isso ou ouvirei uma solução da comunidade aqui, ou deixarei os algoritmos do artigo fora da minha tese!

Responder1

Uma solução rápida é usar \setcounterdentro de cada algoritmo. Além disso, para alinhar os algoritmos na lista de algoritmos, você precisa redefinir \listofos \l@algocfcomandos e definir \@dottedtoclinecom o espaçamento horizontal desejado. Aqui está o código:

\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}

informação relacionada