Является ли это лучшим способом определения новых команд преамбулы и реструктуризации уже определенных?

Является ли это лучшим способом определения новых команд преамбулы и реструктуризации уже определенных?

У меня есть класс latex, который расширяет класс статьи AMS amsart. Я отрегулировал поля и хотел добавить несколько новых параметров в стиле преамбулы \author{Name}, например, \class{Algebra}. После этого я хотел, чтобы имя автора, класс, дата и заголовок отображались так, когда \maketitleвызывается. Обратите внимание, что в случае, если один из них не указан, я хочу, чтобы это привело к отсутствию этого поля инетсбой. Например, если преамбула отсутствует, \class{...}то в документе должно быть только имя студента и дата. Если не указано ни имя студента, ни название класса, ни дата, то документ должен начинаться с центрированного заголовка.

Student Name
Algebra
Decembruary 3, 1947
                                Centred Title
                                       .
                                       .
                                       .

Вот что я собрал,

% this handles the info tags at the beginning
\makeatletter
   % defining new variables
   \gdef\@class{\empty}
   \def\author#1{\gdef\@author{#1\\}}
   \def\class#1{\gdef\@class{#1\\}}
    \renewcommand{\maketitle} {
      \bgroup
        \setlength{\parindent}{0em}
          \begin{flushleft}
            \ifx\@author\empty \else \@author\fi
            \ifx\@class\empty \else \@class\fi
            \@date
          \end{flushleft}
      \egroup
      \begin{center}
        \textbf{\@title} \\
      \end{center}
      \bigskip
    }
\makeatother

Честно говоря, я понятия не имею, как или почему этот код работает, потому что я начал с чего-то и продолжал методом проб и ошибок, пока что-то не заработало. Вот почему у меня есть основания полагать, что это может быть не самым чистым или лучшим способом добиться того, чего я хочу. Может ли кто-то, кто действительно понимает программирование в latex, взглянуть и, возможно, сказать, как я мог бы написать это лучше или то, что у меня есть, достаточно хорошо?

Связанный контент