如何在 Latex 中修复这个表格?

如何在 Latex 中修复这个表格?

我有这个 latex 表格,如何才能将每个列中的每个值居中,它似乎没有居中并且向左移动。还有什么建议可以让它更专业一点吗?

\begin{table}[h!]
\centering
\begin{tabular}{ |m{1cm}||m{2cm}|m{2cm}|m{2cm}| m{2cm}|m{2cm}|m{2cm}| }

 \hline
 Graph & Maximum Degree & Minimum Degree & Average Degree  & Profit Change & Mean Price Change & Price Variance Change\\
 \hline
 1 & 5 & 4 & 4 & 5 & 6 & 7 \\
 2 & 4 & 4 & 2 &   & 5 & 7 \\
 3 & 3 & 3 & 3 & 4 & 7 & 8 \\
\hline
\end{tabular}
\caption{Table to test captions and labels}
\label{table:1}
\end{table}

提前谢谢您!注意安全 :)

答案1

我怎样才能使每一列的每个值居中,看起来它似乎没有居中并且向左移动。

m类型执行垂直的单元格内容居中,而不是水平居中。可以创建一个将m单元格内容居中的列类型版本。但是,必须为六个数据列设置绝对列宽仍然有点笨拙。我建议您切换到环境tabularx并让 LaTeX 计算六个数据列的列宽。此更改的结果显示在下面的表 1 中。

还有什么建议可以使其更专业一些吗?

虽然表格 1 将列内容居中,并保证适合文本块,但结果却相当乏味。所有这些垂直条都营造出一种毫无新意的“监狱窗户网格”外观,而且水平线的间距也不太好。我有两个建议。

  • 只需删除所有竖线,并\hline用 、 和 指令替换指令即可\toprule\midrule\bottomrule后面的宏由包提供booktabs。)此更改的结果显示在下面的表 2 中。与表 1 相比,该表的特点是“外观”更加开放。

  • 虽然我很乐意说表 2 比表 1 好看,但它仍然缺乏视觉分组和节奏。有人可能会问:“如果有的话,各列之间的关系是什么?”在表 3 中,我建议重新组织标题单元格,以指示各列之间迄今为止隐藏的层次结构。使此层次结构清晰可见不仅有助于提高表格的视觉吸引力,还应该有助于读者了解表格的全部内容。

在此处输入图片描述

\documentclass{article}
\usepackage{tabularx,ragged2e}
\newcolumntype{C}{>{\Centering\arraybackslash}X} % centered version of 'X' col. type
\renewcommand{\tabularxcolumn}[2]{m{#1}} % omit if vertical centering isn't needed
\usepackage{booktabs} % for \toprule, \midrule, and \bottomrule macros

\begin{document}
\begin{table}[h!]
\setlength\tabcolsep{3pt} % default: 6pt

\begin{tabularx}{\textwidth}{ |c||*{6}{C|}}
\hline
Graph & Maximum Degree & Minimum Degree & Average Degree  & Profit Change & Mean Price Change & Price Variance Change\\
\hline
 1 & 5 & 4 & 4 & 5 & 6 & 7 \\
 2 & 4 & 4 & 2 &   & 5 & 7 \\
 3 & 3 & 3 & 3 & 4 & 7 & 8 \\
\hline
\end{tabularx}
\caption{Lots of vertical lines, poorly-spaced horizontal lines}\label{table:1}

\vspace{1cm}
\begin{tabularx}{\textwidth}{@{} l *{6}{C} @{}}
\toprule
Graph & Maximum Degree & Minimum Degree & Average Degree  & Profit Change & Mean Price Change & Price Variance Change\\
\midrule
 1 & 5 & 4 & 4 & 5 & 6 & 7 \\
 2 & 4 & 4 & 2 &   & 5 & 7 \\
 3 & 3 & 3 & 3 & 4 & 7 & 8 \\
\bottomrule
\end{tabularx}
\caption{No vertical lines, well-spaced horizontal lines}\label{table:2}

\vspace{1cm}
\begin{tabularx}{\textwidth}{@{} l *{6}{C} @{}}
\toprule
Graph & \multicolumn{3}{c}{Degree} & \multicolumn{3}{c@{}}{Change}\\
\cmidrule(lr){2-4} \cmidrule(l){5-7}
& Maximum & Minimum & Average & Profit & Mean Price & Price Variance \\
\midrule
 1 & 5 & 4 & 4 & 5 & 6 & 7 \\
 2 & 4 & 4 & 2 &   & 5 & 7 \\
 3 & 3 & 3 & 3 & 4 & 7 & 8 \\
\bottomrule
\end{tabularx}
\caption{Clearer header structure}\label{table:3}

\end{table}
\end{document}  

答案2

假设表中的数字现在是虚拟的,但实际表中的数字将是十进制数,例如有两个整数和三个小数位。在这种情况下,您可以考虑使用包S定义的列siunitx并将数字对齐到小数点:

\documentclass{article}
\usepackage{geometry}
\usepackage{booktabs, multirow}
\usepackage{siunitx}

\begin{document}
\begin{table}[h!]
\caption{Table to test captions and labels}
\label{table:1}
    \centering
\begin{tabular}{c *{6}{S[table-format=2.3]} }
    \toprule
\multirow{2.4}{*}{Graph}
    &   \multicolumn{3}{c}{Degree}
        &   \multicolumn{3}{c}{Change}    \\
    \cmidrule(lr){2-4}
    \cmidrule(l){5-7}
    & {Maximum} & {Minimum}     & {Average} 
    & {Profit}  & {Mean Price}  & { Variance}    \\
    \midrule
 1  & 5.67  & 1.23 & 2.45   & 15.671  & 6.789 & 7.89  \\
 2  & 11.23 & 2.34 & 6.785  &         & 5.678 & 7.891 \\
 3  & 7.89  & 3.45 & 5.67   & 4.567   & 7.89  & 8.912 \\
    \bottomrule
\end{tabular}
\end{table}
\end{document}

在此处输入图片描述

答案3

在此处输入图片描述

\documentclass{article}
\usepackage{booktabs}
\usepackage{graphicx}
\usepackage{array}

\begin{document}

    \begin{table}[h!]
        \centering
        \begin{tabular}{ccccccc } \toprule
            Graph & Maximum & Minimum & Average  & Profit & Mean Price & Price Variance\\
                    &Degree & Degree    &Degree     &Change     &Change             &Change\\ \midrule
            1 & 5 & 4 & 4 & 5 & 6 & 7 \\
            2 & 4 & 4 & 2 &   & 5 & 7 \\
            3 & 3 & 3 & 3 & 4 & 7 & 8 \\\bottomrule
        \end{tabular}
        \caption{Table to test captions and labels}
        \label{table:1}
    \end{table}
\end{document}

相关内容