IEEEtran 建议不要使用算法浮动环境。所以我一直在尝试模仿算法的原始样子,但没有成功。
这是我的算法与算法浮动环境:
\begin{algorithm}[!t]
\caption{my algorithm}
\label{alg: alg}
\begin{algorithmic}[1]
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
\REQUIRE input
\ENSURE output \\
\STATE $i\gets 10$
\IF {$i\geq 5$}
\STATE $i\gets i-1$
\ELSE
\IF {$i\leq 3$}
\STATE $i\gets i+2$
\ENDIF
\ENDIF
\end{algorithmic}
\end{algorithm}
但是,如果我使用图形环境,该算法看起来就很丑陋。
\begin{figure}[!t]
\caption{my algorithm}
\label{alg: alg}
\begin{algorithmic}[1]
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
\REQUIRE input
\ENSURE output \\
\STATE $i\gets 10$
\IF {$i\geq 5$}
\STATE $i\gets i-1$
\ELSE
\IF {$i\leq 3$}
\STATE $i\gets i+2$
\ENDIF
\ENDIF
\end{algorithmic}
\end{figure}
如何在不违反 IEEEtran 规则的情况下生成像第一个算法?
完整代码如下:
\documentclass[journal]{IEEEtran}
\usepackage{amsmath,amsfonts}
\usepackage{algorithmic}
\usepackage{algorithm}
\usepackage{array}
\usepackage[]{subfig}
\usepackage{stfloats}
\usepackage{graphicx}
\usepackage{mathtools}
\usepackage{newtxtext, newtxmath}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{algorithm}[!t]
\caption{my algorithm}
\label{alg: alg}
\begin{algorithmic}[1]
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
\REQUIRE input
\ENSURE output \\
\STATE $i\gets 10$
\IF {$i\geq 5$}
\STATE $i\gets i-1$
\ELSE
\IF {$i\leq 3$}
\STATE $i\gets i+2$
\ENDIF
\ENDIF
\end{algorithmic}
\end{algorithm}
\lipsum[2]
\begin{figure}[!t]
\caption{my algorithm}
\label{alg: alg}
\begin{algorithmic}[1]
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
\REQUIRE input
\ENSURE output \\
\STATE $i\gets 10$
\IF {$i\geq 5$}
\STATE $i\gets i-1$
\ELSE
\IF {$i\leq 3$}
\STATE $i\gets i+2$
\ENDIF
\ENDIF
\end{algorithmic}
\end{figure}
\end{document}
答案1
algorithm
以前不允许使用这个包。文件中对此进行了如下说明bare_adv.tex
。
请勿使用 algorithm.sty(由同一作者编写)或 algorithm2e.sty(由 Christophe Fiorio 编写)提供的算法浮点环境,因为 IEEE 不使用专用的算法浮点类型,并且提供这些类型的包不会提供正确的 IEEE 样式标题。
现在 IEEE 允许algorithm
打包。您可以选择任何期刊模板IEEE 模板选择器。 例如,IEEE 物联网期刊模板,我们打开bare_jrnl_new_sample4.tex
里面的。可以看到如下代码。
\documentclass[lettersize,journal]{IEEEtran}
\usepackage{amsmath,amsfonts}
\usepackage{algorithmic}
\usepackage{algorithm}
...
\begin{algorithm}[H]
\caption{Weighted Tanimoto ELM.}\label{alg:alg1}
\begin{algorithmic}
\STATE
\STATE {\textsc{TRAIN}}$(\mathbf{X} \mathbf{T})$
\STATE \hspace{0.5cm}$ \textbf{select randomly } W \subset \mathbf{X} $
\STATE \hspace{0.5cm}$ N_\mathbf{t} \gets | \{ i : \mathbf{t}_i = \mathbf{t} \} | $ \textbf{ for } $ \mathbf{t}= -1,+1 $
\STATE \hspace{0.5cm}$ B_i \gets \sqrt{ \textsc{max}(N_{-1},N_{+1}) / N_{\mathbf{t}_i} } $ \textbf{ for } $ i = 1,...,N $
\STATE \hspace{0.5cm}$ \hat{\mathbf{H}} \gets B \cdot (\mathbf{X}^T\textbf{W})/( \mathbb{1}\mathbf{X} + \mathbb{1}\textbf{W} - \mathbf{X}^T\textbf{W} ) $
\STATE \hspace{0.5cm}$ \beta \gets \left ( I/C + \hat{\mathbf{H}}^T\hat{\mathbf{H}} \right )^{-1}(\hat{\mathbf{H}}^T B\cdot \mathbf{T}) $
\STATE \hspace{0.5cm}\textbf{return} $\textbf{W}, \beta $
\STATE
\STATE {\textsc{PREDICT}}$(\mathbf{X} )$
\STATE \hspace{0.5cm}$ \mathbf{H} \gets (\mathbf{X}^T\textbf{W} )/( \mathbb{1}\mathbf{X} + \mathbb{1}\textbf{W}- \mathbf{X}^T\textbf{W} ) $
\STATE \hspace{0.5cm}\textbf{return} $\textsc{sign}( \mathbf{H} \beta )$
\end{algorithmic}
\label{alg1}
\end{algorithm}
...
\end{document}
所以,这里有一个示例供您使用。我建议您使用algpseudocodex
包。我根据编辑器的修改调整了一些样式。希望这对您有所帮助。
\documentclass{IEEEtran}
\usepackage[commentColor=black]{algpseudocodex}
\tikzset{algpxIndentLine/.style={draw=black}}
\algrenewcommand{\alglinenumber}[1]{\bfseries\footnotesize #1}
\algrenewcommand{\textproc}{}
\algrenewcommand{\algorithmicrequire}{\textbf{Input:}}
\algrenewcommand{\algorithmicensure}{\textbf{Output:}}
\usepackage{algorithm}
\floatplacement{algorithm}{tbp}
\makeatletter
\newcommand{\algorithmname}{\ALG@name}
\renewcommand{\floatc@ruled}[2]{{\@fs@cfont #1:} #2\par}
\makeatother
\begin{document}
\begin{algorithm}
\caption{Algorithm}
\label{alg}
\begin{algorithmic}[1]
\Require input
\Ensure output
\State $i\gets 10$
\If {$i\geq 5$}
\State $i\gets i-1$
\ElsIf{$i\leq 3$}
\State $i\gets i+2$
\EndIf
\end{algorithmic}
\end{algorithm}
\end{document}
默认样式
\documentclass{IEEEtran}
\usepackage{algpseudocodex}
\algrenewcommand{\algorithmicrequire}{\textbf{Input:}}
\algrenewcommand{\algorithmicensure}{\textbf{Output:}}
\usepackage{algorithm}
\begin{document}
\begin{algorithm}
\caption{Algorithm}
\label{alg}
\begin{algorithmic}[1]
\Require input
\Ensure output
\State $i\gets 10$
\If {$i\geq 5$}
\State $i\gets i-1$
\ElsIf{$i\leq 3$}
\State $i\gets i+2$
\EndIf
\end{algorithmic}
\end{algorithm}
\end{document}