自定义命令中的 \underbracket

自定义命令中的 \underbracket

我希望定义自定义命令\distr如下:

\newcommand{\distr}[1]{\underbracket[0.3pt][1pt]{#1}}

命令\underbracket是出现在 中的命令mathtools。但是,我在编译时看到(至少)两个问题:(1)当 egdistr{f}出现在下标/上标中时,字符F保持其正常大小,而不是缩小到\small;(2)有时 周围会有不必要的间距\distr{ },例如当脚本字母出现在它之前时(如\mathscr{L}\distr{\psi})。我该如何实现\distr以避免这些问题?除了mathtools,我还使用标准数学符号包,例如amsmathphysicsamssymb

梅威瑟:

\documentclass[preview]{standalone}
\usepackage{mathtools}
\usepackage[cal=euler]{mathalfa}

\newcommand{\distr}[1]{\underbracket[0.3pt][1pt]{#1}}

\begin{document}
    \begin{equation*}
        a_f\ a_{\distr{f}} \qquad \mathcal{L}\psi\ \mathcal{L}\distr{\psi}
    \end{equation*}
\end{document}

答案1

您可以使用\mathpalette来区分不同的数学风格:

在此处输入图片描述

\documentclass{article}

\usepackage{mathtools}

\makeatletter
\newcommand{\@distr}[2]{\underbracket[0.3pt][1pt]{#1#2}}
\newcommand{\distr}[1]{\mathpalette{\@distr}{#1}}
\makeatother

\begin{document}

\[
  a_f\ a_{\distr{f}} \qquad \mathcal{L}\psi\ \mathcal{L}\distr{\psi}
\]

\end{document}

的奥秘\mathpalette讨论如何\mathpalette工作。

相关内容