diff options
| author | Tobias Schmitz <tobiasschmitz2001@gmail.com> | 2025-05-06 16:03:48 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-06 14:03:48 +0000 |
| commit | 9b09146a6b5e936966ed7ee73bce9dd2df3810ae (patch) | |
| tree | 5a55355e4356d31e3449d1ceb8b29cb52c753a28 | |
| parent | b322da930fe35ee3d19896de6ab653e2f321e301 (diff) | |
Use list spacing for attach spacing in tight lists (#6242)
| -rw-r--r-- | crates/typst-library/src/model/enum.rs | 9 | ||||
| -rw-r--r-- | crates/typst-library/src/model/list.rs | 9 | ||||
| -rw-r--r-- | crates/typst-library/src/model/terms.rs | 8 | ||||
| -rw-r--r-- | tests/ref/issue-6242-tight-list-attach-spacing.png | bin | 0 -> 410 bytes | |||
| -rw-r--r-- | tests/suite/model/list.typ | 8 |
5 files changed, 23 insertions, 11 deletions
diff --git a/crates/typst-library/src/model/enum.rs b/crates/typst-library/src/model/enum.rs index 2d95996a..f1f93702 100644 --- a/crates/typst-library/src/model/enum.rs +++ b/crates/typst-library/src/model/enum.rs @@ -259,10 +259,11 @@ impl Show for Packed<EnumElem> { .spanned(self.span()); if tight { - let leading = ParElem::leading_in(styles); - let spacing = - VElem::new(leading.into()).with_weak(true).with_attach(true).pack(); - realized = spacing + realized; + let spacing = self + .spacing(styles) + .unwrap_or_else(|| ParElem::leading_in(styles).into()); + let v = VElem::new(spacing.into()).with_weak(true).with_attach(true).pack(); + realized = v + realized; } Ok(realized) diff --git a/crates/typst-library/src/model/list.rs b/crates/typst-library/src/model/list.rs index d93ec917..3c3afd33 100644 --- a/crates/typst-library/src/model/list.rs +++ b/crates/typst-library/src/model/list.rs @@ -166,10 +166,11 @@ impl Show for Packed<ListElem> { .spanned(self.span()); if tight { - let leading = ParElem::leading_in(styles); - let spacing = - VElem::new(leading.into()).with_weak(true).with_attach(true).pack(); - realized = spacing + realized; + let spacing = self + .spacing(styles) + .unwrap_or_else(|| ParElem::leading_in(styles).into()); + let v = VElem::new(spacing.into()).with_weak(true).with_attach(true).pack(); + realized = v + realized; } Ok(realized) diff --git a/crates/typst-library/src/model/terms.rs b/crates/typst-library/src/model/terms.rs index e197ff31..3df74cd9 100644 --- a/crates/typst-library/src/model/terms.rs +++ b/crates/typst-library/src/model/terms.rs @@ -189,13 +189,15 @@ impl Show for Packed<TermsElem> { .styled(TermsElem::set_within(true)); if tight { - let leading = ParElem::leading_in(styles); - let spacing = VElem::new(leading.into()) + let spacing = self + .spacing(styles) + .unwrap_or_else(|| ParElem::leading_in(styles).into()); + let v = VElem::new(spacing.into()) .with_weak(true) .with_attach(true) .pack() .spanned(span); - realized = spacing + realized; + realized = v + realized; } Ok(realized) diff --git a/tests/ref/issue-6242-tight-list-attach-spacing.png b/tests/ref/issue-6242-tight-list-attach-spacing.png Binary files differnew file mode 100644 index 00000000..48920008 --- /dev/null +++ b/tests/ref/issue-6242-tight-list-attach-spacing.png diff --git a/tests/suite/model/list.typ b/tests/suite/model/list.typ index 9bed930b..796a7b06 100644 --- a/tests/suite/model/list.typ +++ b/tests/suite/model/list.typ @@ -304,3 +304,11 @@ World - C - = D E + +--- issue-6242-tight-list-attach-spacing --- +// Nested tight lists should be uniformly spaced when list spacing is set. +#set list(spacing: 1.2em) +- A + - B + - C +- C |
