我需要创建一个具有特定方面的表格。我如何创建附加到此消息中的表格?
\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 默认更合理的边距。由于表格太宽,您有以下几种选择:
- 缩小表格文字,例如使用
\small
或\footnotesize
; - 使用来自例如
rotating
包的选项来旋转表格; - 允许单元格在列内断开;
- 在表格中添加注释以提供补充信息;
- 减小间距;
- 上述两种或多种情况的组合。
(1) 和 (5) 会使表格更难阅读。特别是,我建议不要使用 (5),如果您确实使用了 (1),请不要过度使用。\small
如果您使用的字体大小合理,这可能是可以接受的\tiny
。可能不会。
在下表中,我使用了 (3) 和 (4)。对于 (3),我使用tabularx
由一l
列和四X
列组成的环境。然后,我使用 (4) 将一些信息移动到表格注释中threeparttable
。请注意,由于我不会说这种语言,所以我不太明白其含义。所以我的选择完全基于标点符号,您可能希望将其他内容移动到注释中。但这至少应该演示如何做到这一点。
遵循booktabs
以下指南,因为它们至少适用于 98% 甚至更多的情况:
\toprule
,\midrule
以及(如果在更复杂的表格中需要,则为\bottomrule
+ );\cmidrule{}
- 没有垂直规则;
- 没有双重水平线,当然也没有
\hline
s。
\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}
得到结果: