我想将显示tabularx
表格的第一列和第二列设置为自动旋转一行中的单个单元格或由单元格连接的单元格组成的单个单元格内的任何文本,\multirow
并将其垂直和水平居中,同时允许通过或其他方法调整列的高度,\\[height]
并对内容进行顶部垂直对齐。
只是为了通过第一列解释规则,我也需要\noalign{\hrule height 1pt}
表现得像\cline{2-4}
,因此不会影响第一列,但我想这是另一个问题。
最小工作示例:
\documentclass[11pt, a4paper]{article}
\usepackage{lmodern}
\usepackage{array}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage{tabularx}
\begin{document}
\scriptsize
\setlength{\extrarowheight}{0.2em}
\noindent\begin{tabularx}{\textwidth}{!{\vrule width 1pt} p{0.3cm} !{\vrule width 1pt} p{0.5cm} | p{4cm} | X !{\vrule width 1pt}}
\noalign{\hrule height 1pt}
\multirow{4}{*}{\rotatebox{90}{Ten}}&\multirow{2}{*}{\rotatebox{90}{Eight}} & One & Two\\[0.5cm] \cline{3-4}
& & Three & Four\\[1cm] \noalign{\hrule height 1pt}
&\multirow{2}{*}{\rotatebox{90}{Nine}} & Five & Six\\[0.5cm] \cline{3-4}
& & \multicolumn{2}{ l !{\vrule width 1pt}}{Seven}\\[1cm]
\noalign{\hrule height 1pt}
\end{tabularx}
\end{document}
图。1:当前状态。
图 2:近似目标(在图形编辑程序中进行数字化操作)。
答案1
您可以使用选项自定义旋转的原点,例如
\rotatebox[origin=c]{90}{...}
在行尾手动添加的垂直空间会破坏对齐。看看没有它是什么样子:
\documentclass[11pt, a4paper]{article} \usepackage{lmodern} \usepackage{array} \usepackage{graphicx} \usepackage{multirow} \usepackage{tabularx} \begin{document} \scriptsize \setlength{\extrarowheight}{0.2em} \noindent\begin{tabularx}{\textwidth}{!{\vrule width 1pt} p{0.3cm} !{\vrule width 1pt} p{0.5cm} | p{4cm} | X !{\vrule width 1pt}} \noalign{\hrule height 1pt} \multirow{4}{*}{\rotatebox[origin=c]{90}{Ten}}& \multirow{2}{*}{\rotatebox[origin=c]{90}{Eight}} & One & Two\\\cline{3-4} & & Three & Four\\\cline{2-4} &\multirow{2}{*}{\rotatebox[origin=c]{90}{Nine}} & Five & Six\\ \cline{3-4} & & \multicolumn{2}{ l !{\vrule width 1pt}}{Seven}\\ \noalign{\hrule height 1pt} \end{tabularx} \end{document}
如果您进行了此类手动调整(这是
multirow
不知道的),则可以使用可选fixup
参数进行\multirow
更正:\multirow{nrows}[bigstruts]{width}[fixup]{text}
对于自动旋转,我将使用包中的
>{...}
和以及包中的环境,例如>{...}
array
sideways
rotating
>{\begin{sideways}}p{0.3cm}<{\end{sideways}}
甚至为其定义一个新的列类型:
\newcolumntype{R}[1]{>{\begin{sideways}}p{#1}<{\end{sideways}}}
下面是显示自动旋转的示例,但没有多行,因为它在旋转后应用时不会按预期工作:
\documentclass[11pt, a4paper]{article}
\usepackage{lmodern}
\usepackage{array}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage{tabularx}
\usepackage{rotating}
\newcolumntype{R}[1]{>{\begin{sideways}}p{#1}<{\end{sideways}}}
\begin{document}
\scriptsize
\setlength{\extrarowheight}{0.2em}
\noindent\begin{tabularx}{\textwidth}{!{\vrule width 1pt}
R{0.3cm} !{\vrule width 1pt} R{0.5cm} | p{4cm} | X !{\vrule
width 1pt}}
\noalign{\hrule height 1pt}
Ten & Eight
& One & Two\\\cline{3-4}
& & Three & Four\\\cline{2-4}
& Nine
& Five & Six\\ \cline{3-4}
& & \multicolumn{2}{ l !{\vrule width 1pt}}{Seven}\\
\noalign{\hrule height 1pt}
\end{tabularx}
\end{document}