algorithm2e 中的程序名称采用小写字母

algorithm2e 中的程序名称采用小写字母

我知道procedurealgorithm2e允许像这样的标题\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} 

输出

在此处输入图片描述

相关内容