如何旋转单元格中的文本并使其垂直和水平居中?

如何旋转单元格中的文本并使其垂直和水平居中?

我正在创建一个表格,使用 之后\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 节点)。

上述代码的输出

相关内容