summaryrefslogtreecommitdiff
path: root/library/src/meta
diff options
context:
space:
mode:
authorPg Biel <9021226+PgBiel@users.noreply.github.com>2023-05-12 06:00:55 -0300
committerGitHub <noreply@github.com>2023-05-12 11:00:55 +0200
commita8728be9b03f6f19df6adf1ea26a4713562dc0ae (patch)
tree5f23c21b9e510b514cd61c256260602be83278f2 /library/src/meta
parente8de8a49c57671854f657a4eb1e2d86e5b12a281 (diff)
Initial support for breakable figures (#1121)
Diffstat (limited to 'library/src/meta')
-rw-r--r--library/src/meta/figure.rs15
1 files changed, 13 insertions, 2 deletions
diff --git a/library/src/meta/figure.rs b/library/src/meta/figure.rs
index 548233c4..2082701b 100644
--- a/library/src/meta/figure.rs
+++ b/library/src/meta/figure.rs
@@ -70,9 +70,14 @@ use crate::visualize::ImageElem;
/// )
/// ```
///
+/// If your figure is too large and its contents are breakable across pages
+/// (e.g. if it contains a large table), then you can make the figure breakable
+/// across pages as well by using `#show figure: set block(breakable: true)`
+/// (see the [block]($func/block) documentation for more information).
+///
/// Display: Figure
/// Category: meta
-#[element(Locatable, Synthesize, Count, Show, Refable)]
+#[element(Locatable, Synthesize, Count, Show, Finalize, Refable)]
pub struct FigureElem {
/// The content of the figure. Often, an [image]($func/image).
#[required]
@@ -254,12 +259,18 @@ impl Show for FigureElem {
// We wrap the contents in a block.
Ok(BlockElem::new()
.with_body(Some(realized))
- .with_breakable(false)
.pack()
.aligned(Axes::with_x(Some(Align::Center.into()))))
}
}
+impl Finalize for FigureElem {
+ fn finalize(&self, realized: Content, _: StyleChain) -> Content {
+ // Allow breakable figures with `show figure: set block(breakable: true)`.
+ realized.styled(BlockElem::set_breakable(false))
+ }
+}
+
impl Count for FigureElem {
fn update(&self) -> Option<CounterUpdate> {
// If the figure is numbered, step the counter by one.