如果我的文档没有设置特定值,该如何处理?

如果我的文档没有设置特定值,该如何处理?

我仍在学习乳胶,复制粘贴了很多我不理解的内容,因此对于我的无知深表歉意。

假设有如下文档:

\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

相关内容