在许多应用程序中,公式中的变量名称有多个字母。为了不弄乱字距,不能简单地写成$nameff=123$
。人们似乎使用不同的方法: \DeclareMathOperator
,\text
,\mathop
,\mathit
,\mathrm
。
从名称上看,其中一些似乎是用于运算符,而不是变量名,这让我担心在将其用作变量名时,在某些情况下可能会产生我现在可能无法预见的意外影响。
因此我的问题是:正确的排版多字母变量名的方式,即哪个命令适用于此用途。
答案1
用于此目的的命令是\mathrm
。
\DeclareMathOperator
and命令\operatorname
用于对数类运算符,例如log
or cos
。该\text
命令用于数学模式中的短文本段落,例如“$x$ 为偶数”和案例旁边的“否则”。该\mathop
命令不会更改字体或其字距,但您可以换行\mathop{\mathrm #1}}
以获得类似运算符的间距。该\mathit
命令通常在视觉上与默认数学字体没有区别,但它可能是一种有效的风格选择。
无衬线字体通常具有不同的含义:
无衬线直立字符可用于技术和/或物理文本,以标记不会与数学符号混淆的对象,例如用于描述几何图形、技术对象、实验装置等中的点的名称。因此,无衬线直立字母永远不会出现在物理学家或工程师的数学公式中,而数学家则使用无衬线字体来表示范畴论中的某些结构。作为部分例外,无衬线倾斜大写字母可用于表示二阶张量,但这是唯一提到的例外[....]
自从那篇文章在二十多年前出现在 TUGboat 上以来,情况已经发生了变化,但大多数使用无衬线字体来表示全字变量名的文档也始终将其用作主要字体。因此,声明要为此使用数学无衬线字体在语义上是误导性的;您实际上想要使用数学直立字体。如果您将公式复制并粘贴到另一个文档中,您会希望将其设置为该文档的数学直立字体,以匹配文档的其余部分。
该unicode-math
包定义了另一个选项,\mathup
。如果不考虑与旧式 8 位字体的向后兼容性,我更喜欢它而不是其他替代方案,因为它意味着“数学的默认直立字体,可能是也可能不是罗马字体,并且可以与使用 获得的主文本字体\text
、运算符字体或使用 获得的直立单个数学符号不同\symup
。”
在实践中,我通常会声明一个\newcomamnd
for\mathop{\mathup{#1}}
或\mathop{\mathrm{#1}}
。有时我会将其声明为\mathop{\text{\scshape #1}}
以获得小型大写字母。这样我就可以在文档主体中声明我想要的语义,而不是在文档之间可能发生变化的特定外观。编辑一堆\mathrm
命令以进行\mathsf
或\text
或\operatorname
非常繁琐且容易出错。最好选择一个不言自明的命令并在序言中定义其外观。
答案2
根据对我的问题非常有用的评论,这里有一个概述(所有功劳归于对我的问题发表评论的人):
提出的观点总结如下:
做:
\mathrm
、\mathit
和\mathsf
处理字距调整,其他部分保持原样。在它们之间进行选择似乎是一个个人喜好问题。不过一个可能的问题是,\mathit
可能会导致混淆,因为 中设置了单字母变量\mathit
。
不:
\text
,因为它使用当前文本字体,即它会根据上下文改变其外观。\mathop
,因为它增加了间距后varname(单独使用对字距调整没有帮助)\DeclareMathOperator
因为(以同样的方式\mathop
)它会影响 varname 和后续事物之间的间距。
上述概述的代码
\documentclass{article}
\usepackage{amsmath}
\usepackage{pgffor}
\def\v{sff}
\DeclareMathOperator{\vO}{\v}
\begin{document}
\foreach \c in {\text,\mathop,\mathrm,\mathit,\mathsf} {
\detokenize\expandafter{\c}:
\(\c{\v}\), %as shown in mathmode
\emph{\(\c{\v}\)}, %what happens if I refer back to it from the text, using \emph{}
\(\frac{\c{\v}}{\c{\v}}\c{\v}x_{\c{\v}}\) %how it integrates with other things in formulas
}
\detokenize{\DeclareMathOperator}:
\(\vO\), %as shown in mathmode
\emph{\(\vO\)}, %what happens if I refer back to it from the text, using \emph{}
\(\frac{\vO}{\vO}\vO x_{\vO}\) %how it integrates with other things in formulas
\end{document}