Tengo un pseudocódigo para un algoritmo, que parece estar bien (con algunos errores menores en la compilación). Pero el mayor problema es que la numeración de los pasos no coincide con el número de pasos del algoritmo. Tengo un MWE a continuación.
\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}
Notarás que el número "2" aparece muchas veces. Se agradecería cualquier ayuda sobre cómo arreglar la numeración. ¿Algunas ideas?
PD: Puede que notes que esta es la plantilla IEEE, en caso de que te ayude.
Respuesta1
Deberías usar uno algorithmic
o algpseudocode
no ambos. Estás mezclando la sintaxis de ambos paquetes y obviamente obtienes errores.
Aquí hay una versión correcta, donde los paquetes y las definiciones no están duplicados.
Yo señalaría que
caption
(y por lo tantosubcaption
) no se puede utilizar conIEEEtran
. Si necesita subfloats, cargue\usepackage[caption=false]{subfig}
y verifique la sintaxis de este paquete;textcomp
ya no es necesariopsfrag
no es compatible conpdflatex
\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}
También recomendaría cargar \usepackage{newtx}
(y eliminar amssymb
lo que ya está cubierto por el primero). Este es el resultado que obtienes, con matemáticas en fuentes tipo Times. Aquí las primeras líneas para ver cómo se llama el paquete (después amsthm
).
\documentclass[conference]{IEEEtran}
\usepackage{cite}
\usepackage{amsmath,amsthm}
\usepackage{newtx}