From 0d39fa021f2aa84c3302242082ea3bf23cc7f99d Mon Sep 17 00:00:00 2001 From: Eric Biedert Date: Tue, 26 Sep 2023 16:59:51 +0200 Subject: [PATCH] Prevent block spacing with placed elements (#2244) --- crates/typst-library/src/layout/mod.rs | 1 + tests/ref/bugs/place-spacing.png | Bin 0 -> 6347 bytes tests/typ/bugs/place-spacing.typ | 15 +++++++++++++++ 3 files changed, 16 insertions(+) create mode 100644 tests/ref/bugs/place-spacing.png create mode 100644 tests/typ/bugs/place-spacing.typ diff --git a/crates/typst-library/src/layout/mod.rs b/crates/typst-library/src/layout/mod.rs index 018cf1a69..4ff0bc92f 100644 --- a/crates/typst-library/src/layout/mod.rs +++ b/crates/typst-library/src/layout/mod.rs @@ -547,6 +547,7 @@ impl<'a> FlowBuilder<'a> { if content.is::() || content.is::() || content.is::() + || content.is::() { self.0.push(content.clone(), styles); return true; diff --git a/tests/ref/bugs/place-spacing.png b/tests/ref/bugs/place-spacing.png new file mode 100644 index 0000000000000000000000000000000000000000..d14ce6ec13035809ee8faba1f9e3a5ef7ec474e8 GIT binary patch literal 6347 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 literal 0 HcmV?d00001 diff --git a/tests/typ/bugs/place-spacing.typ b/tests/typ/bugs/place-spacing.typ new file mode 100644 index 000000000..4d7b5fe38 --- /dev/null +++ b/tests/typ/bugs/place-spacing.typ @@ -0,0 +1,15 @@ +// Test that placed elements don't add extra block spacing. + +--- +#show figure: set block(spacing: 4em) + +Paragraph before float. +#figure(rect(), placement: bottom) +Paragraph after float. + +--- +#show place: set block(spacing: 4em) + +Paragraph before place. +#place(rect()) +Paragraph after place.