![如何根据表格环境中的条件显示一些文本?](https://linux22.com/image/232474/%E5%A6%82%E4%BD%95%E6%A0%B9%E6%8D%AE%E8%A1%A8%E6%A0%BC%E7%8E%AF%E5%A2%83%E4%B8%AD%E7%9A%84%E6%9D%A1%E4%BB%B6%E6%98%BE%E7%A4%BA%E4%B8%80%E4%BA%9B%E6%96%87%E6%9C%AC%EF%BC%9F.png)
我定义了一个变量\@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 \\}