我怎样才能得到真正宽的波浪号?
我至少需要覆盖 abcdefghijklmnopqrstuvwxyz
该\widetilde
命令不起作用。使用 也\stackrel
不起作用\sim
。
答案1
您可以加载mtpro2
(Mathtime Pro 2) 来生成超宽波浪线。下面给出了一个 MWE(最小工作示例)来说明如何执行此操作。不过,首先,请看一些关于此包的评论:除了让您做很多非常酷且有用的事情之外,此包还允许您创建一个整整两英寸(5 厘米)[!!] 高的求和符号。字体的创建者针对使用此类符号发出了以下警告:
... 从而确保你(以及 MathTime 字体的设计者)会遭到各地期刊编辑的永久憎恨。[直接引用自软件包用户指南第 14 页]
此警告不仅适用于使用超高的求和符号;它当然也适用于超宽的波浪符号和帽子符号。换句话说:仅仅因为mtpro
包允许您创建某些可疑的东西(例如超高求和符号和超宽波浪符号)并不意味着您有去做它们。
那么,这里是一个 MWE,它使用该包在和mtpro2
上方放置一个非常宽的波浪号(哦!)。abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
\documentclass{article}
\usepackage[lite]{mtpro2}
\begin{document}
$\widetilde{\mathit{abcdefghijklmnopqrstuvwxyz}}$
$\widetilde{\mathit{abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz}}$
\end{document}
附录:完整mtpro2
版并不免费。不过,其所谓的lite
子集(即产生上述相当可疑的效果所需的全部内容)是免费。此软件包不在 CTAN 上,但可以从本网站。
第二附录(2013 年 3 月):该mtpro2
包还可以通过使用其命令来生成超宽的“帽子”符号\widehat
。
答案2
修订的解决方案(\AC
来自wasysym
)
\documentclass{article}
\usepackage{scalerel}
\usepackage{stackengine,wasysym}
\newcommand\reallywidetilde[1]{\ThisStyle{%
\setbox0=\hbox{$\SavedStyle#1$}%
\stackengine{-.1\LMpt}{$\SavedStyle#1$}{%
\stretchto{\scaleto{\SavedStyle\mkern.2mu\AC}{.5150\wd0}}{.6\ht0}%
}{O}{c}{F}{T}{S}%
}}
\def\test#1{$%
\reallywidetilde{#1}\,
\scriptstyle\reallywidetilde{#1}\,
\scriptscriptstyle\reallywidetilde{#1}
$\par}
\parskip 1ex
\begin{document}
\test{abcdefghijklm}
\test{abcdefghijk}
\test{abcdefghi}
\test{abcdefg}
\test{abcde}
\test{abc}
\test{ab}
\end{document}
原始解决方案(和\sim
)
考虑到自发布此解决方案以来已有一年的时间,我已经学到了很多东西,因此我重新编辑了这个答案以纠正诸如“错误的垂直轴”、“不能用数学样式缩放”、“额外的死区宽度”等缺陷。这个新结果使用了 2014 年 3 月 10 日的版本scalerel
,因此您可能需要更新。
在 MWE 的最后,我展示了如何确定新宏中使用的.2mu
和.5467
参数。用户不需要注意它,但如果想要将其适应不同的顶部装饰,类似的程序会派上用场。简而言之,我消除了两侧的空间,\sim
并确定了 .2mu 的字距修剪不匹配。这被添加到宏中,这样波浪号就不会相对于参数向左或向右偏移。我还计算了修剪的纵横比\sim
为 .5467。在宏中,这乘以\wd0
参数宽度,以指示缩放 \sim
必须水平拉伸到参数的宽度。然后我将其垂直压缩到所需的高度。
\documentclass{article}
\usepackage{scalerel}[2014/03/10]
\usepackage{stackengine}
\newcommand\reallywidetilde[1]{\ThisStyle{%
\setbox0=\hbox{$\SavedStyle#1$}%
\stackengine{-.1\LMpt}{$\SavedStyle#1$}{%
\stretchto{\scaleto{\SavedStyle\mkern.2mu\sim}{.5467\wd0}}{.7\ht0}%
% .2mu is the kern imbalance when clipping white space
% .5467++++ is \ht/[kerned \wd] aspect ratio for \sim glyph
}{O}{c}{F}{T}{S}%
}}
\def\test#1{$%
\reallywidetilde{#1}\,
\scriptstyle\reallywidetilde{#1}\,
\scriptscriptstyle\reallywidetilde{#1}
$\par}
\parskip 1ex
\begin{document}
\test{abcdefghijklm}
\test{abcdefghijk}
\test{abcdefghi}
\test{abcdefg}
\test{abcde}
\test{abc}
\test{ab}
How .55 multiplier in scaleto was determined:
\fboxsep=0pt\fboxrule=.1pt
\setbox0=\hbox{$\mkern-.86mu\sim\mkern-1.06mu$}
kerned width: \the\wd0, height: \the\ht0,
kerned sim glyph: \fbox{\box0}
Net kern imbalance: $-0.86\mu - (-1.06\mu) = 0.20\mu$
aspect ratio: height/width = 0.5467
\end{document}
答案3
这有点可怕,但确实很有延伸:
\documentclass{article}
\makeatletter
\def\oversortoftilde#1{\mathop{\vbox{\m@th\ialign{##\crcr\noalign{\kern3\p@}%
\sortoftildefill\crcr\noalign{\kern3\p@\nointerlineskip}%
$\hfil\displaystyle{#1}\hfil$\crcr}}}\limits}
\def\sortoftildefill{$\m@th \setbox\z@\hbox{$\braceld$}%
\braceld\leaders\vrule \@height\ht\z@ \@depth\z@\hfill\braceru$}
\makeatother
\begin{document}
\[ \widetilde{abcdefghijklmnopqrstuvwxyz}\]
\[ \oversortoftilde{abcdefghijklmnopqrstuvwxyz}\]
\end{document}