这个帖子精美地展示了如何使算法伪代码框变得像一列或两列一样宽。
我现在正在编写一个包含许多层的伪代码if
。因此,单列框是不够的。但是,层数又不足以跨越两列。所以我的问题是,如果我使用双列框,RHS 会太空,注释离代码太远。
单列太窄。双列太宽。
我可以自己定义算法框的宽度吗,比如说 1.5 列宽?
答案1
您可以将algorithmic
环境放置在所需宽度的范围内minipage
(例如1.5\columnwidth
):
\documentclass{IEEEtran}
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\usepackage{float}% http://ctan.org/pkg/float
\floatstyle{boxed} % Box...
\restylefloat{figure}% ...figure environment contents.
\begin{document}
\section{A section}
\begin{figure*}
\centering
\caption{Euclid’s algorithm}\label{euclid}
\begin{minipage}{1.5\columnwidth}
\begin{algorithmic}[1]
\Procedure{Euclid}{$a,b$}\Comment{The g.c.d. of a and b}
\State $r\gets a\bmod b$
\While{$r\not=0$}\Comment{We have the answer if r is 0}
\State $a\gets b$
\State $b\gets r$
\State $r\gets a\bmod b$
\EndWhile\label{euclidendwhile}
\State \textbf{return} $b$\Comment{The gcd is b}
\EndProcedure
\end{algorithmic}
\end{minipage}
\end{figure*}
\lipsum[1-15]% dummy text
\end{document}
boxed
为了减小盒子本身的尺寸,删除浮动样式并仅将minipage
dalgorithmic
环境包裹在内会更加方便\fbox
:
\documentclass{IEEEtran}
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\usepackage{float}% http://ctan.org/pkg/float
%\floatstyle{boxed} % Box...
\restylefloat{figure}% ...figure environment contents.
\begin{document}
\section{A section}
\begin{figure*}
\centering
\caption{Euclid’s algorithm}\label{euclid}
\fbox{\begin{minipage}{1.5\columnwidth}
\begin{algorithmic}[1]
\Procedure{Euclid}{$a,b$}\Comment{The g.c.d. of a and b}
\State $r\gets a\bmod b$
\While{$r\not=0$}\Comment{We have the answer if r is 0}
\State $a\gets b$
\State $b\gets r$
\State $r\gets a\bmod b$
\EndWhile\label{euclidendwhile}
\State \textbf{return} $b$\Comment{The gcd is b}
\EndProcedure
\end{algorithmic}
\end{minipage}}
\end{figure*}
\lipsum[1-15]% dummy text
\end{document}