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