代码:

代码:

我有一张有问题的大桌子,当我想旋转\multirow单元格中的文本时,文本被放置在外面并且大于单元格的尺寸,我从这里获取了一些建议,使用\parbox,然后\rotatebox。 但是我没有得到好的结果。

 \documentclass{article}
 \usepackage{array,multirow,graphicx}
 \begin{document}
 \begin{table}[H]
 \centering
 \begin{tabular}{|c|l|r|r|r|r|}
 \hline
 & \multicolumn{1}{|c|}{Text} & \multicolumn{1}{|c|}{Text} & \multicolumn{1}{|c|}{Text} & \multicolumn{1}{|c|}{Text} & \multicolumn{1}{|c|}{text}\\
 \hline
 \rotatebox{90}{\parbox{2mm}{\multirow{3}{*}{rota}}} & text &&&&\\
 & text &&&&\\
 & text &&&&\\
 \hline
 \end{tabular}
 \end{table}
 \end{document}

其结果是:

旋转问题

答案1

放入\rotatebox如下内容:

\parbox[t]{2mm}{\multirow{3}{*}{\rotatebox[origin=c]{90}{rota}}}

代码:

 \documentclass{article}
 \usepackage{array,multirow,graphicx}
 \usepackage{float}
 \begin{document}
 \begin{table}[H]
 \centering
 \begin{tabular}{|c|l|r|r|r|r|}
 \hline
 & \multicolumn{1}{c|}{Text} & \multicolumn{1}{c|}{Text} & \multicolumn{1}{c|}{Text} & \multicolumn{1}{c|}{Text} & \multicolumn{1}{c|}{text}\\
 \hline
 \parbox[t]{2mm}{\multirow{3}{*}{\rotatebox[origin=c]{90}{rota}}} & text &&&&\\
 & text &&&&\\
 & text &&&&\\
 \hline
 \end{tabular}
 \end{table}
 \end{document}

在此处输入图片描述

我删除了标题中的一些虚假垂直线,并引入了旋转原点。但是,我parbox并没有想到引入,因为目前的 MWE 可能不需要这样做。如果您在实际代码中有其他用途,您可以使用对齐说明符parbox(此处[t])。

答案2

一种不需要手动调整宽度并自动使旋转的单元格水平居中的变体:

\documentclass{article}
\usepackage{array,multirow,graphicx}
\begin{document}

\newcommand{\STAB}[1]{\begin{tabular}{@{}c@{}}#1\end{tabular}}

\begin{table}[!h]
  \centering
  \begin{tabular}{|c|l|r|r|r|r|}
    \hline
     & \multicolumn{1}{c|}{Text} & \multicolumn{1}{c|}{Text} & \multicolumn{1}{c|}{Text} & \multicolumn{1}{c|}{Text} & \multicolumn{1}{c|}{text} \\ \hline
     \multirow{3}{*}{\STAB{\rotatebox[origin=c]{90}{rota}}}
     & text                      &                           &                           &                           &                           \\
     & text                      &                           &                           &                           &                           \\
     & text                      &                           &                           &                           &                           \\ \hline
  \end{tabular}
\end{table} 

\end{document}

在此处输入图片描述

答案3

改进 Harish Kumar 对后续问题的回答,将较长的单词放在单元格内,即rotarotatoata它也使用\rotateboxand\parbox但顺序不同。

并且,如果使用的目的\multicolumn{1}{c|}{Text}是使文本居中,那么 {\hfill Text\hfill}可以有替代解决方案。

代码:

\documentclass{article}
\usepackage{array,multirow,graphicx}
\begin{document}
\begin{table}[h]
\centering
\begin{tabular}{|c|l|r|r|r|r|}\hline
~ & \multicolumn{1}{c|}{Text} & {\hfill Text\hfill} & \multicolumn{1}{c|}{Text} & \multicolumn{1}{c|}{Text} & \multicolumn{1}{c|}{Text} \\ \hline
\multirow{3}{*}{\rotatebox[origin=c]{90}{\parbox[c]{1cm}{\centering rotato-ata}}} & text &&&&\\
& text &testing A& testing B&&\\
& text &right aligned&&&\\ \hline
\end{tabular}
\end{table}
\end{document}

结果

答案4

使用{NiceTabular}ofnicematrix及其内置命令\Block,您可以直接获得预期的输出。

此外,使用该命令\Block,您可以指定逻辑行数而不是物理行数(与 一样\multirow)。

 \documentclass{article}
 \usepackage{nicematrix}

 \begin{document}
 \begin{table}[!h]
   \centering
   \begin{NiceTabular}{|c|l|r|r|r|r|}
     \hline
      & Text & Text & Text & Text & text \\ \hline
      \Block{3-1}<\rotate>{rota}
      & text & & & & \\
      & text & & & & \\
      & text & & & & \\ \hline
   \end{NiceTabular}
 \end{table} 
 \end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容