单独/独立地将表格行居中

单独/独立地将表格行居中

我是 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\addlinespacebooktabs

最后,请努力将四个数据列中的数字与小数点对齐;在下面的代码中,这是在包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}

我做了一个小伎俩:由于特征值行紧跟标题,并且其中没有减号,标题看起来会错位,因此我添加了减号的空间来补偿。

在此处输入图片描述

相关内容