切换列表转义中的条件

切换列表转义中的条件

我正在寻找一种在lstlisting转义符内切换条件的方法。

MWE:我预计会这样

\documentclass{minimal}
\usepackage{listings}
\lstset{escapechar=\%}

\newif\ifa
\newcommand\x{\ifa a \else b \fi}

\begin{document}
\begin{lstlisting}
%\atrue%
x := %\x%
%\afalse%
x := %\x%
\end{lstlisting}
\end{document}

输出

x := a
x := b

相反,我得到

x := b
x := b

对于使用切换的类似代码也会发生同样的情况etoolbox

答案1

正如您已经提到的,您可以使用\global

全球的

\documentclass{minimal}
\usepackage{listings}
\lstset{escapechar=\%}

\newif\ifa
\newcommand\x{\ifa a \else b \fi}

\begin{document}
\begin{lstlisting}
%\global\atrue%
x := %\x%
%\global\afalse%
x := %\x%
\end{lstlisting}
\end{document}

相关内容