如果多行比通常大,则 vbox 会溢出

如果多行比通常大,则 vbox 会溢出

我有下表,它给出了一个过满的垂直框,因为多行占用的垂直空间比它跨越的每一行都要多。另外,如果可能的话,我希望多行垂直居中。

\documentclass[a4paper]{article}

\usepackage{multirow,tabularx}
\usepackage[margin=1in]{geometry}

\begin{document}

\begin{table*}\begin{tabularx}{\linewidth}{l X X X} \hline

Surface & $K$ (courbure) & $\chi$ (caracteristique d'Euler) & Remarques \\ \hline

$S^2,R P^2$ & $K = +1$ \newline geometrie elliptique & $\chi>0$ &
$\pi_1$ fini, $\pi_2 \neq 0$ \\

$T^2, K^2$ (Klein) & $K = 0$ \newline geometrie euclidienne & $\chi=0$ & 
\multirow{2}{\hsize}{ce sont des $K(\pi,1)$ et le revetement universel est $R^2$} \\

genre $>1$ & $K = -1$ \newline geometrie hyperbolique & $\chi<0$ & \\ \hline

\end{tabularx}
\end{table*}

\end{document}

有没有办法在不使用嵌套表格的情况下解决这个问题?对于这种布局,我认为我需要三个表格,每个列一个,我正在寻找一个更简洁的解决方案。即使我使用了三个表格,行是否应该对齐也不清楚,从而产生了更多问题。

答案1

这里不需要多行,因为您已经在一X列中了。

在运行您的 MWE 时,我没有收到任何过满的es,但由于 TeX 尝试在窄列宽中进行对齐,因此确实\vbox收到了过满的es。\hbox

可以通过\raggedright在每X列中插入内容左对齐来防止这种情况发生。在下面的代码中,我使用tabularx序言实现了这一点

l *3{>{\raggedright\arraybackslash}X}

这将创建 3X列,每列都排列在右侧。需要\arraybackslash恢复,\\因为其中一列X也是tabularx环境的最后一列。

单元格的垂直对齐X可以按照tabularx手动的

\renewcommand{\tabularxcolumn}[1]{m{#1}}

默认情况下,\tabularxcolumns 是p列,它们与单元格中第一行文本的基线对齐。通过m像我上面所做的那样将它们更改为列,您可以实现居中对齐。

在下面的代码中,我还添加booktabs(强烈推荐)对表的一些额外的增强功能。

\documentclass[a4paper]{article}

\usepackage{booktabs,tabularx}
\usepackage[margin=1in]{geometry}
\renewcommand{\tabularxcolumn}[1]{m{#1}}

\begin{document}
\begin{table}
\begin{tabularx}{\linewidth}{l *3{>{\raggedright\arraybackslash}X}}
\toprule
Surface & $K$ (courbure) & $\chi$\newline (caracteristique d'Euler) & Remarques \\
\midrule
$S^2,R P^2$ & $K = +1$ \newline geometrie elliptique 
  & $\chi>0$ & $\pi_1$ fini, $\pi_2 \neq 0$ \\
$T^2, K^2$ (Klein) & $K = 0$ \newline geometrie euclidienne 
  & $\chi=0$ & ce sont des $K(\pi,1)$ et le revetement universel est $R^2$ \\
genre $>1$ & $K = -1$ \newline geometrie hyperbolique 
  & $\chi<0$ & \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}

在此处输入图片描述

相关内容