mathpalette-version 用于 fontstyle 而不是 fontsize

mathpalette-version 用于 fontstyle 而不是 fontsize

链接数学调色板的奥秘很好地概述了 mathpalette 命令。我的问题是伪相关的。是否有 mathpalette 版本,其中不是“保留字体大小”,而是“保留字体样式”?

例如,下划线命令\underline具有这样的属性:任何写在其中的数学运算都会保留字体样式(例如 \mathit、\mathtt、\mathrm),但下括号命令\underbracket[rule thickness][bracket height]{arg}没有此功能。我希望制作自己的下括号自定义版本,以模仿下划线命令。如果 mathpalette 版本存在(我怀疑在快速互联网搜索后不存在),那么我就能找到一种获取所需代码的方法。欢迎提出任何建议。

答案1

当前数学系列位于 TeX 原始\fam寄存器中,LaTeX 为其引入了\mathgroup包装器。每次宏将其数学内容设置为用于对齐或测量或其他操作的框时,就会出现您描述的那种问题。这种情况不会发生,\overline因为它(在数学模式下)是原始的,但\underbracket使用了\ialign

对于具有单个参数的宏,您可以定义类似于1)的包装器\mathpalette,但对于\underbracket则比较棘手,因为它有两个可选参数。我只是查看了代码中可选参数的默认值,并围绕 构建了一个包装器\underbracket。基本思想是保存 的当前值\mathgroup并在稍后的参数中使用它。

\documentclass{article}

\usepackage{mathtools}

\MHInternalSyntaxOn
\makeatletter
\newcommand*{\saved@mathgroup}{}% better safe than sorry
\NewDocumentCommand{\varunderbracket}{ O{\l_MT_bracketheight_fdim} O{.7\fontdimen5\textfont2} m }{%
   \edef\saved@mathgroup{\the\mathgroup}% save current \mathgroup
   \underbracket[#1][#2]{\mathgroup\saved@mathgroup#3}% use saved \mathgroup
}
\makeatother
\MHInternalSyntaxOff

\begin{document}

\begin{gather*}
\mathsf{foo + ba\underbracket{r - ba}z} f\underbracket{oo \mathrm{bar} baz}\\
\mathsf{foo + ba\varunderbracket{r - ba}z} f\varunderbracket{oo \mathrm{bar} baz}
\end{gather*}

\end{document}

1)嗯,实际上完全不同,但你明白我的意思了。

相关内容