![\if 条件中的问号 -> “\if?\SAP@examdate?”](https://linux22.com/image/459796/%5Cif%20%E6%9D%A1%E4%BB%B6%E4%B8%AD%E7%9A%84%E9%97%AE%E5%8F%B7%20-%3E%20%E2%80%9C%5Cif%3F%5CSAP%40examdate%3F%E2%80%9D.png)
\if
我无法理解命令中的问号\if?\SAP@examdate?
,我在 sapthesis 的 .cls 中遇到了以下语句(CTAN 链接):
\ifSAP@noexaminfo\relax
\else
\if?\SAP@examdate?
\ifcase\SAP@examinercount
\SAP@ThesisNotDefensedLabel%
\else
\ClassError{sapthesis}{You have specified one or more examiners but not
the date of the final exam}{E.g. \protect\examdate{17 July 2015}}
\fi
\else
\ifcase\SAP@examinercount
%\ClassError{sapthesis}{You have specified the final exam date but no examiner}{E.g. \protect\examiner{Prof. Giulio Cesare}}
\SAP@ThesisDefensedLabelA\ \SAP@examdate
\else
\SAP@ThesisDefensedLabelA\ \SAP@examdate\\
\SAP@ThesisDefensedLabelB:\\[2mm]
\the\SAP@examinertoks%
\fi
\fi
\fi
主要\SAP@examdate
是用来设置论文讨论日期的,比如\examdate{xx/xx/2023}
。它的定义如下:
\def\SAP@examdate{}
\newcommand{\examdate}[1]{\def\SAP@examdate{#1}}
周围的问号是什么意思\SAP@examdate
?这看起来像是一个否定,但我在网上没有找到有关该主题的任何内容。谢谢你的帮助。
答案1
它正在测试宏是否为空。
\if?\SAP@examdate?
如果你知道\SAP@examdate
永远不能以此开头,?
只有当为空时才为真\SAP@examdate
,所以测试是并且比较\if??
两个标记?