![为两个子表设置 toprule](https://linux22.com/image/311619/%E4%B8%BA%E4%B8%A4%E4%B8%AA%E5%AD%90%E8%A1%A8%E8%AE%BE%E7%BD%AE%20toprule.png)
首先,我的 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}
如下图所示,我得到了
我想实现这三点,并且我努力了几个小时寻找一个完美的方法来解决但却失败了。
为两个单独的子表制作单独的顶部规则,一个用于第 2-6 列;另一个用于第 7-9 列。两个顶部规则之间的空白空间,如果空间等于
\cmidrule
间隔空间,则效果会更好。将第二个标题
{FUTURE MET OUTCOME BEFORE LANCOME TEXAS-M\$}
相对于第 7-9 列居中。(目前还不行……)如果可能的话,有没有办法可以最小化第 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}