“\expandafter\PDR@getfileinfo\reserved@a\relax? ? \relax\relax”是什么意思

“\expandafter\PDR@getfileinfo\reserved@a\relax? ? \relax\relax”是什么意思

需要帮助为我解释以下代码的含义,该代码位于以以下内容开头的“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@a2009/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

相关内容