如何根据表格环境中的条件显示一些文本?

如何根据表格环境中的条件显示一些文本?

我定义了一个变量\@afwezig来保存未出席某次会议的人员。

\long\def\@afwezig{}
\def\afwezig#1{\def\@afwezig{#1}}

现在我想将会议报告的标题设为如下形式:

\newcommand{\makeheader}{
\noindent
\begin{tabularx}{\linewidth}{l X}
  Aanwezig&: \@aanwezig \\
  Verontschuldigd&: \@verontschuldigd \\
 \ifx\@afwezig\@empty
  \relax
 \else
 Afwezig&: \@afwezig \\
 \fi %

\end{tabularx}

}

如果我在文档中指定,则应该给出一个包含“Afwezig:”部分的表格,但如果未指定任何内容,则给出一个不包含“Afwezig:”部分的表格。问题是,如果我未指定“\afwezig”,则会显示“Afwezig:”部分,当我将其放入文档文件\afwezig{somename}时,会出现大量错误。\afwezig{}

第一个错误:

!不完整 \ifx;第 10 行后的所有文本均被忽略。

我在这里做错了什么?

附言:有人可以创建一个带有条件或 if-else 之类的标签吗?谢谢

答案1

您应该在内部将表格单元格视为本地组,因此您不能\ifx在一个单元格中打开并在另一个单元格中关闭它。要解决这个问题,您需要使用扩展技巧:

\ifx\@afwezig\@empty
  \expandafter\@firstoftwo
\else
  \expandafter\@secondoftwo
\fi
{}
{Afwezig&: \@afwezig \\}

总的来说,这是处理 TeX 条件的更简洁的方法。诸如 expl3 和 etoolbox 之类的编程包提供了一种更简单的方法来编写这些构造;例如,在前者中:

\tl_if_empty:NTF \@afwezig
  {}
  {Afwezig&: \@afwezig \\}

相关内容