我正在尝试制作一个宏,如果定义了变量,它就会写出变量中的文本,否则什么也不会写出。
在 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**