更改标题颜色

更改标题颜色

我使用此代码批量修改大量latex文件的标题颜色

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

但是我发现当标题有可选参数的时候程序会得到错误的结果。

\documentclass[reqno]{amsart}
\usepackage{xcolor}

\makeatletter
\renewcommand{\title}[1]{\renewcommand{\@title}{\color{\@titlecolor}#1}}
\newcommand{\@titlecolor}{black}
\newcommand{\titlecolor}[1]{\renewcommand{\@titlecolor}{#1}}
\makeatother
\begin{document}
\title[Boundary layer ansatz for the steady MHD equations]{Verification of Prandtl boundary layer ansatz for the steady electrically conducting fluids with a moving physical boundary}

\email{[email protected]}

\maketitle

\end{document}

我希望修改此代码以适应有可选参数的情况。非常欢迎任何帮助及其说明。

答案1

和许多其他人一样,不要将格式放入数据持有者宏中,它永远不属于那里。将格式添加到实际排版数据的宏中。

查看的源代码,amsarty.cls我们可以推断出,\maketitle我们经过\@maketitle并最终通过排版标题\@settitle,其定义为

\def\@settitle{\begin{center}%
  \baselineskip14\p@\relax
    \bfseries
    \uppercasenonmath\@title
  \@title
  \end{center}%
}

因此我们可以修补它以添加颜色,\bfseries因此这有效

\documentclass[reqno]{amsart}
\usepackage{xcolor,etoolbox}

\makeatletter
\newcommand{\@titlecolor}{black}
\newcommand{\titlecolor}[1]{\renewcommand{\@titlecolor}{#1}}

\patchcmd\@settitle{\bfseries}{\bfseries\color{\@titlecolor}}{}{\ERROR}


\titlecolor{orange}

\makeatother
\begin{document}

\title[Boundary layer ansatz for the steady MHD equations]{Verification of Prandtl boundary layer ansatz for the steady electrically conducting fluids with a moving physical boundary}

\email{[email protected]}

\maketitle

\end{document}

相关内容