如何在文章类的 maketitle 内部和外部使用自定义命令

如何在文章类的 maketitle 内部和外部使用自定义命令

我已经使用 LaTeX 有一段时间了,但是我没有创建宏或类的经验。

基本上,我想要做的是创建类似的命令\subject\major\college能够在文章类文档的标题和页眉/页脚中使用这些命令。

我已经能够“手动”完成这项工作,如我的 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}

我想让这个更“自动化”,只需像这样填写标签:

\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

相关内容