在 algpseudocode 包中强制换行

在 algpseudocode 包中强制换行

我写了以下伪代码:

\begin{algorithm}
\caption{Check if any player has won.}

\begin{algorithmic}[1]
\Procedure{isWin}{$Game$}
\ForAll{$seq \in \Call{getWinSeqs}{Game}$}
  \For{$i \gets 0, length(seq) - 1$}
    \If{$\not seq[i] = seq[i + 1]$}
      break
    \EndIf
  \EndFor
  \If{$seq[i + 1] = `X'$}
    \Return `X'
  \ElsIf{$seq[i + 1] = `O'$}
    \Return `O'
  \EndIf
\EndFor
\Return null
\EndProcedure
\end{algorithmic}
\end{algorithm}

渲染结果如下:

算法渲染

如图所示,finalreturn直接放在 之后end for。如何强制在 之后换行return

答案1

您正在使用algpseudocode而不是algorithmicx;重新定义\algorithmicreturn问题\State

我还对您的代码做了一些改进。特别注意,否定符号是\lnot,而\not是不同的命令。

\documentclass{article}
\usepackage{algpseudocode}

\newcommand{\var}[1]{\mathit{#1}}
\newcommand{\qt}[1]{\mbox{`#1'}}
\algrenewcommand{\algorithmicreturn}{\State \textbf{return}}

\begin{document}
\begin{algorithmic}[1]            
\Procedure{isWin}{$\var{Game}$}
\ForAll{$\var{seq} \in \Call{getWinSeqs}{\var{Game}}$}
  \For{$i \gets 0, \mathrm{length}(\var{seq}) - 1$}
    \If{$\lnot \var{seq}[i] = \var{seq}[i + 1]$}
      break
    \EndIf
  \EndFor
  \If{$\var{seq}[i + 1] = \qt{X}$}
    \Return $\qt{X}$
  \ElsIf{$seq[i + 1] = \qt{O}$}
    \Return $\qt{O}$
  \EndIf
\EndFor
\Return null
\EndProcedure
\end{algorithmic}
\end{document}

在此处输入图片描述

相关内容