diff --git a/library/src/layout/flow.rs b/library/src/layout/flow.rs index 3e524c112..8c92d4b64 100644 --- a/library/src/layout/flow.rs +++ b/library/src/layout/flow.rs @@ -285,12 +285,16 @@ impl<'a> FlowLayouter<'a> { } .resolve(styles); - let is_columns = block.is::(); + // Temporarily delegerate rootness to the columns. + let is_root = self.root; + if is_root && block.is::() { + self.root = false; + self.regions.root = true; + } // Layout the block itself. let sticky = BlockElem::sticky_in(styles); let fragment = block.layout(vt, styles, self.regions)?; - self.regions.root = self.root && is_columns; for (i, frame) in fragment.into_iter().enumerate() { if i > 0 @@ -305,6 +309,7 @@ impl<'a> FlowLayouter<'a> { )?; } + self.root = is_root; self.regions.root = false; self.last_was_par = false; diff --git a/tests/ref/meta/footnote-columns.png b/tests/ref/meta/footnote-columns.png new file mode 100644 index 000000000..528ec6641 Binary files /dev/null and b/tests/ref/meta/footnote-columns.png differ diff --git a/tests/typ/meta/footnote-columns.typ b/tests/typ/meta/footnote-columns.typ new file mode 100644 index 000000000..0dc889300 --- /dev/null +++ b/tests/typ/meta/footnote-columns.typ @@ -0,0 +1,9 @@ +// Test footnotes in columns, even those +// that are not enabled via `set page`. + +--- +#set page(height: 120pt) +#align(center, strong[Title]) +#show: columns.with(2) +#lorem(3) #footnote(lorem(6)) +Hello there #footnote(lorem(2))