diff --git a/crates/typst-library/src/layout/table.rs b/crates/typst-library/src/layout/table.rs index 1b84a616b..056b63a21 100644 --- a/crates/typst-library/src/layout/table.rs +++ b/crates/typst-library/src/layout/table.rs @@ -114,8 +114,27 @@ pub struct TableElem { pub stroke: Option, /// How much to pad the cells' content. - #[default(Abs::pt(5.0).into())] - pub inset: Rel, + /// + /// ```example + /// #table( + /// inset: 10pt, + /// [Hello], + /// [World], + /// ) + /// + /// #table( + /// columns: 2, + /// inset: ( + /// x: 20pt, + /// y: 10pt, + /// ), + /// [Hello], + /// [World], + /// ) + /// ``` + #[fold] + #[default(Sides::splat(Abs::pt(5.0).into()))] + pub inset: Sides>>, /// The contents of the table cells. #[variadic] @@ -141,7 +160,7 @@ impl Layout for TableElem { .into_iter() .enumerate() .map(|(i, child)| { - let mut child = child.padded(Sides::splat(inset)); + let mut child = child.padded(inset); let x = i % cols; let y = i / cols; diff --git a/tests/ref/layout/table.png b/tests/ref/layout/table.png index 5c8dbf0e0..fe4554d9d 100644 Binary files a/tests/ref/layout/table.png and b/tests/ref/layout/table.png differ diff --git a/tests/typ/layout/table.typ b/tests/typ/layout/table.typ index d91c3fa76..5ddc8503f 100644 --- a/tests/typ/layout/table.typ +++ b/tests/typ/layout/table.typ @@ -29,6 +29,38 @@ [A], [B], [C] ) +--- +// Test inset. +#table( + columns: 3, + inset: 10pt, + [A], [B], [C] +) + +#table( + columns: 3, + inset: (y: 10pt), + [A], [B], [C] +) + +#table( + columns: 3, + inset: (left: 20pt, rest: 10pt), + [A], [B], [C] +) + +#table( + columns: 2, + inset: ( + left: 20pt, + right: 5pt, + top: 10pt, + bottom: 3pt, + ), + [A], + [B], +) + --- // Ref: false #table()