Как использовать пользовательские команды внутри и снаружи maketitle с классом article

Как использовать пользовательские команды внутри и снаружи maketitle с классом article

Я уже некоторое время использую LaTeX, но у меня нет никакого опыта создания макросов или классов.

По сути, я хочу создать команды типа \subject, \majorи \collegeиметь возможность использовать эти команды в заголовке и в верхних/нижних колонтитулах документа класса статьи.

Мне удалось выполнить работу «вручную», как показано в моем плане работ.

\documentclass[12pt,a4paper,twocolumn]{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish,mexico]{babel}
\usepackage{blindtext}

\title{A title}
\author{ an Author\\{\small a subject}\\\begin{footnotesize}
\textit{a College}
\end{footnotesize}}
\date{\today}

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[R]{a Major}
\fancyhead[L]{an Author}
\fancyfoot[C]{Página \textbar \thepage}
\fancyfoot[R]{a Subject}
\fancyfoot[L]{a Title}
\fancypagestyle{plain}{%
\fancyhf{}
\fancyfoot[CE,CO]{Página \textbar \thepage}
\renewcommand{\headrulewidth}{0pt}}
\begin{document}
\maketitle
\blindtext
\blindlist{itemize}[5]
\blindmathpaper

\end{document}

Я хочу сделать это немного более «автоматизированным», просто заполнив метки следующим образом:

\major{Mechanical Engineering}

Это выход введите описание изображения здесь

Как мне этого добиться?

решение1

Самый простой способ — определить команду, содержащую текст, и использовать ее при необходимости.

\newcommand\major{Mechanical Engineering}
...
\fancyhead[R]{\major}

Определение и использование не обязательно должны быть в указанном текстовом порядке; \majorнеобходимо просто дать определение перед использованием.

Если вы хотите скрыть определение команд и сделать это аналогично и \authorт \title. д., вам потребуются некоторые дополнительные усилия.

\newcommand\major[1]{\newcommand\themajor{#1}}
...
\major{Mechanical Engineering}
...
\fancyhead[R]{\themajor}

Этот код выдаст ошибку, когда \themajorиспользуется до \major, или если \majorиспользуется дважды. Мне кажется, это фича, но если вы хотите этого избежать, вы можете заранее определить \themajor.

\newcommand\themajor{}
\newcommand\major[1]{\renewcommand\themajor{#1}}
...
\major{Mechanical Engineering}
...
\fancyhead[R]{\themajor}

Обратите внимание на использование \renewcommandвместо \newcommand.

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