我可以将 \newcolumntype 与 \si 结合使用吗?

我可以将 \newcolumntype 与 \si 结合使用吗?

问题,我们学习如何使用array包在数学模式下拥有一个数组列:

\newcolumntype{L}{>{$}l<{$}}

但是,对于符号表(带单位),如果我可以对 进行同样的操作,那就方便了\si{...}。然而,

\newcolumntype{U}{>{\si{}l<{}}}

也不

\newcolumntype{U}{>{\si\{}l<{\}}}

似乎有效(我试图{在那个版本中逃避),当我用这个表尝试时:

\begin{tabular}{U}
\newton\per\meter
\end{tabular}

我得到了错误

! Undefined control sequence.
\newton ->\ERROR
l.29 \newton
\per\meter
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

对于每个使用的单位。有办法吗?

答案1

siunitx包不再s为此目的提供 -type 列,因为一般来说,单位应该位于列标题中。该collcell包也可用于实现相同的效果

\documentclass{article}
\usepackage{siunitx}
\usepackage{collcell}
\begin{document}
\begin{tabular}{ls>{\collectcell\si}c<{\endcollectcell}}
1 & \newton & \newton \\
2 & \metre  & \metre  \\
\end{tabular}
\end{document}

如果您愿意的话,可以将其全部包装到新的列类型中……

答案2

该列类型已经存在,它被称为

 s

您无法像尝试那样从列中拾取参数,您需要一些技巧或使用一个包(我记不起他的名字了),它可以收集列中每个单元格的内容并将它们提供给宏

请注意:从siunitx版本 3开始s,列已不再需要使用,请参阅新siunitx手册。

相关内容