我有一些算法的伪代码,看起来还不错(编译时有一些小错误)。但最大的问题是步骤的编号与算法中的步骤数不匹配。下面是我编写的 MWE。
\documentclass[conference]{IEEEtran}
\usepackage{cite}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{graphicx}
\usepackage{textcomp}
\usepackage{xcolor}
\usepackage{algorithm}
\usepackage{algorithmic}
\usepackage{tabulary}
\usepackage{algpseudocode}
\usepackage{booktabs}
\usepackage{cleveref}
\usepackage{enumitem}
\usepackage{subcaption}
\usepackage{amsmath,amssymb,amsthm,bbm,color,psfrag,amsfonts}
\algrenewcommand\algorithmicrequire{\textbf{Input:}}
\algrenewcommand\algorithmicensure{\textbf{Output:}}
\usepackage{url}
\newtheorem{theorem}{Theorem}
\newtheorem{lemma}{Lemma}
\newtheorem{asu}{Assumption}
\newtheorem{remark}{Remark}
\theoremstyle{definition}
\newtheorem{definition}{Definition}[section]
\crefname{lemma}{Lemma}{Lemmas}
\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em
T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
\algrenewcommand\algorithmicrequire{\textbf{Input:}}
\algrenewcommand\algorithmicensure{\textbf{Output:}}
\begin{document}
\begin{algorithm}[H]
\caption{My Algorithm}\label{alg:greedy}
\begin{algorithmic}[1]
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
\Require $M^0=4$.
\Ensure $V,\text{found}$
\WHILE{$P^l \neq \emptyset$}
\STATE{state}
\For{$i \in 1....|N|$}
\State{Compute }
\EndFor \label{nio}
\State Get $\theta$ \%. \label{tre}
\State $G \gets$ Find vals$) \label{find_vals}
\State $T,Y^{m+1} \gets $ \Call{Otherfunc}{$I$} \label{p}
\ENDWHILE
\end{algorithmic}
\end{algorithm}
\end{document}
您会注意到数字“2”出现了多次。如果您能提供任何有关如何修复编号的帮助,我们将不胜感激。有什么想法吗?
PS 您可能会注意到这是 IEEE 模板,希望它能有所帮助。
答案1
您应该使用其中一个,algorithmic
而algpseudocode
不是同时使用。您混合了两个包的语法,显然会出现错误。
这是一个正确的版本,其中包和定义没有重复。
我想指出的是
caption
(因此subcaption
)不能与一起使用IEEEtran
。如果需要子浮点数,请加载\usepackage[caption=false]{subfig}
并检查此包的语法;textcomp
不再需要psfrag
不兼容pdflatex
\documentclass[conference]{IEEEtran}
\usepackage{cite}
\usepackage{amsmath,amssymb,amsthm}
\usepackage{graphicx}
%\usepackage{textcomp}% no longer necessary
\usepackage{xcolor}
\usepackage{algorithm}
%\usepackage{algorithmic}
\usepackage{algpseudocode}
\usepackage{booktabs}
\usepackage{enumitem}
%\usepackage{subcaption}% not with IEEEtran
\usepackage{url}
\usepackage{cleveref}
\algrenewcommand\algorithmicrequire{\textbf{Input:}}
\algrenewcommand\algorithmicensure{\textbf{Output:}}
\newtheorem{theorem}{Theorem}
\newtheorem{lemma}{Lemma}
\newtheorem{asu}{Assumption}
\newtheorem{remark}{Remark}
\theoremstyle{definition}
\newtheorem{definition}{Definition}[section]
\crefname{lemma}{Lemma}{Lemmas}
\begin{document}
\begin{algorithm}[H]
\caption{My Algorithm}\label{alg:greedy}
\begin{algorithmic}[1]
\Require $M^0=4$.
\Ensure $V,\text{found}$
\While{$P^l \neq \emptyset$}
\State state
\For{$i \in 1\dots|N|$}
\State Compute
\EndFor \label{nio}
\State Get $\theta$ \%. \label{tre}
\State $G \gets$ Find vals \label{find_vals}
\State $T,Y^{m+1} \gets $ \Call{Otherfunc}{$I$} \label{p}
\EndWhile
\end{algorithmic}
\end{algorithm}
\end{document}
我还建议加载\usepackage{newtx}
(并删除amssymb
前者已经涵盖的内容)。这是您获得的输出,其中包含 Times 字体的数学运算。以下是前几行,用于查看如何调用包(之后amsthm
)。
\documentclass[conference]{IEEEtran}
\usepackage{cite}
\usepackage{amsmath,amsthm}
\usepackage{newtx}