算法:将 If 和 EndIf 放入同一行

算法:将 If 和 EndIf 放入同一行

我使用算法包在 latex 中创建伪代码源。我有一个包含许多简短 if 语句的源。每次都将 END(来自 EndIf)放在新行中,这会导致布局冗长:

\documentclass[11pt,a4paper,leqno,fleqn]{article}
\usepackage{algpseudocode}
\usepackage[Algorithmus]{algorithm}
\begin{document}
\begin{algorithm}
\caption{WHILE-Modulo}
\begin{algorithmic}[1]
\Require f($x_1,x_2$)
\State $x_z := 1$
\While{$x_z \not = 0$}
    \If{$x_z = 1$} \If{$x_1 = 0$} $x_z = 10$ \EndIf \EndIf
    \If{$x_z = 2$} $x_3 := x_1 \dot{-}x_2$\EndIf
    \If{$x_z = 3$} $x_4 := x_2 \dot{-}x_1$\EndIf
    \If{$x_z = 4$} \If{$x_3 = 0$} $x_z = 7$\EndIf \EndIf
    \If{$x_z = 5$} $x_1 := x_3$\EndIf
    \If{$x_z = 6$} $x_z = 2$\EndIf
    \If{$x_z = 7$} \If{$x_4 = 0$} $x_z = 9$\EndIf \EndIf
    \If{$x_z = 8$} $x_z = 10$\EndIf
    \If{$x_z = 9$} $x_1 := x_1 \dot{-} x_2$\EndIf
    \If{$x_z = 10$} $x_z = 0$\EndIf
    \If{$x_z = 11$} $x_z = 0$\EndIf
\EndWhile
\end{algorithmic}
\end{algorithm}
\end{document}

导致这样的输出:

在此处输入图片描述

但是,我希望单个 If 语句位于一行中,类似于:

在此处输入图片描述

您有什么想法吗?我非常感谢您的所有意见

答案1

您可以使用以下命令创建自己的“中级 IF”(或单行 IF)语句:

在此处输入图片描述

\documentclass{article}
\usepackage{algpseudocode}
\usepackage[Algorithmus]{algorithm}
\algnewcommand{\IIf}[1]{\State\algorithmicif\ #1\ \algorithmicthen}
\algnewcommand{\EndIIf}{\unskip\ \algorithmicend\ \algorithmicif}
\begin{document}
\begin{algorithm}
  \caption{WHILE-Modulo}
  \begin{algorithmic}[1]
    \Require f($x_1,x_2$)
    \State $x_z := 1$
    \While{$x_z \not = 0$}
      \If{$x_z = 1$} \IIf{$x_1 = 0$} $x_z = 10$ \EndIIf \EndIf
      \IIf{$x_z = 2$} $x_3 := x_1 \dot{-}x_2$\EndIIf
      \IIf{$x_z = 3$} $x_4 := x_2 \dot{-}x_1$\EndIIf
      \If{$x_z = 4$} \IIf{$x_3 = 0$} $x_z = 7$\EndIIf \EndIf
      \IIf{$x_z = 5$} $x_1 := x_3$\EndIIf
      \IIf{$x_z = 6$} $x_z = 2$\EndIIf
      \If{$x_z = 7$} \IIf{$x_4 = 0$} $x_z = 9$\EndIIf \EndIf
      \IIf{$x_z = 8$} $x_z = 10$\EndIIf
      \IIf{$x_z = 9$} $x_1 := x_1 \dot{-} x_2$\EndIIf
      \IIf{$x_z = 10$} $x_z = 0$\EndIIf
      \IIf{$x_z = 11$} $x_z = 0$\EndIIf
    \EndWhile
  \end{algorithmic}
\end{algorithm}
\end{document}

相关内容