用于下标时的缩放符号

用于下标时的缩放符号

我使用这个符号(由 Steven B. Segletes 定义这里) 表示一种特殊类型的函数定义:

\newcommand*\diamondarrow{%
  \stackengine{0pt}{\hspace{.83ex}$\rightarrow$}{$\diamond$}{O}{l}{F}{F}{L}}

我注意到,在下标中使用时它不会缩放(应该缩放,对吧?)。我怎样才能让它自动缩放?

\documentclass{article}

\usepackage{stackengine}
\usepackage{scalerel}

\newcommand*\diamondarrow{%   
  \stackengine{0pt}{\hspace{.83ex}$\rightarrow$}{$\diamond$}{O}{l}{F}{F}{L}}

\begin{document}
$A \diamondarrow B_{C \diamondarrow D_{E \diamondarrow F}}$
\end{document}

答案1

我建议一个不同的定义:

\documentclass{article}

\newcommand{\diamondarrow}{%
  \mathrel\diamond
  \mathrel{\mathchoice{\mkern-2mu}{\mkern-2mu}{\mkern-2.5mu}{\mkern-3mu}}%
  \rightarrow
}

\begin{document}
$A \diamondarrow B_{C \diamondarrow D_{E \diamondarrow F}}$
\end{document}

图像

通过将所有内容设置为\mathrel,TeX 将不会引入任何额外的间距。借助 ,\mathchoice我们能够为不同的数学样式定义不同的负字距。不过,这取决于字体,因此不同的数学字体可能需要不同的量。

相关内容