TL;DR-Version:

TL;DR-Version:

Ich bin verwirrt über die Pakete zum Schreiben einfacher „Algorithmen“. Es gibt zu viele Optionen und es ist verwirrend, wann was zu verwenden ist. Wenn ich beispielsweise verwende algpseudocode, kann ich nicht hinzufügen, algorithmicda es bereits im algorithmPaket enthalten ist.

Gibt es definitive Richtlinien für einen rationalisierten Ansatz? Jeder Vorschlag wird geschätzt.

Antwort1

TL;DR-Version:

  • Algorithmus- Float-Wrapper für Algorithmen.
  • algorithmisch- erste algorithmische Satzumgebung.
  • algorithmischx- zweite Algorithmus-Satzumgebung.
  • algpseudocode- Layout für algorithmicx.
  • algorithm2e- Satzumgebung für dritten Algorithmus.

Ich verwende algorithmicxmit algpseudocode, da es besser ist als algorithmic. Ich denke, algorithmicxes bietet die gleiche Funktionalität wie algorithm2e, finde die Syntax jedoch klarer als die von algorithm2e.

Ausführliche Version

Algorithmus

Float-Wrapper für Algorithmen. Er ist ähnlich wie Blockbefehle tableoder figure, die Sie um Ihre Tabelle/Abbildung wickeln, um ihr eine Nummer zu geben und zu verhindern, dass sie auf zwei Seiten aufgeteilt wird. DerDokumentationsagt:

Wenn Umgebungen im Text platziert werden, ohne in einer schwebenden Umgebung gekapselt zu sein, algorithmickönnen sie über eine Seitengrenze hinaus aufgeteilt werden, was ihr Erscheinungsbild erheblich beeinträchtigt. Darüber hinaus ist es nützlich, Algorithmen zur Referenz zu nummerieren und Listen von Algorithmen an das Inhaltsverzeichnis anzuhängen. Die algorithm Umgebung soll diese Probleme lösen, indem sie eine schwebende Umgebung für Algorithmen bereitstellt.

Beispiel:

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

algorithmisch

Dies ist die Umgebung, in der Sie Ihren Pseudocode schreiben. Sie haben vordefinierte Befehle für gängige Strukturen wie if, while, procedure. Alle Befehle werden groß geschrieben, z. B. \IF{cond} ... \ELSE .... Die Dokumentation1sagt:

Die algorithmicUmgebung stellt eine Umgebung zum Beschreiben von Algorithmen bereit und die algorithmUmgebung stellt einen „Float“-Wrapper für Algorithmen bereit (implementiert mit algorithmicoder einer anderen Methode nach Wahl des Benutzers). Der Grund für die Bereitstellung von zwei Umgebungen besteht darin, dem Benutzer maximale Flexibilität zu ermöglichen.

Beispiel:

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

algorithmischx

Dieses Paket ist wie algorithmicein Upgrade. Es ermöglicht Ihnen, benutzerdefinierte Befehle zu definieren, was algorithmicnicht möglich ist. Wenn Sie also keine (verrückten) benutzerdefinierten Befehle schreiben möchten, sind Sie mit zufrieden algorithmic. Sie verwenden es auf algorithmicxdie gleiche Weise wie algorithmic, nur die Syntax und die Details sind etwas anders. Weitere Informationen finden Sie im folgenden Beispiel. DieDokumentationsagt:

Das Paket algorithmicx selbst definiert keine algorithmischen Befehle, sondern bietet eine Reihe von Makros zum Definieren eines solchen Befehlssatzes. Sie können nur algorithmicx verwenden und die Befehle selbst definieren oder einen der vordefinierten Befehlssätze verwenden.

Beispiel:

\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

Dies ist nur ein Layout für , algorithmicxdas so ähnlich wie möglich zu sein versucht algorithmic. Es gibt auch andere Layouts, wie zum Beispiel:

  1. algcompatible(vollständig kompatibel mit dem Algorithmik-Paket),
  2. algpascal(zielt darauf ab, ein formatiertes Pascal-Programm zu erstellen. Sie können ein Pascal-Programm algpascalmit einigen grundlegenden Substitutionsregeln in eine Algorithmusbeschreibung umwandeln.)
  3. algc(genau wie algpascal, aber für c. Dieses Layout ist unvollständig).

DerDokumentationsagt:

Wenn Sie mit dem Algorithmenpaket vertraut sind, fällt Ihnen der Wechsel leicht. Sie können die alten Algorithmen mit dem algcompatibleLayout verwenden, aber verwenden Sie algpseudocodefür neue Algorithmen bitte das Layout. Um zu verwenden algpseudocode, verwenden Sie einfach \usepackage{algpseudocode}.Sie müssen das Paket nicht manuell laden algorithmicx, da dies von erledigt wird algpseudocode.

Siehe das Beispiel für algorithmicx, es verwendet das algpseudocodeLayout.


algorithm2e

Dies ist eine weitere Algorithmusumgebung wie algorithmicoder algorithmicx. DieDokumentationsagt:

Algorithm2e ist eine Umgebung zum Schreiben von Algorithmen in LaTeX2e. Ein Algorithmus algorithmwird als schwebendes Objekt wie Figuren definiert. Es bietet Makros, mit denen Sie verschiedene Arten von Schlüsselwörtern erstellen können. Somit wird ein Satz vordefinierter Schlüsselwörter bereitgestellt. Sie können auch die Typografie der Schlüsselwörter ändern.

Beispiel:

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

Antwort2

  • Ich fand die jüngstealgpseudocodexPaketein guter Schritt zur Vereinheitlichung der Paketvielfalt algorithm*.
  • Dieses Paket kombiniert auf schöne Weise einige Features (z. B. Allgemeingültigkeit, Vorlagenerstellung) von algorithmicxund das schlanke Layout von algorithm2e, d. h. die vertikalen Bereichslinien.

Bildbeschreibung hier eingeben (Beispiel ist aus dem Handbuch entnommen.)

verwandte Informationen