我经常写带有长标识符名称的公式。为了获得正确的字距,我必须将标识符放入\textit
或类似的东西中。
例如这看起来是错误的:
$\forall x \in Foo: \; Ma(x) \wedge Ha(x)$
我必须像这样修复它:
$\forall x \in \textit{Foo}: \; \textit{Ma}(x) \wedge \textit{Ha}(x)$
或者使用 mathrm:
$\forall x \in \mathrm{Foo}: \; \mathrm{Ma}(x) \wedge \mathrm{Ha}(x)$
或者通过声明运算符:
\DeclareMathOperator{\Foo}{Foo} \DeclareMathOperator{\Ma}{Ma} \DeclareMathOperator{\Ha}{Ha} ... $\forall x \in \Foo:\; \Ma(x) \wedge \Ha(x)$
我的问题是:我可以让 Latex 自动执行此操作作为默认操作或使用宏吗?我从来没有遇到过需要默认行为的情况(尽管我发现它对数学和物理很有用)。
答案1
latex 默认“假定”相邻字母是相互相乘的独立变量,并且针对数学用途调整的斜体字母具有适合该用途的边距。
没有合理的方法来改变默认设置
在几种不同的情况下,字符串应该被视为“单词”:当它们充当运算符时,例如“log”或“sin”,以及当它们是标识符时,例如问题中的“Foo”。
许多“常见”运算符都有预定义命令:\log
、、等。这些命令传统上以罗马(直立)字体设置,并遵循严格的间距规则。通过比较和\sin
可以看到运算符和普通“单词”之间的间距差异。运算符的定义如问题中所述。$\mathrm{log} x$
$\log x$
\DeclareMathOperator
标识符被设置为普通单词,其字距适合单词。它们可以是罗马字体,斜体,甚至可以是某些情况下更“奇特”的字体。(我在已出版的作品中既见过脚本也见过 fraktur。)它们应始终设置为适合文本的字体,但制作通用宏并不困难。
对于以直立罗马字体设置的标识符:
\newcommand{\rident}[1]{\mathrm{#1}}
\newcommand{\Foo}{\rident{Foo}}
对于要以“常规”斜体设置的标识符:
\newcommand{\iident}[1]{\mathit{#1}}
\newcommand{\Ma}{\iident{Ma}}
与常见的误解相反,\mathit
它们\mathrm
实际上是数学环境中使用的特定文本字体。
(就我个人而言,如果有很多标识符只出现一次,我才会费心创建“间接”命令。对于经常使用的标识符,我会直接用字体说明符来定义它们——在定义列表中更明显地表明每种情况下的含义,因此当作者决定更改术语时更容易更改,编辑在准备出版的手稿时也更容易应对。)
所以,最重要的是,你做必须明确指定字体,而如何指定则取决于术语或标识符在其使用的数学表达式中将实现的功能。