负幻影并不完全起作用

负幻影并不完全起作用

我经常会想到需要一个“负幻影”命令。
定义此类命令(假设为 \nphantom)的一种简单方法可能是:

\newcommand{\nhphantom}[1]{\setbox0=\hbox{#1}\hspace{-\the\wd0}}

但是,这个命令并没有像我想要的那样工作。
例如,我尝试了以下代码,我想在文本模式和数学模式下在同一位置打印两个字母“A”和两个总和:

\[
A\nhphantom{$\displaystyle A$}A\quad
\sum_{n=1}^{N}\nhphantom{$\displaystyle\sum_{n=1}^{N}$}\sum_{n=1}^{N}
\]

\begin{center}
A\nhphantom{A}A\quad
$\sum_{n=1}^{N}\nhphantom{$\displaystyle\sum_{n=1}^{N}$}\sum_{n=1}^{N}$
\end{center}

那么结果如下: 审判 我们可以看到,对于单个字母“A”,我的负幻影几乎可以按我的要求工作,但对于求和则不行。对于求和,我的负幻影似乎引入了一些额外的移位或给出了稍短的负幻影。此外,文本模式下求和的“误差”可能比数学模式下的要大。

因此我想问一下:

  1. 为什么会出现上述现象呢?
  2. 我该如何定义 \nhphantom 以避免上述现象?

答案1

A您忘记了,如果两个运算符号前面有一个普通符号(在您的情况下为),TeX 会在两个运算符之间和前面添加一个细空格。

对于内联版本,除了上述问题之外,\displaystyle当样式为时,您还要使用来计算空间\textstyle

\documentclass{article}
\usepackage{amsmath}

\newcommand{\nhphantom}[1]{\sbox0{#1}\hspace{-\the\wd0}}

\begin{document}

\noindent
Bad
\[
A\nhphantom{$\displaystyle A$}A\quad
\sum_{n=1}^{N}\nhphantom{$\displaystyle\sum_{n=1}^{N}$}\sum_{n=1}^{N}
\]
Good
\[
A\nhphantom{$\displaystyle A$}A\quad
{\sum_{n=1}^{N}}\nhphantom{$\displaystyle\sum_{n=1}^{N}$}{\sum_{n=1}^{N}}
\]
Bad
\begin{center}
A\nhphantom{A}A\quad
$\sum_{n=1}^{N}\nhphantom{$\displaystyle\sum_{n=1}^{N}$}\sum_{n=1}^{N}$
\end{center}
Good
\begin{center}
A\nhphantom{A}A\quad
${\sum_{n=1}^{N}}\nhphantom{$\sum_{n=1}^{N}$}{\sum_{n=1}^{N}}$
\end{center}

\end{document}

在此处输入图片描述

为了消除细小的空格,我使用括号将运算符变成普通的原子。在“现实世界”情况下,您可能需要手动修复空格。

相关内容