展开表格中选定的列

展开表格中选定的列

我再次遇到麻烦,tabularx我想让表格的第 2 至 5 列具有固定宽度,并且表格的宽度与文本块一样宽。

我对第一个单元格()中的文本也存在问题multirow,它没有垂直居中。

我目前拥有的代码是:

\documentclass[12pt, oneside]{article}
\usepackage{multicol}
\usepackage{multirow}
\usepackage{tabularx}
\usepackage{siunitx}
\usepackage{booktabs}
\renewcommand{\arraystretch}{1.3}
\setlength{\tabcolsep}{5pt}
\usepackage{caption} 
\captionsetup[table]{skip=5pt}
\newcolumntype{x}[1]{>{\centering\arraybackslash\hspace{0pt}}p{#1}}

\begin{document}
\begin{table}
\caption{\label{Table}Indices}
\begin{tabularx}{\textwidth}{l c c @{\extracolsep{8pt}} c c}
\toprule
\multirow{2}{*}{\textbf{\textit{Index}}}    &   \multicolumn{2}{c}{\textbf{\textit{Method 1}}}  &   \multicolumn{2}{c}{\textbf{\textit{Method 2}}}  \\
\cmidrule{2-3}\cmidrule{4-5}
    & {\textbf{\textit{AA}}} & \textbf{\textit{BB}} & {\textbf{\textit{AA}}} & \textbf{\textit{BB}} \\
\midrule
A1      & 0.12\%    & 0.12\%    & 0.12\%    & 0.12\%    \\ \medskip\smallskip
A2      & 0.19\%    & 0.19\%    & 0.21\%    & 0.21\%    \\
B1  & 0.06\%    & 0.06\%    & 0.06\%    & 0.06\%    \\
B2  & 0.14\%    & 0.14\%    & 0.14\%    & 0.14\%    \\ \medskip\smallskip
B3          & 98.51\%   & 98.53\%   & 98.51\%   & 98.46\%   \\
C1  & 0.84\%    & 0.83\%    & 0.85\%    & 0.84\%    \\
C2  & 0.70\%    & 0.70\%    & 0.71\%    & 0.71\%    \\
C3  & 0.66\%    & 0.66\%    & 0.67\%    & 0.67\%    \\
C4  & 0.61\%    & 0.61\%    & 0.62\%    & 0.61\%    \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}  

得到以下结果:

在此处输入图片描述

我也尝试使用简单的\tabular环境,但是我遇到了问题,@{\extracolsep{8pt}}而且我认为这不是处理此问题最正确的方法。

请注意,这是一份大型文档中的表格,该文档分为多个章节,并且许多包用于满足不同的需求。表格的样式也应保持不变,以与文档的其余部分保持一致。

多谢!

编辑

我认为使用表格环境已经越来越接近了:

\begin{document}
\begin{table}
\caption{\label{Table}Indices}
\begin{tabular}{m{3.50cm} x{2.3cm} x{2.3cm} @{\extracolsep{8pt}} x{2.3cm} x{2.3cm}}
\toprule
\multirow{2}{*}{\textbf{\textit{Index}}}    &   \multicolumn{2}{c}{\textbf{\textit{Method 1}}}  &   \multicolumn{2}{c}{\textbf{\textit{Method 2}}}  \\
\cmidrule{2-3}\cmidrule{4-5}
    & {\textbf{\textit{AA}}} & \textbf{\textit{BB}} & {\textbf{\textit{AA}}} & \textbf{\textit{BB}} \\
\midrule
A1sometext here     & 0.12\%    & 0.12\%    & 0.12\%    & 0.12\%    \\ 
A2      & 0.19\%    & 0.19\%    & 0.21\%    & 0.21\%    \\  \medskip\smallskip
B1  & 0.06\%    & 0.06\%    & 0.06\%    & 0.06\%    \\
B2  & 0.14\%    & 0.14\%    & 0.14\%    & 0.14\%    \\ 
B3          & 98.51\%   & 98.53\%   & 98.51\%   & 98.46\%   \\  \medskip\smallskip
C1  & 0.84\%    & 0.83\%    & 0.85\%    & 0.84\%    \\
C2  & 0.70\%    & 0.70\%    & 0.71\%    & 0.71\%    \\
C3  & 0.66\%    & 0.66\%    & 0.67\%    & 0.67\%    \\
C4  & 0.61\%    & 0.61\%    & 0.62\%    & 0.61\%    \\
\bottomrule
\end{tabular}
\end{table}
\end{document}  

我仍然遇到第一个单元格的垂直居中和行之间的空间(A2 到 B1 和 B3 到 C1)的问题。

答案1

您正在加载siunitx但未使用它来对齐表列,这使得98.xx条目看起来不对齐。

我首先展示tabular,如果您确实想将表格扭曲为全宽使用tabular*,但这样做的主要效果是使表格更难阅读。

在此处输入图片描述

\documentclass[12pt, oneside]{article}
\usepackage{multicol}
\usepackage{multirow}
\usepackage{tabularx}
\usepackage{siunitx}
\usepackage{booktabs}
\renewcommand{\arraystretch}{1.3}
\setlength{\tabcolsep}{5pt}
\usepackage{caption} 
\captionsetup[table]{skip=5pt}


\begin{document}
\begin{table}\centering
\caption{\label{Table}Indices}
\begin{tabular}{l S S !{\hspace{2em}} S S}
\toprule
\multirow{2}{*}{\textbf{\textit{Index}}}    &   \multicolumn{2}{c}{\textbf{\textit{Method 1}}}  &   \multicolumn{2}{c}{\textbf{\textit{Method 2}}}  \\
\cmidrule{2-3}\cmidrule{4-5}
    &
\multicolumn{1}{c}{\textbf{\textit{AA}}} &
\multicolumn{1}{c}{\textbf{\textit{BB}}} &
\multicolumn{1}{c}{\textbf{\textit{AA}}} &
\multicolumn{1}{c}{\textbf{\textit{BB}}} \\
\midrule
A1      & 0.12\%    & 0.12\%    & 0.12\%    & 0.12\%    \\ \medskip\smallskip
A2      & 0.19\%    & 0.19\%    & 0.21\%    & 0.21\%    \\
B1  & 0.06\%    & 0.06\%    & 0.06\%    & 0.06\%    \\
B2  & 0.14\%    & 0.14\%    & 0.14\%    & 0.14\%    \\ \medskip\smallskip
B3          & 98.51\%   & 98.53\%   & 98.51\%   & 98.46\%   \\
C1  & 0.84\%    & 0.83\%    & 0.85\%    & 0.84\%    \\
C2  & 0.70\%    & 0.70\%    & 0.71\%    & 0.71\%    \\
C3  & 0.66\%    & 0.66\%    & 0.67\%    & 0.67\%    \\
C4  & 0.61\%    & 0.61\%    & 0.62\%    & 0.61\%    \\
\bottomrule
\end{tabular}
\end{table}

\begin{table}\centering
\caption{\label{Table2}Indices}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}
l S S !{\hspace{2em}} S S
@{}}
\toprule
\multirow{2}{*}{\textbf{\textit{Index}}}    &   \multicolumn{2}{c}{\textbf{\textit{Method 1}}}  &   \multicolumn{2}{c}{\textbf{\textit{Method 2}}}  \\
\cmidrule{2-3}\cmidrule{4-5}
    &
\multicolumn{1}{c}{\textbf{\textit{AA}}} &
\multicolumn{1}{c}{\textbf{\textit{BB}}} &
\multicolumn{1}{c}{\textbf{\textit{AA}}} &
\multicolumn{1}{c}{\textbf{\textit{BB}}} \\
\midrule
A1      & 0.12\%    & 0.12\%    & 0.12\%    & 0.12\%    \\ \medskip\smallskip
A2      & 0.19\%    & 0.19\%    & 0.21\%    & 0.21\%    \\
B1  & 0.06\%    & 0.06\%    & 0.06\%    & 0.06\%    \\
B2  & 0.14\%    & 0.14\%    & 0.14\%    & 0.14\%    \\ \medskip\smallskip
B3          & 98.51\%   & 98.53\%   & 98.51\%   & 98.46\%   \\
C1  & 0.84\%    & 0.83\%    & 0.85\%    & 0.84\%    \\
C2  & 0.70\%    & 0.70\%    & 0.71\%    & 0.71\%    \\
C3  & 0.66\%    & 0.66\%    & 0.67\%    & 0.67\%    \\
C4  & 0.61\%    & 0.61\%    & 0.62\%    & 0.61\%    \\
\bottomrule
\end{tabular*}
\end{table}


\end{document}

\end{document}

答案2

由于第 2 列至第 5 列不应换行,因此使用这种tabularx机制似乎有些过头了。我建议您改用tabular*环境,以及第 2 列至第 5 列的基本列类型。观察宏(由软件包提供)r的使用情况,插入更多垂直空格。\addlinespacebooktabs

在此处输入图片描述

\documentclass{article}
\usepackage{multirow}
\usepackage{booktabs}
\renewcommand{\arraystretch}{1.3}
\usepackage{caption} 
\captionsetup[table]{skip=5pt}
\newcommand\mc[1]{\multicolumn{1}{c}{#1}} % handy shortcut macro
\begin{document}

\begin{table}
\setlength\tabcolsep{0pt} % make LaTeX figure out intercolumn whitespace
\caption{\label{Table}Indices}

\begin{tabular*}{\textwidth}{p{3cm} @{\extracolsep{\fill}} rrrr}
\toprule
\textbf{\textit{Index}}  &   
\multicolumn{2}{c}{\textbf{\textit{Method 1}}}  &   
\multicolumn{2}{c}{\textbf{\textit{Method 2}}}  \\
\cmidrule{2-3} \cmidrule{4-5}
& \mc{\textbf{\textit{AA}}} & \mc{\textbf{\textit{BB}}} 
& \mc{\textbf{\textit{AA}}} & \mc{\textbf{\textit{BB}}} \\
\midrule
A1 some text here& 0.12\%  & 0.12\%  & 0.12\%  & 0.12\% \\ 
A2               & 0.19\%  & 0.19\%  & 0.21\%  & 0.21\% \\ 
\addlinespace
B1               & 0.06\%  & 0.06\%  & 0.06\%  & 0.06\% \\
B2               & 0.14\%  & 0.14\%  & 0.14\%  & 0.14\% \\ 
B3               & 98.51\% & 98.53\% & 98.51\% & 98.46\%\\ 
\addlinespace
C1               & 0.84\%  & 0.83\%  & 0.85\%  & 0.84\% \\
C2               & 0.70\%  & 0.70\%  & 0.71\%  & 0.71\% \\
C3               & 0.66\%  & 0.66\%  & 0.67\%  & 0.67\% \\
C4               & 0.61\%  & 0.61\%  & 0.62\%  & 0.61\% \\
\bottomrule
\end{tabular*}
\end{table}

\end{document} 

答案3

另一种解决方案是tabularx使用数字和表格宽度来确定列数,booktabs使用水平规则和某些行之间的额外空间,并定义两个新命令以简化表格输入。垂直居中是通过multirow选项获得的。

在此处输入图片描述

对于表格宽度,我选择0.75\textwidth,但很容易更改为所需宽度。请注意,表格中使用的是 TeX 基元,cr而不是通常使用的\\tablenewline。原因在以下文章中有解释。约瑟夫赖特答案我的问题。

\documentclass[12pt, oneside]{article}
\usepackage{multicol}
\usepackage{booktabs, multirow ,tabularx}
\usepackage{siunitx}
\usepackage{caption}
\captionsetup[table]{skip=5pt}

\newcommand\mcxbf[1]{\multicolumn{1}{>{\centering\arraybackslash}X}{\bfseries\itshape #1}}
\newcommand\mccbf[1]{\multicolumn{2}{c}{\bfseries\itshape #1}}

\begin{document}
    \begin{table}
\centering
\caption{Indices}
\label{Table2}
\begin{tabularx}{0.75\textwidth}{c
                            *{4}{S[table-format=2.2,
                                   table-space-text-post=\,\%]<{\,\%}}                           
                                 }
    \toprule
\multirow{2}{*}[-0.25ex]{\textbf{\textit{Index}}}
    &   \mccbf{Method 1}            &   \mccbf{Method 2}            \cr
    \cmidrule(lr){2-3}\cmidrule(lr){4-5}
    &   \mcxbf{AA}  &   \mcxbf{BB}  &   \mcxbf{AA}  &   \mcxbf{BB}  \cr
    \midrule
A1  &   0.12        &   0.12        &   0.12        &   0.12        \cr
A2  &   0.19        &   0.19        &   0.21        &   0.21        \cr  
    \addlinespace
B1  &   0.06        &   0.06        &   0.06        &   0.06        \cr
B2  &   0.14        &   0.14        &   0.14        &   0.14        \cr
B3  &   98.51       &   98.53       &   98.51       &  98.46        \cr  
    \addlinespace
C1  &   0.84        &   0.83        &   0.85        &   0.84        \cr
C2  &   0.70        &   0.70        &   0.71        &   0.71        \cr
C3  &   0.66        &   0.66        &   0.67        &   0.67        \cr
C4  &   0.61        &   0.61        &   0.62        &   0.61        \cr
\bottomrule
\end{tabularx}
    \end{table}
\end{document}

相关内容