我想用该algorithm2e
包将四个算法集排列成两行两列,如下图所示。我尝试过该subfigure
包,也阅读了几个相关的问题和答案,但到目前为止还无法产生如下所示的输出。
|------------------| |-------------------|
| | | |
| | | |
| | | |
| | | |
|------------------| |-------------------|
(a) ... (b) ...
|------------------| |-------------------|
| | | |
| | | |
| | | |
| | | |
|------------------| |-------------------|
(c) ... (d) ...
Figure 1: ...
答案1
您可以按如下方式使用包subfigure
中的环境subcaption
。
请注意,subfigure
环境采用相同的可选参数minipage
,因此如果您发现自己处于不同大小的代码片段的情况,您可以使用(例如)\begin{subfigure}[t]{.5\textwidth}...
\documentclass{article}
\usepackage{algorithm2e}
\usepackage{subcaption}
\newcommand{\myalgorithm}{%
\begin{algorithm}[H]
\SetAlgoLined
\KwData{this text}
\KwResult{how to write algorithm with \LaTeX2e }
initialization\;
\While{not at end of this document}{
read current\;
\eIf{understand}{
go to next section\;
current section becomes this one\;
}{
go back to the beginning of current section\;
}
}
\end{algorithm}}
\begin{document}
\begin{figure}
\begin{subfigure}{.5\textwidth}
\myalgorithm
\caption{How to write algorithms}
\end{subfigure}% need this comment symbol to avoid overfull hbox
\begin{subfigure}{.5\textwidth}
\myalgorithm
\caption{How to write algorithms}
\end{subfigure}\\
\begin{subfigure}{.5\textwidth}
\myalgorithm
\caption{How to write algorithms}
\end{subfigure}%
\begin{subfigure}{.5\textwidth}
\myalgorithm
\caption{How to write algorithms}
\end{subfigure}
\caption{Main caption}
\end{figure}
\end{document}
答案2
这里有一个选项——它要求您将每个内容包装algorithm
在一个小页面内。
\documentclass{article}
\usepackage[a3paper,landscape]{geometry}% http://ctan.org/pkg/geometry
\usepackage{algorithm2e}% http://ctan.org/pkg/algorithm2e
\newcommand{\myalg}[1]{%
\begin{minipage}{.4\linewidth}
\begin{algorithm}[H]
\SetAlgoLined
\KwData{this text}
\KwResult{how to write algorithm with \LaTeX2e }
initialization\;
\While{not at end of this document}{
read current\;
\eIf{understand}{
go to next section\;
current section becomes this one\;
}{
go back to the beginning of current section\;
}
}%
\caption{How to write algorithms}%
\label{#1}%
\end{algorithm}%
\end{minipage}%
}
\begin{document}
\begin{figure}[htb]
\null\hfill \myalg{alg1} \hfill \myalg{alg2} \hfill\null\par \medskip
\null\hfill \myalg{alg3} \hfill \myalg{alg4} \hfill\null
\caption{Here are some algorithms.}
\end{figure}
\end{document}
在上面的例子中,为了简洁起见,我将命令\myalg{<lab>}
排版为相同的algorithm
,只是标签不同<lab>
。这允许您在实际中引用各个算法figure
。当然,您可以将其更改为仅表示(a)、(b)、(c)和(d)。
geometry
提供a3paper
和landscape
方向,因为算法只是示例(很大)。在常规使用中,您可能不需要这样做。.4\linewidth
在 中选择 也是如此minipage
。您可以根据最终输出调整这一点。minipage
还允许使用选项参数指定垂直对齐。因此,例如,如果算法2短于算法 1,您可以指定[t]
第二个,以便它们在顶部垂直对齐。