我知道这个问题\sin
这解释了和之间的区别\cos
,因为 中的字母“i”不同\sin
。但是,出于好奇,我不明白为什么\tan
不像 那样在以下 MWE 中处理\sin
。毕竟,“t”的高度与“i”大致相同,不是吗?此外,我只在 中看到这种情况amsmath
。
\documentclass[12pt]{article}
\usepackage{amsmath}
\begin{document}
$\frac{\sqrt{a^2+4b^2\sin^2\alpha}}{2}$\quad\quad
$\frac{\sqrt{a^2+4b^2\cos^2\alpha}}{2}$\quad\quad
$\frac{\sqrt{a^2+4b^2\tan^2\alpha}}{2}$
\end{document}
答案1
\sin^2
您会注意到 中的指数比 中的高一点\tan^2
,而 中的指数又比 中的高一点a^2
。 的高度i
大于 的高度t
,但只在一定程度上影响了拥挤字体中上标的位置。
\documentclass[12pt]{article}
\usepackage{mathtools}
\newcommand{\two}{2\rlap{\vrule height 0pt depth 0.1pt width 3cm}}
\begin{document}
\begin{gather*}
a^{\two} \tan^{\two} \sin^{\two} \\
\cramped{a^{\two} \tan^{\two} \sin^{\two}} \\
\textstyle a^{\two} \tan^{\two} \sin^{\two} \\
\textstyle \cramped{a^{\two} \tan^{\two} \sin^{\two}}
\end{gather*}
\end{document}
平方根下的数学材料以拥挤的风格排版,您可以在图像中看到高度的差异。
解决方法,当您有大量三角函数时非常有用:
\documentclass[12pt]{article}
\usepackage{amsmath,mathtools}
\let\sin\relax
\let\tan\relax
\DeclareMathOperator{\sin}{\vphantom{x}\smash{\mathrm{sin}}}
\DeclareMathOperator{\tan}{\vphantom{x}\smash{\mathrm{tan}}}
\newcommand{\two}{2\rlap{\vrule height 0pt depth 0.1pt width 3cm}}
\begin{document}
\begin{gather*}
a^{\two} \tan^{\two} \sin^{\two} \\
\cramped{a^{\two} \tan^{\two} \sin^{\two}} \\
\textstyle a^{\two} \tan^{\two} \sin^{\two} \\
\textstyle \cramped{a^{\two} \tan^{\two} \sin^{\two}}
\end{gather*}
\begin{center}
$\frac{\sqrt{a^2+4b^2\sin^2\alpha}}{2}$\quad
$\frac{\sqrt{a^2+4b^2\cos^2\alpha}}{2}$\quad
$\frac{\sqrt{a^2+4b^2\tan^2\alpha}}{2}$
\end{center}
\[
\frac{\sqrt{a^2+4b^2\sin^2\alpha}}{2}\quad
\frac{\sqrt{a^2+4b^2\cos^2\alpha}}{2}\quad
\frac{\sqrt{a^2+4b^2\tan^2\alpha}}{2}
\]
\end{document}
答案2
您已经知道如何解决这个问题,所以让我再详细阐述一下。(对于评论来说,这太长了。)
这是一个很好的例子,其中有几件事同时发生。
- 部首有各种不同的大小,因此随着内容的增加,必须有离散的跳跃。
- i 和 t 的高度略有不同。这使得 上的上标 2
sin
比 上的上标 2 略高tan
,而 上的上标 2 又比 上的上标 2 略高cos
。 - 奇怪的是,当删除 + 时,效果就消失了。我最初以为这可能是因为 + 的深度,但令人惊讶的是,如果将加号改为减号(深度不大!),效果仍然存在。我对此没有很好的解释。
tan
根据是否加载,结果(部分)会有所不同amsmath
。我不知道为什么。- 有人可能会争辩说(正如芭芭拉在另一个答案的评论中所说的那样),b 上的正方形至少应该与 上的正方形一样高
sin
,这就是事情开始变得有趣的地方。这里发生的事情是,上标的实现方式不同,这取决于它们是位于字符上还是位于某种构造上。代码路径完全不同。为了强调这一点,这里有两个大正方形(哈哈!)左边的方块充当一个字符,把 2 放在某个位置固定的高度。第二个不充当字符,因此 2 位于相应位置。第一个模型用于字符,第二个模型用于大括号等。
偶然间,我和 Hans Hagen 讨论了这个问题,由于我们最近经常讨论数学,所以我们很好奇。我们花了一段时间才弄清楚问题到底是什么原因造成的,但一旦我们找到了原因,由于原子类的开放,修复就非常接近了。我们有一个特定的函数原子类,从今天开始(在 luametatex 中)有一个类选项single
,告诉原子在这个意义上表现得像一个字形。所以上面的两个黑色方块被设置为
$\mathatom single class \mathordinarycode {\vrule height 1cm depth 0pt width 1cm}^2$ \quad
$\mathatom class \mathordinarycode {\vrule height 1cm depth 0pt width 1cm}^2$
同时,这个新选项single
也被添加到了定义数学函数的具体构造中。这意味着,当我们现在输入
$\frac{ \sqrt{ a^2 + 4b^2 \sin^2 \alpha} }{2}$\quad
$\frac{ \sqrt{ a^2 + 4b^2 \cos^2 \alpha} }{2}$\quad
$\frac{ \sqrt{ a^2 + 4b^2 \tan^2 \alpha} }{2}$
我们在 ConTeXt 中得到(在下一个版本中)