澄清

澄清

澄清

\documentclass[fleqn]{article}
\def\foo{What do I put here???}
\begin{document}
\[a \foo b\]         
\[\foo b\]
\[a, \foo b\]
\[a, b\]
\end{document}

我希望上面的文档与下面的文档等效。我应该将什么作为 \foo 命令的定义?

\documentclass[fleqn]{article}
\usepackage{amsmath}
\begin{document}
\[a\quad{}\forall{}b\]         
\[\forall{}b\]
\[a,\forall{}b\]
\[a,\;\forall{}b\]
\end{document}

原始问题

我怎样才能重现数学模式下运算符的间距行为+,但使用不同的间距。

\documentclass[fleqn]{article}
\begin{document}
\[a + b\]         
\[+ b\]
\[a, + b\]
\[a, b\]
\end{document}

在上面的文档中, + 在 的两侧都有空格a + b,但在 的前后没有空格+ b。我怎样才能编写一个具有类似于 的间距行为的命令+,即根据之前的内容(如果可能的话,还有之后的内容)具有不同的间距大小?

我考虑过使用柔性胶水,但我认为它的特点是有一个可以根据线路的饱满程度而变化的空间,而不是根据周围的标记而变化的空间。

注意:我不是在寻找\operatorname{}。相反,我试图重新实现它,但使用不同的间距。

答案1

您可以在以下位置找到 TeX 在数学模式下自动插入的间距表https://tex.stackexchange.com/a/81777/4427. 的特定间距+源于它被归类为垃圾桶原子和禁止的规则垃圾桶原子,将其转化为奥德,如果它周围没有可能的组合。例如,关闭 垃圾桶 奥德是允许的,并且在$(a-b)+2$两侧+都有\medmuskip

保存自动间距值的参数是\thinmuskip(表中的“1”),\medmuskip(表中的“2”)和\thickmuskip(表中的“3”)。

一个重要的事实是只有一个在整个公式中使用上述每个参数的值,准确地说,$是扫描公式末尾的 时的当前值,并且 TeX 开始将其构建的数学列表转换为水平列表的过程,根据 TeXbook 附录 G 中解释的规则。

所以如果你尝试做$a\begingroup\thickmuskip=18mu+\endgroup b$你仍然会得到

在此处输入图片描述

无论如何重置参数的值,垃圾桶原子永远会有相同两边都有空间。

这是 TeX 的一个内置限制,用户无法影响间距的自动选择,我们也无法对前一个或下一个原子进行测试。使用一些巧妙的宏,可以识别下一个原子是否奥德垃圾桶或者相对(参见\binrel@中的宏amsbsy.sty,它用于\overset\undersetamsmath),但无法测试前一个原子。

LuaTeX 及其回调可能会有所不同,它们可以检查正在构建的列表,对此的研究将非常受欢迎,因为它可以为扩展 TeX 不灵活的范例提供方法。在其他情况下,也需要一定的灵活性;更好的是,定义新类型的原子和新的间距参数可以解决一些现在需要的问题特别指定输入。

然而,我的印象是你从错误的角度看待了这个问题\forall。我对这个符号的立场是,它永远不应该被使用,除非是在形式逻辑中。人们显然可以不同意,但在这种情况下,他们应该\forall ,而不是在量化术语之后。否则,请使用“for all”,这样更清晰,在位置方面也更不模棱两可。

相关内容