我使用此代码批量修改大量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}