
Sé que procedure
solo algorithm2e
permite subtítulos como \caption{ProcedureName()}
.
Sin embargo, me gustaría que mi procedimiento aparezca en versalitas:
\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}
Lo cual por supuesto da error.
Paragraph ended before \algocf@captname was complete
En lugar de procedimiento, si uso \begin{algorithm} ... \end{algorithm}
, entonces se bifurca bien. ¿Hay alguna manera de hacer que funcione procedure
también?
Respuesta1
No está muy bien documentado en algorithm2e
el manual, pero para lograr lo que desea, debe emitir el comando
\SetProcNameSty{textsc}
El argumento de \caption
cuándo usar el procedure
entorno sólo puede contener algo como name(arg)
.
En el siguiente MWE también agregué
\SetProcArgSty{textsc}
en caso de que esté utilizando títulos de procedimientos con argumentos:
\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}
Producción