我注意到,在 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
,您需要进行多次编译。