我认为我对这些问题有一个更简单更好的解决方案如何向表格单元格添加垂直填充 这样看起来就没那么拥挤了。但是,我的解决方案不知\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}