我正在为我的表格使用该tabu
包,它带有X
列类型。我定义了一个R
列类型(\newcolumntype{R}{>{\raggedleft\arraybackslash}X}
),现在我根据X
它在表格中右对齐所有数据。
为了适合页面,我需要稍微缩小表格,所以我想将单位放在新行中。这可以在X
单元格中输入 来实现\newline
。
这一切都运行良好,但现在第一行(描述)看起来有点奇怪,因为没有真正的对齐。我认为它应该与中心对齐。所以我的问题是如何将默认设置更改R
为C
仅针对第一行。
平均能量损失
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{tabu}
\usepackage{siunitx}
\newcolumntype{R}{>{\raggedleft\arraybackslash}X}
\begin{document}
\begin{table}[htb!]
\caption{Table 1}
\centering
\taburowcolors[1] {white .. gray!10}
\begin{tabu}[t]{| R R R R R R R |}
\hline
$c$ \newline [\si{mol\per\liter}]
& $V_\text{Tensid}$ \newline [\si{\milli\liter}]
& $V_\text{Wasser}$ \newline [\si{\milli\liter}]
& $\Pi_\text{1. Durchgang}$ \newline [\si{\milli\newton\per\meter}]
& Offset \newline [\si{\milli\newton\per\meter}]
& $\Pi_\text{2. Durchgang}$ \newline [\si{\milli\newton\per\meter}]
& Offset \newline [\si{\milli\newton\per\meter}]\\
\hline
0.04 & 60 & 0 & 22.6 & 0.7 & - & -\\
$\vdots$ & $\vdots$ & $\vdots$ & $\vdots$ & $\vdots$ & $\vdots$ & $\vdots$\\
0.004 & 60 & 30 & 21.6 & 0.6 & 20.7 & 1.3\\
0.002 & 60 & 60 & 21.0 & 0.3 & 22.1 & 1.4\\
0.001 & 60 & 60 & 20.9 & 0.2 & 24.3 & 0.7\\
\hline
\end{tabu}
\end{table}
\end{docum
主頁
答案1
tabu
我将使用包S
中的列siunitx
来对齐数字(相对于小数点分隔符),而不是使用其灵活宽度的列。为了使表格适合文本宽度,我减少了列之间的水平距离( tabcolsep
)。从 MWE 中可以看到,列标题自动水平居中。
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{siunitx}
\begin{document}
\begin{table}[htb!]
\setlength{\tabcolsep}{4pt}
\caption{Table 1}
\centering
\rowcolors{2}{gray!10}{white}
\begin{tabular}[t]{| S[table-format=1.3] S[table-format=2] S[table-format=2] S[table-format=2.1] S[table-format=2.1] S[table-format=2.1] S[table-format=1.1] |}
\hline
{$c$}
& {$V_\text{Tensid}$}
& {$V_\text{Wasser}$}
& {$\Pi_\text{1. Durchgang}$}
& {Offset}
& {$\Pi_\text{2. Durchgang}$}
& {Offset}\\
{[\si{mol\per\liter}]}
& {[\si{\milli\liter}]}
& {[\si{\milli\liter}]}
& {[\si{\milli\newton\per\meter}]}
& {[\si{\milli\newton\per\meter}]}
& {[\si{\milli\newton\per\meter}]}
& {[\si{\milli\newton\per\meter}]}\\
\hline
0.04 & 60 & 0 & 22.6 & 0.7 & {-} & {-}\\
{$\vdots$} & {$\vdots$} & {$\vdots$} & {$\vdots$} & {$\vdots$} & {$\vdots$} & {$\vdots$}\\
0.004 & 60 & 30 & 21.6 & 0.6 & 20.7 & 1.3\\
0.002 & 60 & 60 & 21.0 & 0.3 & 22.1 & 1.4\\
0.001 & 60 & 60 & 20.9 & 0.2 & 24.3 & 0.7\\
\hline
\end{tabular}
\end{table}
\end{document}
如果您想要坚持tabu
右对齐数字,您可能会有兴趣使用\makecell
同名包中的命令。
答案2
似乎我回答这个答案有点晚了,但我仍然在这里提供我的意见。
排版很漂亮,但代码不太优雅。我使用了多列来欺骗对齐。它还需要手动调整列宽,如果你很着急或者列太多,这可能会很麻烦。
我之所以包括这个,threeparttable
是因为这是添加表格注释的简单方法。这个booktabs
包让这个表格看起来好多了(在我看来),不需要额外的自定义命令定义等。
注意 get 如何\vdots
移位到小数对齐。正如 leandriis 所指出的,这是由于table-format
上缺少选项S
。它由两个数字组成,第一个是整数,第二个是小数。因此,为了使其居中对齐,我这样做了:
\begin{tabular}{S[table-format=1.3]S[table-format=2.0]S[table-format=2.0]S[table-format=2.1]S[table-format=1.1]S[table-format=2.1]S[table-format=1.1]}
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{siunitx}
\usepackage{booktabs, threeparttable}
\setlength{\aboverulesep}{0pt}
\setlength{\belowrulesep}{0pt}
\setlength{\extrarowheight}{.75ex}
\begin{document}
\begin{table}
\begin{threeparttable}
\caption{Some Science Experiment}\label{table:experiment1}
\rowcolors{1}{white}{gray!10}
\begin{tabular}{S[table-format=1.3]S[table-format=2.0]S[table-format=2.0]S[table-format=2.1]S[table-format=1.1]S[table-format=2.1]S[table-format=1.1]} %use l if you want numbers left aligned
\toprule
\multicolumn{1}{p{3em\relax}}{\centering $c$ [\si{mol\per\liter}]}
& \multicolumn{1}{p{2.5em\relax}}{\centering $V_\text{Tensid}$ [\si{\milli\liter}]}
& \multicolumn{1}{p{3em\relax}}{\centering $V_\text{Wasser}$ [\si{\milli\liter}]}
& \multicolumn{1}{p{5em\relax}}{\centering $\Pi_\text{1. Durchgang}$ [\si{\milli\newton\per\meter}]}
& \multicolumn{1}{p{4em\relax}}{\centering Offset [\si{\milli\newton\per\meter}]}
& \multicolumn{1}{p{5em\relax}}{\centering $\Pi_\text{2. Durchgang}$ [\si{\milli\newton\per\meter}]}
& \multicolumn{1}{p{4em\relax}}{\centering Offset [\si{\milli\newton\per\meter}]}
\\
\midrule
0.04 & 60 & 0 & 22.6 & 0.7 & {-} & {-}\\
{$\vdots$} & {$\vdots$} & {$\vdots$} & {$\vdots$} & {$\vdots$} & {$\vdots$} & {$\vdots$}\\
0.004 & 60 & 30 & 21.6 & 0.6 & 20.7 & 1.3\\
0.002 & 60 & 60 & 21.0 & 0.3 & 22.1 & 1.4\\
0.001 & 60 & 60 & 20.9 & 0.2 & 24.3 & 0.7\\
\bottomrule
\end{tabular}
\begin{tablenotes}
\item Source or other notes.
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}