我是该网站的新手,快速搜索后找不到这个问题,但可能以前有人问过。
这可能是人们可能遇到的最无关紧要的问题,但它已经困扰了我好几个月了。
当我完成一行数学运算(尤其是使用 double 时$$
)时,我经常以句号结尾。我还通常使用命令\text
来区分句号和小数点。
我的问题是:这两者之间有什么区别吗?我认为除非查看 TeX 代码,否则没人会注意到,所以这更像是一个理论问题。
哪一个是“正确的”?
$$|f(x)-(y)|<\epsilon\text{.}$$
或者
$$|f(x)-(y)|<\epsilon.$$
答案1
既然您提到了\text
,那么您使用的是 LaTeX 或 AMS-TeX。我假设是 LaTeX。
首先,你的公式是不正确的,因为它们有$$
(见为什么 \[ ... \] 比 $$ ... $$ 更可取?)。解决了这个问题,让fontmath.ltx
我们看看,我们可以在哪里找到公式末尾的常见标点符号,
\DeclareMathSymbol{,}{\mathpunct}{letters}{"3B}
\DeclareMathSymbol{.}{\mathord}{letters}{"3A}
\DeclareMathSymbol{;}{\mathpunct}{operators}{"3B}
如您所见,逗号和句号取自数学字母字体;而分号则来自主文本字体(直立)。
所以,是的,原则上是有区别的。当\text{.}
你从公式开始时的当前字体中获取句号时,它将来自定理陈述中的斜体字体(在正常设置下),逗号也是如此。
另一方面,斜体句号与直立句号不太容易区分。下面是比较,首先是文本模式下的标点符号(直立或斜体),然后是数学模式下的标点符号:
我会使用数学模式的字体,尤其是分号。使用其他字体时,可能更大,但无论背景如何,我始终会选择直立。
正如 Guho 在评论中正确指出的那样,\text
你也会丢失最后一个符号和标点符号之间的字距;尝试一个我的学生经常忘记的公式:-(
\[
\dim\operatorname{im} f+\dim\ker f=\dim V.
\]
和
\[
\dim\operatorname{im} f+\dim\ker f=\dim V\text{.}
\]
人们可能会争论第一个是否比第二个更好无限地但是。第一种情况下的字距调整是 Knuth 决定从数学字母字体中去掉句号和逗号的原因。
如果您担心句号或逗号会被误解为公式的一部分,请在其前使用一个细空格,例如\,
。我不会再使用这种空格,但这是个人喜好。有人喜欢用四分音符分隔标点符号(我非常不同意)。
如果你使用 AMS-TeX,情况完全类似,因为数学符号设置与普通 TeX 相同,它具有
\mathcode`\,="613B
\mathcode`\.="013A
\mathcode`\;="603B
这与数学字体的选择相同。
答案2
我同意 egreg 的观点,我认为看起来更好的是直立字体,但在某些情况下可能需要文本字体而不是数学字体。
如果你想让它自动执行,只需这样做
\makeatletter
{\catcode`\.=\active\global\def.{\mathfinaldotaux}}
\AtBeginDocument{\mathcode`\.="8000 }
\newcommand*\mathfinaldotaux
{\@ifnextchar\]{\mathfinaldot}{\@ifnextchar${\mathfinaldot}{\mathchar`\.}}}
\newcommand*\mathfinaldot{\textnormal{.}}
\makeatother
这使得.
仅在数学模式下处于活动状态,并且和将其定义为检查下一个标记是否为\]
或$
(您也可以检查\)
但我认为没有必要)并且在这种情况下输出\mathfinaldot
,否则输出正常的.
。
,
您可以使用、等采取相同的方法;
。如果您愿意,我们可以创建一个宏来简化定义:
\providecommand*\csdef[1]{\expandafter\def\csname#1\endcsname}
\makeatletter
\newcommand*\definemathfinal[2]
{\begingroup\lccode`\~=`#1\lowercase{\endgroup
\def~}{\csname mathfinal#1aux\endcsname}
\AtBeginDocument{\mathcode`#1="8000 }
\csdef{mathfinal#1aux}{\@ifnextchar\]{#2}{\@ifnextchar${#2}{\mathchar`#1}}}}
\makeatother
\definemathfinal{.}{\textnormal{.}}
\definemathfinal{,}{\,\textnormal{,}} % <- You can define easily with some personal
\definemathfinal{;}{\,\textnormal{;}} % <- preferences like spacing
这样,您根本不需要更改文档,而且它很容易配置。