Side-by-side-Algorithmen in zweispaltigem Papier

Side-by-side-Algorithmen in zweispaltigem Papier

Ich versuche, zwei Algorithmen nebeneinander auf einer Seite zu platzieren, damit man ihre Unterschiede leicht vergleichen kann. Ich verwende die acmVorlage, algorithm2edas Paket und minipagedie Umgebung. Aber ich erhalte diesen Fehler:

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

Ich habe die Schritte in diesem Beitrag befolgt, aber es hat bei mir nicht funktioniert.mehrere Algorithm2e-Algorithmen in zweispaltigen Dokumenten

Weiß jemand, wie ich zwei Algorithmen nebeneinander stellen kann?


Dies ist mein Beispielcode. Er funktioniert auf einer einspaltigen Seite einwandfrei, aber nicht auf einer zweispaltigen Seite.

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

Antwort1

Das Paket algorithm2eerlaubt keinen HZweispaltenmodus, egal ob Einzel- oder Doppelfloat. Ein kleiner Auszug aus der Paketdatei:

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

Das Schlimme ist, dass aus irgendeinem Grund zwei Untertitel in einer algorithm Umgebung nicht funktionieren. Die Lösung kann ein schneller Hack sein, bei dem ein figureAlgorithmus verwendet wird, der einen nachahmt. Sie müssensehrSeien Sie bei der Reihenfolge Ihrer Algorithmen vorsichtig. Es besteht eine ziemlich hohe Wahrscheinlichkeit, dass die Nummerierung durcheinander gerät.
Es könnte eine viel bessere und sauberere Lösung geben.

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

verwandte Informationen