
Я хотел бы построить таблицу, похожую на ту, что изображена на рисунке ниже:
Приведенный ниже код представляет собой мою лучшую попытку на данный момент (слова в таблице на самом деле ничего не значат):
\resizebox{9cm}{!} {
\begin{tabular}{l*{2}{c}r}
Model & Linear Regression && MLE \\
\hline
fakedata50 & -1.037 & &4 \\
fakedata100 & -1.038 && 3 \\
fakedata500 & -0.7859 && 2 \\
fakedata5000 &-0.7742 && 2 \\
fakedata10000 &-0.7665&&o \\
fakedata100000 &-0.7206&&j \\
fakedata1000000 &-0.6939&&j \\
\end{tabular} }
Однако я хотел бы отцентрировать таблицу, но команда \centering
не работает.
Также, когда я попытался увеличить свой график, изменив значение в \resizebox
, размер шрифта также увеличился, что нежелательно. Есть ли способ увеличить размер шрифта пропорционально тому, насколько я увеличиваю свою таблицу?
И наконец, как мне набрать заголовок для моей таблицы?
решение1
При построении таблиц следуетbooktabs
package — ваш лучший друг; в вашем конкретном случае я бы также рекомендовалsiunitx
пакет для помощи с выравниванием по десятичной точке (конечно, пакет может делать гораздо больше, чем выравнивание по столбцам).
Тип S
столбца принимает необязательный аргумент — это позволяет вам настраивать каждый отдельный столбец; я использовал table-format=1.4
для детализации, что этот столбец имеет 1
номердодесятичная дробь и 4
числа после нее. Вы заметите, что мне пришлось заключить заголовок столбца, {Linear Regression}
чтобы «избавить» его от математического режима и процедуры выравнивания десятичной дроби.
Вот полный код, с которым вы можете поэкспериментировать.
% arara: pdflatex
% !arara: indent: {overwrite: yes}
\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{lS[table-format=1.4]r}
\toprule
Model & {Linear Regression} & MLE \\
\midrule
fakedata50 & -1.037 & 4 \\
fakedata100 & -1.038 & 3 \\
fakedata500 & -0.7859 & 2 \\
fakedata5000 & -0.7742 & 2 \\
fakedata10000 & -0.7665 & o \\
fakedata100000 & -0.7206 & j \\
fakedata1000000 & -0.6939 & j \\
\bottomrule
\end{tabular}
\end{document}
Если вы хотите создать «заголовок» для своего table
, то вам следует использовать команду caption
; вам придется либо поместить свою tabular
среду внутрь table
среды, либо использовать captionof
команду из caption
пакета.
% arara: pdflatex
% !arara: indent: {overwrite: yes}
\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\begin{document}
\begin{table}[!ht]
\centering
\caption{Your caption goes here}
\begin{tabular}{lS[table-format=1.4]r}
\toprule
Model & {Linear Regression} & MLE \\
\midrule
fakedata50 & -1.037 & 4 \\
fakedata100 & -1.038 & 3 \\
fakedata500 & -0.7859 & 2 \\
fakedata5000 & -0.7742 & 2 \\
fakedata10000 & -0.7665 & o \\
fakedata100000 & -0.7206 & j \\
fakedata1000000 & -0.6939 & j \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
решение2
Даже стандартная tabular
среда предоставляет вам инструменты для настройки размера вашей таблицы. В частности, длина tabcolsep
регулирует отступ сбоку каждого столбца. В моем примере мне нужно было уменьшить его, чтобы таблица вписалась в стандартный \textwidth
, но в вашем случае вы можете увеличить его значение. Аналогично я изменил размер шрифта на \small
, но этого делать не нужно, если только пространство не является проблемой или для поддержания единообразия во всем документе.
Для вертикального пространства я использую \renewcommand\arraystretch{}
для растягивания пространства между строками таблицы. В среде \centering
работает просто отлично. При использовании вне среды используйте {\centering my table stuff \par}
. Скобки ограничат степень центрирования только охваченным материалом. А необходимо \par
для активации \centering
.
\documentclass{article}
\usepackage{lipsum}
\usepackage{stackengine}
\def\twostack#1#2{\addstackgap{\stackanchor[0pt]{\strut#1}{\strut#2}}}
\begin{document}
\lipsum[1]
\begin{table}[ht]
\centering
\renewcommand\arraystretch{2}
\tabcolsep 3pt
\caption{Chi-square analysis for data set Total Site 1}
\medskip\small
\begin{tabular}{ccccccc}
\hline
\hline
\textbf{Model} & \textbf{Parameters} & \textbf{Estimates} &
\textbf{\twostack{Chi-square}{statistic}} &
\textbf{P-value} & \textbf{Outcome} & \\
\hline
Geometric Series & $k$ & 0.129202 & 17019.3 & $<$0.001 & Reject\\
\twostack{Broken Stick}{(binned)} & - & - & 1430.72 & $<$0.001 & Reject\\
\twostack{Broken Stick}{(rank abundance)} & - & - & 120085 & $<$0.001 & Reject\\
Logseries & \twostack{$\alpha$}{$x$} & &&&...\\
\hline
\hline
\end{tabular}
\end{table}
\lipsum[2]
\end{document}
решение3
Я попытался переделать начало таблицы, приведенной в качестве примера автором, так как она сложнее. Я использовал пакеты booktabs
, caption
, makecell
и numprint
для столбца, для которого выравнивание по десятичной точке имеет смысл. Обратите внимание, что всякий раз, когда в таком столбце (типа n{…}{…}
), ячейка содержит нечисловой материал, он должен быть заключен в скобки.
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[showframe, nomarginpar, noheadfoot]{geometry}
\usepackage{fourier}
\usepackage{heuristica}
\usepackage{array}
\usepackage{booktabs}
\usepackage{caption}
\captionsetup{labelfont = sc, labelsep = period, justification = centering }
\usepackage{makecell}
\renewcommand\theadfont{\bfseries}
\usepackage[autolanguage, np]{numprint}
\usepackage{stackengine}
\usepackage[english]{babel}
\begin{document}
\begin{table}[!h]
\centering
\caption{Chi-square analysis for data set\enspace Total Site 1}
\begin{tabular}{c >{$}c<{$} n{2}{7}c >{$}n{1}{5}<{$} c}
\toprule\midrule
\thead{Model} & \thead{\textbf{Parameters}} & {\thead{Estimates}} & \thead{Chi-square \\ statistics} & \thead{\textbf{P-value}} & \thead{Outcome} \\
\midrule
\addlinespace
Geometric Series & k & 0.129202 & 17019.3 & < 0.001 & Reject \\
\makecell*{Broken Stick \\ (binned)} & - & {\makecell{--}} & 1430.72 & < 0.001 & Reject \\
\makecell{Broken Stick \\ (rank abundance)} & - & {\makecell{--}} & 120085 & < 0.001 & Reject \\
\multirowcell{2}{Logseries} & α &7.287017 & \multirowcell{2}{20.44702} & {\multirowcell{2}{0.11667}} & Cannot \\%
& x & 0.9999327 & & & reject \\[3pt]
\multirowcell{2}{Lognormal} & M & 6.67146 & \multirowcell{2}{30.8349} & {\multirowcell{2}{< 0.001}} & \multirowcell{2}{Reject} \\
& V & 16.0206 \\
\midrule\bottomrule
\end{tabular}
\end{table}
\end{document}