如何使用“algorithm2e”创建带有下划线的程序名称?

如何使用“algorithm2e”创建带有下划线的程序名称?

使用给出的答案algorithm2e 中的程序名称采用小写字母展示如何使 algorithm2e 中的程序名称全部为小写。

但我想_在名称之间添加,因为名称很长。添加\_名称会出现错误。

还有什么其他选择?这是有效的 MWE,下面我展示了无效的 MWE。

\documentclass[12pt]{article}
\usepackage[algosection, boxruled]{algorithm2e}
\usepackage{algpseudocode}
\usepackage{amsmath}
\begin{document}

\SetProcNameSty{textsc}
\SetProcArgSty{textsc}
\SetKwInOut{Input}{input}
\SetKwInOut{Output}{output}

\begin{procedure}
\caption{secondorderseriessolver()}
\Input{ode $y''=f(x,y,y')$}
\Output{solution}

\If{$f(x,y,y')$ analytic at $x=0$}
{
   process\;

   \textbf{return}
}
\end{procedure}
\end{document}

在此处输入图片描述

将流程名称更改为\caption{second_order_series_solver()}\caption{second\_order\_series\_solver()}两者都失败。

然后我尝试了 algorithm2e 标题中不能使用下划线吗? 但这产生了以下结果

\usepackage{amsmath}
\begin{document}
\SetProcNameSty{textsc}
\SetProcArgSty{textsc}
\SetKwInOut{Input}{input}
\SetKwInOut{Output}{output}

\begin{procedure}
\caption{(second\_order\_series\_solver)}
\Input{ode $y''=f(x,y,y')$}
\Output{solution}

\If{$f(x,y,y')$ analytic at $x=0$}
{
   process\;

   \textbf{return}
}
\end{procedure}
\end{document}

由此产生了

在此处输入图片描述

这很接近我想要的,但不完全是。我希望它看起来像第一个,但像第二个版本一样带有下划线。第二个版本有(..)下划线。

如何使过程名称包含下划线?顺便说一句,小写字母对我来说根本不重要。我只是从给出的例子中使用了它。我只是想要_在过程本身的名称之间添加(而不是下面第二个答案中给出的参数)。

TL 2022

答案1

由于不明原因,将algorithm2e的参数存储为,显然在使用时会失败。\caption\csname\_

代码位于\SetKwFunction和中\SetKwArray。这到底是做什么用的,目前还不清楚。

至少您可以通过使\_内部合法来消除错误\csname

\documentclass[12pt]{article}
\usepackage[algosection, boxruled]{algorithm2e}
\usepackage{algpseudocode}
\usepackage{amsmath}

\NewCommandCopy{\legacyunderscore}{\_}
\renewcommand{\_}{\ifincsname_\else\legacyunderscore\fi}

\begin{document}

\begin{procedure}
% up to %%% should be either inside procedure or in the preamble
\SetProcNameSty{textsc}
\SetProcArgSty{textsc}
\SetKwInOut{Input}{input}
\SetKwInOut{Output}{output}
%%%
\caption{second\_order\_series\_solver()}
\Input{ode $y''=f(x,y,y')$}
\Output{solution}

\If{$f(x,y,y')$ analytic at $x=0$}
{
   process\;

   \textbf{return}
}
\end{procedure}

\end{document}

相关内容