![在某些情况下,Parbox 不会保持垂直居中](https://linux22.com/image/428460/%E5%9C%A8%E6%9F%90%E4%BA%9B%E6%83%85%E5%86%B5%E4%B8%8B%EF%BC%8CParbox%20%E4%B8%8D%E4%BC%9A%E4%BF%9D%E6%8C%81%E5%9E%82%E7%9B%B4%E5%B1%85%E4%B8%AD.png)
我以为我终于理解了 parboxes 的垂直对齐行为,但是接下来发生了这样的事情:
我有这个tabularx
与 parboxes 在一起的案例(在 XeLaTeX 中)并将我的案例分解为这个最小示例(pdfLaTeX):
\usepackage{tabularx}
\usepackage{multirow}
\begin{document}
\begin{tabularx}{\textwidth}{|@{\hspace{0.5mm}}cX@{}c@{}|} \hline
\multirow[c]{2}{*}[]{
\parbox[c][][c]{10mm}{{\centering \Huge A}\\[0.3mm]
\centering \footnotesize 1234}}
&
\parbox[c][][c]{10cm}{
\vspace{2mm}
bla
\vspace{2mm}}
&
\multirow[c]{2}{*}{
\parbox[c][][c]{10mm}{{\centering \Huge B}}}
\\ \cline{2-2}
&
\parbox[c][][c]{10cm}{
\vspace{2mm}
bla
\vspace{2mm}}
& \\ \hline
\end{tabularx}
\end{document}
...产生以下输出:
中间一列的两个 parbox 必不可少,因为在我的实际案例中,里面发生的事情更复杂。它们的高度会随着内容而变化,我需要两侧的“A”和“B”保持垂直居中(相对于整个表格,无论它们\cline
位于何处)。
如果上部 parbox 增长(变为bla
)bla\\bla\\bla\\bla\\bla
,我就会得到期望的行为:
然而,如果较低的一个增长(以bla
完全相同的方式变化),就会发生以下情况:
有人能告诉我这种行为背后的逻辑吗?我以为命令[c]
后面的\multirow
命令会起作用,但似乎可用的空间multirow
并没有与最低行一起延伸。如果有解决办法,我希望尽可能接近原始代码,因为这些框的实际内容要复杂得多,我认为没有 parboxes 就行不通。此外,手动调整不是一种选择,因为我将拥有很多内容各异的框,所以它应该自动工作。如上所述,我正在使用 XeLaTeX(由于字体问题),但可以使用 pdfLaTeX 重现此行为。非常感谢!
编辑:我刚刚检查了文档对于multirow
,3.8 几乎表明除了手动调整(不幸的是,这不是一个选项)之外,没有其他方法可以实现我想要做的事情。还有其他想法吗?
答案1
您可以嵌套表格。列的宽度X
可设为\hsize
。
\documentclass{article}
\usepackage{tabularx}
\begin{document}
\noindent
\begin{tabularx}{\textwidth}{|cX@{}c|}
\hline
\begin{tabular}{@{}c@{}} \Huge A \\[0.3mm] 1234 \end{tabular} &
\begin{tabular}{@{}p{\hsize}@{}}
bla \\
\hline
bla \\
bla \\
bla \\
bla \\
bla \\
bla
\end{tabular} & \begin{tabular}{@{}c@{}}\Huge B \end{tabular}\\
\hline
\end{tabularx}
\end{document}