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

パッケージ。

合理化されたアプローチのための明確なガイドラインはありますか?提案をいただければ幸いです。

コメント

回答

TL; DRバージョン:

  • アルゴリズム-アルゴリズムのフロートラッパー。
  • アルゴリズム-最初のアルゴリズム組版環境。
  • Algorithmx -2番目のアルゴリズム組版ng環境。
  • algpseudocode algorithmicxのレイアウト。
  • アルゴリズム2e -3番目のアルゴリズム組版環境。

algorithmicよりも優れているため、algorithmicxalgpseudocodeとともに使用します。 algorithmicxalgorithm2eと比較して同じ機能を提供すると思いますが、その構文は。

詳細バージョン

アルゴリズム

アルゴリズムのフロートラッパー。これは、ブロックコマンドtableまたはfigureに似ています。これらのコマンドは、テーブル/図をラップして番号を付け、番号が付けられないようにします。 2ページに分割します。 ドキュメントの説明:

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

例:

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

アルゴリズム

これは、擬似コードを作成する環境です。 ifwhileprocedureなどの一般的な構造に対して事前定義されたコマンドがあります。すべてのコマンドは大文字です。例: \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ではできないカスタムコマンドを定義できます。したがって、(クレイジーな)カスタムコマンドを作成したくない場合は、algorithmicalgorithmicxalgorithmicと同じように使用しますが、構文と詳細のみがわずかに異なります。詳細については、以下の例を参照してください。 ドキュメントの説明:

パッケージ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。次のような他のレイアウトもあります:

  1. algcompatible(アルゴリズムパッケージと完全に互換性があります)、
  2. algpascal(フォーマットされたpascalプログラムを作成することを目的としており、いくつかの基本的な置換ルールを使用して、pascalプログラムをalgpascalアルゴリズム記述に変換できます)。
  3. 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} 

コメント

  • 素敵で詳細な回答です! TL; DRTL; DRのバージョンは次のように聞こえます:" use algorithmicx "? algorithmicよりもalgorithmicxを好む理由とかどうかについての議論は非常に明確ですが、' tは、algorithm2eと多くの比較を提供します。それは、あなたがそれをあまりよく知らないからか、劣っていることがよく知られているからですか、それとも何か他のものですか?
  • はい、その通りです。私はalgorithm2e。同様の機能を提供する必要があると思いますが、algorithmicxの構文を好みます。答えを編集して、それが私の(主観的な)好みにすぎないことを明確にしました。
  • algorithmicxをロードしても

も?

  • 広範な回答!迅速な判断のために、各パッケージのコンパイル済み出力の写真を含めると役立つ場合があります
  • algorithmicxに関するセクションを読んだとき、'パッケージを使用するには、algpseudocodeもロードする必要があることをすぐに確認します。たぶん私は'それを経験した唯一の人です、そうでなければどこかに追加されるかもしれません。
  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です