![Tabu 将 siunitx S 列嵌入到 X 列中不起作用](https://linux22.com/image/337458/Tabu%20%E5%B0%86%20siunitx%20S%20%E5%88%97%E5%B5%8C%E5%85%A5%E5%88%B0%20X%20%E5%88%97%E4%B8%AD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我正在尝试制作一个表格,其中 S 列嵌入 X 列。MNWE 如下。
\documentclass[a4paper,12pt]{article}
\usepackage{array,tabu}
\usepackage{siunitx}
\begin{document}
\newcolumntype W{X[c]{S[round-mode=places, round-precision=2, round-integer-to-decimal=true]}}
\begin{tabu} to \linewidth {WW}
1 &2,356\\
4,567 &1234\\
\end{tabu}
\end{document}
我收到以下错误:
Package array Error: Illegal pream-token (S[round-mode=places, round-recision=2, round-integer-to-decimal=true]): `c' used. \begin{tabu} to \linewidth {WW}
一旦我删除 X 列类型,如下所示:
\documentclass[a4paper,12pt]{article}
\usepackage{array,tabu}
\usepackage{siunitx}
\begin{document}
\newcolumntype W{S[round-mode=places, round-precision=2, round-integer-to-decimal=true]}
\begin{tabu} to \linewidth {WW}
1&2,356\\
4,567&1234\\
\end{tabu}
\end{document}
它可以工作。但在这种情况下,我没有得到 X 列格式。我做错了什么?我读过一些关于类似问题的主题,但从未找到该问题的解决方案。
答案1
那么这样的解决方案怎么样?(受到 David Carlisle 对此问题的回答的启发:将 dcolumn 中定义的列类型与 tabularx 结合起来)。
即使需要列标题...
\documentclass[a4paper,12pt]{article}
\usepackage{array}
\usepackage{siunitx}
\usepackage{tabularx}
\usepackage{booktabs}
\begin{document}
\newcolumntype W{S[round-mode=places, round-precision=2, round-integer-to-decimal=true]}
\begin{tabularx}{\linewidth}{*{2}{W}}
\multicolumn{1}{X}{\centering col A} & \multicolumn{1}{X}{\centering col B} \\
\midrule %inserted only to show that the table is linewidth
1 &2,356\\
4,567 &1234\\
\end{tabularx}
\end{document}