当我编写第一堂课时,我想知道创建可以在课文件和 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
。我应该如何修改命令,以便用户既可以设置 也可以获取reportnum
LaTeX 文档中的 ?
答案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}%
}