这是新手的问题。我正在寻找一种方法来对齐拉伸的最后一列。
寻找答案:具有自定义列间距的 booktabs
我尝试使用 LaTeX 在线表格生成器,我的表格可以正常工作。但列发生了偏移,我不知道如何使用 LaTeX 命令在 R Markdown 中调整或修复此问题。生成器使用起来有点麻烦,我宁愿自己动手。
据我所知,下面的命令是正确的,但我遗漏了一些东西。
\begin{tabular}{@{}llcc@{}}
暗示了 4 列的对齐,对吧?将最后一列向左对齐没有帮助。似乎表格底部的拉伸文本导致了它的拉伸?
\multicolumn{4}{l}
规定应该有 4 列。
所以我想问题是如何将范围限制在底线上,比如在新行中继续下标?还是直接新建一行?
添加\multicolumn{4}{l}{\textit{Italics}: significant model}
会返回错误。
代码:
\begin{table}[h]
\centering
\begin{tabular}{@{}llcc@{}}
\toprule
{\textbf{Parameter}} & \multicolumn{1}{l}{\textit{Null\_model}} & \multicolumn{1}{l}{\textit{Model 1}} & \multicolumn{1}{l}{\textit{Model 2}} \\
\midrule
Intercept & .652 & -.976 & -.983 \\
Round & -.145 & .1082 & .111 \\
Treatment & & \underline{5.875} & \underline{5.653} \\
Neuroticism & & & .013 \\
Neur * Treatment & & & .019 \\
Round * Treatment & & \underline{-.955} & \underline{-.909} \\
\midrule
LogLikelihood & -830.51 & -826.4 & \textbf{-825.92} \\
Deviance & 1661.0 & 1652.8 & \textbf{1651.8} \\
df residual & \textbf{235} & 233 & 231 \\
Akaike IC & 1671.0 & \textbf{1666.8} & 1669.8 \\
Bayesian IC & \textbf{1688.4} & 1691.2 & 1701.2 \\
\midrule
\multicolumn{4}{l}{\textbf{Bold}: most optimal values. \underline{Underlined}: significant predictor \textit{Italics}: significant model}
\end{tabular}
\end{table}
显示如下内容:
答案1
字符串
\textbf{Bold}: most optimal values. \underline{Underlined}: significant predictor \textit{Italics}: significant model
相当长。重要的是,比 4 列tabular
环境的自然宽度宽得多。因此,第四列和最后一列必须比其自然宽度宽得多。
如何修复此问题?我建议你更换
\multicolumn{4}{l}{\textbf{Bold}: most optimal values. \underline{Underlined}: significant predictor \textit{Italics}: significant model}
和
\multicolumn{4}{@{}l}{\textbf{Bold}: most optimal values.}\\
\multicolumn{4}{@{}l}{\underline{Underlined}: significant predictor} \\
\multicolumn{4}{@{}l}{\textit{Italics}: significant model}
完整的 MWE (最小工作示例):
\documentclass{article}
\usepackage{booktabs}
\usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\newcommand\blurb{\textbf{Bold}: most optimal values. \underline{Underlined}: significant predictor \textit{Italics}: significant model}
\newlength\lengtha
\settowidth{\lengtha}{\blurb}
\begin{document}
\begin{table}[h]
\centering
\begin{tabular}{@{}lccc@{}}
\toprule
\textbf{Parameter} &
\textit{Null model} &
\textit{Model 1} &
\textit{Model 2} \\
\midrule
Intercept & .652 & -.976 & -.983 \\
Round & -.145 & .1082 & .111 \\
Treatment & & \underline{5.875} & \underline{5.653} \\
Neuroticism & & & .013 \\
Neuroticism $\times$ Treatment & & & .019 \\
Round $\times$ Treatment & & \underline{-.955} & \underline{-.909} \\
\midrule
LogLikelihood & -830.51 & -826.4 & \textbf{-825.92} \\
Deviance & 1661.0 & 1652.8 & \textbf{1651.8} \\
df residual & \textbf{235} & 233 & 231 \\
Akaike IC & 1671.0 & \textbf{1666.8} & 1669.8 \\
Bayesian IC & \textbf{1688.4} & 1691.2 & 1701.2 \\
\midrule
\multicolumn{4}{@{}l}{\textbf{Bold}: most optimal values.}\\
\multicolumn{4}{@{}l}{\underline{Underlined}: significant predictor} \\
\multicolumn{4}{@{}l}{\textit{Italics}: significant model}
\end{tabular}
\end{table}
\end{document}
顺便问一下,什么是“最优”值?最优值与(普通)最优值有何不同?:-)
附录回答 OP 的后续问题,关于如何使列宽相等,同时在表格材料的最后一行有一个较长的 1 行图例。首先:不要这样做。结果不值得。
但如果你坚持的话,这里有一种方法可以实现这个可疑的目标:使用tabularx
环境并将其整体宽度设置为字符串的宽度
\textbf{Bold}: most optimal values. \underline{Underlined}: significant predictor \textit{Italics}: significant model
请参阅以下屏幕截图以了解此努力的结果。除了表格看起来很糟糕之外,绝对不能保证 1 行图例的宽度以及整个tabularx
环境的宽度适合文本块的宽度。果然,tabularx
以下屏幕截图中的环境比文本块更宽。
简而言之,不要这样做。
\documentclass{article}
\usepackage{booktabs}
\usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\newcommand\blurb{\textbf{Bold}: most optimal values. \underline{Underlined}: significant predictor \textit{Italics}: significant model}
\newlength\lengtha
\settowidth{\lengtha}{\blurb}
\begin{document}
\begin{table}[h]
\begin{tabularx}{\lengtha}{@{}lCCC@{}}
\toprule
\textbf{Parameter} &
\textit{Null model} & \textit{Model 1} & \textit{Model 2} \\
\midrule
Intercept & .652 & -.976 & -.983 \\
Round & -.145 & .1082 & .111 \\
Treatment & & \underline{5.875} & \underline{5.653} \\
Neuroticism & & & .013 \\
Neur * Treatment & & & .019 \\
Round * Treatment & & \underline{-.955} & \underline{-.909} \\
\midrule
LogLikelihood & -830.51 & -826.4 & \textbf{-825.92} \\
Deviance & 1661.0 & 1652.8 & \textbf{1651.8} \\
df residual & \textbf{235} & 233 & 231 \\
Akaike IC & 1671.0 & \textbf{1666.8} & 1669.8 \\
Bayesian IC & \textbf{1688.4} & 1691.2 & 1701.2 \\
\midrule
\multicolumn{4}{@{}l@{}}{\blurb}
\end{tabularx}
\end{table}
\end{document}
答案2
这个答案不能解决您的问题(它已由@Mico 答案 +1 解决),而是为您的表格设计提供了新的方面。它可能对您来说很有趣。
我会用粗体文本强调粗体和带下划线的数字,并通过包中的使用*
和**
使用来区分它们。对于列类型,我会使用包中的列:\tnote
threeparttable
S
siunitx
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{siunitx}
\usepackage{booktabs, makecell, threeparttable}
\renewcommand\theadfont{\normalsize\itshape}
\renewcommand\theadgape{}
\usepackage{caption}
\usepackage{xcolor}
\usepackage{etoolbox}
\begin{document}
\begin{table}[h]
\centering
\renewcommand{\bfseries}{\color{teal!30!black}\fontseries{b}\selectfont}
\robustify\bfseries
\newrobustcmd\B{\bfseries}
\begin{threeparttable}
\begin{tabular}{@{}l*{3}{S[table-format=4.3,
group-four-digits,
mode=text,
detect-weight,
table-align-text-post=false,
table-space-text-post={**}]}
@{}}
\toprule
& \multicolumn{3}{c}{Significant models} \\
\cmidrule{2-4}
\textbf{Parameter}
& {\thead{Null\_model}}
& {\thead{Model 1}}
& {\thead{Model 2}} \\
\midrule
Intercept & .652 & -.976 & -.983 \\
Round & -.145 & .1082 & .111 \\
Treatment & & \B 5.875\tnote{**} & \B 5.653\tnote{**} \\
Neuroticism & & & .013 \\
Neur * Treatment
& & & .019 \\
Round * Treatment
& & \B 955\tnote{**} & \B -.909\tnote{**} \\
\midrule
LogLikelihood
& -830.51 & -826.4 & \B -825.92\tnote{*} \\
Deviance & 1661.0 & 1652.8 & \B 1651.8\tnote{*} \\
df residual & \B 235\tnote{*}
& 233 & 231 \\
Akaike IC & 1671.0 & \B 1666.8\tnote{*} & 1669.8 \\
Bayesian IC & \B 1688.4\tnote{*}
& 1691.2 & 1701.2 \\
\midrule
\end{tabular}
\begin{tablenotes}[para]\footnotesize
\item[*]: most optimal values.
\item[**]: significant predictor
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}
这使: