使用 \multicolumn 创建复杂表格

使用 \multicolumn 创建复杂表格

我请求你的帮助。我需要为我的硕士论文制作一个复杂的表格(对于我的 LaTeX 新手水平而言)。

  • 这就是我想要做的表格:

在此处输入图片描述

我尝试了一些代码,但总是得到一个致命错误,如下所示:

\begin{table}[H]
\centering
\begin{tabular}{|l|l|}
& \multicolumn{3}{c}{Entreprises}\\
\hline
& \multicolumn{2}{c}{Baidu}   &   \multicolumn{2}{c}{Huawei}   &   \multicolumn{2}{c}{Tencent} \\ \hline
Années   &   \multicolumn{2}{c}{Croissance des revenus bruts (USD | RMB)} & \multicolumn{2}{c}{Croissance des profits nets (USD | RMB)}   &   Croissance des revenus bruts (RMB) & Croissance des profits nets (RMB)   &   Croissance des revenus bruts (RMB) & Croissance des profits nets (RMB) \\ \hline \hline
\renewcommand{\arraystretch}{2}
2007-2008   &   96,03\% & 83,34\%   &   78,17 \% & 66,64\%   &   33,50\% & 132,72\%   &   83,25\% & 79,57\%\\
\end{tabular}
\renewcommand{\arraystretch}{1}
\caption{Croissance des revenus et profits des BATX chinoises.}
\captionsetup{font={footnotesize, bf}}
  \caption*{Source : CNNIC, Rapports statistiques. Réalisé par l'auteur.}
\label{table:2}
\end{table}

你们能试着帮助我吗?我将非常感激!:)

纪尧姆。

编辑 1bis。

谢谢你的帮助!但是,我对你的表格有疑问,因为数据太完整,表格离开页面

在此处输入图片描述

这是我的第一张表的代码:

\documentclass[a4paper,12pt]{book}
\usepackage[left=30mm,top=30mm,right=30mm,bottom=30mm]{geometry}
\usepackage{bookmark, tabularx, varwidth, nicematrix, array, tabularray, ragged2e}

\newcolumntype{C}{>{\centering\arraybackslash}X}
\newcolumntype{D}{>{\hsize=\dimexpr2\hsize+2\tabcolsep+\arrayrulewidth\relax}C}
\newcolumntype{H}{>{\setbox0=\hbox\bgroup}c<{\egroup}@{}}
\newcolumntype{Z}{>{\setbox0=\hbox\bgroup}c<{\egroup}@{\hspace*{-\tabcolsep}}}
\newcommand{\mcA}[2]{\multicolumn{#1}{c|}{#2}} % just to save some keystrokes
\newcommand{\mcB}[2]{\multicolumn{#1}{c}{#2}} % just to save some keystrokes
\newcolumntype{L}{>{\RaggedRight}X}
    \begin{table}[htbp]
        \centering
        \begin{tabular}{|l|*{8}{c|}}
            \hline
                            & \mcA{8}{\textbf{Croissances des entreprises}}                                                  \\ \cline{2-9}
                            & \mcA{4}{\textbf{Baidu}} & \mcA{2}{\textbf{Huawei}} & \mcA{2}{\textbf{Tencent}} \\ \hline
            \textbf{Années} & \mcA{2}{Revenus bruts (RMB | USD)} & \mcA{2}{Profits (RMB | USD)} & Revenus bruts (RMB) & Profits (RMB)                    & Revenus bruts (RMB) & Profits (RMB)                     \\ \hline
            \textbf{2007-2008}   & 83,34\% & 96,03\%    & 66,64\% & 78,17\%    & 33,50\% & 132,74\%                    & 83,25\% & 79,57\%                     \\ \hline
        \end{tabular}
        \caption{Croissance des revenus et profits des BATX chinoises.
        \centering
        \newline\footnotesize\textbf{Source: Rapports annuels des entreprises concernées. Réalisé par l'auteur.}}
        \label{tab:2}
    \end{table}

\end{document}

编辑2。

谢谢 Zarko!你的表格很完美。很抱歉我的 MWE 不好。我是 LaTeX 新手,而且我的文件非常复杂,难以理解,而且包含所有软件包。所以我不想和你分享所有的混乱。

对于您的表格,我只有一个问题:是否可以将斜体从注释{Source}中删除?

在此处输入图片描述

答案1

{NiceTabular}这里是一种使用构建表格的方法nicematrix

\documentclass{article}
\usepackage{caption}
\usepackage{nicematrix}

\begin{document}

\begin{table}[htbp]
\centering
\caption{Croissance des revenus et profits des BATX chinoises}
\begin{NiceTabular}
  [ 
    cell-space-limits = 3pt , 
    tabularnote = { \footnotesize Source: CNNIC, Rapports statistiques. Réalisé par l'auteur. } ,
    hvlines,
    corners,
  ]
  {>{\bfseries}l*{8}{w{c}{5mm}}}
\RowStyle[nb-rows=2]{\bfseries}
       & \Block{1-8}{Entreprises} \\ 
       & \Block{1-4}{Baidu} &&&& \Block{1-2}{Huawei} && \Block{1-2}{Tencent} \\ 
Années & \Block{1-2}{A} && \Block{1-2}{B} && A & B & A & B \\ 
2007   & 1a & 1b    & 2a & 2b    & 3 & 4 & 5 & 6 \\ 
\end{NiceTabular}
\label{tab:1}
\end{table}

\end{document}

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

上述代码的输出

booktabs但是,我强烈建议采用符合以下精神的设计booktabs(参见 Οὖτις 的回答)。

答案2

欢迎来到 TeX.SE!让我向您展示两种可能的解决方案。其中一种更接近您的手工草图,另一种我认为更专业,因为它在水平规则处增加了一些空间并避免了垂直线,后者是booktabs文档

  1. 永远不要使用垂直规则。
  2. 切勿使用双重规则

结果

\documentclass{article}
\usepackage{booktabs}
\newcommand{\mcA}[2]{\multicolumn{#1}{c|}{#2}} % just to save some keystrokes
\newcommand{\mcB}[2]{\multicolumn{#1}{c}{#2}} % just to save some keystrokes

\begin{document}

\begin{table}[htbp]
    \centering
    \begin{tabular}{|l|*{8}{c|}}
        \hline
                        & \mcA{8}{\textbf{Entreprises}}                                                  \\ \cline{2-9}
                        & \mcA{4}{\textbf{Baidu}} & \mcA{2}{\textbf{Huawei}} & \mcA{2}{\textbf{Tencent}} \\ \hline
        \textbf{Années} & \mcA{2}{A} & \mcA{2}{B} & A & B                    & A & B                     \\ \hline
        \textbf{2007}   & 1a & 1b    & 2a & 2b    & 3 & 4                    & 5 & 6                     \\ \hline
    \end{tabular}
    \caption{Croissance des revenus et profits des BATX chinoises. \footnotesize\textbf{Source: CNNIC, Rapports statistiques. Réalisé par l'auteur.}}
    \label{tab:1}
\end{table}

\begin{table}[htbp]
    \centering
    \begin{tabular}{l*{8}{c}}
        \toprule
                        & \mcB{8}{\textbf{Entreprises}}                                                   \\ \cmidrule(lr){2-9}
                        & \mcB{4}{\textbf{Baidu}}  & \mcB{2}{\textbf{Huawei}} & \mcB{2}{\textbf{Tencent}} \\ \cmidrule(lr){2-5} \cmidrule(lr){6-7} \cmidrule(lr){8-9}
        \textbf{Années} & \mcB{2}{A} & \mcB{2}{B}  & A & B                    & A & B                     \\
        \textbf{2007}   & 1a & 1b    & 2a & 2b     & 3 & 4                    & 5 & 6                     \\ \bottomrule
    \end{tabular}
    \caption{Croissance des revenus et profits des BATX chinoises. \footnotesize\textbf{Source: CNNIC, Rapports statistiques. Réalisé par l'auteur.}}
    \label{tab:2}
\end{table}

\end{document}

答案3

  • 您没有提供 MWE(最小工作示例),因此没有关于所用文档类别或文档中页面布局的任何信息。
  • 表格很宽,因此一些文本应该分成几行(大约三行)
  • 不清楚您的表有多少行数据,也不清楚数据是什么。到目前为止,我们假设其他行可能有类似的数据
  • 通过猜测遗漏的信息,您的表格可以是:

在此处输入图片描述

\documentclass{article}
\usepackage{geometry}

\usepackage[T1]{fontenc}
\usepackage{tabularray}
\UseTblrLibrary{siunitx}
\NewTableCommand\mc[1]{\SetCell[c=#1]{c}}

\begin{document}
    \begin{table}[htbp]
    \centering
    \small
\begin{talltblr}[
caption = {Croissance des revenus et profits des BATX chinoises.},
  label = {tab:2},
remark{Source} = {Rapports annuels des entreprises concernées. Réalisé par l'auteur.}
                ]{hline{1,2} = {2-Z}{solid},    hline{3-Z} = {1-Z}{solid},
                  vline{1}   = {3-Z}{solid},    vline{2-Z} = {1-Z}{solid},
                  colspec = { Q[font=\bfseries] 
                             *{8}{X[c,m, font=\linespread{0.84}\selectfont,
                                    si = {table-format=3.2{\,\%}}]} },
                  colsep=2pt,
                  row{1,2} = {font=\bfseries},      % <---
                  row{1-3} = {guard},               % <---
                  cell{4-Z}{2-Z} = {appto={\,\%}}
                 }
    & \mc{8}    Croissances des entreprises 
        &   &   &   &   &   &   &                   \\      
    & \mc{4}  Baidu
        &   &   &   & \mc{2}    Huawei
                        &   & \mc{2}    Tencent         
                                &                   \\                    
 Années
    & \mc{2} {Revenus bruts\\ (RMB | USD)} 
        &   & \mc{2}   {Profits\\ (RMB | USD)} 
                &   & Revenus bruts (RMB) 
                        & Profits (RMB)
                            & Revenus bruts (RMB)
                                & Profits (RMB)     \\
2007-2008
    & 83,34
        & 96,03
            & 66,64
                & 78,17
                    & 33,50
                        & 132,74
                            & 83,25
                                & 79,57           \\
\end{talltblr}
    \end{table}
\end{document}
  • 显示的表格宽度等于文本块宽度。
  • 用于表格talltblrtabularray包。它允许在表格下方添加注释和备注
  • 如果表格中有几行包含数字数据,您可能会考虑单元格中的数字格式考虑在小数点处对齐。这可以通过使用模拟包的列类型的si选项来实现。- 添加的最后两行是哑元。它们只显示这些行中的数字格式。Ssiunitx

编辑:
如果您希望将表格注释(备注)以向上的形式显示出来(在所有表格中),请在文档序言中插入以下代码行:

\SetTblrStyle{remark-tag}{font=\bfseries\upshape}
\SetTblrStyle{remark-text}{font=\small\bfseries}

从编辑的问题可以看出,您还更改了表格设计。我建议投诉此更改,您需要将表格序言更改为:

                ]{hline{1,2} = {2-Z}{solid},    hline{3-Z} = {1-Z}{solid},
                  vline{1}   = {3-Z}{solid},    vline{2-Z} = {1-Z}{solid},
                  colspec = { Q[font=\bfseries]
                             *{8}{X[c,m, font=\linespread{0.84}\selectfont,
                                    si = {table-format=3.2}]} },  % <---
                  colsep=4pt,
                  row{1,2}= {font=\bfseries},
                  row{1-3} = {guard},               
                 }

并相应地更改表体第一行中的测试。结果是:

在此处输入图片描述

相关内容