我正在努力测试是否有两个未定义的标签,以便仅在这种情况下包含一些特定的文件。
到目前为止,我只需要一个条件:workshop
,所以我检查如下:
\ifundef{\workshop}{
\input{conclusion.tex}
}{\relax}
但现在我必须检查另一个条件是否也未设置(trainig
)。
我正在玩etoolbox
:
\ifboolexpr{
\ifundef{\dockerWorkshop}{\relax}{\relax}
and
\ifundef{\training}{\relax}{\relax}
}{
\input{conclusion.tex}
\input{thoughts.tex}
}{\relax}
但结果是:
Runaway argument?
{The invalid part is: '\detokenize { \ifundef {\workshop }{\relax \ETC.
! Paragraph ended before \PackageError was complete.
有办法实现这个吗?
答案1
您使用的\ifboolexpr
方式错误。对于您的情况,您需要使用test
运算符:
\documentclass{article}
\usepackage{etoolbox}
\begin{document}
\ifboolexpr
{
test {\ifundef{\dockerWorkshop}}
and
test {\ifundef{\training}}
}
{both undefined}
{at least one defined}
\end{document}
答案2
另一个选择,对我来说更简单(但可能不适合你的实际应用程序),是使用 TeX 原语:
\documentclass{article}
\newif\ifWorkshop\Workshoptrue% set workshop to be true
\newif\ifTraining\Trainingfalse% set training to be false
\begin{document}
\ifWorkshop%
\ifTraining Workshop and training!\else Workshop and no training!\fi%
\else
\ifTraining Workshop and training!\else No workshop and no training!\fi%
\fi
\end{document}