![用于下标时的缩放符号](https://linux22.com/image/385533/%E7%94%A8%E4%BA%8E%E4%B8%8B%E6%A0%87%E6%97%B6%E7%9A%84%E7%BC%A9%E6%94%BE%E7%AC%A6%E5%8F%B7.png)
我使用这个符号(由 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
我们能够为不同的数学样式定义不同的负字距。不过,这取决于字体,因此不同的数学字体可能需要不同的量。