我编写了包含 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}