不能在 \title 中使用 \textcolor

不能在 \title 中使用 \textcolor

我需要为文章标题的一部分添加颜色,但总是出错。以下是 MWE:

\documentclass{amsart}
\usepackage{xcolor}
\begin{document}
\title{  \protect\textcolor{red}{does not work in title}}
\maketitle
  \textcolor{red}{work here}
\end{document}

以下是来自日志文件的错误:

! Package xcolor Error: Undefined color `RED'.

See the xcolor package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.5 \maketitle
              
Try typing  <return>  to proceed.
If that doesn't work, type  X <return>  to quit.

如果出现此问题,我在 linux mint 中的 Tex live 2022 下运行 pdflatex。

谢谢!

答案1

您可以定义一个受保护的命令,隐藏red大写字母

\documentclass{amsart}
\usepackage{xcolor}
\NewDocumentCommand\myred{m}{\textcolor{red}{#1}}
\begin{document}
\title{\myred{does not work in title}}
\maketitle
  \textcolor{red}{work here}
\end{document}

在此处输入图片描述

答案2

你可以做到\newcommand{\addred}[1]{\textcolor{red}{#1}},而且它会起作用。

\documentclass{amsart}
\usepackage{xcolor}

\newcommand{\addred}[1]{\textcolor{red}{#1}}

\begin{document}
\title{It \addred{works} in the title}
\maketitle

It also \addred{works} here

\end{document}

在此处输入图片描述

但是,由于您不知道您使用的某些包是否加载textcase,因此最好添加\protect额外的安全性。

解释:默认情况下,amsart确实如此\uppercase,但如果标题中包含非 ASCII 字符,它可能无法工作并textcase会发挥作用;但它需要在其参数中包含强大的命令。

\title{It \protect\addred{works} in the title}

或者决定使其变得\addred健壮,这可以通过不同的方式实现:

\DeclareRobustCommand{\addred}[1]{\textcolor{red}{#1}}

\NewDocumentCommand{\addred}{m}{\textcolor{red}{#1}}

相关内容