在表格中对齐小数

在表格中对齐小数

我正在创建这样的一个表格:

\documentclass{article}

\usepackage{siunitx}
\usepackage{multirow}
\usepackage{booktabs}

\begin{document}
\begin{table}[h]
\centering
\caption{Caption here}
\begin{tabular}{@{}
                c 
                l 
                l 
                S[table-format=2.1] 
                S[table-format=2.2] 
                S[table-format=2] 
                S[table-format=1]
                @{}}
\toprule
{Tree} & \begin{tabular}[c]{@{}c@{}}{Local}\\ {name} \end{tabular} & \begin{tabular}[c]{@{}c@{}}{Scientific} \\ {name} \end{tabular} & {Diameter} & \begin{tabular}[c]{@{}c@{}}{Tree} \\ {height} \end{tabular} & \begin{tabular}[c]{@{}c@{}}{Measured}  \\ {branches}\end{tabular} & \begin{tabular}[c]{@{}c@{}}{}\\ {order} \end{tabular} \\
\midrule
1 & Local name A & \textit{Scientific name A} & 10.1 & 45.54 & 40 & 1 \\
2 & Local name B & \textit{Scientific name B} & 20.2 & 54.45 & 50 & 2 \\
3 & Local name C & \textit{Scientific name C} & 30.3 & 20.02 & 60 & 3 \\
\bottomrule
\end{tabular}
\label{label here}
\end{table}

\end{document}

我将列名放在 {} 之间,以避免 siunitx 在像读取文本一样读取它时遇到问题(siunitx 将尝试从树中读取“ee”作为指数)。

如果我使用{@{} c l l c c c c @{}}而不是我建议的,它会给我一个 pdf。如果我使用第一个S[table-format=2.1]也会给我一个 pdf。一旦我放了另一个,TexMaker 就不再编译了。它需要 10 倍的时间才能完成,并给我错误! Missing control sequence inserted<inserted text>\inaccessible...e} \end{tabular} & {DBH} & \begin{tabular}

有人知道为什么吗?

另外,“学名”中的“名称”行未左对齐。我该如何将其左对齐?

谢谢!

答案1

这是编译的更简单的代码。或命令makecell的内容接受换行符,并且默认情况下垂直和水平居中。这些命令必须用列中的一对括号括起来。\makecell\theadS

我还加载了cellspace以确保在以字母为前缀的说明符的列中单元格的垂直填充最小S  (或者C如果您还加载sunitx,就像这里的情况一样),并caption获得标题和表格之间的合理距离

\documentclass{article}

\usepackage{siunitx}
\usepackage{multirow}
\usepackage{booktabs, makecell, cellspace, caption}
\setlength{\cellspacetoplimit}{2.5pt}
\setlength{\cellspacebottomlimit}{2.5pt}

\begin{document}

\begin{table}[h]
\centering
\renewcommand{\cellset}{\renewcommand{\arraystretch}{0.7}}
\caption{Caption here}
\begin{tabular}{@{}
                c
               Cl
                l
                S[table-format=2.1]
                S[table-format=2.2]
                S[table-format=2]
                S[table-format=1]
                @{}}
\toprule
{Tree} & \makecell{Local\\ name} & \makecell{Scientific\\ name} & {Diameter} & {\makecell{Tree \\ height}} & {\makecell{Measured\\branches}} & {\makecell{\\order}} \\
\midrule
1 & Local name A & \textit{Scientific name A} & 10.1 & 45.54 & 40 & 1 \\
2 & Local name B & \textit{Scientific name B} & 20.2 & 54.45 & 50 & 2 \\
3 & Local name C & \textit{Scientific name C} & 30.3 & 20.02 & 60 & 3 \\
\bottomrule
\end{tabular}
\label{label here}
\end{table}

\end{document} 

在此处输入图片描述

答案2

您需要将整个 换行tabular{}而不仅仅是 的内容tabular。但是,表格的宏可能会有所帮助。name名称Scientific未左对齐,因为您c在 中使用了一列tabular,因此您需要一l列。

我想我会在标题行中使用\begin{tabular}[b]...tabular,以便垂直对齐沿着底行。

在此处输入图片描述

\documentclass{article}

\usepackage{siunitx}
\usepackage{multirow}
\usepackage{booktabs}
\newcommand\quicktab[2][c]{\begin{tabular}[b]{@{}#1@{}} #2 \end{tabular}}
\begin{document}
\begin{table}[h]
\centering
\caption{Caption here}
\begin{tabular}{@{}
                c 
                l 
                l 
                S[table-format=2.1] 
                S[table-format=2.2] 
                S[table-format=2] 
                S[table-format=1]
                @{}}
\toprule
Tree &
\quicktab{Local \\ name} &
% the optional argument to \quicktab sets the column type for the nested table
% use l for this one
\quicktab[l]{Scientific\\name} &
{Diameter} &
% note the nested tabulars are placed inside {} in the three next rows
{\quicktab{Tree \\ height}} &
{\quicktab{Measured \\ branches}} &
{\quicktab{ \\ order}} \\
\midrule
1 & Local name A & \textit{Scientific name A} & 10.1 & 45.54 & 40 & 1 \\
2 & Local name B & \textit{Scientific name B} & 20.2 & 54.45 & 50 & 2 \\
3 & Local name C & \textit{Scientific name C} & 30.3 & 20.02 & 60 & 3 \\
\bottomrule
\end{tabular}
\label{label here}
\end{table}

\end{document}

相关内容