我有这个算法:
\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
标题样式的新环境。不确定您是否会混合使用常规Algorithm
s 和MegaAlgorithm
s,此解决方案适用于:
\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}