目前存在许多针对 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}