使用给出的答案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}