siunitx:需要进行哪些更改才能使旧代码与版本 3 兼容?

siunitx:需要进行哪些更改才能使旧代码与版本 3 兼容?

我想知道使这个旧代码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

并将在下一个维护版本中正确排序。

相关内容