用于记录结构的包

用于记录结构的包

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

在此处输入图片描述

相关内容