Wie kann die Nummerierung eines Algorithmus in der Algorithmik- und Algorithmikumgebung korrigiert werden?

Wie kann die Nummerierung eines Algorithmus in der Algorithmik- und Algorithmikumgebung korrigiert werden?

Ich habe einen Pseudocode für einen Algorithmus, der in Ordnung zu sein scheint (mit einigen kleinen Fehlern bei der Kompilierung). Das größte Problem ist jedoch, dass die Nummerierung der Schritte nicht mit der Anzahl der Schritte im Algorithmus übereinstimmt. Ich habe unten einen 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}

Sie werden feststellen, dass die Zahl „2“ häufig vorkommt. Für jede Hilfe zur Korrektur der Nummerierung wäre ich dankbar. Irgendwelche Ideen?

PS: Falls Ihnen das hilft, bemerken Sie möglicherweise, dass es sich hierbei um die IEEE-Vorlage handelt.

Antwort1

algorithmicSie sollten entweder oder verwenden algpseudocode, nicht beides. Sie vermischen die Syntax beider Pakete und erhalten offensichtlich Fehler.

Hier ist eine korrekte Version, bei der Pakete und Definitionen nicht dupliziert sind.

Ich möchte darauf hinweisen, dass

  1. caption(und daher subcaption) kann nicht mit verwendet werden IEEEtran. Wenn Sie Unterfloats benötigen, laden \usepackage[caption=false]{subfig}und überprüfen Sie die Syntax dieses Pakets;

  2. textcompist nicht mehr nötig

  3. psfragist nicht kompatibel mitpdflatex

\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}

Bildbeschreibung hier eingeben

Ich würde auch empfehlen, zu laden \usepackage{newtx}(und zu entfernen amssymb, das ist bereits durch Ersteres abgedeckt). Hier ist die Ausgabe, die Sie erhalten, mit Mathematik in Times-ähnlichen Schriftarten. Hier die ersten Zeilen, um zu sehen, wie das Paket aufgerufen wird (nach amsthm).

\documentclass[conference]{IEEEtran}
\usepackage{cite}
\usepackage{amsmath,amsthm}
\usepackage{newtx}

Bildbeschreibung hier eingeben

verwandte Informationen