检查两个标签是否未定义

检查两个标签是否未定义

我正在努力测试是否有两个未定义的标签,以便仅在这种情况下包含一些特定的文件。

到目前为止,我只需要一个条件: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}

相关内容