更改算法的标签名称

更改算法的标签名称

我有这个算法:

\begin{algorithm}
\captionsetup[algorithm]{name=MegaAlgorithm}

\DontPrintSemicolon
\KwData{$G=(X,U)$ such that $G^{tc}$ is an order.}
\KwResult{$G’=(X,V)$ with $V\subseteq U$ such that $G’^{tc}$ is an
interval order.}

\caption{\textsc{Fast}SLAM\label{IR}}
\end{algorithm}

使用这些包:

\usepackage{caption}
\usepackage[ruled,vlined]{algorithm2e}

但我的算法的标签名称仍然是“算法 1:FastSLAM”,而不是“MegaAlgorithm 1:FastSLAM”。该怎么办?

答案1

为了保持一致性,请定义一个使用MegaAlgorithm标题样式的新环境。不确定您是否会混合使用常规Algorithms 和MegaAlgorithms,此解决方案适用于:

在此处输入图片描述

\documentclass{article}
\usepackage[ruled,vlined]{algorithm2e}

\newenvironment{megaalgorithm}[1][htb]
  {\renewcommand{\algorithmcfname}{MegaAlgorithm}% Update algorithm name
   \begin{algorithm}[#1]%
  }{\end{algorithm}}

\begin{document}
\begin{megaalgorithm}
  \DontPrintSemicolon
  \KwData{$G=(X,U)$ such that $G^{tc}$ is an order.}
  \KwResult{$G’=(X,V)$ with $V\subseteq U$ such that $G’^{tc}$ is an interval order.}
  \caption{\textsc{Fast}SLAM}
\end{megaalgorithm}
\begin{algorithm}
  \DontPrintSemicolon
  \KwData{$G=(X,U)$ such that $G^{tc}$ is an order.}
  \KwResult{$G’=(X,V)$ with $V\subseteq U$ such that $G’^{tc}$ is an interval order.}
  \caption{\textsc{Fast}SLAM}
\end{algorithm}
\end{document}

megaalgorithm环境\algorithmcfname在调用常规环境之前重新定义用于打印标题类型的宏algorithm。由于重新定义在范围内megaalgorithm,因此它会被本地化并在之后恢复为默认值。这允许您混合不同类型的算法。


如果您希望有一个单独的柜台巨型算法算法megaalgorithm,您可以在序言中使用以下定义:

\makeatletter
\newcounter{megaalgorithm}
\newenvironment{megaalgorithm}[1][htb]
  {\renewcommand{\algorithmcfname}{MegaAlgorithm}% Update algorithm name
   \let\c@algocf\c@megaalgorithm% Update algorithm counter
   \begin{algorithm}[#1]%
  }{\end{algorithm}}
\makeatother

答案2

更简单一点:

algorithm2e包,解决方案如下:[我的 algorithm2e.sty 工作副本是这里]

\usepackage[ruled,vlined]{algorithm2e}
.
.

\begin{algorithm}
 \SetAlgorithmName{MegaAlgorithm}{} %last arg is the title of listing table
   ...
 \caption{How to write algorithm}
\end{algorithm}

此外,由于有相当多的社区使用algorithmicx包(特别是 IEEE 作者),这里是使用包解决相同问题的解决方案algorithmicx

\usepackage{algorithmicx}
\usepackage[Algorithm,ruled]{algorithm}
.
.

\begin{algorithm}
 \floatname{algorithm}{MegaAlgorithm}
  \begin{algorithmic}
    ...
  \end{algorithmic}
 \caption{How to write algorithm}
\end{algorithm}

相关内容