我是 Latex 的新手,希望能得到尽可能多的有关表格格式的帮助。
更具体地说,在下表中,我想确保包含单词“loadings”的行位于中央。
就目前情况而言,我已经尝试了 P{} 的各种设置来提供“负载”居中的错觉,但我想知道是否有一个论据可以确保我可以更准确地控制这一行?
非常感谢您的帮助。
\documentclass[12pt]{article}
\usepackage{float}
\usepackage{enumitem}
\usepackage{amsmath, amsthm, amssymb, amsfonts}
\usepackage{tabularx}
\usepackage{booktabs}
\lstset{ breaklines=true }
\usepackage{titlesec}
\usepackage{lipsum}
\usepackage{array}
\usepackage{longtable}
\usepackage{tabularray}
\begin{table}[H]
\scriptsize
\centering
\captionsetup{font=footnotesize}
\caption{Principal Components Analysis:}
\begin{tabular*}{\columnwidth}{ @{\extracolsep{\fill}} P{2.5cm} P{1.4cm} P{2.7cm} P{1.4cm} P{1.4cm}}
\midrule
\midrule
& PC1 & PC2 & PC3 & PC4 \\
\midrule
\midrule
Eigenvalues & 2.5819 & 0.9778 & 0.7818 & 0.4241 \\
\midrule
\midrule
& & Loadings & & \\
\midrule
\midrule
Mobility & 0.7978 &-0.3522 &-0.0176 & 0.5000 \\
Selfcare & 0.8918 & -0.2196 & -0.0903 & -0.1244 \\
Activities & 0.8643 & -0.1499 & 0.0044 & -0.3981 \\
Pain & 0.4628 & 0.6131 & 0.6776 & 0.0599 \\
Anxiety & 0.4376 & 0.6117 & -0.6000 & 0.0563 \\
\midrule
\midrule
\end{tabular*}
\end{table}
答案1
像这样:
(红线表示页面布局)
由于您加载了tabularray
包,我将使用它来编写此表。除了将单词“Loadings”写入多列单元格外,我还会使用siunitx
列来对齐小数点处的数字:
\documentclass[12pt]{article}
%--------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\usepackage{tabularray}
\UseTblrLibrary{booktabs, siunitx}
\begin{document}
\begin{table}[htb]
\caption{Principal Components Analysis:}
\begin{tblr}{colspec = {X[c] *{4}{X[c, si={table-format=-1.4}]}},
row{1} = {guard}
}
\toprule
& PC1 & PC2 & PC3 & PC4 \\
\midrule
Eigenvalues & 2.5819 & 0.9778 & 0.7818 & 0.4241 \\
\midrule
\SetCell[c=5]{guard, c} Loadings
& & & & \\
\midrule
Mobility & 0.7978 & -0.3522 & -0.0176 & 0.5000 \\
Selfcare & 0.8918 & -0.2196 & -0.0903 & -0.1244 \\
Activities & 0.8643 & -0.1499 & 0.0044 & -0.3981 \\
Pain & 0.4628 & 0.6131 & 0.6776 & 0.0599 \\
Anxiety & 0.4376 & 0.6117 & -0.6000 & 0.0563 \\
\bottomrule
\end{tblr}
\end{table}
\end{document}
附录:
您可能更喜欢“Loadings”一词出现在四个数据列中,正如@Mico 在下面的评论中所建议的那样。在本例中,行:
\SetCell[c=5]{guard, c} Loadings
& & & & \\
应替换为:
& \SetCell[c=4]{guard, c} Loadings
& & & \\
经过这一更改,表格如下所示:
答案2
我看不出有任何理由为手头的表格、表格内容或标题使用tabular*
环境(目标宽度为)。我进一步建议将单词“Loadings”置于四个数据列的中间,而不是所有五个列的中间。\textwidth
\scriptsize
\footnotesize
此外,请不要\midrule
随意使用,也不要重复使用。相反,请学会在适当的情况下使用用户宏、、toprule
和。顺便说一句,软件包的作者在软件包用户指南第 2 节的顶部对双重规则有这样的说法:“永远不要使用双重规则。”明智的建议!请牢记在心。\bottomrule
\cmidrule
\addlinespace
booktabs
最后,请努力将四个数据列中的数字与小数点对齐;在下面的代码中,这是在包S
提供的列类型的帮助下完成的siunitx
。
以下屏幕截图顶部的水平线仅用于说明文本块的宽度。请注意,环境的宽度tabular
不超过 的一半\textwidth
。
\documentclass[12pt]{article}
% this preamble is deliberately kept minimal
\usepackage{booktabs,caption}
\usepackage{siunitx} % for 'S' column type
\newcolumntype{T}[1]{S[table-format=#1]}
\begin{document}
\hrule % just to illustrate width of text block
\begin{table}[ht]
\captionsetup{skip=0.333\baselineskip} % default is 1\baselineskip
\centering
\caption{Principal Components Analysis}
\begin{tabular}{@{} l T{1.4} *{3}{T{-1.4}} @{}}
\toprule % not "\midrule \midrule"
& {PC1} & {PC2} & {PC3} & {PC4} \\
\cmidrule(l){2-5} % not "\midrule \midrule"
Eigenvalues & 2.5819 & 0.9778 & 0.7818 & 0.4241 \\
\addlinespace % not "\midrule \midrule"
& \multicolumn{4}{c@{}}{Loadings} \\
\cmidrule(l){2-5} % not "\midrule \midrule"
Mobility & 0.7978 & -0.3522 & -0.0176 & 0.5000 \\
Selfcare & 0.8918 & -0.2196 & -0.0903 & -0.1244 \\
Activities& 0.8643 & -0.1499 & 0.0044 & -0.3981 \\
Pain & 0.4628 & 0.6131 & 0.6776 & 0.0599 \\
Anxiety & 0.4376 & 0.6117 & -0.6000 & 0.0563 \\
\bottomrule % not "\midrule \midrule"
\end{tabular}
\end{table}
\end{document}
答案3
首先,我会避免双重规则。另外,似乎没有必要缩小尺寸,除非你使用的是双栏格式。因此我假设是这样的。
\documentclass[12pt,twocolumn]{article}
\usepackage{booktabs}
\usepackage{caption}
\usepackage{siunitx}
\begin{document}
\begin{table}[htp]
\centering
% choose a reduced size
%\small
\footnotesize
% local settings
\setlength{\tabcolsep}{0pt}
\newcommand{\?}{\hphantom{$-$}}
\caption{Principal Components Analysis}
\begin{tabular*}{\columnwidth}{
@{\extracolsep{\fill}}
l
S[table-format=1.4]
S[table-format=-1.4]
S[table-format=-1.4]
S[table-format=-1.4]
@{}
}
\toprule
& {PC1} & {\?PC2} & {\?PC3} & {\?PC4} \\
\midrule
Eigenvalues & 2.5819 & 0.9778 & 0.7818 & 0.4241 \\
\midrule
& \multicolumn{4}{c}{Loadings} \\
\cmidrule{2-5}
Mobility & 0.7978 & -0.3522 & -0.0176 & 0.5000 \\
Selfcare & 0.8918 & -0.2196 & -0.0903 & -0.1244 \\
Activities & 0.8643 & -0.1499 & 0.0044 & -0.3981 \\
Pain & 0.4628 & 0.6131 & 0.6776 & 0.0599 \\
Anxiety & 0.4376 & 0.6117 & -0.6000 & 0.0563 \\
\bottomrule
\end{tabular*}
\end{table}
\end{document}
我做了一个小伎俩:由于特征值行紧跟标题,并且其中没有减号,标题看起来会错位,因此我添加了减号的空间来补偿。