246

I apparently can't see the difference in a compilation (pdflatex) between \mathrm and \operatorname. So, as in the title the question is: is there a difference? Which one is preferable in what occasions?

1
  • 1
    "\mathrm is used to make variables and units appear in roman (non-italic) text." - You can use it for units for example.
    – Avatar
    Oct 21, 2020 at 6:50

3 Answers 3

296

There are many differences. The main one is in the fact that \mathrm{xyz} behaves like an ordinary letter, while \operatorname{xyz} behaves like function names such as \sin. Here's an illustration

$\sin x + \sin(x+y) + a\sin z$

$\mathrm{sin} x + \mathrm{sin}(x+y) + a\mathrm{sin}z$

enter image description here

where it's clear that the second line is typeset wrong. Even if your "operator" requires parentheses after it, it should be \operatorname, as the third summand shows, where a thin space separates the coefficient from the operator.

Another subtle difference is in how some characters are interpreted in \mathrm and in \operatorname. Suppose you have an operator to be called "pre-norm", with a hyphen. Here's the example

$\operatorname{pre-norm}(\mathbf{v})$

$\mathrm{pre-norm}(\mathbf{v})$

enter image description here

and now it's clear what is to be used. Indeed \operatorname (and the same holds for macros defined with \DeclareMathOperator) treats punctuation symbols in a special way; \mathrm, instead, treats them as math symbols.

4
  • 9
    Can you please tell the full form of the rm in mathrm? Thank you! Feb 14, 2018 at 5:12
  • 19
    @GaurangTandon rm stands for “roman”, that conventionally denotes the upright type used in the document.
    – egreg
    Feb 14, 2018 at 8:59
  • 1
    Wrapping \mathrm with \mathop addresses the first point (spacing). Replacing \mathrm with \textrm addresses the second point (characters interpreted as math inside \mathrm{...}). So the next question is: what’s the difference between \mathop{\textrm{...}} and \operatorname{...}?
    – Maëlan
    May 11, 2022 at 22:03
  • 2
    @Maëlan Try $\mathop{\textrm{xyz}}$ inside a theorem statement typeset in italics.
    – egreg
    May 11, 2022 at 22:19
54

\operatorname:

The argument is written in upright mode but with some additional space before and behind.

\mathrm:

It is like math mode (no spaces), but in upright mode. The font size isn't changed.

The following example shows the differences:

\documentclass[]{article}
\usepackage{amsmath}
\begin{document}
\[x\operatorname{foo}y\]
\[x\mathrm{foo}y\]
\end{document}

enter image description here

14

In other LaTeX environments \mathrm{xyz} is useful. In MathJax v 2.0

$ i \\, \mathrm{sinh} \; $

gave the equivalent output as $ i \sinh x $. MathJax did not recognize \operatorname.

2
  • 15
    \operatorname is now supported with the ASMmath.js TeX extension.
    – ChrisR
    Dec 4, 2013 at 16:10
  • 8
    Typo in the comment by @ChrisR (important if you're searching): it's AMSmath.js, (not ASMmath.js). Feb 14, 2020 at 20:24

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .