命题中关系和运算符号的间距

命题中关系和运算符号的间距

LaTeX 遵循排版标准,能够很好地正确分隔关系符号(如“=”或“∈”)和运算符号(如“+”或“∧”)。例如,

$a + b = x + y$

LaTeX 在“=”周围添加了比“+”周围的更多空格,因此表达式被正确地解释为“(a+b)=(x+y)”,而不是“a+(b=x)+y”——这是没有意义的。请参阅 Downes 的 § 3.1简短数学指南

不过,请考虑以下之间的关系和操作:命题涉及相等的。例如,我们想说a和的相等意味着和b的相等。直接写xy

$a = b \Rightarrow x = y$

或者

$a = b \mathop{\Rightarrow} x = y$

会产生错误的间距,提示“a=(b⇒x)=y”。解决这个问题的一种方法可能是以某种方式在命题周围添加引号,以获得类似

"a = b" ⇒ "x = y"

但这个表达式看起来很混乱。当然,也可以手动添加/删除空格——但要添加多少呢?

概率公式中会出现更复杂的情况,例如,如果我们想说和相等的可能性a与和b相等的可能性一样大,或者考虑两者之和:xy

$P(a = b) = P(x = y)$

$P(a = b) + P(x = y)$

我的问题有两个:

– 像这样的情况,排版规则是什么?

– LaTeX 用户(关心正确间距的人)如何解决这个问题?

我很高兴了解一致且优雅的解决方案。

干杯!

答案1

我对此事的(个人)看法

我不知道这方面的印刷规则,但我认为在关系或操作周围添加额外的空间之间命题非常有意义,因为它们在某种意义上处于不同的层次。所以我可能会在 中的箭头周围添加一些空间$a=b \Rightarrow x=y$,我可能会对 做同样的事情a=b \land x=y(尽管我可能不会在内联方程中做)。

不过,我不认为同样的道理也适用于概率,因为这些只是数字。我认为在“或”上添加额外的空格P(a=b) + P(x=y)$P(a=b) = P(x=y)$不必要的,而且实际上有点不一致。你总是可以为了易读性而添加空格,但我看不出有任何语法上的理由。

关于implies\impliedby\iff

amsmath包(您可能已经在使用)实际上定义了宏\implies\iff\impliedby作为的版本\Longrightarrow\Longleftrightarrow\Longleftarrow在两侧插入一些额外的空格(尽管\iff实际上没有也可以工作amsmath)。您可以在这里看到它们的实际效果:

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[P \implies Q \iff R \impliedby S\]
\[P \Longrightarrow Q \Longleftrightarrow R \Longleftarrow S\]
\end{document}

箭头比较

这些命令分别定义为\DOTSB\;\Longrightarrow\;\DOTSB\;\Longleftrightarrow\;\DOTSB\;\Longleftarrow\;。其中最重要的是\;插入一个\thickmuskip并有效地将这些箭头周围的空间加倍。 \DOTSB实际上不做任何事情;它只是一个标记,amsmath告诉“魔法”\dots这是一个二元运算符/关系。

如果你认为\implies默认情况下 et al. 有点太长,你可以使用以下方法重新定义它们

\renewcommand\implies{\DOTSB\;\Rightarrow\;}
\renewcommand\impliedby{\DOTSB\;\Leftarrow\;}
\renewcommand\iff{\DOTSB\;\Leftrightarrow\;}

你也可以定义你喜欢的符号的版本,增加更多空间

\newcommand\metasomesymbol{\DOTSB\;<somesymbol>\;}

\DOTSB如果您不使用\dots并且确定永远不会使用,那么您可以忽略它,但始终如一地包含它需要相对较少的努力。

当然,每次添加一对也可以达到相同的效果\;(只要没有\dotsaround )。

建议

由于我(个人)认为所有这些额外的空间在内联方程式中实际上会相当令人不快,因此这里有一种方法可以定义仅在显示样式中获得额外空间的符号。我用它\mathchoice来做这件事。关于它如何工作的解释可以在以下答案中找到:这个问题

\documentclass{article}

\usepackage{amsmath}
\newcommand*\mathmeta[1]{\DOTSB\mathchoice{\;#1\;}{#1}{#1}{#1}}
\newcommand*\newmetasymbol[2]{\newcommand#1{\DOTSB\mathmeta{#2}}}
\newcommand*\renewmetasymbol[2]{\renewcommand#1{\DOTSB\mathmeta{#2}}}

\renewmetasymbol\implies{\Rightarrow}
\renewmetasymbol\impliedby{\Leftarrow}
\renewmetasymbol\iff{\Leftrightarrow}

\usepackage{amssymb}
\newmetasymbol\nimplies{\nRightarrow}
\newmetasymbol\nimpliedby{\nLeftarrow}
\newmetasymbol\niff{\nLeftrightarrow}

\begin{document}

This is an inline equation: $x=y \implies x^2=y^2 \iff y^2=x^2 \impliedby y=x$.

This is a displayed equation:
\[
    x=y \implies x^2=y^2 \iff y^2=x^2 \impliedby y=x.
\]

Here are a few more symbols: $(x = y \mathmeta{\land} y = z) \implies x = z$, but
\[
    (x = y \mathmeta{\lor} y = z) \nimplies x = z
\]

\end{document}

输出

相关内容