如何通过 \renewcommand 修改作者颜色

如何通过 \renewcommand 修改作者颜色

我检索了方法 \renewcommand MakeTitle 来设置标题的颜色。

\makeatletter
\renewcommand{\title}[1]{\renewcommand{\@title}{\color{\@titlecolor}#1}}
\newcommand{\@titlecolor}{red}
\newcommand{\titlecolor}[1]{\renewcommand{\@titlecolor}{#1}}
\makeatother

这对我来说非常成功并且有效。我使用了类似的命令来修改作者,但只有作者的一部分改变了颜色。

\documentclass[10pt]{article}
\usepackage{color}
\makeatletter

\renewcommand{\author}[1]{\renewcommand{\@author}{\color{\@authorcolor}#1}}
\newcommand{\@authorcolor}{red}
\newcommand{\authorcolor}[1]{\renewcommand{\@authorcolor}{#1}}
\makeatother
\title{My Title}
\author{Author One$^1$ \\ Author Two$^2$ 
  \\
    \normalsize{$^1$Organization 1}\\
    \normalsize{$^2$Organization 2}\\
    \\
    \normalsize{Emails: [email protected], [email protected]}\thanks{Thanks} }


\begin{document}
\maketitle
\end{document}

输出:

在此处输入图片描述

您能否设计一个更好的方案来更改 author 中所有内容的颜色(包括 \thanks 等)?顺便说一句,由于我有很多文档需要处理,因此我想通过 renewcommand 来实现。

答案1

您必须了解标题构造的结构。\title(或\@title) 通常只包含一个元素,因此为其着色相当容易/直接。但是,由于\author(或\@author) 可能包含多个成员/元素,因此默认情况下它设置在 内tabular;这允许您使用 来\\分隔作者。但是,这确实提供了有限的范围。事实上,每个单元格都形成一个组,这解释了为什么您的颜色变化仅适用于第一的细胞。

了解的\@author结构类似于tabular,以下将更新您对的重新定义以了解在(嵌套)内\author设置,从而允许颜色应用于整个(嵌套)作者列表。\@authortabular

在此处输入图片描述

\documentclass{article}

\usepackage{xcolor}

\makeatletter
\renewcommand{\author}[1]{\renewcommand{\@author}{%
  \color{\@authorcolor}
  \begin{tabular}{@{}c@{}}
    #1
  \end{tabular}}}
\newcommand{\@authorcolor}{red}
\newcommand{\authorcolor}[1]{\renewcommand{\@authorcolor}{#1}}
\makeatother

\title{A Title}
\author{%
  Author One\textsuperscript{1} \\
  Author Two\textsuperscript{2} \\
  \textsuperscript{1}Organization 1 \\
  \textsuperscript{2}Organization 2 \\
  \\
  Emails: [email protected], [email protected]\thanks{Thanks}
}

\begin{document}

\maketitle

\end{document}

相关内容