表维度在实例之间不一致

表维度在实例之间不一致

我正在构建(使用一些 Python 魔法)一份在同一页面上包含多个表格的报告。每个表格必须具有相同的整体宽度,但它们的列数不同。

通过指定列宽m{Xcm},我期望表格的整体宽度相同,只要所有列宽之和相等

实际上,我的 3 张桌子的宽度不一样,我不知道这是为什么。

以下是 MWE:

\documentclass[]{article}
\usepackage[table]{xcolor}
\usepackage{hyperref}
\usepackage{array}

\begin{document}
    \begin{center}
        \begin{tabular}[]{|m{1cm} | m{14cm} |} \hline \vspace{4pt} \texttt{Title} &
            \vspace{4pt} \texttt{Description} \\[4pt] \hline
        \end{tabular}
        \begin{tabular}{|m{3cm}|m{3cm}|m{3cm}|m{3cm}|m{3cm}|}\hline
             1 &  2 & 3 & 4 & 5  \\ 
            \scriptsize{Minor} &
            \scriptsize{Low} &
            \scriptsize{High} &
            \scriptsize{Medium} &
            \scriptsize{Easy} \\ \hline         
        \end{tabular}
    \begin{tabular}{|m{15cm}|} \hline
        \vspace{3pt} \textbf{Description:} 
        \url{https://www.google.com}
        \\[3pt] \hline
        \vspace{3pt} \parbox[t]{15cm}{ \textbf{More info :} 
        Long text about something   
        } \vspace{3pt} \\ \hline
        \vspace{3pt} \textbf{Target :} 
        More text again
        \\[3pt] \hline
    \end{tabular}

    \begin{tabular}{|m{15cm}|} \hline   
        \textbf{Conclusion :} \\
        Conclusion text
        \\ \hline
    \end{tabular}

\end{center}
\end{document}

它产生了这个:平均能量损失

所有小桌子总长均为15厘米:

  • 1厘米+14厘米
  • 5 x 3厘米
  • 15厘米

我该怎么做才能让它们都tabular具有相同的尺寸?

答案1

考虑到tabcolsepasn arraywidths (asDavid Carlisle 在评论中已经提到),你最终会得到以下 MWE 和输出:

在此处输入图片描述

\documentclass[]{article}
\usepackage[table]{xcolor}
\usepackage{array}
\usepackage{calc}

\usepackage{hyperref}

\begin{document}
    \begin{center}
        \begin{tabular}[]{|m{1cm-2\tabcolsep} | m{14cm-2\tabcolsep-\arrayrulewidth} |} \hline \vspace{4pt} \texttt{Title} &
            \vspace{4pt} \texttt{Description} \\[4pt] \hline
        \end{tabular}
        \begin{tabular}{|m{3cm-2\tabcolsep-\arrayrulewidth}|m{3cm-2\tabcolsep-\arrayrulewidth}|m{3cm-2\tabcolsep-\arrayrulewidth}|m{3cm-2\tabcolsep-\arrayrulewidth}|m{3cm-2\tabcolsep}|}\hline
             1 &  2 & 3 & 4 & 5  \\ 
            \scriptsize{Minor} &
            \scriptsize{Low} &
            \scriptsize{High} &
            \scriptsize{Medium} &
            \scriptsize{Easy} \\ \hline         
        \end{tabular}
    \begin{tabular}{|m{15cm-2\tabcolsep}|} \hline
        \vspace{3pt} \textbf{Description:} 
        \url{https://www.google.com}
        \\[3pt] \hline
        \vspace{3pt} \parbox[t]{15cm}{ \textbf{More info :} 
        Long text about something   
        } \vspace{3pt} \\ \hline
        \vspace{3pt} \textbf{Target :} 
        More text again
        \\[3pt] \hline
    \end{tabular}

    \begin{tabular}{|m{15cm-2\tabcolsep}|} \hline   
        \textbf{Conclusion :} \\
        Conclusion text
        \\ \hline
    \end{tabular}

\end{center}
\end{document}

但是,这个 MWE 产生的输出存在很多缺陷:首先,表格比文本宽度要宽,这将导致溢出到右边距,并出现一堆框过满警告。此外,“标题”列现在太窄,单词放不下。最后,列声明部分变得更长,可读性更差。

因此我更喜欢tabularx结合使用cellspace,如下面的 MWE 和输出所示:

在此处输入图片描述

\documentclass[]{article}
\usepackage[table]{xcolor}
\usepackage{array}

\usepackage{tabularx}
\usepackage{cellspace}
\setlength\cellspacetoplimit{4pt}
\setlength\cellspacebottomlimit{4pt}
\usepackage{hyperref}

\begin{document}
\noindent
        \begin{tabularx}{\textwidth}{|Sl|S{X}|}
        \hline 
        \texttt{Title} & \texttt{Description} \\
        \hline
        \end{tabularx}
\noindent
        \begin{tabularx}{\textwidth}{|*{5}{X|}}\hline
             1 &  2 & 3 & 4 & 5  \\ 
            \scriptsize{Minor} &
            \scriptsize{Low} &
            \scriptsize{High} &
            \scriptsize{Medium} &
            \scriptsize{Easy} \\ \hline         
        \end{tabularx}
\noindent
    \begin{tabularx}{\textwidth}{|S{X}|} 
        \hline
        \textbf{Description:} \url{https://www.google.com} \\
        \hline
        \textbf{More info :} Long text about something \\ 
        \hline
        \textbf{Target :} More text again  \\ 
        \hline
    \end{tabularx}
\noindent
    \begin{tabularx}{\textwidth}{|X|} 
        \hline   
        \textbf{Conclusion :} \\
        Conclusion text \\ 
        \hline
    \end{tabularx}

\end{document}

相关内容