我不确定什么时候最好使用\text
,\mathrm
是否存在一些关于使用这些的不成文规则?
例如,我在一篇数学文章中看到以下代码:
\frac{\mathrm{lcm}(m,n)}{\mathrm{gcd}(m,n)}\quad\text{divides}\quad
\frac{\mathrm{lcm}(m,n)}{|\langle x\rangle\cap\langle y\rangle|}\quad
\text{divides}\quad \mathrm{ord}(ab)\quad\text{divides}\quad
\mathrm{lcm}(m,n).
还有两种情况。作者选择这样做有什么普遍原因吗?
答案1
警告:以下讨论假设包数学已加载。
一般来说\mathrm
应该用于“符号”和\text
文本。:)
但是,最好使用表示功能的罗马字母簇运算符:命令\lcm
和\gcd
是预定义的;对于“ord”,没有预定义的命令,但将其放在序言中就足够了
\DeclareMathOperator{\ord}{ord}
(命令名称可以随意)。之前的输入将变成
\frac{\lcm(m,n)}{\gcd(m,n)}
\quad \text{divides} \quad
\frac{\lcm(m,n)}{|\langle x\rangle\cap\langle y\rangle|}
\quad \text{divides} \quad
\ord(ab)
\quad \text{divides} \quad
\lcm(m,n)
在这种情况下\text{divides}
,和\mathrm{divides}
可能会给出相同的结果,但它们在概念上是不同的(并且实际上可以以不同的方式打印,具体取决于所使用的数学字体)。\mathrm
例如, 的参数中的空格将被忽略。此外,\text
尊重周围环境的字体:它将在定理陈述中以斜体打印。
应特别注意诸如“m/s”之类的单位;最好不要“手动”输入,而是使用类似希尼奇它可以处理所有细微细节,同时又非常灵活。
答案2
\text
如果你正在写作,你应该使用文本(不是数学,而是文字)\mathrm
如果你在写数学,但使用罗马字母。事实上,\mathrm
由于 egreg 描述的功能,其实用性极其有限:\DeclareMathOperator
命令涵盖了数学中出现非变量字母的 99% 的情况(即,像lcm
或 这样的运算符gcd
)。
事实上,你问的代码确实很糟糕,过于冗长,而且对标记的含义不甚了解。除了 egreg 的改进之外,我建议做类似的事情
\newcommand{\genby}[1]{\langle #1\rangle}
\newcommand{\card}[1]{\lvert #1\rvert}
并将第二个数量替换为
\frac{\lcm(m,n)}{\card{\genby{x} \cap \genby{y} } }
我提到这一点,尽管这并不重要,\mathrm
因为这是困扰整个样本的问题的一个症状:必须推断作者构建的意图输出有一个特定的外貌而不是通过他们写的方式明确地告诉输入有一个特定的意义的使用\mathrm
是这个问题最广泛的体现。
结果是,作者最终让自己变得更加困难,因为他们强迫自己将这段数学视为组成符号的集合,而不是数学。因此,构建速度更慢,输入时间更长,而且当他们后来忘记自己的惯例时,也更容易出现令人恼火的不一致。
答案3
如果您不经常使用该操作符并且不想\DeclareMathOperator
在序言中使用它,那么您可以改用\operatorname
。这里是 Wikibook 中的一些文档。
答案4
使用\operatorname{lcm}
适当间距的结果如下:
a\operatorname{lcm}b
这也同样如此:
\operatorname{ord}