这是怎么回事?为什么TEXT
s 没有对齐?
\documentclass{article}
\usepackage{pbox}
\begin{document}
\hrule
\pbox[c][20pt][b]{\textwidth}{TEXT\\ Short}
\pbox[c][20pt][b]{\textwidth}{TEXT\\ Long Text}
\pbox[c][20pt][b]{\textwidth}{TEXT\\ Short}
\pbox[c][20pt][b]{\textwidth}{TEXT\\ Long Text}
\hrule
\end{document}
答案1
g
中Long
有深度,而 中Short
没有字母有深度。这就是错位的原因。要纠正它,您可以添加\vphantom{g}
或Short
the \smash
(Long
或仅添加g
)。
\documentclass{article}
\usepackage{pbox}
\begin{document}
\hrule
\pbox[c][20pt][b]{\textwidth}{TEXT\\ \vphantom{g}Short}%
\pbox[c][20pt][b]{\textwidth}{TEXT\\ Long Text}%
\pbox[c][20pt][b]{\textwidth}{TEXT\\ \vphantom{g}Short}%
\pbox[c][20pt][b]{\textwidth}{TEXT\\ Long Text}%
\hrule
%
\bigskip
%
\hrule
\pbox[c][20pt][b]{\textwidth}{TEXT\\ Short}%
\pbox[c][20pt][b]{\textwidth}{TEXT\\ \smash{Long} Text}%
\pbox[c][20pt][b]{\textwidth}{TEXT\\ Short}%
\pbox[c][20pt][b]{\textwidth}{TEXT\\ \smash{Long} Text}%
\hrule
\end{document}
答案2
如果您想自动忽略最后一行的深度,您可以使用包varwidth
和基于它的自定义命令:
\documentclass{article}
\usepackage{varwidth}
\newcommand{\spbox}{} % check whether it's already defined
\def\spbox#1#{\def\spboxtemp{#1}\spboxaux}% absorb the possible optional arguments
\newcommand\spboxaux[2]{%
\begingroup
\expandafter\varwidth\spboxtemp{#1}#2\par\kern-\prevdepth\endvarwidth
\endgroup}
\begin{document}
\hrule
\spbox[c][20pt][b]{\textwidth}{TEXT\\ Short}
\spbox[c][20pt][b]{\textwidth}{TEXT\\ Long Text}
\spbox[c][20pt][b]{\textwidth}{TEXT\\ Short}
\spbox[c][20pt][b]{\textwidth}{TEXT\\ Long Text}
\hrule
\end{document}