定义一个前缀运算符,其参数前带有空格

定义一个前缀运算符,其参数前带有空格

我想要自定义运算符的特定间距行为。我可以通过设置数学类(\mathord等等)来产生所需的间距,但我必须根据具体情况进行操作,因为没有一个数学类适用于所有情况。有没有更自动化的解决方案?

在我的文档中,该运算符$(A\smalltriangleright B)$表示“从 A 强制转换为 B”。它是一个前缀运算符,在某些情况下需要下标。

  • 当运算符应用于参数时,运算符和参数之间应该有一些空格。mathbin 空间或 mathrel 空间都是可以接受的。

  • 当使用函数组合运算符组合运算符时\circ,它们应该像普通符号一样,\circ扮演二元运算符的角色。

我无法获得在两种情况下具有正确间距的运算符的单一定义:

\documentclass{article}
\usepackage{amsmath}
\usepackage{mathabx}

\newcommand{\coerceSub}[3]{(\mathord{#1}\smalltriangleright\mathord{#2})_{#3}}

\begin{document}

In an operator application, the ``mathrel'' version looks better.
\begin{gather}
  % OK                                                                          
  \mathrel{\coerceSub uv1} x \\
  % Not OK: no space between operator and operand                               
  \coerceSub uv1 x
\end{gather}

In an operator composition, the plain version looks better.
\begin{gather}
  % Not OK: no space between \circ and c                                        
  \mathrel{\coerceSub vw1} \circ c \\
  % OK                                                                          
  \coerceSub vw1 \circ c
\end{gather}

\end{document}

答案1

我没有字体,所以我改变了操作符,但我想\mathinner这里可以做你想做的事,在 ord 前留一些空格,并且不会阻止 bin 原子有 bin 间距,

以下各版本中的最佳版本:

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath,amssymb}

\newcommand{\coerceSub}[3]{(\mathord{#1}{\smallfrown}\mathord{#2})_{#3}}

\begin{document}

In an operator application, the ``mathrel'' version looks better.
\begin{gather}
  % OK                                                                          
  \mathinner{\coerceSub uv1} x \\
  \mathrel{\coerceSub uv1} x \\
  % Not OK: no space between operator and operand                               
  \coerceSub uv1 x
\end{gather}

In an operator composition, the plain version looks better.
\begin{gather}
  \mathinner{\coerceSub uw1} \circ c \\
  % Not OK: no space between \circ and c                                        
  \mathrel{\coerceSub vw1} \circ c \\
  % OK                                                                          
  \coerceSub vw1 \circ c
\end{gather}

\end{document}

相关内容