逐字类型参数的条件格式

逐字类型参数的条件格式

我编写了包含 matlab 代码的答案集。为此,我使用了matlab-prettifier,但我需要根据输出问题集问题还是提供答案来调整输出。为此,我一直在调整某个计数器的设置;在下面的示例中,它被称为ctr

但是下面的代码会引发错误,大概是因为您不能将逐字类型环境放在其他任何东西里面,而listing包就是由这样的环境组成的。

\documentclass{minimal}
\usepackage{ifthen}
\newcounter{ctr}
\setcounter{ctr}{1}
\usepackage{listing}
\usepackage[framed]{matlab-prettifier}
\lstnewenvironment{myMP}{%
    \lstset{style={Matlab-editor}}%
           }{}
\begin{document}
\ifthenelse{\thectr=1}{
    \begin{myMP}
        a = 1
    \end{myMP}
}{}
\end{document}

之前的帖子这是暗示克里斯蒂安·赫普弗可以可以通过一些技巧来完成,包括scantokens等等。

如果真的可以做到这一点,有人能告诉我在哪里可以学到这些技巧吗?谢谢!或者还有其他间接方式来实现条件输出吗?

谢谢!

答案1

您不能在 的参数中使用逐字环境\ifthen。但您可以使用原始条件。

\documentclass{article}

\usepackage{listing}
\usepackage[framed]{matlab-prettifier}

\newcounter{ctr}
\setcounter{ctr}{1}

\lstnewenvironment{myMP}
 {\lstset{style={Matlab-editor}}}
 {}

\begin{document}

\ifnum\value{ctr}=1
\begin{myMP}
a = 1
\end{myMP}
\fi

\end{document}

答案2

在这里,我将列表保存在临时文件中\vbox,并且仅有条件地将其打印出来。

\documentclass{minimal}
\usepackage{ifthen}
\newcounter{ctr}
\setcounter{ctr}{1}
\usepackage{listing}
\usepackage[framed]{matlab-prettifier}
\lstnewenvironment{myMP}{%
    \lstset{style={Matlab-editor}}%
           }{}
\begin{document}
\setbox0=\vbox{%
    \begin{myMP}
        a = 1
    \end{myMP}
}
\ifthenelse{\thectr=1}{\box0}{Not!}
\end{document}

相关内容