NiceMatrix,arraystretch 和块

NiceMatrix,arraystretch 和块

我注意到,在 NiceTabular 环境中,特定行上的 arraystretch 值在 0 到 1 之间有一种奇怪的行为,只要这一行的\Block{k-n}k 取任意值,但 n 严格大于一。

确实,我有一张使用nicematrix(由于其他原因我必须使用此环境)构建的表格,我想在其中减少行之间的空间。我注意到,在我有严格由多列组成的块的行上,arraystretch 对于大于 1 的值非常有效,但对于小于 1 的值,所有严格由\Block多列组成的行,行高不会减少。

我是不是漏掉了什么?有什么方法可以解决这个问题,并减少代码所有行的大小(我尝试在 cell-space-limits 中使用负值,但不幸的是,这并没有多大帮助。

下面是一个简化的 LaTeX 代码,对其进行了总结(问题是黄色行)。

\documentclass[12pt,a4paper]{book}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usepackage{nicematrix}

\begin{document}

\begin{verbatim}
With \def\arraystretch{1}:
\end{verbatim}

\def\arraystretch{1}

\begin{NiceTabularX}{9cm}{XXXX}[hvlines]
    \Block{2-1}{A\\E} & B & C & D \\
     & F & G & H \\
    I & J & \Block{1-2}{KL} & \\
    M & N & O & P\\
\end{NiceTabularX}

\vspace{5mm}

\begin{verbatim}
With \def\arraystretch{2}:
\end{verbatim}

\def\arraystretch{2}

\begin{NiceTabularX}{9cm}{XXXX}[hvlines]
    \Block{2-1}{A\\E} & B & C & D \\
     & F & G & H \\
    I & J & \Block{1-2}{KL} & \\
    M & N & O & P\\
\end{NiceTabularX}

\vspace{5mm}

\begin{verbatim}
With \def\arraystretch{0.5}:
\end{verbatim}

\def\arraystretch{0.5}

\begin{NiceTabularX}{9cm}{XXXX}[hvlines]
    \Block{2-1}{A\\E} & B & C & D \\
     & F & G & H \\
    \RowStyle[rowcolor=yellow!50]{}
    I & J & \Block{1-2}{KL} & \\
    M & N & O & P\\
\end{NiceTabularX}
    
\end{document}

在此处输入图片描述

非常感谢大家,祝大家度过一个美好的夜晚!

西蒙

答案1

按照设计,在组成块内容之前\Block将命令nicematrix设置为 1。\arraystretch

但是,自版本 6.5 (2022-01-23) 以来,有一个密钥respect-arraystretch可以阻止该行为。该密钥可用于个人\Block、环境nicematrix(例如{NiceTabular})或\NiceMatrixOptions

\documentclass[12pt,a4paper]{book}
\usepackage{nicematrix}

\begin{document}

\def\arraystretch{0.5}

\begin{NiceTabularX}{9cm}{XXXX}[hvlines,respect-arraystretch]
    \Block{2-1}{A\\E} & B & C & D \\
     & F & G & H \\
    \RowStyle[rowcolor=yellow!50]{}
    I & J & \Block{1-2}{KL} & \\
    M & N & O & P\\
\end{NiceTabularX}
    
\end{document}

与往常一样nicematrix,您需要进行多次编译。

上述代码的输出

相关内容