単純な「アルゴリズム」を作成するためのパッケージについて混乱しています。オプションが多すぎて、いつ何を使うか混乱します。たとえば、algpseudocode
を使用すると、algorithm
がすでに含まれているため、algorithmic
を追加できません。 “>
パッケージ。
合理化されたアプローチのための明確なガイドラインはありますか?提案をいただければ幸いです。
コメント
-
algpseudocode
はalgorithmicx
バンドルの一部であり、algorithmic
その他の機能の提供に加えて。 - 関連:適切な構文でプログラムを印刷する
回答
TL; DRバージョン:
- アルゴリズム-アルゴリズムのフロートラッパー。
- アルゴリズム-最初のアルゴリズム組版環境。
- Algorithmx -2番目のアルゴリズム組版ng環境。
- algpseudocode –
algorithmicx
のレイアウト。 - アルゴリズム2e -3番目のアルゴリズム組版環境。
algorithmic
よりも優れているため、algorithmicx
をalgpseudocode
とともに使用します。 algorithmicx
はalgorithm2e
と比較して同じ機能を提供すると思いますが、その構文は。
詳細バージョン
アルゴリズム
アルゴリズムのフロートラッパー。これは、ブロックコマンドtable
またはfigure
に似ています。これらのコマンドは、テーブル/図をラップして番号を付け、番号が付けられないようにします。 2ページに分割します。 ドキュメントの説明:
フローティングにカプセル化せずにテキスト内に配置した場合環境
algorithmic
環境はページの境界を越えて分割され、外観が大幅に損なわれる可能性があります。さらに、参照用にアルゴリズムに番号を付けたり、アルゴリズムのリストを目次に追加したりすると便利です。algorithm
環境は、アルゴリズムにフローティング環境を提供することで、これらの懸念に対処することを目的としています。
例:
\begin{algorithm} \caption{Algorithm caption} \label{alg:algorithm-label} \begin{algorithmic} ... Your pseudocode ... \end{algorithmic} \end{algorithm}
アルゴリズム
これは、擬似コードを作成する環境です。 if
、while
、procedure
などの一般的な構造に対して事前定義されたコマンドがあります。すべてのコマンドは大文字です。例: \IF{cond} ... \ELSE ...
。ドキュメント 1 には次のように記載されています:
algorithmic
環境はアルゴリズムを記述するための環境を提供し、algorithm
環境はアルゴリズムの「フロート」ラッパーを提供します(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}
algorithmicx
このパッケージは、アップグレードされたalgorithmic
のようなものです。これにより、algorithmic
ではできないカスタムコマンドを定義できます。したがって、(クレイジーな)カスタムコマンドを作成したくない場合は、algorithmic
。 algorithmicx
はalgorithmic
と同じように使用しますが、構文と詳細のみがわずかに異なります。詳細については、以下の例を参照してください。 ドキュメントの説明:
パッケージalgorithmicx自体は、アルゴリズムコマンドを定義していません。 、ただし、そのようなコマンドセットを定義するためのマクロのセットを提供します。 Algorithmicxのみを使用してコマンドを自分で定義するか、事前定義されたコマンドセットの1つを使用することができます
例:
\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}
algpseudocode
これは、algorithmicx
のレイアウトであり、可能な限り類似したものにしようとしています。 algorithmic
。次のような他のレイアウトもあります:
-
algcompatible
(アルゴリズムパッケージと完全に互換性があります)、 -
algpascal
(フォーマットされたpascalプログラムを作成することを目的としており、いくつかの基本的な置換ルールを使用して、pascalプログラムをalgpascal
アルゴリズム記述に変換できます)。 -
algc
(algpascalと同じですが、cの場合。このレイアウトは不完全です)。
ドキュメントの説明:
アルゴリズムパッケージに精通している場合は、それを見つけることができます。切り替えが簡単。
algcompatible
レイアウトで古いアルゴリズムを使用できますが、新しいアルゴリズムにはalgpseudocode
レイアウトを使用してください。algpseudocode
を使用するには、\usepackage{algpseudocode}
を使用するだけです。algorithmicx
パッケージを手動でロードする必要はありません。これは、algpseudocode
。
algorithmicx
の例を参照してください、algpseudocode
レイアウトを使用します。
アルゴリズム2e
これは、または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}
algorithmicx
"?algorithmic
よりもalgorithmicx
を好む理由とかどうかについての議論は非常に明確ですが、' tは、algorithm2e
と多くの比較を提供します。それは、あなたがそれをあまりよく知らないからか、劣っていることがよく知られているからですか、それとも何か他のものですか?algorithm2e
。同様の機能を提供する必要があると思いますが、algorithmicx
の構文を好みます。答えを編集して、それが私の(主観的な)好みにすぎないことを明確にしました。algorithmicx
をロードしてもも?
algorithmicx
に関するセクションを読んだとき、'パッケージを使用するには、algpseudocode
もロードする必要があることをすぐに確認します。たぶん私は'それを経験した唯一の人です、そうでなければどこかに追加されるかもしれません。