数学中是否存在排版文本(非符号)的标准身份标识除了变量之外的数学对象?
除变量之外的数学对象的文本标识符通常是
- 函数名称(
\sin
,\log
); - 常量名(
\textnormal{e}
,\textnormal{i}
); - 变量说明符(
n_\textnormal{water}
,\rho_\textnormal{air}
)。
对于常量名称和变量说明符,我使用\textnormal
,根据 egreg 的很棒的帖子我认为这是最合理的选择。
然而,美国数学学会在其amsopn
包裹并且它们使用\mathrm
而不是\textnormal
(在\operatorname
和中\DeclareMathOperator
)。因为我的问题不是关于字体样式,所以我们假设我们正在比较\mathrm
和\textrm
(而不是\textnormal
)。
为什么美国数学学会使用\mathrm
而不是\textrm
作为函数名称?
根据 egreg(在评论他自己的答案):
因为 […] 不会服从 \boldmath,首先
在经典 LaTeX(不是 Unicode LaTeX)中,两者都使用相同的文本字体(因此字距调整和连字被激活),事实上,唯一的区别是
\mathrm
保持在数学模式,因此受到影响\boldmath
;\textrm
切换到文本模式,因此不受的影响\boldmath
。
\textrm
但是还有其他理由不在函数名中使用吗?因为\textrm
它具有以下明显的优势\mathrm
:
- 它不需要
\operatorname
和的数学代码修改\DeclareMathOperator
来防止连字符和星号被转换为二元运算符,以及撇号被转换为素数; - 空间不会被吞噬。
答案1
事实上很少有标准对于此类事情。有ISO 80000-2
一个 ISO 标准“数量和单位 - 第 2 部分:自然科学和技术中使用的数学符号和符号”,这是 中命名相当不幸的isomath
包和mathstyle=iso
选项所引用的标准unicode-math
。(我说不幸是因为没有关于数学样式的通用 ISO 视图,只是一种特定的样式指南已通过 ISO 流程推广并不意味着其他样式是错误的,或者也不应该通过 ISO,就像 ODF 被标准化为 Office 格式 ISO/IEC 26300:2006 并没有阻止为 Open (Micorosoft) Office 格式 ISO/IEC 29500:2008 定义单独的标准(尽管它确实使流程稍微复杂化)。ISO 80000-2 样式指南相当普遍不是其次是数学期刊。
对于微分d
或矢量等,使用罗马字母、斜体字母或粗体字母的选择并不是由全球标准设定的,而只是特定出版物所设定的样式选择的一部分。
然而,你的问题似乎大多不是问输出(这是 ISO 8000-2 和出版风格指南所解决的问题,但通过用于获得该风格的 TeX 构造的技术细节,并且根本没有任何标准,除了字体机制上的一般 LaTeX2e 文档之外。
您在问题中引用的问题和 egreg 的回答并不是(主要)比较,\textrm
而是\mathrm
比较使用为多字母标识符设计的文本字体与使用设计有大侧边距以分隔用作默认数学字体的各个字母的数学斜体字体。
显然,多字母标识符应始终使用不具有宽侧边距和缺少连字的“字体”来设置,而传统数学设置中通常用于单字母变量。我说“字体”是因为传统 TeX 必然需要不同的字体来满足这些不同的用途,但对于大型 opentype 字体,不同用途可能由同一物理字体内的不同范围来适应。
\mathrm
因此,使用for\log
和朋友是完全自然的(并且与引用的文本一致) 。通常,我会使用\mathxx
任何命名数学对象的标识符的设置(从最广泛的意义上讲,例如,如果使用数学设置进行伪代码,则使用计算机语言标识符),并使用\textxx
自然语言片段的设置,这些片段由于与标记技术性相关的原因最终位于数学区域内。示例包括多行显示内的if
and子句。otherwise
Unicode 3.1 引入了从 U+1D400 开始范围内的数学字母,但这些字母的使用仍在不断发展,尤其是它们与排版要求的映射。Unicode 不区分文本斜体样式(使用连字符)和数学斜体样式,而只是提供了一个区分数学斜体文本的范围,具体如何排版超出了 Unicode 的范围,由字体和排版系统的设计者决定。目前,unicode-math 命令\mathxx
不会更改字体,而只是将字符转换为该1d400
范围,但是目前 OpenType 数学字体没有以适合多字母标识符的方式对这些范围内的字符进行样式化,因此它实际上不起作用。
在经典 TeX 中,单个数学表达式中只能使用 16 个字体系列,因此使用\mathrm
或\textrm
机制之间的选择会变得复杂,因为需要额外考虑使用\text...
(即,\mathchoice
围绕文本字体\hbox
设置的隐藏构造)允许您添加其他字体而不会占用 16 个数学字体的限制,因此通常将该机制用于其他很少使用的字体是有意义的,即使从\mathxx
逻辑上讲,使用其他机制更自然。在 Unicode TeX 扩展中,这个问题不大,因为有更多可用的字体系列,每个系列中的字符也多得多。
使用 Unicode TeX,有三种机制可以在数学模式下获得不同的字母视觉样式,
将字符转换为数学字母范围,例如替换
A
为U+1D400
以获得粗体 A将罗马字体分配给新的数学系列并
a
在该系列中进行选择(传统的定义\mathrm
目前在 unicode-math 中不太容易获得,尽管可以通过为范围指定不同的字体间接\mathup
获得\setmathfont
)使用
\hbox{...}
文本字体机制并选择字体,\textbf{A}
以获得粗体 A。
所有这些机制都有其用处,尽管目前尚不清楚如何最好地将它们映射到 TeX 标记和默认样式行为。