NiceTabular 中带有尾随单元格分隔符的多列

NiceTabular 中带有尾随单元格分隔符的多列

由于各种原因,我将一些tabulars 迁移到NiceTabular。其中一个看起来像这样:

\documentclass{article}

\makeatletter
\newsavebox\saved@arstrutbox
\newcommand*{\setarstrut}[1]{%
  \noalign{%
    \begingroup
      \global\setbox\saved@arstrutbox\copy\@arstrutbox
      #1%
      \global\setbox\@arstrutbox\hbox{%
        \vrule \@height\arraystretch\ht\strutbox
               \@depth\arraystretch \dp\strutbox
               \@width\z@
      }%
    \endgroup
  }%
}
\newcommand*{\restorearstrut}{%
  \noalign{%
    \global\setbox\@arstrutbox\copy\saved@arstrutbox
  }%
}
\makeatother

\begin{document}
  \begin{tabular}{c@{/}c}
    \setarstrut{\tiny}
    \multicolumn{1}{c@{\tiny/}}{\tiny\textbf{droggel}} & \tiny\textbf{jug} \\ \restorearstrut \hline
    23 & 42
  \end{tabular}
\end{document}

标题主要取自这个答案关于使行变小。我的做法是将第一行渲染得比其他行小。由于我/在列之间使用了分隔符,因此它也应该被渲染得更小。为了实现这一点,我添加了一个,\multicolumn用一个小分隔符替换原来的分隔符。

现在我tabular换成NiceTabular

\documentclass{article}
\usepackage{nicematrix}

\makeatletter
\newsavebox\saved@arstrutbox
\newcommand*{\setarstrut}[1]{%
  \noalign{%
    \begingroup
      \global\setbox\saved@arstrutbox\copy\@arstrutbox
      #1%
      \global\setbox\@arstrutbox\hbox{%
        \vrule \@height\arraystretch\ht\strutbox
               \@depth\arraystretch \dp\strutbox
               \@width\z@
      }%
    \endgroup
  }%
}
\newcommand*{\restorearstrut}{%
  \noalign{%
    \global\setbox\@arstrutbox\copy\saved@arstrutbox
  }%
}
\makeatother

\begin{document}
  \begin{NiceTabular}{c@{/}c}
    \setarstrut{\tiny}
    \multicolumn{1}{c@{\tiny/}}{\tiny\textbf{droggel}} & \tiny\textbf{jug} \\ \restorearstrut \hline
    23 & 42
  \end{NiceTabular}
\end{document}

编译后得到:

! Package array Error: Empty preamble: `l' used.

See the array package documentation for explanation.
Type  H <return>  for immediate help.
 ...

l.29 ...column{1}{c@{\tiny/}}{\tiny\textbf{droggel}}
                                                   & \tiny\textbf{jug} \\ \r...

错误来自@{\tiny/}多列参数的部分。如果我删除它,代码会呈现,但/显然消失了。

我怎样才能正确地将其迁移到 NiceTabular,同时保留分隔符设置?

答案1

我已经编写了新版本nicematrix(2021-07-01 的 v 5.17)。使用该新版本,该命令应该可以在诸如 的\multicolumn环境中按预期工作。nicematrix{NiceTabular}

\documentclass{article}
\usepackage{nicematrix}

\makeatletter
\newsavebox\saved@arstrutbox
\newcommand*{\setarstrut}[1]{%
  \noalign{%
    \begingroup
      \global\setbox\saved@arstrutbox\copy\@arstrutbox
      #1%
      \global\setbox\@arstrutbox\hbox{%
        \vrule \@height\arraystretch\ht\strutbox
               \@depth\arraystretch \dp\strutbox
               \@width\z@
      }%
    \endgroup
  }%
}
\newcommand*{\restorearstrut}{%
  \noalign{%
    \global\setbox\@arstrutbox\copy\saved@arstrutbox
  }%
}
\makeatother

\begin{document}
  \begin{NiceTabular}{c@{/}c}
    \setarstrut{\tiny}
    \multicolumn{1}{c@{\tiny/}}{\tiny\textbf{droggel}} & \tiny\textbf{jug} \\ \restorearstrut \hline
    23 & 42
  \end{NiceTabular}
\end{document}

上述代码的输出

相关内容