Пакет для документирования структуры

Пакет для документирования структуры

Существует ряд пакетов псевдокода для 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}

введите описание изображения здесь

Связанный контент