Zum Dokumentieren einer Struktur zu verwendendes Paket

Zum Dokumentieren einer Struktur zu verwendendes Paket

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, MyStructder mit dem Schlüsselwort beginnt Struct, dann den Strukturnamen setzt, dann das Schlüsselwort ausgibt containsund 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}

Bildbeschreibung hier eingeben

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 endSchlü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}

Bildbeschreibung hier eingeben

verwandte Informationen