仅当定义时才写出变量的名称

仅当定义时才写出变量的名称

我正在尝试制作一个宏,如果定义了变量,它就会写出变量中的文本,否则什么也不会写出。

在 CLS 文件中我有以下内容:

\newcommand*{\myname}[1]{\def\@myname{#1}}

后来我定义了以下内容:

\newcommand{\writeot}{
\pagestyle{fancy}
\fancyhead{}
\fancyfoot{}
\renewcommand{\footrulewidth}{.4pt}
\renewcommand{\headrulewidth}{0pt}
\fancyfoot[C]{
****\ifdef{\myname}{}{\@instaname}**
}**
\thispagestyle{fancy}
}

在 TEX 文档中我希望能够选择设置\myname或不设置。

当我调用 时\writeout,如果我没有设置 ,那么我就不写任何内容\myname,或者如果设置了 ,那么我就把它写出来。

我尝试了 的几个选项etoolbox ifdef, ifdefempty, ifvoid, ifundef,但无法让它们工作。我总是必须\myname在 TEX 中定义 (否则编译会失败),因此即使定义为 ,它总是转到“真选项” \myname{}

我希望我的问题清楚,我是第一次用乳胶制作自己的 CLS,

答案1

你不需要任何测试,只需使用

 \fancyfoot[C]{****\@instaname**}

其中类定义

\newcommand*{\myname}[1]{\def\@instaname{#1}}
\myname{}

因此默认情况下页脚将位于******文档中

\myname{hello}

那么页脚将是****hello**

相关内容