summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2023-06-08 12:24:47 +0200
committerLaurenz <laurmaedje@gmail.com>2023-06-08 12:24:47 +0200
commit2b812259c2ce5fdeac20a04a9aeb0b97800df90a (patch)
treeecb096b0a4a604bab9faa5e68e4049ad1e96b46f
parenta1b0a418837dd5fc017e98e2c9cc200a87c11e2d (diff)
Fix footnote in columns
Fixes #1433
-rw-r--r--library/src/layout/flow.rs9
-rw-r--r--tests/ref/meta/footnote-columns.pngbin0 -> 10873 bytes
-rw-r--r--tests/typ/meta/footnote-columns.typ9
3 files changed, 16 insertions, 2 deletions
diff --git a/library/src/layout/flow.rs b/library/src/layout/flow.rs
index 3e524c11..8c92d4b6 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::<ColumnsElem>();
+ // Temporarily delegerate rootness to the columns.
+ let is_root = self.root;
+ if is_root && block.is::<ColumnsElem>() {
+ 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 00000000..528ec664
--- /dev/null
+++ b/tests/ref/meta/footnote-columns.png
Binary files differ
diff --git a/tests/typ/meta/footnote-columns.typ b/tests/typ/meta/footnote-columns.typ
new file mode 100644
index 00000000..0dc88930
--- /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))