我试图让我的单元格在表格环境中水平和垂直居中。MWE 位于末尾。
我尝试了不同的方向:哪个可以完成它应该做的事情,以及m{4cm}
像{\centering}m{4cm}}
或这样的复杂变化{\centering\arraybackslash}m{4cm}}
,尽管我必须诚实地说我不知道 arraybackslash 参数到底应该改变什么——我只是从另一个 stackexchange 帖子中复制了那个。
所有文本(包括垂直书写的文本)都应水平和垂直居中。表格的主要部分将是带有标题的图片,图片为正方形。如果有人能告诉我如何对齐单元格,我想这对包含图片的单元格也应该有效,对吗?
编辑:更新了代码并截取了结果的屏幕截图。\parbox
用作占位符以制作更高的单元格。保持1,5
居中,这是真的。但是,其他文本部分似乎有点偏离顶部,可能是因为逗号低于基线(这是正确的词吗?)?有什么方法可以将整体书写降低一两个点?有什么方法可以让单元格稍微高一点?在“foobar foobar”单元格中,书写划伤了顶部和底部的线条。此外,垂直文本偏离中心。我必须使用 minipages 才能使其居中吗?
\documentclass{scrreprt}
\usepackage{array}
\usepackage{multirow}
\usepackage{rotating}
\begin{document}
\begin{table}
\centering
\begin{tabular}{|c|c|c|c|c|c|c|}
\hline
\multicolumn{2}{|c|}{} & \multicolumn{5}{c|}{foo}\\
\cline{3-7}
\multicolumn{2}{|c|}{} & 1,0 & 2,0 & 3,0 & 4,0 & 5,0\\
\hline
\multirow{5}{*}{\rotatebox{90}{bar}} & 1,0 & & & & & \\
\cline{2-7}
& 1,5 & \parbox{2cm}{foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar } & & & & \\
\cline{2-7}
& 2,0 & & & & & \\
\cline{2-7}
& 2,5 & & & & & \\
\cline{2-7}
& 3,0 & & & & & \\
\hline
\end{tabular}
\end{table}
\end{document}
答案1
您可以创建新的列类型,例如
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
然后用作C{<your width>}
列定义,<your width>
根据需要进行设置。这样,您的列就会垂直和水平居中。
我还建议删除垂直线,避免旋转单元格并使用booktabs
。
\documentclass{scrreprt}
\usepackage{array}
\usepackage{multirow}
\usepackage{rotating}
\usepackage{booktabs}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\begin{document}
\chapter{A chapter}
Table \ref{tab:yours} is your table, but I suggest to you to redesign your
table like \ref{tab:mine}.
\begin{table}
\centering\setlength\extrarowheight{2pt}
\caption{Your table\label{tab:yours}}
\begin{tabular}{|*2{C{.5cm}|}*5{C{2cm}|}}
\hline
\multicolumn{2}{|c|}{} & \multicolumn{5}{c|}{foo}\\
\cline{3-7}
\multicolumn{2}{|c|}{} & 1,0 & 2,0 & 3,0 & 4,0 & 5,0\\
\hline
& 1,0 & & & & & \\
\cline{2-7}
\multirow{4}{*}{\rotatebox[origin=c]{90}{bar}} & 1,5 & foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar & & & & \\
\cline{2-7}
& 2,0 & & & & & \\
\cline{2-7}
& 2,5 & & & & & \\
\cline{2-7}
& 3,0 & & & & & \\
\hline
\end{tabular}
\end{table}
\begin{table}
\centering\setlength\extrarowheight{2pt}
\caption{My suggestion\label{tab:mine}}
\begin{tabular}{C{.7cm}*5{C{2cm}}}
\toprule
& \multicolumn{5}{c}{foo}\\
\cmidrule(l){2-6}
bar & 1,0 & 2,0 & 3,0 & 4,0 & 5,0\\
\midrule
1,0 & & & & & \\
\midrule
1,5 & foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar & & & & \\
\midrule
2,0 & & & & & \\
\midrule
2,5 & & & & & \\
\midrule
3,0 & & & & & \\
\toprule
\end{tabular}
\end{table}
\end{document}