
Я знаю, что procedure
в algorithm2e
разрешены только такие подписи, как \caption{ProcedureName()}
.
Однако я бы хотел, чтобы моя процедура была написана маленькими заглавными буквами:
\documentclass[12pt,a4paper]{article}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{enumerate}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage[algosection, boxruled, linesnumbered]{algorithm2e}
\begin{document}
\begin{procedure}
\SetKwInOut{Input}{input}
\SetKwInOut{Output}{output}
\Input{Graph $G = (V,E)$}
\Output{}
\ForEach{node $v \in V$}
{
\lIf{$v$ is marked}{remove $v$}
}
\caption{\textsc{removemarked()}}
\label{alg:removemarked}
\end{procedure}
\end{document}
Что, конечно, дает ошибку
Paragraph ended before \algocf@captname was complete
Вместо процедуры, если я использую \begin{algorithm} ... \end{algorithm}
, то он нормально разветвляется. Есть ли способ заставить его работать procedure
также?
решение1
Это не очень хорошо документировано в algorithm2e
руководстве, но чтобы добиться желаемого, вам нужно выполнить команду
\SetProcNameSty{textsc}
Аргумент \caption
при использовании procedure
среды может содержать только что-то вроде name(arg)
.
В следующем MWE я также добавил
\SetProcArgSty{textsc}
на всякий случай, если вы используете заголовки процедур с аргументами:
\documentclass[12pt,a4paper]{article}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{enumerate}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage[algosection, boxruled, linesnumbered]{algorithm2e}
\SetProcNameSty{textsc}
\SetProcArgSty{textsc}
\begin{document}
\begin{procedure}
\SetKwInOut{Input}{input}
\SetKwInOut{Output}{output}
\Input{Graph $G = (V,E)$}
\Output{}
\ForEach{node $v \in V$}
{
\lIf{$v$ is marked}{remove $v$}
}
\caption{removemarked()}
\label{alg:removemarked}
\end{procedure}
\end{document}
Выход