使用额外的前导 {} 重新定义数学重音的缺点是什么?

使用额外的前导 {} 重新定义数学重音的缺点是什么?

正如我发现的那样无缺陷latex/4253,TeX 有一个(错误)功能,即它忽略\mathaccent构造周围的括号:${a_b}_c$可以工作,但${\tilde a_b}_c$会因“双下标”错误而失败。括号将{a_b}其转换为一个原子,它可以接收第二个下标,但括号{\tilde a_b}不起作用。请参阅关于为什么会发生这种情况的问题了解详情。

由于${{}\tilde a_b}_c$效果很好(TeX 保留了周围的括号),我想知道定义\tilde{}\mathaccent...而不是\mathaccent...是否更好。这样的前导括号组会对间距(或其他东西)产生不良影响吗?有没有更好的定义不会导致令人困惑的双上标错误?

编辑:一些评论者怀疑地问我为什么有人会想要这个。我无法想出双下标的好例子,只能想出双上标的好例子: 导数的平方b{b'}^2b'{}^2。 那么 导数的平方呢\tilde{b}

排版 b 波浪号素数平方的方法

\tilde{b}{{}'}^2在这里,使用(标有星号的行)可以得到不错的结果,但我认为输入并不自然。举一个让事情变得更糟的例子,假设\widetilde表示傅里叶变换,我想对进行傅里叶变换b(t)/t,然后取其导数的平方。我自然会输入{\widetilde{\biggl[\frac{b}{t}\biggr]}'}^2。相反,我需要输入\widetilde{\biggl[\frac{b}{r}\biggr]}{\vphantom{\frac{b}{r}}'}^2或类似的东西......

话虽如此,我最感兴趣的是知道在(和){}定义的开头添加是否会弄乱数学间距。\tilde\widetilde

答案1

此修订解决方案满足了能够将结果缩放到不同数学样式大小的要求。为此,scalerel使用包的功能将当前数学样式导入修订的定义中\tilde

而且,与原始解决方案一样,它提供了所需的语法,并且无需在 上预先加载\tilde{}并且可以轻松获取后续的下标和上标。此解决方案的一个关键特性是修订后的定义从原始\tilde定义开始,并在 的参数上结束\tilde,因此它应该以预期的方式相对于相邻的数学问题运行。

\documentclass[]{article}%
\usepackage{scalerel}
\let\savetilde\tilde
\def\tilde#1{%
 \ThisStyle{\savetilde{\phantom{\SavedStyle#1}}%
  \setbox0=\hbox{$\SavedStyle#1$}\kern-\wd0#1}}
\parskip .8ex
\begin{document}
${\tilde a_b}_c$\par
${\tilde{b}'}^2$ No BOOM!\par
$\tilde b'^2$ Natural input\par
$(\tilde{b}')^2$ correct, per tohecz\par
$\scriptstyle{\tilde a_b}_c$\par
$\scriptstyle{\tilde{b}'}^2$ No BOOM!\par
$\scriptstyle\tilde b'^2$ Natural input\par
$\scriptstyle(\tilde{b}')^2$ correct, per tohecz\par
$\scriptscriptstyle{\tilde a_b}_c$\par
$\scriptscriptstyle{\tilde{b}'}^2$ No BOOM!\par
$\scriptscriptstyle\tilde b'^2$ Natural input\par
$\scriptscriptstyle(\tilde{b}')^2$ correct, per tohecz\par
Would otherwise cause tilde errors:\par
${\tilde{a}^b}^c$
${{\tilde{a}}^b}^c$
\end{document}

在此处输入图片描述

上述 MWE 中的最后一行由 egreg 给出,作为与\tildeat中断的示例涉及波浪符号的双上标错误. 它们与当前的重新定义一起工作。


原始解决方案(不能随着较小的数学风格而扩展)它提供了所需的语法;它不需要预先加载\tilde{}并且可以轻松地获取后续的下标和上标。

\documentclass[]{article}%
\usepackage{stackengine}
\stackMath
\let\svtilde\tilde
\def\tilde#1{\stackengine{0pt}{}{\svtilde{\phantom{#1}}}{O}{l}{F}{T}{L}#1%
}
\parskip 1ex
\begin{document}
${\tilde a_b}_c$\par
${\tilde{b}'}^2$ No BOOM!\par
$\tilde b'^2$ Natural input\par
$(\tilde{b}')^2$ correct, per tohecz
\end{document}

在此处输入图片描述

这个答案和我之前在解决下标符号间距较小时使用宽条的简单方法

相关内容