我有下表,它给出了一个过满的垂直框,因为多行占用的垂直空间比它跨越的每一行都要多。另外,如果可能的话,我希望多行垂直居中。
\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}}
默认情况下,\tabularxcolumn
s 是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}