# newcommand vs. DeclareMathOperator


I found a question regarding arguments and DeclareMathOperator, and I wonder what other aspects should be taken into consideration when it comes to choosing which method to use when defining math operators.

• Run texdoc amsmath and see page 13f. – Marco Daniel Aug 17 '12 at 8:54
• \DeclareMathOperator is a very special case of \newcommand, so the question as it stands is too generic to receive an answer. – egreg Aug 17 '12 at 9:09
• Consider \newcommand{\im}{\text{im}} with \DeclareMathOperator{\im}{im}. Now try and use these commands in the standard theorem environment. In the former "im" will be italicized, but in the latter "im" won't be. – user2154420 Apr 5 '18 at 16:06

\DeclareMathOperator is designed to create commands that should typeset operator names such as sin and lim. Some of these are already defined in base TeX or LaTeX so one writes 2\sin\theta

instead of 2sin\theta

giving correct spacing and font. If you need an operator of this type that is not predefined, then you create it with \DeclareMathOperator, e.g. the space of endomorphisms of a vector space is written \End V

but you need to make the definition \DeclareMathOperator{\End}{End} first: a minimal working example is

\documentclass{article}
\usepackage{amsmath}
\DeclareMathOperator{\End}{End}
\begin{document}

$$\End V$$

\end{document}




Finally, one should note that there is a starred version \DeclareMathOperator*. This is used for defining operators that have limits typeset beneath them instead of to the right (at least when in a display). For example

Similarly there is the starred variant \operatorname*.

\documentclass{article}
\usepackage{amsmath}
\DeclareMathOperator{\End}{End}
\DeclareMathOperator*{\Max}{Max}
\begin{document}

\begin{displaymath}
\Max_{x\in A} f(x) \qquad  \End_R V
\end{displaymath}

\end{document}


Remark. The above code samples load the amsmath package. Strictly speaking all you need is the amsopn package, which amsmath reads in automatically. Alternatively, one can load mathtools which is a modern package building further on amsmath.

• Many thanks for the comments and the kind welcome. I have edited my answer to make the example slightly more realistic using \boldsymbol instead. – Andrew Swann Aug 17 '12 at 13:14
• @egreg and Barbara Beeton: I have now put in a different example without this bold symbol issue. – Andrew Swann Aug 17 '12 at 18:58
• @barbarabeeton: the bm versus boldsymbol issue was tackled in tex.stackexchange.com/q/3238 – Philippe Goutet Aug 17 '12 at 19:48
• It is worth to mention that there is also a starred version of \operatorname. – Rauni Nov 27 '14 at 1:51
• @Rauni OK - now added. – Andrew Swann Nov 27 '14 at 12:57

I usually use

\newcommand{\Ker}{\operatorname{Ker}}


\DeclareMathOperator{\Ker}{Ker}


However, the second is much practical.

• Nice because it allows to do \renewcommand, and I don't know what is the equivalent for DeclareMathOperator. – Stéphane Laurent Jan 8 '14 at 10:02
• You can first "undefine" the command by \letting it be equal to \relax, e.g., \let\div\relax \DeclareMathOperator{\div}{div}. – MSC May 15 '15 at 12:47
• \operatorname is still superior because you may \providecommand for conditional \renewcommand, of course you can use an \if \fi construct, but that somewhat defeats the purpose of LaTeX vs TeX. – Oskar Limka Mar 17 at 10:09

Another difference is that \DeclareMathOperator can only be used in the preamble while \newcommand has no such restriction.

• Does anyone know why that is? – Tyson Williams Apr 12 '15 at 21:18
• All \Declare... commands share the property. See Dox's answer, though. – egreg Apr 12 '15 at 21:37