通过逻辑运算符连接的等式

通过逻辑运算符连接的等式

我的书中大多数(但不是全部)数学模式的内容都包含清晰逻辑的术语和公式:

  • 这些项是由常数递归构造的(例如012真的FG+或者不是,...任意元数(包括 0)和变量(例如年代X,……)使用术语对其他术语的应用(例如1+xf(0,g(y))x∈S, …)。

  • 原子公式的形式为t₁ = t₂, 在哪里t₁t₂是术语(例如3 = x+2x∈S 且不为 false = true, …)。

  • 这些公式是使用逻辑否定从原子公式递归构造的(¬)公式(例如¬(1=2+3)¬(f(x)=g(0,y)), …), 连词 () 和析取 () (例如v=2+x∧y+2=zv=x∨y∈S=真,...)和变量绑定(例如∃ x:x+1=2∀ x,y:x+y=y+x{x|x+1>y}, …)。

(顺便说一句,所有术语都有排序,并且对术语和原子公式也施加了良好排序的条件。为了简单起见,我们在这里将其删除。)

现在,当我排版包含等式的公式时=和二元逻辑联结词,我得到的距离是否违反直觉?例如,在 中v=x \land y=z,左右 (LaTeX 中的二元运算符) 的距离\land小于左右=(LaTeX 中的关系),不是吗?

如果是这样,在我的设置中修复此问题最干净的方法是什么?我真的不知道,正在考虑类似的事情

\documentclass{article}
\newcommand{\formulaConjunction}{\mskip1.2mu plus.6mu minus.6mu\land\mskip1.2mu plus.6mu minus.6mu}
\newcommand{\formulaDisjunction}{\mskip1.2mu plus.6mu minus.6mu\lor\mskip1.2mu plus.6mu minus.6mu}
\newcommand{\memberOf}{\mathbin{\in}}
\begin{document}\noindent
\(v\memberOf S = \mathsf{true} \formulaConjunction y=f(z)\)\\
\(v=x+1 \formulaDisjunction y=z\)
\end{document}

这样,逻辑与和或连接词周围的距离就会变得比逻辑等号周围的距离稍大,而等号周围的距离就会变得比中缀运算符周围的距离稍大(例如+),不是吗?然而,这对我来说似乎非常临时。在我以这种方式更改书中的数百个公式之前,是否存在任何潜在的陷阱?有没有更好的方法可以适用于所有 [pdf|xe|lua]latex ?我的猜测是,上述逻辑在某种程度上是标准的,所以一定有人已经做过这个(或至少是类似的)练习。

答案1

我了解到您希望更改 TeX 在某些类型的符号周围插入的空格量mathbin——特别是\land\lor,但可能还有其他一些符号。mathbin对象默认的空格量(由参数控制\medmuskip4mu在 PlainTeX 和我熟悉的所有 LaTeX 文档类中都是如此。您可能希望将其至少增加到6mu7mu。您可能会问,为什么不呢5mu?因为这是的默认值\thickmuskip,该参数控制状态为的对象周围的空格量mathrel

不幸的是,不同的数学类型或数学状态类别的数量非常有限,并且现有的类别都无法轻松满足您的排版需求。例如,您不想修改具有状态mathbin和的对象的属性mathrel,对吗?

不过,我建议您通过以下方式创建两个新的用户宏:

\newcommand\Nashland{{\mkern7mu{\land}\mkern7mu}}
\newcommand\Nashlor{{\mkern7mu{\lor}\mkern7mu}}

并使用\Nashlandand\Nashlor代替\landand \lor。当然,此设置假设\Nashlandand\Nashlor只会被具有数学状态的对象包围mathord。那您发布的示例中的情况就是如此。但是,我不知道这个假设是否始终有效。

另一条评论:你可能期待很多——而且很有可能太多了——如果您需要读者注意并充分理解 TeX 在各种数学对象周围放置的空格数量的细微差别的语义意义,请从您的读者那里获得。在“普通”(非纳什……)符号中,实际上没有语义mathbin对象(例如+-)和mathrel对象(例如=>和)周围的空格量具有重要意义<。我非常确定,在诸如 和 之类的表达式中,可以切换\medmuskip和的值,而不会对读者造成重大干扰(尽管很可能引起一些轻微的不适)。但在需要和的用例中,这是不允许的,不是吗?因此,我认为您最好明智地使用括号,而不要依赖读者真正理解空格量细微差异的语义意义。\thickmuskip1+1<2+2\Nashland\Nashlor


这是 MWE(最小工作示例)。请注意,我不得不将\Nashland和中涉及的空格数量设置\Nashlor为一个惊人的数字10mu,以确保读者别无选择,只能注意到 和 符号周围的空格数量必须具有非随机的语义含义\land\lor好吧,您可能能够使用9mu8mu来代替10mu;我当然不会低于8mu

相比之下,使用括号则完全不需要注意空格数量的细微差别。括号确实会造成视觉混乱。但更糟糕的是:造成一些视觉混乱,还是冒着造成普遍混乱的风险?

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath} % for 'gather*' env.
\newcommand{\true}{\mathsf{true}}
%\newcommand{\false}{\mathsf{false}} % not needed for this example

\newcommand\Nashland{{\mkern10mu{\land}\mkern10mu}}
\newcommand\Nashlor{{\mkern10mu{\lor}\mkern10mu}}

\begin{document}

Case 1: \texttt{\string\land} and \texttt{\string\lor}:
\begin{gather*}
v \in S = \true \land y=f(z) \\
v=x+1 \lor y=z
\end{gather*}

\medskip
Case 2: \texttt{\string\Nashland} and \texttt{\string\Nashlor}:
\begin{gather*}
v \in S = \true \Nashland y=f(z) \\
v=x+1 \Nashlor y=z
\end{gather*}

\medskip
Case 3: Parentheses alongside \texttt{\string\land} and \texttt{\string\lor}:
\begin{gather*}
(v \in S = \true) \land (y=f(z)) \\
(v=x+1) \lor (y=z)
\end{gather*}

\end{document}

答案2

=您可能希望在选定的地方将和的性质更改\in为二元运算而不是关系。

您可能需要其他符号。

\documentclass{article}

\newcommand{\true}{\mathsf{true}}
\newcommand{\false}{\mathsf{false}}

\newcommand{\logic}[1]{%
  \begingroup
  \expanded{\mathchardef\in = \the\numexpr\in-"1000}%
  \mathcode`= = \numexpr\mathcode`=-"1000\relax
  #1
  \endgroup
}


\begin{document}

\[
\logic{v \in S = \true \land y=f(z)}
\]

\[
\logic{v=x+1 \lor y=z}
\]

\end{document}

在此处输入图片描述

相关内容