Stackrel 重新定义字体问题

Stackrel 重新定义字体问题

我正在使用stackrelsp重新定义的命令来\leftharpoonup调整符号高度。但下标字体大小对我来说不起作用。

默认的 stackrel 命令遵循 mathsizes (10, 7, 5)。我将尝试为我定义的命令保留默认的 stackrel 字体设置,stackrelsp 但相同的文本字体大小遵循命令。如何获取此默认字体设置。

梅威瑟:

\documentclass{article}

\usepackage{amsmath}
\usepackage{amssymb}

\def\stackrelsp#1#2{%
  \mathrel{\vbox{\offinterlineskip\ialign{%
    \hfil##\hfil\cr
    $#1$\cr
    \noalign{\kern-0.2pt}
    $#2${}\cr
}}}}

\begin{document}

\begin{equation}
\eta _{(\stackrel{\leftharpoonup}{m},\stackrel{\rightharpoonup}{m})_{(\stackrel{\leftharpoonup}{A}_{i}^{l} ,\stackrel{\rightharpoonup}{A}_{i}^{l} )} }
\end{equation}



\begin{equation}
\eta _{(\stackrelsp{\leftharpoonup}{m},\stackrelsp{\rightharpoonup}{m})_{(\stackrelsp{\leftharpoonup}{A}_{i}^{l} ,\stackrelsp{\rightharpoonup}{A}_{i}^{l} )} }
\end{equation}



\end{document}

我的输出:

enter image description here

答案1

scalerel来拯救你。在这里,\ThisStyle{...\SavedStyle...}语法允许将当前的数学样式 ( obtained at \ThisStyle) 导入到否则会丢失的区域(在 处重建\SavedStyle)。这是一种表达更冗长的 的紧凑方式\mathchoice

\documentclass{article}

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{scalerel}

\def\stackrelsp#1#2{\ThisStyle{%
  \mathrel{\vbox{\offinterlineskip\ialign{%
    \hfil##\hfil\cr
    $\SavedStyle#1$\cr
    \noalign{\kern-0.2pt}
    $\SavedStyle#2${}\cr
}}}}}

\begin{document}

\begin{equation}
\eta _{(\stackrel{\leftharpoonup}{m},\stackrel{\rightharpoonup}{m})_{(\stackrel{\leftharpoonup}{A}_{i}^{l} ,\stackrel{\rightharpoonup}{A}_{i}^{l} )} }
\end{equation}



\begin{equation}
\eta _{(\stackrelsp{\leftharpoonup}{m},\stackrelsp{\rightharpoonup}{m})_{(\stackrelsp{\leftharpoonup}{A}_{i}^{l} ,\stackrelsp{\rightharpoonup}{A}_{i}^{l} )} }
\end{equation}



\end{document}

enter image description here

因此,即使默认数学大小发生变化,它仍将继续工作,例如在序言中

\makeatletter
\DeclareMathSizes{\@xpt}{\@xpt}{3}{3}
\makeatother

enter image description here

答案2

你需要\mathpalette

\documentclass{article}
\usepackage{amsmath}

\newcommand{\rhu}[1]{\vetriaccent{\rightharpoonup}{#1}}
\newcommand{\lhu}[1]{\vetriaccent{\leftharpoonup}{#1}}

\makeatletter
\newcommand{\vetriaccent}[2]{{%
  \mathpalette\vetri@accent@i{{#1}{#2}}%
}}
\newcommand{\vetri@accent@i}[2]{\vetri@accent@ii#1#2}
\newcommand{\vetri@accent@ii}[3]{%
  \vbox{\offinterlineskip
    \ialign{%
      \hfil##\hfil\cr
      $\m@th#1#2$\cr
      $\m@th#1#3$\cr
    }%
  }%
}
\makeatother

\begin{document}

\[
(\lhu{m},\rhu{m})_{(\lhu{m},\rhu{m})_{(\lhu{A_{i}^{l}},\rhu{A_{i}^{l}})}}
\]

\end{document}

enter image description here

相关内容