删除一个单元格-如何为 tabularray 包扩展此解决方案?

删除一个单元格-如何为 tabularray 包扩展此解决方案?

此解决方案正是我想要的,但不幸的是,该tabularray软件包删除了使用多列的能力,因此我无法使任何解决方案发挥作用。

我尝试用 Tabularray 的命令替换多列命令\SetCell,但没有成功。

希望得到一些帮助来修改原始解决方案或一些不同的东西以实现相同的结果(理想情况下仍然使用 tabularray 作为基础,但如果我真的不能,我可以考虑切换到该表的其他表包)。

下面是一个示例表,其中标明了要删除的单元格。

\documentclass{article}
\usepackage{tabularray}

\begin{document}

\begin{tblr}{
   colspec = {Q[l,m,2in]*{2}{Q[c,m]}},
   hlines,
   vlines
}
Testing a cell & Test & More text\\
Another row & & \\
\SetRow{ht=1.5in}{Strike this cell out with an X\\from bottom-left to top-right\\and top-left to bottom-right\\may have more than one row\\or altered height} & & \\
\end{tblr}
\end{document}

答案1

这是一个使用以下方法的解决方案nicematrix

(1)使用包模拟表格nicematrix

命令\Block命令创建一个 9x1 多行/列单元格。它不会创建空间,因此添加了空行。\\允许在里面\Block

(2)该包Tikz在矩阵的单元中创建节点。

\CodeAfter命令可用于放置一些将在构建矩阵后执行的代码。tikz加载包后,可以在块的角之间绘制红线。

d

\documentclass{article}
\usepackage{tabularray}


\usepackage{nicematrix} % added <<<<<<<<<<<
\usepackage{tikz}% added <<<<<<<<<<<

\begin{document}
    
    \begin{tblr}{
            colspec = {Q[l,m,2in]*{2}{Q[c,m]}},
            hlines,
            vlines
        }
        Testing a cell & Test & More text\\
        Another row & & \\
        \SetRow{ht=1.5in}{Strike this cell out with an X\\from bottom-left to top-right\\and top-left to bottom-right\\may have more than one row\\or altered height} & & \\
    \end{tblr}
    
    \bigskip
    
    Using nicematrix:
    
    \medskip
    
    \begin{NiceTabular}{W{l}{2in}cc}[vlines,cell-space-top-limit=4pt, cell-space-bottom-limit=1pt] % vertical lines, expand the cells vertically
        \hline
        Testing a cell & Test & More text\\\hline
        Another row & & \\\hline
        \Block[l]{9-1}{Strike this cell out with an X\\from bottom-left to top-right\\and top-left to bottom-right\\may have more than one row\\or altered height} & & \\
        &&\\ % create space for the Block
        &&\\
        &&\\
        &&\\
        &&\\
        &&\\
        &&\\
        &&\\
        \hline
        \CodeAfter % draw a red X
        \tikz \draw [thick,red](3-|1) -- (last-|2)  ;
        \tikz \draw [thick,red](3-|2) -- (last-|1)  ;
    \end{NiceTabular}   
    
\end{document}

答案2

根据 Qrrbrbirlbel 对 Simon Dispa 的回答的评论(+1),我添加了另一个答案nicematrix

在该解决方案中,我通过添加支柱创建了一排总高度 ( \ht+ \dp) 等于 1.5 英寸的行:\rule[-0.75in]{0pt}{1.5in}

还在其中画了红十字\CodeBefore以便在角落处有完美的输出。

\documentclass{article}
\usepackage{tabularray}
\usepackage{nicematrix}
\usepackage{tikz}

\begin{document}
    
\begin{tblr}{
        colspec = {Q[l,m,2in]*{2}{Q[c,m]}},
        hlines,
        vlines
    }
    Testing a cell & Test & More text\\
    Another row & & \\
    \SetRow{ht=1.5in}{Strike this cell out with an X\\from bottom-left to top-right\\and top-left to bottom-right\\may have more than one row\\or altered height} & & \\
\end{tblr}

\bigskip

Using \verb|nicematrix|:

\medskip

\begin{NiceTabular}{W{l}{2in}cc}[hvlines] 
\CodeBefore
  \begin{tikzpicture}
    \clip (3-|1) rectangle (last-|2) ; 
    \draw [thick,red] (3-|1) -- (last-|2) (3-|2) -- (last-|1) ;
  \end{tikzpicture}
\Body
Testing a cell & Test & More text\\
Another row \\
\rule[-0.75in]{0pt}{1.5in}
\Block[v-center]{}{Strike this cell out with an X\\from bottom-left to top-right\\and top-left to bottom-right\\may have more than one row\\or altered height} & & \\
\end{NiceTabular}   
    
\end{document}

上述代码的输出

角落放大:

放大一角

对于第一行和第二行,文本行上方和下方的空间与完全相同{tabular}(根据设计nicematrix)。

可以使用(例如)来增加这些空间\arraystretch

相关内容