\sqrt{\phantom{a^2}b}
和
\sqrt{a^2b}
我得到以下结果:
您会注意到,这两个平方根具有不同的形状和大小,这与人们对 的描述的预期相反\phantom
。
是否有解决方法可以实现相同的尺寸?
答案1
问题在于,平方根的参数被排版为狭窄风格。
如果根号以显示样式出现,则平方根符号下的材料排版为拥挤的展示风格。但是,\phantom
只能在非拥挤样式中选择,因此您会得到不同的高度。在下图中,您可以看到a^2
非拥挤样式和拥挤样式的输出
这显然解释了根号位置的差异。
使用\cramped
自mathtools
:
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\begin{align}
&\sqrt{a^2b}\,\sqrt{\phantom{\cramped{a^2}}b} \\
&\sqrt{\phantom{\cramped{a^2}}b}\,\sqrt{a^2b} \\
&\sqrt{\frac{1}{2}}
\end{align}
\end{document}
如果你使用 LuaLaTeX,那么有一个更巧妙的方法:重新定义 \mathpalette
。
\documentclass{article}
\usepackage{amsmath}
\renewcommand*{\mathpalette}[2]{%
\ifcase\mathstyle\relax
#1\displaystyle{#2}\or
#1\crampeddisplaystyle{#2}\or
#1\textstyle{#2}\or
#1\crampedtextstyle{#2}\or
#1\scriptstyle{#2}\or
#1\crampedscriptstyle{#2}\or
#1\scriptscriptstyle{#2}\or
#1\crampedscriptscriptstyle{#2}\fi
}
\begin{document}
\begin{align}
&\sqrt{a^2b}\,\sqrt{\phantom{a^2}b} \\
&\sqrt{\phantom{a^2}b}\,\sqrt{a^2b} \\
&\sqrt{\displaystyle a^2b}\,\sqrt{\displaystyle\phantom{a^2}b}\\
&\sqrt{\displaystyle\phantom{a^2}b}\,\sqrt{\displaystyle a^2b}
\end{align}
\end{document}
警告上述重新定义\mathpalette
并不能保证在所有情况下都能成功,特别是当用 定义的命令\mathpalette
用于分数时。它本质上是一个概念证明。
答案2
您的示例显示了 的输出\displaystyle
,即 之间的输出$$...$$
。我会解释为什么我们可以看到这样的差异。
该\phantom
宏创建一个类似的框\hbox{$\currentstyle contents $}
,清空该框但使用它的尺寸。
这意味着它会做这样的事情:
$$ \sqrt{a^2 b}, \sqrt{\hbox{$\displaystyle a^2$}b}, \sqrt{\phantom{a^2}b} $$
请注意,指数位置在 中的位置\displaystyle
与 的参数中的位置不同\sqrt
,其中使用了 Reduced \textstyle
。指数位置按三个步骤增长:Reduced Textstyle、Textstyle、Displaystyle。单词“Reduced”表示某些东西高于此类指数,因此指数不会位于高位。但是当\hbox{$\displaystyle a^2$}
被创建时,这将独立于上下文完成,TeX 不知道指数上方有某些东西。
答案3
我不使用http://latex2png.com/但是,正如 jakun 正确指出的那样,在显示数学中似乎确实如此:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
Inline:
\(\sqrt{\phantom{a^2}b}\)
\(\sqrt{a^2b}\)
Display style:
\[\sqrt{\phantom{a^2}b}\]
\[\sqrt{a^2b}\]
Display style whith \verb|\hphantom|:
\[\sqrt{\hphantom{a^2}b}\]
\[\sqrt{a^2b}\]
\end{document}
可以通过在内联数学中输入以下内容来解决:
$\sqrt{a^2b}$ and $\sqrt{\phantom{a^2}b}$
或使用\hphantom
:
\sqrt{a^2b}\sqrt{\hphantom{a^2}b}
这似乎也在该网站上给出了正确的输出:
编辑:回复 egreg 的评论
那么,玩和怎么样\hphantom
?\vphantom
我添加了一个网格来显示尺寸似乎正确:
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{eso-pic}
\begin{document}
\AddToShipoutPictureBG{%
\AtPageLowerLeft{%
\begin{tikzpicture}[overlay,remember picture]
\draw[step=.1,gray,very thin] (0,0) grid (\paperwidth,\paperheight);
\end{tikzpicture}}}
Inline:
\(\sqrt{a^{2^N}b}\)
\(\sqrt{\hphantom{a^{2^N}}\vphantom{^N}b}\)
\(\sqrt{\hphantom{a^{2^N}}\vphantom{^N}b}\)
Display style:
\[\sqrt{a^{2^N}b}\]
Display style whith \verb|\hphantom| and \verb|\vphantom|:
\[\sqrt{\hphantom{a^{2^N}}\vphantom{^N}b}\]
\end{document}
答案4
值得一提的是,ConTeXt MkIV 中的输出似乎是正确的。
\starttext
\startformula
\sqrt{\phantom{a^2}b}
\sqrt{a^2b}
\stopformula
\stoptext
给出
但是(正如下面@egreg所解释的)\sqrt
ConTeXt中的使用的\displaystyle
是而不是\crampeddisplaystyle
。如果我们切换到crampeddisplaystype
,则的输出\phantom
仍然是正确的:
\starttext
\startformula
\sqrt{\phantom{a^2}b}
\sqrt{a^2b}
\stopformula
\startformula
\sqrt{\crampeddisplaystyle\phantom{a^2}b}
\sqrt{\crampeddisplaystyle a^2b}
\stopformula
\stoptext
这使
我也用 LuaLaTeX 测试过,但 LuaLaTeX 给出的输出与 PDFLaTeX 相同。也许 ConTeXt 定义\phantom
(在supp-box.mkiv) 可以在 LaTeX 内核或 LaTeX 包中进行适配。