我已经使用 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
。