在另一篇帖子multicol
,@Jubobs 建议在环境周围使用包algorithmic
,将算法排版为两列。
最近,我遇到了一个与美观相关的问题:可能一列中有一条长线,而另一列中的所有线都很短。例如:
以下是上图的代码:
\documentclass[twocolumn]{article}
\usepackage[width=11cm]{geometry} % page width is reduced to show the effect
\usepackage{multicol}
\usepackage{algorithm}
\usepackage{algpseudocode}
\begin{document}
\begin{algorithm*}[t]
\caption{An algorithm with a long line.}
\label{alg1}
\begin{multicols}{2}
\begin{algorithmic}[1]
\If{$(x = y^2+1$ and $z=x^3+4y -12)$ }
\State $a \gets b + c$
\EndIf
\columnbreak
\State $x \gets 0$
\end{algorithmic}
\end{multicols}
\end{algorithm*}
\end{document}
是否可以将Algorithmicx
环境排版为两列,但宽度不等?我尝试vwcol
了这个帖子,但我无法让它适用于我的情况。
答案1
这会是您想要的吗?建议的解决方案使用varwidth
包。由于algorithmic
环境包装在内varwidth
,algostore
并且algorestore
用于继续编号。
注意xx\linewidth
可以用来改变varwidth
代码:
\documentclass[twocolumn]{article}
\usepackage[width=11cm]{geometry} % page width is reduced to show the effect
\usepackage{varwidth}
\usepackage{algorithm}
\usepackage{algpseudocode}
\begin{document}
%
\begin{algorithm*}[t]
\caption{An algorithm with a long line.}
\label{alg1}
\begin{varwidth}[t]{0.45\textwidth} % change 0.45 to suit your need
\begin{algorithmic}[1]
\If{$(x = y^2+1$ and $z=x^3+4y -12)$ }
\State $a \gets b + c$
\EndIf
\algstore{myalg}
\end{algorithmic}
\end{varwidth}\quad\quad\quad % the gap between columns
\begin{varwidth}[t]{0.4\textwidth} % change 0.4 to suit your need
\begin{algorithmic}[1]
\algrestore{myalg}
\State $x \gets 0$
\end{algorithmic}
\end{varwidth}
\end{algorithm*}
\end{document}