
Я пытаюсь выровнять ячейки в табличной среде по горизонтали и вертикали. MWE находится в конце.
Я пробовал разные ориентации: ту, которая делает то, что должна, а также m{4cm}
сложные вариации, такие как {\centering}m{4cm}}
или {\centering\arraybackslash}m{4cm}}
, хотя, честно говоря, я не знаю, что именно должен менять параметр arraybackslash — я просто скопировал его из другого сообщения на stackexchange.
Все тексты, включая вертикально написанные, должны быть горизонтально и вертикально отцентрированы. Основная часть таблицы будет состоять из картинок с подписью к каждой, картинки будут квадратными. Если кто-нибудь может мне подсказать, как выровнять ячейки, я думаю, это должно сработать и для ячеек, содержащих картинки, не так ли?
Редактировать:Обновил код и сделал снимок экрана результата. \parbox
используется как заполнитель, чтобы сделать ячейку выше. Остается 1,5
по центру, это правда. Однако другие части текста, похоже, немного смещены вверх, может быть, из-за запятой, опущенной ниже базовой линии (это правильное слово для этого?)? Есть ли способ опустить общий текст на пункт или два? И есть ли способ сделать ячейки немного выше? в ячейке "foobar foobar" текст царапает строки сверху и снизу. Кроме того, вертикальный текст смещен по центру. Мне придется работать с мини-страницами, чтобы сделать его центрированным?
\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}