我正在使用算法2e包来生成论文的伪代码。期刊要求格式为“S1 伪代码”、“S2 伪代码”等。但是,我只能根据行生成“伪代码 S 1”格式\SetAlgorithmName{Pseudocode S}{}
。以下是最小工作示例:
\documentclass[parskip=full]{bmcart}
\usepackage[lined]{algorithm2e}
\usepackage{geometry}
\begin{document}
\begin{algorithm}[H]
\SetAlgorithmName{Pseudocode S}{}
\caption{Pseudocode for my algorithm}
\end{algorithm}
\end{document}
我如何更新标签以指示“S1 伪代码”(而不是“伪代码 S 1”)?据推测这可以通过命令更改\SetAlgorithmName
。任何建议都非常感谢!
答案1
algorithm2e 并没有自然地附带允许计数器位于标题之前的定义。
但是,您可以编辑它使用的内部命令以满足您的需要:
\fnum@algocf
是设置标题名称的宏。您可以将其更新为先输出计数器,然后再输出名称,如下所示:
\renewcommand{\fnum@algocf}{\AlCapSty{\AlCapFnt\thealgocf\nobreakspace\algorithmcfname}}%
现在输出将是 1 个伪代码。要将其更改为 S1,请更新\thealgocf
\renewcommand{\thealgocf}{S\@arabic\c@algocf}%
整个 MWE
\documentclass[parskip=full]{article}
\usepackage[lined]{algorithm2e}
\usepackage{geometry}
\makeatletter
\renewcommand{\thealgocf}{S\@arabic\c@algocf}% and the way it is printed
\renewcommand{\fnum@algocf}{\AlCapSty{\AlCapFnt\thealgocf\nobreakspace\algorithmcfname}}%
\makeatother
\SetAlgorithmName{Pseudocode}{}{}
\begin{document}
\begin{algorithm}[H]
\caption{Pseudocode for my algorithm}
\end{algorithm}
How can I update the label to indicate "S1 Pseudocode" (instead of "Pseudocode S 1")? Presumably this would be changed with the \SetAlgorithmName command. Any advice greatly appreciated!
\end{document}
结果
评论:原来的 MWE 是与我没有的 documentclass 一起,改为 article
答案2
对 Elad Den 的问题和答案的小评论(声誉不够,无法发表评论)
\SetAlgorithmName{Pseudocode}{}{}
命令 \SetAlgorithmName 需要三个参数。如果您使用多个算法块,则缺少最后一个参数会导致根本不打印标题名称。
看http://ctan.mirror.norbert-ruehl.de/macros/latex/contrib/algorithm2e/doc/algorithm2e.pdf
\SetAlgorithmName{algorithmname}{algorithmautorefname}{算法列表名称} 重新定义算法名称和算法句子列表。例如:\SetAlgorithmName{Protocol}{协议列表} 如果您更喜欢协议而不是算法。第二个参数是来自 hyperref 包的 \autoref 将使用的名称。