奇怪的 tabularray 行为

奇怪的 tabularray 行为

我正在尝试使用该包创建一个相对复杂的表格,就我有限的经验而言tabularray,但我遇到了一个我无法理解的意外行为。这是一个 MWE:

\documentclass{article}
\usepackage{geometry}
\geometry{a4paper, left=20mm, top=20mm}
\usepackage{xcolor}
\usepackage{tabularray}

\pagestyle{empty}
\begin{document}

\begin{tblr}{
    width = \textwidth,
    colspec = {*{4}lc},
    row{1} = {bg=black, fg=white},
    column{1} = {font=\bfseries}, column{2-Y} = {rightsep=20pt},
    row{2} = {font=\bfseries, bg=gray!15},
    vline{2-Y} = {2}{gray!15},
    hline{3} = {red, 1pt},
    cell{1}{3} = {r=3}{c=1},
    vline{3-Y} = {3-Z}{gray!50}, hline{4-Y} = {gray!50}, hline{4,5} = {1}{white}, vline{2} = {3-Z}{1pt}
}     
     \SetCell[c=5]{l}Week 1 \\
     M & Ex. & Work & & Rest \\
       & 2 & 3 & 4 & 5 \\
     C & 2 & 3 & 4 & 5 \\
       & 2 & 3 & 4 & 5
\end{tblr}
 
\end{document}

此代码生成下表:

在此处输入图片描述

我不明白为什么单元格 {2}{3} 和 {3}{3} 完全空白。如何解决这个问题?非常感谢您的见解。

补充一下,第二行第一个单元格后面的空白过多该如何解决?我猜想这可能和它下面的较粗的垂直线有关。另外,灰色水平线和粗黑色水平线重叠的问题该如何解决?先谢谢了!

答案1

我的建议:

  • 删除cell{1}{3} = {r=3}{c=1}会使第一行的第三个单元格跨越三行。您可能不希望出现这种情况,删除此行将修复空白单元格。
  • 我会将colspec = {*{4}cl}其 改为colspec = {*{5}c}使所有单元格居中。我还将添加column{2-Y} = {30pt}让所有列(第一列除外)具有相同的宽度。无论如何,删除column{2-Y} = {rightsep=20pt}以减少过多的空间。
  • 更改hline{4-Y} = {gray!50}, hline{4,5} = {1}{white}hline{4-Y} = {2-Z}{gray!50, leftpos=0}。首先在整个表格宽度上绘制线条,然后用白色覆盖第一部分并不是一个好主意。添加leftpos=0将解决水平边框重叠的问题。
  • 如果要删除第二行的白色边框,请更改vline{2-Y} = {2}{gray!15}vline{3-Y} = {2}{gray!15}并添加。vline{2} = {2}{gray!15, 1pt}

完成 MWE:

\documentclass{article}
\usepackage{geometry}
\geometry{a4paper, left=20mm, top=20mm}
\usepackage{xcolor}
\usepackage{tabularray}

\pagestyle{empty}
\begin{document}

\begin{tblr}{
    width = \textwidth,
    %colspec = {*{4}lc},
    colspec = {*{5}c},
    row{1} = {bg=black, fg=white},
    column{1} = {font=\bfseries}, 
    %column{2-Y} = {rightsep=20pt},
    column{2-Y} = {30pt}, % just as suggestion
    row{2} = {font=\bfseries, bg=gray!15},
    %vline{2-Y} = {2}{gray!15},
    hline{3} = {red, 1pt},
    %cell{1}{3} = {r=3}{c=1},
    vline{3-Y} = {2}{gray!15},
    vline{3-Y} = {3-Z}{gray!50}, 
    %hline{4-Y} = {gray!50}, 
    %hline{4,5} = {1}{white}, 
    hline{4-Y} = {2-Z}{gray!50, leftpos=0}, 
    vline{2} = {2}{gray!15, 1pt},
    vline{2} = {3-Z}{1pt}
}     
     \SetCell[c=5]{l}Week 1 \\
     M & Ex. & Work & & Rest \\
       & 2 & 3 & 4 & 5 \\
     C & 2 & 3 & 4 & 5 \\
       & 2 & 3 & 4 & 5
\end{tblr}
 
\end{document}

在此处输入图片描述

相关内容