环境:
\documentclass{beamer}
有一个想法是创建一个新的 CS,例如 \modela 像这样:
\modela{enumerate}{#2}
扩展如下:
\begin{frame}
\begin{enumerate}
#2
\end{enumerate}
\end{frame}
尽管
\modela{description}{#2}
可以展开为:
\begin{frame}
\begin{description}
#2
\end{description}
\end{frame}
有没有办法通过条件命令而不是 \if 命令序列来实现此命令,因为不仅有两个选项?非常感谢 mcuh!
答案1
这是一个简单版本,可以控制输入(它只允许某些特定环境,而不是直接传递环境名称)。您可以添加更多案例(请参阅interface3.pdf
,第 39 页)。
\documentclass{beamer}
\usepackage{expl3,xparse}
\ExplSyntaxOn
\tl_new:N \c_enum_tl
\tl_set:Nn \c_enum_tl {enumerate}
\tl_new:N \c_desc_tl
\tl_set:Nn \c_desc_tl {description}
\tl_new:N \l__hezilun_tmp_tl
\NewDocumentCommand{\modela}{m m}{
\begin{frame}
\tl_set:Nn \l__hezilun_tmp_tl {#1}
\tl_case:Nn \l__hezilun_tmp_tl {
\c_enum_tl {\begin{enumerate}#2\end{enumerate}}
\c_desc_tl {\begin{description}#2\end{description}}
}
\end{frame}
}
\ExplSyntaxOff
\begin{document}
\modela{enumerate}{
\item Test
\item Test
}
\modela{description}{
\item[T] est
\item[Test] Quack
}
\end{document}
更新:如果你想要一个错误分支,只需使用
\tl_case:NnF \l__hezilun_tmp_tl {
\c_enum_tl {\begin{enumerate}#2\end{enumerate}}
\c_desc_tl {\begin{description}#2\end{description}}
}{Environment not allowed}