如能得到帮助我将非常感激。
\documentclass{article}
\begin{document}
$ a,\underline{b},\underline{c},d $
\end{document}
我需要将字母 $b$ 下面的下划线用小方括号括起来,字母 $c$ 下面的下划线也需要用小方括号括起来,但是
- 不改变下划线与其上方字母之间的距离,
- 不改变相邻字母之间的水平距离,并且
- 而不改变字母及其下划线的大小。
每对方括号的高度应比逗号略短。
谢谢
答案1
您可以将括号的缩放版本向下推至下划线字母的深度:
\documentclass{article}
\usepackage{amsmath,graphicx}
\makeatletter
\newcommand\bunderline{}% check for being undefined
\DeclareRobustCommand\bunderline[1]{\mathord{\mathpalette\b@underline{#1}}}
\newcommand{\b@underline}[2]{%
\sbox\z@{$\m@th#1\underline{#2}$}%
\raisebox{-\dp\z@}{\scalebox{.5}[.25]{$\m@th#1[$}}%
\copy\z@
\raisebox{-\dp\z@}{\scalebox{.5}[.25]{$\m@th#1]$}}%
}
\makeatother
\begin{document}
$ a,\underline{b},\bunderline{b},\underline{g},\bunderline{g},
\underline{i},\bunderline{i},d $
$x_{\bunderline{z}}$
\end{document}
答案2
类似这样的?请注意,某些尺寸可能需要根据文档中使用的字体或点大小进行调整。
\documentclass{article}
\usepackage{stackengine,graphicx}
\stackMath
\def\tinylb{\smash{\scalebox{.5}{$\scriptscriptstyle[$}}}
\def\tinyrb{\smash{\scalebox{.5}{$\scriptscriptstyle]$}}}
\def\bunderline#1{\setbox0=\hbox{$#1$}\def\useanchorwidth{T}%
\stackunder[1.2pt]{#1}{\tinylb\rule[.3pt]{\wd0}{.4pt}\tinyrb}}
\begin{document}
$ a,\underline{b},\bunderline{b},\underline{g},\bunderline{g},
\underline{i},\bunderline{i},d $
\end{document}
如果您需要保留数学样式:
\documentclass{article}
\usepackage{stackengine,graphicx,scalerel}
\stackMath
\def\tinylb{\smash{\scalebox{.25}{$\SavedStyle[$}}}
\def\tinyrb{\smash{\scalebox{.25}{$\SavedStyle]$}}}
\def\bunderline#1{\ThisStyle{\setbox0=\hbox{$\SavedStyle#1$}\def\useanchorwidth{T}%
\stackunder[1.2pt]{\SavedStyle#1}{\tinylb\rule[.3\LMpt]{\wd0}{.4pt}\tinyrb}}}
\begin{document}
$ a,\underline{b},\bunderline{b},\underline{g},\bunderline{g},
\underline{i},\bunderline{i},d $
$ \scriptstyle
a,\underline{b},\bunderline{b},\underline{g},\bunderline{g},
\underline{i},\bunderline{i},d $
$ \scriptscriptstyle
a,\underline{b},\bunderline{b},\underline{g},\bunderline{g},
\underline{i},\bunderline{i},d $
\end{document}