我显然看不出编译 (pdflatex)\mathrm
和之间的区别\operatorname
。因此,正如标题所示,问题是:有区别吗?在什么场合哪一个更可取?
答案1
它们之间有很多不同。主要的区别在于 的\mathrm{xyz}
行为类似于普通字母,而\operatorname{xyz}
的行为类似于诸如 之类的函数名称\sin
。以下是一个例子
$\sin x + \sin(x+y) + a\sin z$
$\mathrm{sin} x + \mathrm{sin}(x+y) + a\mathrm{sin}z$
很明显,第二行排版错误。即使你的“运算符”后面需要括号,它也应该是\operatorname
,如第三个加数所示,其中有一个很细的空格将系数与运算符分开。
另一个细微的差别在于\mathrm
和 中某些字符的解释方式\operatorname
。假设你有一个运算符,叫做“pre-norm”,带有连字符。以下是示例
$\operatorname{pre-norm}(\mathbf{v})$
$\mathrm{pre-norm}(\mathbf{v})$
现在很清楚要使用什么了。事实上\operatorname
(对于用 定义的宏也是如此\DeclareMathOperator
)以特殊方式处理标点符号;\mathrm
相反,将它们视为数学符号。
答案2
\operatorname
:
该论点以直立模式书写,但前后留有一些额外的空间。
\mathrm
:
它类似于数学模式(无空格),但处于直立模式。字体大小不会改变。
以下示例显示了差异:
\documentclass[]{article}
\usepackage{amsmath}
\begin{document}
\[x\operatorname{foo}y\]
\[x\mathrm{foo}y\]
\end{document}
答案3
在其他LaTeX
环境中\mathrm{xyz}
很有用。MathJax v 2.0
$ i \\, \mathrm{sinh} \; $
给出了等效的输出$ i \sinh x $
。MathJax
无法识别\operatorname
。