防止 \MakeUppercase 影响数学

防止 \MakeUppercase 影响数学

有没有办法防止\MakeUppercase影响文本内的方程式?在这个例子中,abc应该改为ABC,但n应该保持原样。

\documentclass{article}
\begin{document}
\MakeUppercase{abc $n$}
\end{document}

以下内容适用于单个角色,但我想要一些更通用的东西。

\documentclass{article}
\begin{document}
\newcount\mycount
\mycount\mathcode`n
\MakeUppercase{abc $\mathchar\mycount$}
\end{document}

答案1

已经提到了套餐textcase。但是,如果您出于某种原因被迫保持不变,\MakeUppercase那么您仍然可以选择“隐藏”数学运算:

\newcommand\hidemath{$n$}
\MakeUppercase{abc \protect\hidemath}

\protect必需的,因为\MakeUppercase在 LaTeX 中本质上是\edef只有在 时才停止扩展\protect

或者使用 eTeX 的替代方案,它在宏定义级别具有保护:

\protected\def\hiddenmath{$n$}
\MakeUppercase{abc \hiddenmath}

答案2

textcase提供\MakeTextUppercase

在此处输入图片描述

\documentclass{article}
\usepackage{textcase}% http://ctan.org/pkg/textcase
\begin{document}
\MakeUppercase{abc $n$} \par
\MakeTextUppercase{abc $n$}
\end{document}

为了方便修改整个文档,我建议发出

\usepackage[overload]{textcase}% http://ctan.org/pkg/textcase

\MakeUppercase分别用和\MakeLowercase来“重载”\MakeTextUppercase\MakeTextLowercase。类似于

\let\MakeUppercase\MakeTextUppercase
\let\MakeLowercase\MakeTextLowercase

显然,AMS 文档类也提供了此功能 - 一个数学感知\MakeUppercase使用\uppercasenonmath。请参阅@barbarabeeton 对阻止回忆录在标题中将数学模式部分名称变为大写

相关内容