我如何在 中使用 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
它仍然是必要的,因为可能有多个条目,因此无法通过某些行数终止来概括。