siunitx 和 mdwtab 之间的冲突

siunitx 和 mdwtab 之间的冲突

在块内包含mdwtabwhile using之后,我遇到了以下错误:siunitxtabular

! Extra \fi.
\@maybe@unskip ...skip \m@ne \lastskip \relax \fi 
                                                  
l.18   1.0 &
             0.0 \\ \hline

显然,这是并非第一次冲突在这些包之间。是否有任何“简单”的解决方法来解决这个问题?我必须包括mdwtab,因此如果没有解决方法,我将需要使用除siunitx表格中的数字对齐之外的其他方法,例如dcolumn

完整示例

\documentclass[12pt,letterpaper]{article}
\usepackage{siunitx}

% Compilation fails if mdwtab is included
\usepackage{mdwtab}

\begin{document}

\begin{tabular}{|S[table-format=4.1]|}
  \hline
  1.0 \\ \hline
  2.0 \\ \hline
  3.0 \\ \hline
\end{tabular}

% The problem happens in there
\begin{tabular}{|S[table-format=4.1]|c|}
  \hline
  1.0 & 0.0 \\ \hline
  2.0 & 0.0 \\ \hline
  3.0 & 0.0 \\ \hline
\end{tabular}

\end{document}

软件包版本

软件包:siunitx 2015/01/21 v2.6e 综合(SI)单位软件包

包:mdwtab 1998/04/28 1.9 带样式的表格排版

包:array 2014/10/28 v2.4c 表格扩展包(FMi)

答案1

还有另一个特殊情况的宏需要被检测siunitx。目前修复:

\usepackage{siunitx}
\ExplSyntaxOn
\makeatletter
\AtBeginDocument
  {
    \@ifpackageloaded { mdwtab }
      {
        \cs_set_protected:Npn \__siunitx_table_collect_not_braced:N #1
          {
            \token_if_eq_meaning:NNF #1 \tex_ignorespaces:D
              {
                \token_if_eq_meaning:NNF #1 \tex_unskip:D
                  {
                    \token_if_eq_meaning:NNF #1 \tab@setcr
                      {
                        \token_if_eq_meaning:NNF #1 \@maybe@unskip
                          { \__siunitx_table_collect_not_braced_aux_i:N #1 }
                      }  
                  }
              }
            \__siunitx_table_collect_next:
          }
      }
      { }
  }
\makeatother
\ExplSyntaxOff

相关内容