Algorithmicx 每行多个语句与所有行对齐

Algorithmicx 每行多个语句与所有行对齐

我想在 algorithmicx 环境中将 a <- b 和 e <- f 并行放在一行上。我希望 c <- d 和 g <- h 也这样做。然后我想对齐这两行。输出应该如下所示。

1.    a <- b            e <- f
2.    c <- d            g <- h

这是我现在的代码:

\begin{algorithm}
\begin{algorithmic}[1]
\Procedure{Test}{}
    \State{$a \gets b$}
    \State{$e \gets f$}
    \State{$c \gets d$}
    \State{$g \gets h$}
\EndProcedure
\end{algorithmic}
\end{algorithm}

有人知道怎么做吗?我可以使用多列环境吗?

答案1

\BiState您可以定义一个接受两个参数的新命令

\newcommand{\BiState}[2]{%
  \State{\makebox[2cm]{#1\hfill}#2}%
  }

像这样使用它

\documentclass{article}
\usepackage{algorithm}
\usepackage{algpseudocode}

\newcommand{\BiState}[2]{%
  \State{\makebox[2cm]{#1\hfill}#2}%
  }

\begin{document}

\begin{algorithm}
\begin{algorithmic}[1]
\Procedure{Test}{}
    \BiState{$a \gets b$}{$e \gets f$}
    \BiState{$c \gets d$}{$g \gets h$}
\EndProcedure
\end{algorithmic}
\end{algorithm}

\end{document} 

结果

在此处输入图片描述

调整2cm其定义以使其更适合您的要求。

答案2

一个解决方案是:

\documentclass{article}
\usepackage{algorithm}% http://ctan.org/pkg/algorithms
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx

\begin{document}
\begin{algorithm}
\begin{algorithmic}[1]
\Procedure{Test}{}
    \State{$a \gets b \qquad e \gets f$}
    \State{$c \gets d \qquad g \gets h$}
\EndProcedure
\end{algorithmic}
\end{algorithm}

\end{document}

输出: 在此处输入图片描述

相关内容