Not quite a generic solution, as it assumes that the first letter is unique in the operator name. The \relax
are perhaps a bit optional I am always confused about when I should put some or not ;-)
\documentclass{amsart}
\usepackage[english,spanish]{babel}
\makeatletter
\newcommand\Max{\@tempcnta=\mathcode`\m\relax
\mathcode`\m=\mathcode`\M\max\mathcode`\m=\@tempcnta\relax}
\makeatother
\begin{document}
\begin{equation*}
\max_0^\infty = \Max_0^\infty \Max\nolimits_0^\infty m M
\end{equation*}
\selectlanguage{english}
\begin{equation*}
\max_0^\infty = \Max_0^\infty \Max\nolimits_0^\infty m M
\end{equation*}
\end{document}
Thanks to egreg for his comment(s). After having temporarily incorporated his simplification (of the code of my initial proposal) to the extension I am now proposing, I now return to the original thing, but also incorporate the later improvements signaled by egreg
.
The same restriction as above applies (the operator name should contain its initial letter only once).
\documentclass{amsart}
\usepackage[english,spanish]{babel}
\pagestyle{empty}
\makeatletter
\def\Tr@nsmogrify#1#2.{\expandafter\newcommand\csname #1#2\endcsname
{\mathchardef\Tr@ns@temp=\mathcode\lccode`#1\relax
\mathcode\lccode`#1=\mathcode`#1\lowercase{\csname#1#2\endcsname}%
\mathcode\lccode`#1=\Tr@ns@temp\relax}}
\@for\x:=Sin,Cos,Max,Min,Lim,Limsup,Liminf,Inf\do{%
\expandafter\Tr@nsmogrify \x.}
\makeatother
\begin{document}
\thispagestyle{empty}
\noindent
\begin{minipage}{.5\linewidth}
\begin{align*}
\min_0^\infty &= \Min_0^\infty\\
\min\nolimits_0^\infty &= \Min\nolimits_0^\infty\\
\max_0^\infty &= \Max_0^\infty\\
\lim_{x\to\infty} &= \Lim_{x\to\infty}\\
\liminf_{x\to\infty} &= \Liminf_{x\to\infty}\\
\limsup_{x\to\infty} &= \Limsup_{x\to\infty}\\
\inf_{x\in A} &= \Inf_{x\in A}\\
\sin^2 x +\cos^2 x &= \Sin^2 x +\Cos^2 x \\
\limsup_{x\to\infty} &= \Limsup_{x\to\infty}\\
m,M,l,L&,s,S,c,C
\end{align*}
\end{minipage}
\begin{minipage}{.5\linewidth}
\selectlanguage{english}%
\begin{align*}
\min_0^\infty &= \Min_0^\infty\\
\min\nolimits_0^\infty &= \Min\nolimits_0^\infty\\
\max_0^\infty &= \Max_0^\infty\\
\lim_{x\to\infty} &= \Lim_{x\to\infty}\\
\liminf_{x\to\infty} &= \Liminf_{x\to\infty}\\
\limsup_{x\to\infty} &= \Limsup_{x\to\infty}\\
\inf_{x\in A} &= \Inf_{x\in A}\\
\sin^2 x +\cos^2 x &= \Sin^2 x +\Cos^2 x \\
\limsup_{x\to\infty} &= \Limsup_{x\to\infty}\\
m,M,l,L&,s,S,c,C
\end{align*}
\end{minipage}
\end{document}
Here is the result:
![PNG image with english and spanish operators with first letter made uppercase](https://i.stack.imgur.com/Y0v9R.png)
Addendum:
The above definitions make \Xyzt
behave like \xyzt
with respect to the positions of limits, in inline as well as display style. But there is a difference: \[\sin\limits_a^b\]
or $\sin\limits_a^b$
do not put the a
and b
in limits positions, whereas \[\Sin\limits_a^b\]
and $\Sin\limits_a^b$
do. I would call this an unintended feature rather than a bug! This is illustrated by the following:
![different behaviors of limits](https://i.stack.imgur.com/5GLCK.png)
Note the asymmetry of behavior of the amsmath
operators \sin
and \min
. Whereas for the first \limits
does nothing, for the second \nolimits
does work. I will not qualify this as a bug of amsmath
(or rather amsopn.sty
), as there must be reasons beyond me, but I had never realized that until now.
PS: obviously the above image comes from a source with \usepackage[spanish]{babel}
but I checked that the exact same behavior is observed without any loading of babel. Note also that \sin
and \min
in amsopn.sty
are not defined via \DeclareMathOperator
, respectively \DeclareMathOperator*
, but only by some part of the code of these macros, but this is another not relevant detail.
PS2: as a matter of fact the [spanish]{babel}
defined operator names behave differently from the analogous amsmath
provided names with respect to limits.
![examples of operator names with \limits](https://i.stack.imgur.com/vzi5l.png)
Best Answer
I did not fully understand what you are trying to achieve, but you can check whether a string contains a letter, similar to this answer.