Como posso usar comandos personalizados dentro e fora do maketitle com a classe de artigo

Como posso usar comandos personalizados dentro e fora do maketitle com a classe de artigo

Já uso LaTeX há algum tempo, mas não tenho experiência na criação de macros ou classes.

Basicamente, o que eu quero fazer é criar comandos como \subjecte \majorpoder \collegeusar esses comandos no título e nos cabeçalhos/rodapés de um documento de classe de artigo.

Consegui fazer o trabalho "manualmente", conforme mostrado no meu MWE.

\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}

Quero tornar isso um pouco mais "automático" apenas preenchendo os rótulos assim:

\major{Mechanical Engineering}

Esta é a saída insira a descrição da imagem aqui

Como posso conseguir isso?

Responder1

A maneira mais fácil é definir um comando contendo o texto e utilizá-lo quando necessário.

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

A definição e o uso não precisam estar nesta ordem textual; \majorsó precisa ser definido antes de ser usado.

Se você quiser ocultar a definição dos comandos e fazer isso de forma semelhante a \author, \titleetc, você precisará de um pouco de esforço extra.

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

Este código apresentará um erro quando \themajorfor usado antes \majorou se \majorfor usado duas vezes. Isso me parece um recurso, mas se quiser evitar isso, você pode predefinir \themajor.

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

Observe o uso de \renewcommandem vez de \newcommand.

informação relacionada