我想知道使这个旧代码siunitx
与新版本 3 兼容所需的最少更改。
\documentclass[12pt]{article}
\usepackage{siunitx,xltabular,multicol,booktabs,ragged2e}
\usepackage[table]{xcolor}
\newcolumntype{Y}[1]{>{\Centering\hsize=#1\hsize\linewidth=\hsize}X} % e.g. Y{1.5}
\newcolumntype{L}{>{\RaggedRight}X}
\newcommand{\heading}[1]{\multicolumn{2}{c}{#1}}
\begin{document}
\rowcolors{2}{gray!15}{}
\setlength{\tabcolsep}{0mm}
\begin{xltabular}[c]{0.75\linewidth}{%
>{\hsize=1.6\hsize\linewidth=\hsize}L<{\hspace{1ex}}
Y{0.4}<{\hspace{1ex}}
S[
table-format = 4.3,
scientific-notation = false,
table-parse-only,
table-number-alignment = right,
round-mode = off,
tight-spacing = true,
]<{\hspace{2ex}}
s[
table-unit-alignment = left,
per-mode = symbol,
bracket-unit-denominator,
sticky-per
]
}
\toprule[1.5pt]
Parameter & Symbol & \heading{Value} \\
\midrule
\endfirsthead
\midrule \noalign{\global\rownum=1}\showrowcolors
Parameter & Symbol & \heading{Value} \\
\midrule
\endhead
%
\midrule
\endfoot
%
\bottomrule[1.5pt]
\endlastfoot
%
Area & A & 1.6 & \m\squared \\
Volume & V & 5.7e-04 & \m\cubed \\
Area & A & 1.6 & \m\squared \\
Volume & V & 5.7e-04 & \m\cubed \\
\end{xltabular}
\end{document}
答案1
这里有两个问题。第一个是我删除了s
-type 列。非常专门化并使用了有限数量的列字母之一。此外,使用collcell
包可以轻松涵盖基本思想。添加可选参数会让生活变得更加棘手,但仍然可以使用
\usepackage{collcell}
\newcolumntype{s}{>{\collectcell\si}c<{\endcollectcell}}
\makeatletter
\expandafter\renewcommand\expandafter*\expandafter
{\csname NC@rewrite@s\endcsname}[1][]%
{%
\@temptokena\expandafter
{%
\the\@temptokena
>{\collectcell\si}c<{\endcollectcell}%
}%
\NC@find
}
\makeatother
它可以在 v2 或 v3 中使用。如果您知道您正在使用 v3,则可以用\si
替换\unit
。
第二个很简单:我好像忘了覆盖round-mode = off
。目前可以使用以下方法修复
\ExplSyntaxOn
\keys_define:nn { siunitx }
{ round-mode / off .code:n = \keys_set:nn { siunitx } { round-mode = none } }
\ExplSyntaxOff
并将在下一个维护版本中正确排序。