表格垂直列居中

表格垂直列居中

不幸的是,我无法让表格垂直列的标题居中。我想让标题“B1”和“B2”垂直居中。

我找不到针对此特定设置的解决方案。

\begin{table}[h]
\centering
\begin{tabular}{c|p{0.4\textwidth}|p{0.4\textwidth}|}
 \multicolumn{1}{c}{} & \multicolumn{1}{c}{\textbf{A1}} & \multicolumn{1}{c}       {\textbf{A2}}\\
 \cline{2-3}
 \multicolumn{1}{c|}{\multirow{1}{*}{\rotatebox{90}{\textbf{B1}}}} 
 &  \lipsum[1][1-3] 
 &  \lipsum[1][1-3] \\
 \cline{2-3}
 \multicolumn{1}{c|}{\multirow{1}{*}{\rotatebox{90}{\textbf{B2}}}} 
 &  \lipsum[1][1-3] 
 &  \lipsum[1][1-3] \\
 \cline{2-3}
\end{tabular}
\caption{none}
\label{tab: none}
\end{table}

在此处输入图片描述

答案1

在你的情况下,将列类型从更改p{}m{}已经建议作者:Mico。不过,我还建议删除代码中不必要的部分,添加[origin=c]\rotatebox稍微改善行间距

在此处输入图片描述

\documentclass{article}
\usepackage{array}      % m{} column-type + \extrarowheight
\usepackage{graphicx}
\usepackage{microtype}
\usepackage{lipsum}


\begin{document}

\begin{table}[tbh]
    \centering
    \renewcommand{\arraystretch}{1.75}    % <--- added
    \setlength\extrarowheight{-1pt}       % corrects \arraystretch
    \begin{tabular}{c|m{0.4\textwidth}|m{0.4\textwidth}|}
        \multicolumn{1}{c}{}
            & \multicolumn{1}{c}{\textbf{A1}}
            & \multicolumn{1}{c}{\textbf{A2}} \\
        \cline{2-3}
        \rotatebox[origin=c]{90}{\textbf{B1}}
            & \lipsum[1][1-3]
            & \lipsum[1][1-3] \\
        \cline{2-3}
        \rotatebox[origin=c]{90}{\textbf{B2}}
            & \lipsum[1][1-3]
            & \lipsum[1][1-3] \\
        \cline{2-3}
    \end{tabular}
    \caption{none}\label{tab: none}
\end{table}

\end{document}

答案2

我建议您加载包并对两个数据列array采用m列类型而不是列类型。p

在此处输入图片描述

\documentclass{article} % or some other suitable document class
\usepackage{array} % for 'm' column type
\usepackage{multirow,graphicx,lipsum}

\begin{document}
\begin{table}[ht]
\centering
\begin{tabular}{c|m{0.41\textwidth}|m{0.41\textwidth}|}
\multicolumn{1}{c}{} & 
\multicolumn{1}{c}{\textbf{A1}} & 
\multicolumn{1}{c}{\textbf{A2}}\\
 \cline{2-3}
 \multicolumn{1}{c|}{\multirow{1}{*}{\rotatebox{90}{\textbf{B1}}}} 
 & \lipsum[1][1-3] & \lipsum[1][1-3] \\
 \cline{2-3}
 \multicolumn{1}{c|}{\multirow{1}{*}{\rotatebox{90}{\textbf{B2}}}} 
 & \lipsum[1][1-3] & \lipsum[1][1-3] \\
 \cline{2-3}
\end{tabular}
\caption{none} \label{tab:none}
\end{table}
\end{document}

答案3

供参考,这里是一种用 构建该表的{NiceTabular}方法nicematrix

\documentclass{article}
\usepackage{nicematrix,lipsum}

\begin{document}

\begin{table}[ht]
\centering

\NiceMatrixOptions
  {
    code-for-first-row = \bfseries,
    code-for-first-col = \rotate\bfseries
  }

\begin{NiceTabular}{m{0.41\textwidth}m{0.41\textwidth}}[hvlines,first-row,first-col]
   & \centering A1 & \centering\arraybackslash A2 \\
B1 & \lipsum[1][1-3] & \lipsum[1][1-3] \\
B2 & \lipsum[1][1-3] & \lipsum[1][1-3] \\
\end{NiceTabular}

\caption{none} \label{tab:none}

\end{table}

\end{document}

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

上述代码的输出

相关内容