我有一张有问题的大桌子,当我想旋转\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 对后续问题的回答,将较长的单词放在单元格内,即rota
。rotatoata
它也使用\rotatebox
and\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 节点)。