当表格中有文本时,如何按句点对齐数字?

当表格中有文本时,如何按句点对齐数字?

我有一张包含实际值和文本的表格。我想将值与点对齐,但我不知道该怎么做。

我尝试使用该siunitx选项{S[table-format=3.2]},但是它不起作用。

这是我的代码:

\begin{table}[!h]
\begin{center} 
\begin{tabular}{c c c c}
\toprule 
 & apple & banana okay & peach \\
 & tree & green garden & beach \\
\hline
aaa & \textbf{--36.68} & --20.10 & --17.35 \\
bbb & \textbf{--51.18} & --12.15 & --28.33 \\
ccc & --8.33 & --6.40 & \textbf{--14.47} \\
ddd & \textbf{--53.01} & --18.09 & --16.78 \\
eee & \textbf{--74.02} & --12.26 & --58.64 \\
fff & \textbf{--57.15} & --19.58 & --23.81 \\
ggg & \textbf{--47.56} & --17.90 & --15.26 \\
\bottomrule
\end{tabular}
\captionsetup{width=0.85\linewidth}
\caption{Caption text }
\label{tab:TAB-TAB}
\end{center}
\end{table}

这是当前的输出: 在此处输入图片描述

我怎样才能使点之间的值对齐?

答案1

你可以适应我的这个答案

\documentclass{article}
\usepackage{siunitx,booktabs,etoolbox}

\begin{document}

\begin{table}[!htp]
\centering

%% local redefinitions
\renewrobustcmd{\bfseries}{\fontseries{b}\selectfont}
\renewrobustcmd{\boldmath}{}

\begin{tabular}{
 @{}
 l
 *{3}{S[table-format=-2.2,detect-weight,mode=text]}
 @{}
}
\toprule 
 & {apple} & {banana okay} & {peach} \\
 & {tree} & {green garden} & {beach} \\
\midrule
aaa & \bfseries -36.68 & -20.10 &           -17.35 \\
bbb & \bfseries -51.18 & -12.15 &           -28.33 \\
ccc &            -8.33 &  -6.40 & \bfseries -14.47 \\
ddd & \bfseries -53.01 & -18.09 &           -16.78 \\
eee & \bfseries -74.02 & -12.26 &           -58.64 \\
fff & \bfseries -57.15 & -19.58 &           -23.81 \\
ggg & \bfseries -47.56 & -17.90 &           -15.26 \\
\bottomrule
\end{tabular}
\caption{Caption text }
\label{tab:TAB-TAB}

\end{table}

\end{document}

在此处输入图片描述

答案2

主要问题是不同字体(粗体和非粗体)的混淆。以下示例通过使用三列作为数字列,以繁琐的方式解决了该问题:

\documentclass{article}
\usepackage{amsmath}
\usepackage{booktabs}
\usepackage{caption}
\usepackage{siunitx}
\begin{document}
\begin{table}
\centering
\begin{tabular}{
  c
  r@{}c<{.}@{}l
  S[table-format=-2.2]
  r@{}c<{.}@{}l
}
\toprule
 & \multicolumn{3}{c}{apple} & {banana okay} & \multicolumn{3}{c}{peach} \\
 & \multicolumn{3}{c}{tree} & {green garden} & \multicolumn{3}{c}{beach} \\
\midrule
aaa & \boldmath$-36$&&\boldmath$68$ & -20.10 & $-17$&&$35$ \\
bbb & \boldmath$-51$&&\boldmath$18$ & -12.15 & $-28$&&$33$ \\
ccc & $-8$&&$33$ & -6.40 & \boldmath$-14$&\bfseries&\boldmath$47$ \\
ddd & \boldmath$-53$&&\boldmath$01$ & -18.09 & $-16$&&$78$ \\
eee & \boldmath$-74$&&\boldmath$02$ & -12.26 & $-58$&&$64$ \\
fff & \boldmath$-57$&&\boldmath$15$ & -19.58 & $-23$&&$81$ \\
ggg & \boldmath$-47$&&\boldmath$56$ & -17.90 & $-15$&&$26$ \\
\bottomrule
\end{tabular}
\captionsetup{width=0.85\linewidth}
\caption{Caption text }
\label{tab:TAB-TAB}
\end{table}
\end{document}

结果

答案3

以下是如何使用 来实现siunitx。借助makecell包,我将前两行分组,以获得更紧凑的代码。此外,我替换了\hline\midrule添加一些填充。注意标题传统上放置在多于表格:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{siunitx}
\usepackage{booktabs, caption}
\usepackage{makecell}

\begin{document}

\begin{table}[!htb]
  \centering
  \captionsetup{width=0.85\linewidth, skip=8pt}
  \sisetup{table-format=-2.2, detect-weight}
  \caption{Caption text }
  \label{tab:TAB-TAB}
  \begin{tabular}{c *{3}{S}}
    \toprule
        & {\makecell{apple \\tree}} & {\makecell{banana okay\\green garden}} & {\makecell{peach\\beach}} \\
    \midrule
    aaa & \boldmath $ -36.68$ & -20.10 & -17.35 \\
    bbb & \boldmath$- 51.18 $ & -12.15 & -28.33 \\
    ccc & -8.33 & -6.40 & \boldmath$ -14.47 $ \\
    ddd & \boldmath $ -53.01 $ & -18.09 & -16.78 \\
    eee & \boldmath $ -74.02 $ & -12.26 & -58.64 \\
    fff & \boldmath $ -57.15 $ & -19.58 & -23.81 \\
    ggg & \boldmath $ -47.56 $ & -17.90 & -15.26 \\
    \bottomrule
  \end{tabular}
\end{table}

\end{document} 

在此处输入图片描述

相关内容