由于各种原因,我将一些tabular
s 迁移到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}