Algoritmos lado a lado em papel de duas colunas

Algoritmos lado a lado em papel de duas colunas

Estou tentando colocar dois algoritmos lado a lado em uma página para que seja fácil comparar suas diferenças. Estou usando o acmmodelo, algorithm2epacote e minipageambiente. mas recebo este erro:

! LaTeX Error: [H] in two columns mode is not allowed for algorithms.  

Eu segui essas etapas neste post, mas não funcionou para mim.vários algoritmos de algoritmo2e em documentos de duas colunas

Alguém sabe como posso colocar dois algoritmos lado a lado?


Este é o meu código de exemplo. Funciona bem em uma página de coluna, mas não funciona em uma página de duas colunas.

\begin{minipage}[t]{8cm} 

  \null 
  \begin{algorithm}[H]
    % \caption{Algo 1}

    \SetKwData{Left}{left}\SetKwData{This}{this}\SetKwData{Up}{up}
    \SetKwFunction{Union}{Union}\SetKwFunction{FindCompress}{FindCompress}
    \SetKwInOut{Input}{Generation step}\SetKwInOut{Output}{Initialization step}
    \Input{\color{blue} Generate } 
    \Output{ $K$}
    \BlankLine
    \Output{\color{blue}***,**}

    \emph{\bf{\color{blue} 444}}\;
    \emph{\color{blue} 2222}\;
    \emph{\color{blue}11111\;} 
    \emph{\color{blue}111\;}
    \emph{###\;
    }
    \BlankLine
    \emph{\bf{\color{blue} Received $ID$}}\;
    \For{\color {blue} each node that receives a ID}{
      \If{\color {blue} ##}{\color {blue} Add value to the list
      }
      \BlankLine
      \For{Each $received  ID$}{
        Find *,$s$\;
        \eIf{$s$ $>$ ID$}{do nothing}{Replace #}
      }
    }
    \BlankLine
    Find the smallest element on the list, $s$\;
    \eIf{$s$ $=$ $0$}{###}{*** }\BlankLine
    \BlankLine
    \caption{DNE Algorithm}\label{DNE Algorithm}
  \end{algorithm}

\end{minipage}%
\removelatexerror
\begin{minipage}[t]{8cm}
  \null

  \begin{algorithm}[H]

    \emph{**}\;
    % \Output{***}
    \emph{**}\;
    \emph{** size to 1}\;
    \BlankLine
    \emph{\bf{Broadcast}}\;
    \emph{broadcast it}\;
    \BlankLine
    \emph{\bf{Estimation}}\;
    \For{each ID$}{
      Find the smallest ,$s$\;
      \eIf{$s$ $>$ $received ID$}{do nothing}{Replace $s$ }
    }
    \BlankLine
    Find the smallest element on the list, $s$\;
    \eIf{$s$ $=$ $0$}{1111}{ab}\BlankLine
    \caption{Algorithm}\label{DNE-Algorithm}

  \end{algorithm}
\end{minipage}

Responder1

O pacote algorithm2enão permite Ho modo de duas colunas, independentemente de flutuação simples ou dupla. Um pequeno trecho do arquivo do pacote:

\if@twocolumn\@latex@error{[H] in two columns mode is not allowed for algorithms}\fi% TODO: SCREAM if H in two colums!

O ruim é que, por algum motivo, duas legendas em um algorithm ambiente não funcionam. A solução pode ser um hack rápido, usando um figurealgoritmo de imitação. Você tem que sermuitocuidado com a ordem dos seus algoritmos dessa forma. Há uma grande chance de que a numeração fique confusa.
Pode haver uma solução muito melhor e mais limpa.

\documentclass[twocolumn
]{article}
\usepackage{blindtext}
\usepackage{algorithm2e}
\begin{document}
\blindtext[5]
\begin{algorithm*}%[H]
    \begin{minipage}{0.45\textwidth}
        \rule{\linewidth}{2cm}
        \caption{left side of a pretty pretty long long
        long very very long caption}
    \end{minipage}\hfill
    \begin{minipage}{0.45\textwidth}
        \rule{\linewidth}{4cm}
        \caption{right side of a pretty pretty long long
        long very very long caption}
    \end{minipage}
\end{algorithm*}

\blindtext
\begin{figure*}
    \makeatletter
    \def\@captype{algocf}
    \makeatother
    \begin{minipage}{0.45\textwidth}
        \rule{.5\linewidth}{2cm}
        \caption{left side of a pretty pretty long long
        long very very long caption}
    \end{minipage}\hfill
    \begin{minipage}{0.45\textwidth}
        \rule{\linewidth}{4cm}
        \caption{right side}
    \end{minipage}
\end{figure*}
\blindtext[5]
\end{document}

informação relacionada