
LaTeX 存在許多偽代碼包。這些中的任何一個都可以描述諸如 C 中的鍊錶節點之類的東西嗎:
struct Node
{
Node* parent;
// other stuff
};
或者我必須發明一些自訂宏
答案1
一種可能的方法是algorithm2e
.我定義了一個「類似程式」的區塊MyStruct
,它以關鍵字開頭Struct
,然後排版結構名稱,然後輸出關鍵字contains
,結構的結尾用關鍵字表示end
:
\SetKwProg{MyStruct}{Struct}{ contains}{end}
所有這一切都可以根據您的喜好進行客製化。
演算法中的用法類似:
\MyStruct{Node}{
Node* parent\;
int size\;
\tcp{other stuff}
}
這是一個完整的簡單範例和輸出:
\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}
此定義尊重全域包選項和本機開關,因此您可以使用例如[noend,noline]
套件選項來停用end
關鍵字的排版和分隔區塊的垂直線:
\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}