算法中的 Switch 案例

算法中的 Switch 案例

我如何在 中使用 switch case algorithmicx?例如这样的代码:

switch s do
--case a
----assert(1)
--case b
----assert(0)

等等。可以将其定义为命令吗?

答案1

使用以下内容:

在此处输入图片描述

\documentclass{article}
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx
\begin{document}
% New definitions
\algnewcommand\algorithmicswitch{\textbf{switch}}
\algnewcommand\algorithmiccase{\textbf{case}}
\algnewcommand\algorithmicassert{\texttt{assert}}
\algnewcommand\Assert[1]{\State \algorithmicassert(#1)}%
% New "environments"
\algdef{SE}[SWITCH]{Switch}{EndSwitch}[1]{\algorithmicswitch\ #1\ \algorithmicdo}{\algorithmicend\ \algorithmicswitch}%
\algdef{SE}[CASE]{Case}{EndCase}[1]{\algorithmiccase\ #1}{\algorithmicend\ \algorithmiccase}%
\algtext*{EndSwitch}%
\algtext*{EndCase}%

\begin{algorithmic}[1]
  \Switch{$s$}
    \Case{$a$}
      \Assert{0}
    \EndCase
    \Case{$b$}
      \Assert{1}
    \EndCase
  \EndSwitch
\end{algorithmic}
\end{document}​

新的“环境” \Switch...\EndSwitch\Case...\EndCase都定义为具有开始和结束文本。但是,使用\algnotext*{<env>}会删除该命令的任何排版,从而有效地删除和 的结束命令\Switch\Case它仍然是必要的,因为可能有多个条目,因此无法通过某些行数终止来概括。

相关内容