我如何制作这张表?

我如何制作这张表?

我需要创建一个具有特定方面的表格。我如何创建附加到此消息中的表格?

\documentclass[11pt]{article}
\usepackage{mathtools,float}
\usepackage{amstext}
\usepackage{booktabs,tabularx}
\usepackage{ragged2e}

\begin{document}

\begin{table}[H]    
\centering    
\begin{tabular}{c|c|c|c|c}    
\toprule    
 & Para os 10 per\'{i}odos & Medida (valor final)/ 10 per\'{i}odos &
 Para um per\'{i}odo & Medida (valor final)\\    
\midrule    
\hline M\'{e}dia & 14,04 & 14,04 & 1,404 & 1,40\\    
\hline Desvio Padr\~{a}o & 0,095770401 & 0,10 & 0,0095770401 & 0,01\\
\hline N contagens & 12 & 12 & 12 & 12\\    
\bottomrule    
\end{tabular}    
\end{table}

\end{document}

答案1

我要做的第一件事是加载geometry,它将使用比 LaTeX 默认更合理的边距。由于表格太宽,您有以下几种选择:

  1. 缩小表格文字,例如使用\small\footnotesize
  2. 使用来自例如rotating包的选项来旋转表格;
  3. 允许单元格在列内断开;
  4. 在表格中添加注释以提供补充信息;
  5. 减小间距;
  6. 上述两种或多种情况的组合。

(1) 和 (5) 会使表格更难阅读。特别是,我建议不要使用 (5),如果您确实使用了 (1),请不要过度使用。\small如果您使用的字体大小合理,这可能是可以接受的\tiny。可能不会。

在下表中,我使用了 (3) 和 (4)。对于 (3),我使用tabularx由一l列和四X列组成的环境。然后,我使用 (4) 将一些信息移动到表格注释中threeparttable。请注意,由于我不会说这种语言,所以我不太明白其含义。所以我的选择完全基于标点符号,您可能希望将其他内容移动到注释中。但这至少应该演示如何做到这一点。

遵循booktabs以下指南,因为它们至少适用于 98% 甚至更多的情况:

  • \toprule\midrule以及(如果在更复杂的表格中需要,则为\bottomrule+ );\cmidrule{}
  • 没有垂直规则;
  • 没有双重水平线,当然也没有\hlines。

\toprule和朋友的目的是代替 \hline等 - 不应使用以及

因此这些变化会产生类似以下的结果:

修改表

如果数字在小数点处对齐,那确实会更好。不过,我最好把这件事留给专家去做,siunitx因为我只能处理非常简单的情况。

\documentclass[11pt]{article}
\usepackage{mathtools,float,geometry}
\usepackage{booktabs,array,tabularx,threeparttablex}
\begin{document}
\begin{table}[H]
  \begin{threeparttable}
    \begin{tabularx}{\linewidth}{l*{4}{>{\centering\arraybackslash}X}}
      \toprule
      & Para os 10 per\'{i}odos & Medida\tnote{\textasteriskcentered} / 10 per\'{i}odos & Para um per\'{i}odo & Medida\tnote{\textasteriskcentered}\\
      \midrule
      M\'{e}dia & 14,04 & 14,04 & 1,404 & 1,40\\
      Desvio Padr\~{a}o & 0,095770401 & 0,10 & 0,0095770401 & 0,01\\
      N contagens & 12 & 12 & 12 & 12\\
      \bottomrule
    \end{tabularx}
    \begin{tablenotes}
      \item[\textasteriskcentered]valor final
    \end{tablenotes}
  \end{threeparttable}
\end{table}
\end{document}

答案2

一些建议:

  • 使用更少的有效数字——比如说,传达了哪些信息0,0095770401,而没有传达哪些信息0,009577

  • 继续使用c为第 2 至第 5 列的数字的列类型,但使用允许标题单元格中的文本自动换行的列类型。我建议您使用环境tabularx,将其整体宽度设置为\textwidth,并对 4 个标题单元格使用居中版本的列X类型。

  • 我认为没有必要制定内部\hline指令。

在此处输入图片描述

\documentclass[11pt]{article}
\usepackage[portuguese]{babel}
\usepackage{booktabs,tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\newcommand\mC[1]{\multicolumn{1}{@{}C@{}}{#1}} % handy shortcut macro

\begin{document}

\begin{table}
\begin{tabularx}{\textwidth}{@{} l cccc @{}}
\toprule
& \mC{Para os 10~per\'{i}odos} 
& \mC{Medida (valor~final)/ 10~per\'{i}odos} 
& \mC{Para um~per\'{i}odo} 
& \mC{Medida (valor~final)} \\
\midrule
M\'{e}dia         & 14,04   & 14,04 & 1,404    & 1,40\\
Desvio Padr\~{a}o & 0,09577 & 0,10  & 0,009577 & 0,01\\
N contagens       & 12      & 12    & 12       & 12\\
\bottomrule
\end{tabularx}
\end{table}

\end{document}

答案3

作为@cfr 答案的补充:

  • 对于列头使用thead来自包的宏makecell
  • 用于对齐小数点处的数字,使用S包中的列类型siunitx
  • 而不是tabularx使用普通tabular环境

通过这些改变你可以获得:

在此处输入图片描述

代码:

\documentclass[11pt]{article}
    \usepackage{mathtools,float,geometry}
    \usepackage{array,booktabs,makecell,tabularx,threeparttable}
\renewcommand\theadfont{\normalfont}
    \usepackage{siunitx}

\begin{document}
\begin{table}
  \begin{threeparttable}
    \begin{tabular}{l*{2}{S[table-format=3.11]S[table-format=4.3]}}
      \toprule
    &   {\thead{Para os 10\\ per\'{i}odos}} 
        &   {\thead{Medida\tnote{\textasteriskcentered} / 10\\ per\'{i}odos}}
            &   {\thead{Para um\\ per\'{i}odo}} 
                &   {\thead[b]{Medida\tnote{\textasteriskcentered}}}\\
      \midrule
M\'{e}dia           & 14,04         & 14,04 & 1,404         & 1,40  \\
Desvio Padr\~{a}o   & 0,095770401   & 0,10  & 0,0095770401  & 0,01  \\
      N contagens   & 12            & 12    & 12            & 12    \\
      \bottomrule
    \end{tabular}
  \begin{tablenotes}
      \item[\textasteriskcentered]valor final
    \end{tablenotes}
  \end{threeparttable}
\end{table}
\end{document}

警告:我不是siunitx专家,我只是经常使用它......

编辑:

考虑到 Mico 的评论,请注意:

  • 通过加载geometry包,它\textwidth会自动从 360pt 增加到 430pt。这意味着,对于表格来说,它可以更快地完成,即可以设置全长具有 11 位小数的数字。否则,它必须在更少的小数位上进行舍入,例如,像 manulay Mico 在他的回答中所做的那样,舍入到 5 位小数
  • 与选项table-auto-round结合使用,例如,table-format=3.5将表中的数字四舍五入到小数点后五位,并将较短的数字用零填充到给定的小数位数
  • 使用siunitx选项,output-decimal-marker={,}小数点标记从点更改为逗号(因为 OP 似乎希望使用逗号。

为了更好地看到上述考虑对表格布局的影响,我添加了showframe包装和中心表格对文本宽度的影响。完整的更新代码是:

\documentclass[11pt]{article}
    \usepackage{booktabs,makecell,threeparttable}
\renewcommand\theadfont{\normalfont}
    \usepackage[output-decimal-marker={,}]{siunitx}

    \usepackage{showframe}

\begin{document}
\begin{table}
\centering
  \begin{threeparttable}
    \begin{tabular}{l*{2}{S[table-format=3.5,
                            table-auto-round]S[table-format=4.3]}}
      \toprule
    &   {\thead{Para os 10\\ per\'{i}odos}}
        &   {\thead{Medida\tnote{\textasteriskcentered} / 10\\ per\'{i}odos}}
            &   {\thead{Para um\\ per\'{i}odo}}
                &   {\thead[b]{Medida\tnote{\textasteriskcentered}}}\\
      \midrule
M\'{e}dia           & 14,04         & 14,04 & 1,404         & 1,40  \\
Desvio Padr\~{a}o   & 0,095770401   & 0,10  & 0,0095770401  & 0,01  \\
      N contagens   & 12            & 12    & 12            & 12    \\
      \bottomrule
    \end{tabular}
  \begin{tablenotes}
      \item[\textasteriskcentered]valor final
    \end{tablenotes}
  \end{threeparttable}
\end{table}
\end{document}

得到结果:

在此处输入图片描述

相关内容