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
algorithmic
Sie 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
caption
(und dahersubcaption
) kann nicht mit verwendet werdenIEEEtran
. Wenn Sie Unterfloats benötigen, laden\usepackage[caption=false]{subfig}
und überprüfen Sie die Syntax dieses Pakets;textcomp
ist nicht mehr nötigpsfrag
ist 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}
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}