我仍在学习乳胶,复制粘贴了很多我不理解的内容,因此对于我的无知深表歉意。
假设有如下文档:
\documentclass{mycls}
\title{A title}
\targetaudience{A target audience}
\begin{document}
\maketitle
\end{document}
在我的.cls
我有这样的事情:
\newcommand{\targetaudience}[1]{\gdef\tf@targetaudience{#1}}
\targetaudience{\@empty}
我正在尝试向我的页面添加内容.cls
,即定义页面的部分\maketitle
。我想在标题页中添加一些有条件的内容,例如:
\ifx\tf@targetaudience\empty
\else
\textbf{Target Audience:} & \tf@targetaudience\\
\fi
我知道人们喜欢有一个“最小工作示例”,但老实说,我不知道如何将我已有的内容变成示例。我在谷歌上搜索了执行“if”的不同方法,但到目前为止没有任何方法奏效。任何提示都将不胜感激。
答案1
这取决于你如何定义“无”。有些人将无定义为存在的特定事物,而另一些人则将无定义为不存在的事物。
让我们考虑一下您的以下内容.cls
:
\newcommand{\targetaudience}[1]{\gdef\tf@targetaudience{#1}}
\targetaudience{\@empty}
您正在定义\targetaudience
重新定义(和/或覆盖)\tf@targetaudience
,并立即将其设置为\@empty
。因此,您可以测试是否\tf@targetaudience
看起来像,\@empty
以查看用户是否没有执行任何操作:
\expandafter\ifx\expandafter\@empty\tf@targetaudience
Target audience not set.
\else
Target audience set: \@tf@targetaudience
\fi
我们必须扩展\tf@targetaudience
才能对其进行测试\@empty
。或者,考虑
\newcommand{\targetaudience}[1]{\gdef\tf@targetaudience{#1}}
没有设置 any \targetaudience
。现在你可以测试是否\tf@targetaudience
存在:
\@ifundefined{tf@targetaudience}
{Target audience not set.}
{Target audience set: \@tf@targetaudience}
与上述类似的 e-TeX 方法是
\ifcsname tf@targetaudience \endcsname
Target audience set: \@tf@targetaudience
\else
Target audience not set.
\fi