如何通过条件案例仅选择一种情况

如何通过条件案例仅选择一种情况

环境:

\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}

答案2

正如我在评论中提到的那样(文档内容是从技术员回答):

\documentclass{beamer}
\newcommand{\modela}[2]{\begin{frame} \begin{#1}#2\end{#1} \end{frame} } 

\begin{document}
    \modela{enumerate}{
        \item Test
        \item Test
    }
    \modela{description}{
        \item[T] est
        \item[Test] Quack
    }
\end{document}

在此处输入图片描述

相关内容