这和我之前的一个问题有关,如何在条件语句中使用列表。
我正在使用那里提供的答案来包含不同的代码片段,当它们的原始库包含在不同的文档中时。现在我想对其他库/文档执行相同的操作,而不必每次都编写新的 \if。换句话说,我想让条件本身可重复使用。
到目前为止,我已经使用过 \IfSubStr,但我无法弄清楚如何将新的 \if 打包到可重复使用的宏中。
为了说明我所说的内容,这是我对常规文本使用条件的方式(效果很好):
\NewDocumentCommand{\ifjobnamecontains}{ m +m +m }{%
\IfSubStr{\jobname}{\detokenize{#1}}%
{#2}%
{#3}%
}
>>>>
\ifjobnamecontains{<DOCUMENTA>}{Here is text that goes in Document A.}
{Here is text that goes in all documents that are not Document A.}
但是,我不能将这种类型的条件用于代码片段。有没有办法让以下 MWE 中的 \if 条件同样可重复使用?(注意:此 MWE 中的文档名称为 MWE.tex)。
\documentclass[a4paper]{article}
\newif\ifmwe
\usepackage{listings}
\usepackage{xstring}
\lstset{basicstyle=\ttfamily,breaklines=true}
\begin{document}
Here is lstlisting within a conditional:
\IfSubStr{\jobname}{\detokenize{MWE}}%
{\mwetrue}%true
{\mwefalse}%false
\ifmwe
\begin{lstlisting}
This is sample code.
\end{lstlisting}
\else
fasle
\fi