默认样式

默认样式

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}

在此处输入图片描述

相关内容