
Es gibt eine Reihe von Pseudocode-Paketen für LaTeX. Kann eines davon Dinge wie einen Linked-List-Knoten in C beschreiben:
struct Node
{
Node* parent;
// other stuff
};
oder muss ich mir eigene Makros ausdenken
Antwort1
Ein möglicher Ansatz mit algorithm2e
. Ich habe einen „programmähnlichen“ Block definiert, MyStruct
der mit dem Schlüsselwort beginnt Struct
, dann den Strukturnamen setzt, dann das Schlüsselwort ausgibt contains
und das Ende der Struktur mit dem Schlüsselwort bezeichnet end
:
\SetKwProg{MyStruct}{Struct}{ contains}{end}
Dies alles lässt sich ganz nach Herzenslust individuell anpassen.
Die Verwendung innerhalb eines Algorithmus sieht etwa so aus:
\MyStruct{Node}{
Node* parent\;
int size\;
\tcp{other stuff}
}
Hier ist ein vollständiges, einfaches Beispiel und die Ausgabe:
\documentclass{article}
\usepackage{algorithm2e}
\SetAlgoLined
\SetKwProg{MyStruct}{Struct}{ contains}{end}
\begin{document}
\begin{algorithm}[H]
\MyStruct{Node}{
Node* parent\;
int size\;
\tcp{other stuff}
}
\end{algorithm}
\end{document}
Diese Definition berücksichtigt die globalen Paketoptionen und auch lokale Schalter. Sie können sie daher beispielsweise [noend,noline]
als Paketoptionen verwenden, um den Satz der end
Schlüsselwörter und der vertikalen Linie, die den Block begrenzt, zu deaktivieren:
\documentclass{article}
\usepackage[noend,noline]{algorithm2e}
\SetAlgoLined
\SetKwProg{MyStruct}{Struct}{ contains}{end}
\begin{document}
\begin{algorithm}[H]
\MyStruct{Node}{
Node* parent\;
int size\;
\tcp{other stuff}
}
\end{algorithm}
\end{document}