TL;DRバージョン:

TL;DRバージョン:

単純な「アルゴリズム」を書くためのパッケージについて混乱しています。オプションが多すぎて、何をいつ使用すればよいのか混乱します。たとえば、 を使用する場合、すでにパッケージに含まれているため、algpseudocode追加できません。algorithmicalgorithm

合理化されたアプローチのための明確なガイドラインはありますか? どのような提案でも歓迎します。

答え1

TL;DRバージョン:

  • アルゴリズム- アルゴリズムの float ラッパー。
  • アルゴリズム- 最初のアルゴリズム組版環境。
  • アルゴリズム- 2 番目のアルゴリズムの組版環境。
  • アルゴリズム疑似コード- のレイアウトalgorithmicx
  • アルゴリズム2e- 3番目のアルゴリズム組版環境。

は よりも優れているため、algorithmicxを使用します。と比較して同じ機能を提供していると思いますが、 の構文の方が の構文よりも明確だと思います。algpseudocodealgorithmicalgorithmicxalgorithm2ealgorithm2e

詳細版

アルゴリズム

tableアルゴリズムのフロートラッパー。ブロックコマンドやに似ておりfigure、表や図を囲んで番号を付け、2ページに分割されるのを防ぎます。ドキュメンテーション言う:

フローティング環境にカプセル化されずにテキスト内に配置された場合、algorithmic環境はページ境界を越えて分割され、見た目が大きく損なわれる可能性があります。さらに、参照用にアルゴリズムに番号を付けたり、コンテンツのリストにアルゴリズムのリストを追加したりすることも便利です。このalgorithm 環境は、アルゴリズムにフローティング環境を提供することで、これらの問題に対処することを目的としています。

例:

\begin{algorithm}
    \caption{Algorithm caption}
    \label{alg:algorithm-label}
    \begin{algorithmic}
        ... Your pseudocode ...
    \end{algorithmic}
\end{algorithm}

アルゴリズム

これは擬似コードを書く環境です。 、 、 などの一般的な構造に対して定義済みのコマンドがあります。ifすべてwhileprocedureコマンドは大文字で始まります\IF{cond} ... \ELSE ...。例: 。ドキュメント1言う:

環境algorithmicはアルゴリズムを記述するための環境を提供し、algorithm環境はアルゴリズム用の「float」ラッパーを提供します (algorithmicまたはユーザーのオプションで他の方法を使用して実装されます)。 2 つの環境が提供されている理由は、ユーザーに最大限の柔軟性を与えるためです。

例:

\begin{algorithmic}
    \IF{some condition is true}
        \STATE do some processing
    \ELSIF{some other condition is true}
        \STATE do some different processing
    \ELSE
        \STATE do the default actions
    \ENDIF
\end{algorithmic}

アルゴリズム

このパッケージはalgorithmicアップグレードされたようなものです。カスタムコマンドを定義できますが、これは algorithmicではできないことです。したがって、(クレイジーな)カスタムコマンドを書きたくない場合は、 で十分です。は と同じようにalgorithmic使用しますが、構文と詳細がわずかに異なります。詳細については、以下の例を参照してください。algorithmicxalgorithmicドキュメンテーション言う:

algorithmicx パッケージ自体はアルゴリズムコマンドを定義しませんが、そのようなコマンドセットを定義するマクロのセットを提供します。algorithmicx のみを使用してコマンドを自分で定義することも、定義済みのコマンドセットのいずれかを使用することもできます。

例:

\begin{algorithm}
    \caption{Euclid’s algorithm}
    \label{euclid}
    \begin{algorithmic}[1] % The number tells where the line numbering should start
        \Procedure{Euclid}{$a,b$} \Comment{The g.c.d. of a and b}
            \State $r\gets a \bmod b$
            \While{$r\not=0$} \Comment{We have the answer if r is 0}
                \State $a \gets b$
                \State $b \gets r$
                \State $r \gets a \bmod b$
            \EndWhile\label{euclidendwhile}
            \State \textbf{return} $b$\Comment{The gcd is b}
        \EndProcedure
    \end{algorithmic}
\end{algorithm}

アルゴリズム疑似コード

algorithmicxこれは、 にできるだけ似せようとするのレイアウトですalgorithmic。 他にも次のようなレイアウトがあります。

  1. algcompatible(アルゴリズムパッケージと完全に互換性があります)、
  2. algpascal(フォーマットされたパスカル プログラムを作成することを目的とし、いくつかの基本的な置換規則を使用してパスカル プログラムをalgpascalアルゴリズム記述に変換できます)。
  3. algc(algpascal と同様ですが、c 用です。このレイアウトは不完全です)。

ドキュメンテーション言う:

アルゴリズム パッケージに慣れている場合は、簡単に切り替えることができます。 レイアウトでは古いアルゴリズムを使用できます algcompatibleが、algpseudocode新しいアルゴリズムにはレイアウトを使用してください。 を使用するにはalgpseudocode、 を使用します \usepackage{algpseudocode}パッケージを手動でロードする必要はありません algorithmicx。これは によって実行されますalgpseudocode

の例を参照してください。この例でalgorithmicxはレイアウトが使用されていますalgpseudocode


アルゴリズム2e

algorithmicこれは、またはのような別のアルゴリズム環境ですalgorithmicxドキュメンテーション言う:

Algorithm2e は、LaTeX2e でアルゴリズムを記述するための環境です。 は、 algorithm図のような浮動オブジェクトとして定義されます。さまざまな種類のキーワードを作成できるマクロが提供され、定義済みのキーワードのセットが提供されます。キーワードの書体を変更することもできます。

例:

\begin{algorithm}[H]
    \SetAlgoLined
    \KwData{this text}
    \KwResult{how to write algorithm with \LaTeX2e }
    initialization\;
    \While{not at end of this document}{
        read current\;
        \eIf{understand}{
            go to next section\;
            current section becomes this one\;
            }{
            go back to the beginning of current section\;
        }
    }
\caption{How to write algorithms}
\end{algorithm}

答え2

  • 私は最近見つけたalgpseudocodexパッケージさまざまなパッケージの統一に向けた良い一歩となるでしょうalgorithm*
  • このパッケージは、 のいくつかの機能 (汎用性、テンプレート化など)algorithmicxと の無駄のないレイアウトalgorithm2e、つまり垂直のスコープ ラインをうまく組み合わせています。

ここに画像の説明を入力してください (例はマニュアルから抜粋したものです。)

関連情報