我正在创建一个表格,使用 之后\multirow
,我想旋转此列的文本并使其在单元格内垂直和水平居中。我使用的代码与此类似:
\begin{tabular}{ |c|c|c| }
\hline
\multirow{8}{*}{Text} & row 1 & row 1 \\
& row 2 & row 2 \\
& row 3 & row 3 \\
& row 4 & row 4 \\
& row 5 & row 5 \\
& row 6 & row 6 \\
& row 7 & row 7 \\
& row 8 & row 8 \\ \hline
\end{tabular}
谢谢。
答案1
您可以使用或不使用multirow
。 使用graphicx
通过以下方式进行旋转\rotatebox[<opts>]{<deg>}{<stuff>}
:
\documentclass{article}
\usepackage{graphicx,multirow}
\begin{document}
\begin{tabular}{ |c|c|c| }
\hline
\multirow{8}{*}{\rotatebox[origin=c]{90}{Text}} & row 1 & row 1 \\
& row 2 & row 2 \\
& row 3 & row 3 \\
& row 4 & row 4 \\
& row 5 & row 5 \\
& row 6 & row 6 \\
& row 7 & row 7 \\
& row 8 & row 8 \\
\hline
\end{tabular}
\begin{tabular}{ |c|c|c| }
\hline
& row 1 & row 1 \\
& row 2 & row 2 \\
& row 3 & row 3 \\
\raisebox{-.5\normalbaselineskip}[0pt][0pt]{\rotatebox[origin=c]{90}{Text}} & row 4 & row 4 \\
& row 5 & row 5 \\
& row 6 & row 6 \\
& row 7 & row 7 \\
& row 8 & row 8 \\
\hline
\end{tabular}
\end{document}
使用 时,multirow
您无需担心放置位置,而不使用 时,您需要将文本放置在适当的位置,并可能将其降低/升高到位。此外,您必须展平内容(通过使用 选项完成[0pt][0pt]
)\raisebox
,这样它就不会妨碍行高 - 这是 的自然功能multirow
。
这两种方法之间可能会有一点差异,但可以忽略不计。
答案2
正如@Christian Hupfer 所提到的,你可以用 来实现这一点rotatebox
。但也许,根据实际内容,从审美角度来看,你会更喜欢“无规则”的垂直文本。通常需要进行一些调整以确保垂直居中:
\documentclass{article}
\usepackage{multirow}
\usepackage{mathtools}
\usepackage{array, caption}
\usepackage{graphicx}
\usepackage{makecell}
\begin{document}
\begin{tabular}{ |c|c|c| }
\hline
\multirow{8}{*}[-0.4ex]{\rotatebox{90}{Some text}} & row 1 & row 1 \\
& row 2 & row 2 \\
& row 3 & row 3 \\
& row 4 & row 4 \\
& row 5 & row 5 \\
& row 6 & row 6 \\
& row 7 & row 7 \\
& row 8 & row 8 \\ \hline
\end{tabular}
\hskip 1 cm
\begin{tabular}{ c|c|c| }
\cline{2-3}
\multirow{8}{*}[-0.4ex]{\rotatebox{90}{Some text}} & row 1 & row 1 \\
& row 2 & row 2 \\
& row 3 & row 3 \\
& row 4 & row 4 \\
& row 5 & row 5 \\
& row 6 & row 6 \\
& row 7 & row 7 \\
& row 8 & row 8 \\
\cline{2-3}
\end{tabular}
\end{document}
答案3
与。{NiceTabular}
nicematrix
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{|c|c|c|}
\hline
\Block{8-1}{\rotate Text} & row 1 & row 1 \\
& row 2 & row 2 \\
& row 3 & row 3 \\
& row 4 & row 4 \\
& row 5 & row 5 \\
& row 6 & row 6 \\
& row 7 & row 7 \\
& row 8 & row 8 \\ \hline
\end{NiceTabular}
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。