2列の論文にアルゴリズムを並べて記載

2列の論文にアルゴリズムを並べて記載

2 つのアルゴリズムを 1 つのページに並べて、違いを簡単に比較できるようにしようとしています。acmテンプレート、algorithm2eパッケージ、minipage環境を使用していますが、次のエラーが発生します。

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

この投稿の手順に従いましたが、うまくいきませんでした。2列のドキュメント内の複数のアルゴリズム2eアルゴリズム

2 つのアルゴリズムを並べて配置する方法を知っている人はいますか?


これは私のサンプル コードですが、1 列のページでは正常に動作しますが、2 列のページでは動作しません。

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

答え1

パッケージは、シングル フロートかダブル フロートかに関係なく、2 列モードではalgorithm2e許可されませんH。パッケージ ファイルからの抜粋:

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

残念なことに、何らかの理由で、1つのalgorithm 環境で2つのキャプションが機能しません。解決策は、 figureアルゴリズムを模倣した簡単なハックを使用することです。とてもアルゴリズムの順序には注意してください。番号付けが乱れる可能性がかなり高くなります。
もっと良い、よりクリーンな解決策があるかもしれません。

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

関連情報