用句号结束​​数学

用句号结束​​数学

我是该网站的新手,快速搜索后找不到这个问题,但可能以前有人问过。

这可能是人们可能遇到的最无关紧要的问题,但它已经困扰了我好几个月了。

当我完成一行数学运算(尤其是使用 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

这样,您根本不需要更改文档,而且它很容易配置。

相关内容