幻影指令没有达到我的预期

幻影指令没有达到我的预期

http://latex2png.com/

\sqrt{\phantom{a^2}b}

\sqrt{a^2b}

我得到以下结果:

在此处输入图片描述      在此处输入图片描述

您会注意到,这两个平方根具有不同的形状和大小,这与人们对 的描述的预期相反\phantom

是否有解决方法可以实现相同的尺寸?

答案1

问题在于,平方根的参数被排版为狭窄风格。

如果根号以显示样式出现,则平方根符号下的材料排版为拥挤的展示风格。但是,\phantom只能在非拥挤样式中选择,因此您会得到不同的高度。在下图中,您可以看到a^2非拥挤样式和拥挤样式的输出

在此处输入图片描述

这显然解释了根号位置的差异。

使用\crampedmathtools

\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所解释的)\sqrtConTeXt中的使用的\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 包中进行适配。

相关内容