我正在尝试使用该包创建一个相对复杂的表格,就我有限的经验而言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}