表格中的平衡垂直填充&为什么 \vphantom 有宽度?

表格中的平衡垂直填充&为什么 \vphantom 有宽度?

我认为我对这些问题有一个更简单更好的解决方案如何向表格单元格添加垂直填充 这样看起来就没那么拥挤了。但是,我的解决方案不知\vphantom何故产生了不必要的水平空间。所以,我想问如何删除水平空间。

\documentclass{standalone}
\newcommand{\balancedVPhantom}[1]{ % gives minimum vertical size
    \vphantom{$\vcenter{\hbox{\rule{0pt}{#1}}}$}
}
\newcommand{\newrow}{\balancedVPhantom{2em}\\ \hline}
\begin{document}
\begin{tabular}{|l|l|}
    \hline
    This row has normal space. \\ \hline
    This row has balanced increased space.\newrow
    \balancedVPhantom{2em}But why does vphantom has width? \\ \hline
\end{tabular}
\end{document}

表格中平衡垂直填充的解决方案的输出

如您所见,尽管我使用了,最后一行仍然向右移动\vphantom

答案1

您的宏中有几个错误;最明显的是%行尾缺少 a,而且在左括号后还有一个空格,第二个错误是它\vphantom没有启动水平模式,所以如果您在段落开头使用它,结果将不符合预期,因为您会得到一个空行。

我建议一个更简单的宏:

\documentclass[border=4]{standalone}

\newcommand{\balancedVPhantom}[1]{% gives minimum vertical size
  $\mathsurround=0pt \vcenter{\hrule width0pt height #1}$\ignorespaces
}

\begin{document}
\begin{tabular}{|l|l|}
\hline
This row has normal space. \\
\hline
\balancedVPhantom{2em} This row has balanced increased space. \\
\hline
\end{tabular}
\end{document}

参数后面是否有空格并不重要。当数学模式用于不直接涉及生成数学公式的任何目的时,需要\ignorespaces设置。(虽然忘记它通常并不重要,因为该参数很少设置为非零值。)\mathsurround=0pt

在此处输入图片描述

答案2

因为它添加了一个空格。%第三行末尾的 纠正了这个问题。

\documentclass{standalone}
\newcommand{\balancedVPhantom}[1]{% gives minimum vertical size
\vphantom{$\vcenter{\hbox{\rule{0pt}{#1}}}$}%
}
\newcommand{\newrow}{\balancedVPhantom{2em}\\\hline}
\begin{document}
\begin{tabular}{|l|}
    \hline
    This row has normal space. \\ \hline
    This row has balanced increased space.\newrow
  \balancedVPhantom{2em}But why does vphantom has width? \\ \hline
\end{tabular}
\end{document}

在此处输入图片描述

相关内容