在发布之前我已经查看了一段时间,但我自己或在网上都没有找到解决方案,所以我在这里询问。
基本上,我必须写下一些运算符,并且我想要一个\mathbf
顶部带有粗体帽子的方面,例如
\newcommand{\op}[1]{\mathop{}\!\mathbf{\hat{#1}}}
% ...
\op{O}
这或多或少正是我想要的:
麻烦就来了。
- 对于某些字母,让我们挑选最有问题的字母,例如“X”,我有这种可怕的行为:
当从很远的距离看它时,符号显得太近,因此它叠加在 X 上产生了恼人的混叠(乍一看也不是完全清楚)。
当我必须用匕首表示伴随时,如果我有网络上推荐的规则来升起帽子(我不喜欢这个规则,因为每个字母的升起量相同),我会遇到一些符号问题
\dagger
:\newcommand{\opdag}[1]{\mathop{}\!\mathbf{\hat{\rule{0pt}{1.5ex}#1}^{\dag}}} % ... \opdag{X}
所以匕首太高了,我真的不喜欢它。
总结一下,我想找到一种方法,将帽子稍微抬高到字母上方,但根据帽子下方的内容使用可变的拉伸系数,并且不干扰上标。基本上,如果可以重新定义帽子在字母上方的高度,那么这些目标中的每一个都可以实现。
谢谢你的帮助!
答案1
使用堆栈可以调整帽子的垂直间隙……\smash
这样就不会[极大地]影响后续的上标。
\documentclass{article}
\usepackage{stackengine}
\newcommand{\op}[1]{\mathop{}\!\ensurestackMath{\stackon[-.95ex]{%
\mathbf{#1}}{\smash{\mathbf{\hat{}}}}}}
\newcommand{\opdag}[1]{\mathop{}\!\op{#1}^{\dag}}
\begin{document}
$ \mathbf{O} \op{O} \opdag{O} \mathbf{O}^\dag$
$ \mathbf{X} \op{X} \opdag{X} \mathbf{X}^\dag$
$ \mathbf{x} \op{x} \opdag{x} \mathbf{x}^\dag$
\end{document}
制造\op
和\opdag
完全不受上标位置影响,可以将\smash
整个东西都使用\vphantom
。另外,为了演示,我将堆栈间隙从更改-.95ex
为-1.1ex
显示帽子位置的可调性:
\documentclass{article}
\usepackage{stackengine}
\newcommand{\op}[1]{\mathop{}\!\ensurestackMath{\smash{\stackon[-1.1ex]{%
\mathbf{#1}}{\mathbf{\hat{}}}}}\vphantom{#1}}
\newcommand{\opdag}[1]{\mathop{}\!\op{#1}^{\dag}}
\begin{document}
$ \mathbf{O} \op{O} \opdag{O} \mathbf{O}^\dag$
$ \mathbf{X} \op{X} \opdag{X} \mathbf{X}^\dag$
$ \mathbf{x} \op{x} \opdag{x} \mathbf{x}^\dag$
\end{document}