Das algorithmicx Paket (Version v1.2 von 27.04.2005) ist ein Paket zum Setzen von Pseudocode innerhalb von LaTeX. Es handelt sich hierbei um eine Verbesserung beziehungsweise eine Erweiterung des bereits vorhanden algorithmic Paketes. Im Gegensatz zum algorithmic Paket verfügt es über vordefinierte Stile und zusätzliche Funktionen. Auch das algorithmicx Paket ermöglicht es zusammen mit dem algorithm Paket die gesetzten Code Blöcke in eine Gleitobjekt Umgebung zu setzen und ein entsprechendes Verzeichnis erstellen zu lassen.
Das Paket wird mit \usepackage{algorithmicx}
eingebunden und bindet seinerseits noch das ifthen Paket mit ein. Wobei bei der Verwendung der Stile nicht notwendig ist das algorithmicx Paket einzubinden.
Bei den Stilen handelt es sich ebenfalls um Pakete, die entsprechend mit \usepackage{Stilname}
die automatisch das \usepackage{algorithmicx}
mit einbinden.
\usepackage{algpseudocode}
Das Aussehen entspricht dem von der Verwendung des algorithmic Paketes. Erlaubt aber Anpassungen.\usepackage{algcompatible}
Dieser Stil ist für ältere Dokumente gemacht worden um eine vollständig Kompatibilität mit mit dem algorithmic Paket zu gewährleisten.\usepackage{algpascal}
Dieser Stil orientiert sich an der Programmiersprache Pascal und führt die Einrückungen automatisch durch.\usepackage{algc}
Dieser Stil orientiert sich an der Programmiersprache c ist aber unvollständig.Das algorithmicx selbst hat keine Optionen.
Das Paket algpseudocode verfügt über zwei Optionen mit je zwei Einstellungen. Zum einen end beziehungsweise noend und zum anderen compatible und noncompatible. Wobei letztere Option, die Kompatibilität bereist über das algcompatible erreicht wird. Die Ende Option entspricht jener des algorithmic Paketes, wird die noend Option geset wird das END Statement weggelassen.
Das Paket algcompatible verfügt ebenfalls über eine Ende Option mit der gleichen Wirkung.
Die zwei anderen Pakete algpascal und algc verfügen über keine Optionen.
Neben den Stilen sind die andere Schreibweisen der Befehle, die neuen zusätzlichen Befehle und die Möglichkeit der Anpassung durch den Nutzer, die Hauptunterschiede zu dem bereits vorhandenen algorithmic Paket.
Die algorithmic Umgebung hat eine Option. Dabei handelt es sich um die Möglichkeit die Schrittweite der Nummerierung der Zeilen angeben zu können. Wenn eine 1 gesetzt wird, wird jede Zeile nummeriert, wenn eine 2 gesetzt wird, wird jede zweite Zeile nummeriert und so weiter.
\begin{algorithmic}[Schrittweite] ... \end{algorithmic}Im Fall, dass keine Nummerierung erfolgen soll wird die Option einfach weggelassen:
\begin{algorithmic} ... \end{algorithmic}
Schleifen unterscheiden sich unter anderem darin, ob sie eine Bedingung haben oder nicht und im Fall das sie eine besitzen wo diese geprüft wird.
\Loop Text \EndLoop
\For{Bedingung} Text \EndFor
\ForAll{Bedingung} Text \EndFor
\While{Bedingung} Text \EndWhile
\Repeat Text \Until{Bedingung}
Hier gibt es drei Möglichkeiten. Eine Wenn-Dann Variante und zwei Wenn-Dann-Sonst Varianten.
\If{Bedingung} Text \EndIf
\If{Bedingung} Text \Else Text \EndIf
\If{Bedingung} Text \ElsIf{Bedingung} Text \EndIf
\State Text
Aussage \Comment{Text}
KommentarVor- und Nachbedingungnen
\Require Text
Vorbedingung \Ensure Text
NachbedingungZu den neuen Elementen die in diesem Paket enthalten sind gehören unter anderen auch Prozeduren und Funktionen. Beide Elemente haben dabei den gleichen Aufbau.
\Procedure{Name}{Parameter} Inhalt \EndProcedure
\Function{Name}{Parameter} Inhalt \EndFunction
Darüber hinaus ermöglicht es das Paket dem Nutzer auch einen eigenen Block zu definieren. Im Fall, dass der Block kein Parameter besitzt kann die Definition über \algblock[block]{start}{ende}
erfolgen. Im Fall, dass der Block Parameter enthält:
\algblockdefx[block]{start}{end} [startparamcount][default value]{start text} [endparamcount][default value]{end text}
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{algpseudocode} \begin{document} \begin{algorithmic}[0] \If{$a = 0$} \Return $b$ \Else \While{$b \neq 0$} \If{$a > b$} \State $a \leftarrow a - b$ \Else \State $b \leftarrow b - a$ \EndIf \EndWhile \Return $a$ \EndIf \end{algorithmic} \end{document} |
![]() |
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{algpascal} \begin{document} \begin{algorithmic} \Begin \State $sum:=0$; \For{i=1}{n} \State $sum:=sum+i$; \State writeln($sum$); \End. \end{algorithmic} |
![]() |