У меня есть псевдокод для алгоритма, который выглядит нормально (с небольшими ошибками в компиляции). Но самая большая проблема в том, что нумерация шагов не соответствует количеству шагов в алгоритме. У меня есть 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" появляется много раз. Любая помощь относительно того, как исправить нумерацию, будет оценена по достоинству. Есть идеи?
P.S. Вы можете заметить, что это шаблон 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}