如何设置列宽使其在垂直方向上居中?或者在垂直和水平方向上以及下面的单元格也居中?谢谢
\documentclass[12pt,a4paper]{report}
\usepackage{booktabs, makecell, tabularx}
\setlength\textwidth{145mm}
\setlength\textheight{247mm}
\setlength\oddsidemargin{15mm}
\setlength\evensidemargin{15mm}
\setlength\topmargin{0mm}
\setlength\headsep{0mm}
\setlength\headheight{0mm}
\let\openright=\clearpage
\begin{document}
\begin{table}
\small
\renewcommand{\arraystretch}{1.2}
\begin{tabularx}{\textwidth}{>{\hsize=0.2\hsize}X
>{\hsize=0.25\hsize}X
>{\hsize=0.25\hsize}X
>{\hsize=0.3\hsize}X}
\Xhline{1.2pt}\noalign{\vskip 0.4ex}\Xhline{1.2pt}%
Název souboru& Průměrná hodnota chyby& \makecell{Odchylka určení \\ průměrné chyby}& \makecell{Počet středovaných \\ bodů}\\
\Xhline{1.2pt}\noalign{\vskip 0.4ex}
B & A& C& D\\
\Xhline{1.2pt}
\end{tabularx}
\end{table}
\end{document}
答案1
结合\renewcommand\tabularxcolumn[1]{m{#1}}
(来自\tabularx 环境中所有列的垂直居中)和\newcolumntype{C}{>{\centering\arraybackslash}X}
(来自在 tabularx 和 X 列中居中)即可实现以下目的:
\documentclass[12pt,a4paper]{report}
\usepackage{booktabs, makecell, tabularx}
\renewcommand\tabularxcolumn[1]{m{#1}}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}
\begin{table}
\small
\renewcommand{\arraystretch}{1.2}
\begin{tabularx}{\textwidth}{>{\hsize=0.2\hsize}C
>{\hsize=0.25\hsize}C
>{\hsize=0.25\hsize}C
>{\hsize=0.3\hsize}C}
\Xhline{1.2pt}\noalign{\vskip 0.4ex}\Xhline{1.2pt}%
Název souboru& Průměrná hodnota chyby& Odchylka určení průměrné chyby& Počet středovaných bodů\\
\Xhline{1.2pt}\noalign{\vskip 0.4ex}
B & A& C& D\\
\Xhline{1.2pt}
\end{tabularx}
\end{table}
\end{document}
请记住,我已删除\makecell
命令,因为它们扭曲了垂直对齐。如果您需要手动放置换行符,您可以\makecell[cc]{<text>}
在每个列标题中使用(如建议的那样Paul Stanley 在评论中)或替换\newcolumntype{C}{>{\centering\arraybackslash}X}
为\newcolumntype{C}{>{\centering\let\newline\\\arraybackslash}X}
并使用\newline
您希望换行符出现的位置。
答案2
在@leandriis 的出色解决方案的基础上稍作改进,我还将删除所有手动规则宽度操作,只使用宏,它们可以很好地处理宽度和分离。leandriis也表示booktabs
不需要。makecell
如果您想在某些点断线并且习惯makecell
这样做,那么您仍然可以使用\newline
它。
\documentclass[12pt,a4paper]{report}
\usepackage{booktabs, tabularx}
\renewcommand\tabularxcolumn[1]{m{#1}}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}
\begin{table}
\small
\renewcommand{\arraystretch}{1.2}
\begin{tabularx}{\textwidth}{>{\hsize=0.2\hsize}C
>{\hsize=0.25\hsize}C
>{\hsize=0.25\hsize}C
>{\hsize=0.3\hsize}C}
\toprule%
Název souboru & Průměrná hodnota chyby & Odchylka určení průměrné chyby & Počet středovaných bodů \\
\midrule
B & A & C & D \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}