宏:抽象内容的存储和使用在 cls 中不起作用

宏:抽象内容的存储和使用在 cls 中不起作用

我收到一个cls用于文档的 for ,! Undefined control sequence当与pdfTeX, Version 3.141592653-2.6-1.40.22 (MiKTeX 21.3)

! Undefined control sequence.
\@maketitle ...ace {\z@ }}\end {center}\@abstract 
                                                  \vspace {3.0em}\par \vskip...

我尝试缩小问题范围并创建了一个简化的cls和相应的 MWE。

该类的创建者似乎试图获取摘要的内容并将其存储起来以供修改后的maketitle命令使用。该方法类似于这里

我尝试了几种方法,但无法修复错误。有什么想法吗?


分类

\ProvidesClass{test}[2021/03/22 v0.1 Test class]

% Set up basic geometry
\LoadClass[10pt,a4paper,parskip=half]{scrartcl}

% Define title
\let\test@maketitle\maketitle
\renewcommand{\maketitle}{
  \twocolumn[
    \test@maketitle
    \large%
    \begin{center}{%
      \bfseries \abstractname\vspace{-0.7em}\vspace{\z@}%
    }\end{center}%
    \@abstract%
    \vspace{3.0em}%
  ]
  \thispagestyle{empty}
}

% Change title command
\renewcommand{\@maketitle}{%
  \begin{center}%
    \let\footnote\thanks%
    {%
      \Large\bfseries%
      \expandafter\uppercase\expandafter{\@title}%
      \par%
    }%
    \vskip 1.5em%
    {%
      \Large\lineskip .5em%
      \begin{tabular}[t]{c}%
        \@author%
      \end{tabular}%
      \par%
    }%
    \vskip 1em%
    {%
      \large\@date%
    }%
  \end{center}%
  \par\vskip 1.5em%
}

% Renew abstract command to store the abstract
\renewcommand{\abstract}[1]{
  \def\@abstract{#1}
}

平均能量损失

\documentclass{test}

\usepackage{lipsum}

\title{MWE}
\author{raedma}

\begin{document}

\maketitle

\begin{abstract}
\lipsum[1]
\end{abstract}

\section{Introduction}
\lipsum[1]

\end{document}

答案1

由于\@abstract由使用\maketitle,因此您需要输入摘要 \maketitle形式为

\abstract{This is the text of the abstract}

因此下面的代码应该可以工作。

\documentclass{test}

\usepackage{lipsum}

\title{MWE}
\author{raedma}
\abstract{\lipsum[1]}

\begin{document}

\maketitle

\section{Introduction}
\lipsum[1]

\end{document}

该类可能会做得更好,作为的一部分\maketitle,重新​​定义\abstract以发出有关正确语法和位置的错误消息或警告\abstract

相关内容