自定义二元运算符的间距

自定义二元运算符的间距

我使用 定义了一个新的二元运算符,\rule以创建一个类似于\mid但稍粗一些的自定义符号。我最初给它\mathrel留有间距(与 相同\mid),但我发现这往往会在运算符周围留出太多空间,所以我将其更改为\mathbin

\newcommand{\mg}{\mathbin{\rule[-2.5pt]{1.25pt}{10pt}}}

\mathbin在大多数情况下,间距看起来都很好,但间距\mathbin似乎有点“挤压”,并且在内联数学中,它有时会被挤压得太多,正如您在此处看到的那样。(下面的 MWE 代码。)

在此处输入图片描述

所以我想知道我是否可以更精确地控制此运算符周围的间距。我希望它看起来与\mathbin排版系统可以减少内联数学中的空间的下限相似,但下限更大。

这是 MWE,它生成上面显示的示例。

\documentclass{article}

\newcommand{\mg}{\mathbin{\rule[-2.5pt]{1.25pt}{10pt}}}

\begin{document}

Here is the `mg' command in an equation, which looks good:
\begin{equation}
 \psi(a\mg b)
\end{equation}

It also looks fine most of the time in inline math $\psi(a\mg b)$.

But sometimes it looks a bit sort of jammed together, e.g.\ $\psi(a\mg b)\,\phi(c\mg b)\,\theta(d\mg e)$.

\end{document}

答案1

\mathbin不能替代\mathrel。二元运算和关系的间距规则非常不同。如果您确实想要不同的间距(我不这么认为),您可以为整个复合体定义一个宏,假设 始终\mg是中缀。

\documentclass{article}
\usepackage{amsmath}
\usepackage{showframe}

\makeatletter
\DeclareRobustCommand{\mg}{\mathpalette\mg@\relax}
\newcommand{\mg@}[2]{%
  \begingroup
  \sbox\z@{$#1|$}%
  \sbox\tw@{$\m@th#1\mspace{18mu}$}%
  \rule[-\dp\z@]{0.125\wd\tw@}{\dimexpr\ht\z@+\dp\z@}%
  \endgroup
}
\makeatother

\DeclareRobustCommand{\mgrel}[2]{%
  {#1}%
  \nonscript\mspace{2mu}\mspace{2mu}%
  \mg
  \nonscript\mspace{2mu}\mspace{2mu}%
  {#2}%
}

\begin{document}

It looks fine most of the time in inline math $\psi(\mgrel{a}{b})$.

And it doesn't jam even if the line is compressed, 
e.g.\ $\psi(\mgrel{a}{b})\,\phi(\mgrel{c}{b})\,\theta(\mgrel{d}{e})$.

It also works in subscripts: $A_{(\mgrel{a}{b})}$

\end{document}

在此处输入图片描述

答案2

opbin和类型的数学原子rel通常(取决于这些数学原子之前和之后的内容)被分别由参数\thinmuskip\medmuskip和控制的空格包围\thickmuskip。我熟悉的大多数(可能是所有)LaTeX 文档类中这些参数的默认值是3mu4mu plus 2mu minus 4mu5mu plus 5mu。(mu定义为字母“M”宽度的 1/18,又名1em。)换句话说,\thinmuskip具有固定值(在 TeX 术语中它是“长度参数”),\thickmuskip具有拉伸分量但没有收缩分量(其最小值为 5mu,最大值为 10mu),并且\medmuskip同时具有拉伸和收缩分量(在 TeX 术语中它是“粘合参数”:其最小值为 0mu,最大值为 6mu)。

您已选择math-bin\mg宏指定类型。因此,符号周围的空白量可以少至 0mu,即根本没有空格。

我的建议是不是触及 的值\medmuskip,因为它用于各种地方和计算。鉴于 (a)\mg应该发挥与 类似的作用\mid,(b)\mid的数学状态是math-rel,以及 (c)\thickmuskip没有收缩成分,我也会将数学相关状态分配给\mg(并习惯于5mu而不是4mu分离)。

相关内容