用于获取和设置类和文档中的附加元素的命令

用于获取和设置类和文档中的附加元素的命令

当我编写第一堂课时,我想知道创建可以在课文件和 LaTeX 文档中使用的附加元素的最佳方法。

例如,我希望用户reportnum使用类似以下内容在 LaTeX 文档中设置

\reportnum{QR-F100-EMCCP}

然后我想扩展\maketitle命令以在标题页上包含报告编号并在每页的标题中使用报告编号。

根据彼得·弗林 (Peter Flynn)“滚动您自己的文档类:使用 LaTeX 远离黑暗面”,我可以在类文件中使用以下命令来创建这个附加元素并扩展该\maketitle命令:

\def\@reportnum{\relax}
\newcommand{\reportnum}[1]{\gdef\@reportnum{#1}}
\renewcommand{\maketitle}{
  \begin{titlepage}
    \huge\@author\par
    \Large\@title\par
    \if\@reportnum\relax\else\large\@reportnum\par\fi
    \normalsize\@date\par
  \end{titlepage}
}

但是,我还希望用户能够reportnum使用诸如 之类的命令获取 LaTeX 文档中的\thereportnum。我应该如何修改命令,以便用户既可以设置 也可以获取reportnumLaTeX 文档中的 ?

答案1

首先,这个测试写错了,因为\reportnum{AA-123}它会返回 true。

对于主要部分,只需定义\thereportnum打印??(或者如果您愿意,则定义打印错误,如果\@reportnum\relax,否则定义打印值)。

更好的方法:

\let\@reportnum\relax
\newcommand{\reportnum}[1]{\gdef\@reportnum{#1}}
\newcommand{\thereportnum}{%
  \ifx\@reportnum\relax ??\else\@reportnum\fi
}
\renewcommand{\maketitle}{%
  \begin{titlepage}
    \huge\@author\par
    \Large\@title\par
    \ifx\@reportnum\relax\else\large\@reportnum\par\fi
    \normalsize\@date\par
  \end{titlepage}%
}

相关内容