需要帮助为我解释以下代码的含义,该代码位于以以下内容开头的“PostDocRep.cls”文件中
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{PostDocRep}
[2009/09/23 v0.1e PostDocRep
document class]
........
\def\PDR@getfileinfo#1 #2 #3\relax#4\relax{%
\def\PDRfiledate{#1}%
\def\PDRfileversion{#2}%
\def\PDRfileinfo{#3}}%
\expandafter\ifx\csname [email protected]\endcsname\relax
\edef\reserved@a{\csname ver@ctextemp_PostDocRep.cls\endcsname}
\else
\edef\reserved@a{\csname [email protected]\endcsname}
\fi
\expandafter\PDR@getfileinfo\reserved@a\relax? ? \relax\relax
我不知道语句的结果是什么
\expandafter\ifx\csname [email protected]\endcsname\relax
如果它是真还是假,它会选择哪个分支?
\edef\reserved@a{\csname ver@ctextemp_PostDocRep.cls\endcsname}
或者
\edef\reserved@a{\csname [email protected]\endcsname}
此外,我不知道该声明是如何
\expandafter\PDR@getfileinfo\reserved@a\relax? ? \relax\relax
执行?为什么有这么多\relax,
答案1
\reserved@a
将2009/09/23 v0.1e PostDocRep document class
所以\expandafter\PDR@getfileinfo\reserved@a\relax
是
\PDR@getfileinfo 2009/09/23 v0.1e PostDocRep document class\relax
可以
\def\PDRfiledate{2009/09/23}%
\def\PDRfileversion{v0.1e}%
\def\PDRfileinfo{PostDocRep document class}%
尾随的?并\relax
确保即使由于某种原因\reserved@a
没有正确的形式,仍然会有一些空格字符,\relax
这样\PDR@getfileinfo
总是会看到参数,而不会出现失控参数错误,寻找由缺失的\relax