이것이 새로운 프리앰블 명령을 정의하고 이미 정의된 명령을 재구성하는 가장 좋은 방법입니까?

이것이 새로운 프리앰블 명령을 정의하고 이미 정의된 명령을 재구성하는 가장 좋은 방법입니까?

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

솔직히 저는 이 코드가 어떻게, 왜 작동하는지 전혀 모릅니다. 왜냐하면 뭔가 시작해서 뭔가 작동할 때까지 시행착오를 계속했기 때문입니다. 그렇기 때문에 이것이 내가 원하는 것을 달성하는 가장 깨끗하거나 최선의 방법이 아닐 수도 있다고 믿을 이유가 있습니다. 실제로 라텍스 프로그래밍을 이해하는 사람이 보고 내가 어떻게 하면 이 글을 더 잘 작성할 수 있는지, 아니면 내가 가진 것이 충분히 좋은지 말해 줄 수 있습니까?

관련 정보