我正在创建这样的一个表格:
\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
\thead
S
我还加载了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}