为两个子表设置 toprule

为两个子表设置 toprule

首先,我的 LaTeX 代码,

\documentclass{article}    
\usepackage[utf8]{inputenc}    
\usepackage[letterpaper, top=0.25in, bottom=0.25in, left=0.25in, right=0.25in]{geometry}    
\usepackage{multirow,array,varwidth,spreadtab,caption}    
\usepackage{booktabs}    
\usepackage{siunitx,booktabs,caption}    
\usepackage{multirow,array,varwidth,spreadtab,}    
\usepackage{siunitx,booktabs,caption}    
\usepackage{ragged2e}    
\newcolumntype{L}[1]{>{\RaggedRight\hspace{0pt}}p{#1}}    
\newcolumntype{R}[1]{>{\RaggedLeft\hspace{0pt}}p{#1}}    
%%% change contents font %%%    
\usepackage[scaled]{helvet}    
\renewcommand\familydefault{\sfdefault}     
\usepackage[T1]{fontenc}    
%%% %%% %%% %%% %%% %%% %%%%    
\usepackage[active,floats,tightpage]{preview}% just for showing only table    
    \setlength\PreviewBorder{1em}    

\begin{document}    
\begin{table}    
\newcommand{\fl}[1]{\makebox[.12\textwidth]{#1}}    
\centering    
\begin{tabular}{    
  l    
  *{8}{S[table-format=1.1,table-alignment=right]}    
 }    
& \multicolumn{5}{c}{\textbf{DETINDISND -M\$}}    
\multicolumn{3}{r}{\textbf{FUTURE MET OUTCOME BEFORE LANCOME TEXAS-M\$}}\\    
\cmidrule[\heavyrulewidth]{2-6}\cmidrule[\heavyrulewidth]{7-9}    
&{\fl{OPERA}}&{\fl{Findfall\,Profit}}&{\fl{Development}} & {\fl{TranSportation}}            & {} & {}& {} & {\fl{DISCOUNTED}}&\\    
{\fl{\textbf{PERY}}&{\fl{COSTCO}}    &{\fl{TEXAS}}           &{\fl{BLABLA}} &     {\fl{and\,Others}} & {\fl{Total}} & {\fl{AnnE}} & {\fl{CuCuMBive}} &     {\fl{[email protected]\%$}}\\    
\cmidrule(lr){1-1} \cmidrule(lr){2-2} \cmidrule(lr){3-3} \cmidrule(lr){4-4} \cmidrule(lr){5-5} \cmidrule(lr){6-6} \cmidrule(lr){7-7} \cmidrule(lr){8-8} \cmidrule(lr){9-9}
\textbf{2012} & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\    
\textbf{2013} & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\    
\textbf{2014} & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\    
\midrule    
\textbf{Sub-Total}     & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\    
\textbf{Remainder}     & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\    
\textbf{Total\,Future} & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\    

\end{tabular}    
\end{table}
\end{document}    

如下图所示,我得到了 目前我得到的是......

我想实现这三点,并且我努力了几个小时寻找一个完美的方法来解决但却失败了。

  1. 为两个单独的子表制作单独的顶部规则,一个用于第 2-6 列;另一个用于第 7-9 列。两个顶部规则之间的空白空间,如果空间等于\cmidrule间隔空间,则效果会更好。

  2. 将第二个标题{FUTURE MET OUTCOME BEFORE LANCOME TEXAS-M\$}相对于第 7-9 列居中。(目前还不行……)

  3. 如果可能的话,有没有办法可以最小化第 2 行和第 3 行之间的垂直距离?

    我理想的结果如下图所示,供您参考。 我想要达到的目标...

感谢您的帮助。我是 LaTeX 新手,愿意学习任何有用的知识。

答案1

我建议您按照以下步骤简化和调整您的表格设置:

  • 使用一个tabularx环境,其宽度设置为\textwidth

  • 保留S第 2 列至第 9 列的列类型,同时X对 8 个子标题单元格使用居中的列类型(以确保 (i) 整个表格跨越文本块的宽度,以及 (ii) 八个数据列的宽度均相等);

  • 使用修改后的列类型形式X作为右侧主标题材料(以允许自动换行);

  • 使用两个简单的\cmidrule指令将主标题单元格与子标题分开。

在此处输入图片描述

\documentclass{article}
%% I've commented out the instructions that aren't needed for the example 
\usepackage[utf8]{inputenc}
\usepackage[letterpaper, margin=0.25in]{geometry}
%\usepackage{multirow,array,varwidth,spreadtab,caption}
%\usepackage{booktabs}
\usepackage{siunitx,booktabs,caption}
\usepackage{tabularx}
%\usepackage{multirow,array,varwidth,spreadtab,}
%\usepackage{siunitx,booktabs,caption}
\usepackage{ragged2e}
%\newcolumntype{L}[1]{>{\RaggedRight\hspace{0pt}}p{#1}}
%\newcolumntype{R}[1]{>{\RaggedLeft\hspace{0pt}}p{#1}}
\newcolumntype{C}{>{\Centering\arraybackslash}X}

%%% change contents font %%%
\usepackage[scaled]{helvet}
\renewcommand\familydefault{\sfdefault}
\usepackage[T1]{fontenc}

%\usepackage[active,floats,tightpage]{preview}% just for showing only table
%    \setlength\PreviewBorder{1em}

\begin{document}

\begin{table}
\sisetup{table-format=1.2}
\setlength\tabcolsep{3pt}  % default value: 6pt
\newcommand{\fl}[1]{\multicolumn{1}{C}{#1}}
%\centering
\begin{tabularx}{\textwidth}{@{} l *{8}{S} @{}}
\toprule
\textbf{PERY} 
& \multicolumn{5}{c}{\textbf{DETINDISND (M\$)}}
& \multicolumn{3}{>{\hsize=3\hsize}C@{}}{\textbf{FUTURE MET OUTCOME \mbox{BEFORE} LANCOME TEXAS (M\$)}}\\
\cmidrule(lr){2-6} \cmidrule(l){7-9} %% separators between headers and sub-headers
& \fl{OPERA COSTCO} & \fl{Findfall Profit TEXAS} & \fl{Development BLABLA} & \fl{Transportation and Others}  & \fl{Total} & \fl{AnnE} & \fl{CuCuMBive} & \fl{DISCOUNTED @10\%}\\
\midrule
\textbf{2012} & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00\\
\textbf{2013} & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00\\
\textbf{2014} & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00\\
\midrule
\textbf{Subtotal}      & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00\\
\textbf{Remainder}     & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00\\
\textbf{Total Future}  & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00\\
\bottomrule
\end{tabularx}
\end{table}
\end{document} 

相关内容