diff --git a/crates/typst/src/model/figure.rs b/crates/typst/src/model/figure.rs index 30708711c..a21e5af5e 100644 --- a/crates/typst/src/model/figure.rs +++ b/crates/typst/src/model/figure.rs @@ -14,8 +14,8 @@ use crate::introspection::{ Count, Counter, CounterKey, CounterUpdate, Locatable, Location, }; use crate::layout::{ - Alignment, BlockElem, Em, HAlignment, Length, OuterVAlignment, PlaceElem, VAlignment, - VElem, + AlignElem, Alignment, BlockElem, Em, HAlignment, Length, OuterVAlignment, PlaceElem, + VAlignment, VElem, }; use crate::model::{Numbering, NumberingPattern, Outlinable, Refable, Supplement}; use crate::text::{Lang, Region, TextElem}; @@ -317,11 +317,7 @@ impl Show for Packed { } // Wrap the contents in a block. - realized = BlockElem::new() - .with_body(Some(realized)) - .pack() - .spanned(self.span()) - .aligned(Alignment::CENTER); + realized = BlockElem::new().with_body(Some(realized)).pack().spanned(self.span()); // Wrap in a float. if let Some(align) = self.placement(styles) { @@ -340,7 +336,10 @@ impl ShowSet for Packed { fn show_set(&self, _: StyleChain) -> Styles { // Still allows breakable figures with // `show figure: set block(breakable: true)`. - BlockElem::set_breakable(false).wrap().into() + let mut map = Styles::new(); + map.set(BlockElem::set_breakable(false)); + map.set(AlignElem::set_alignment(Alignment::CENTER)); + map } } diff --git a/tests/ref/figure-align.png b/tests/ref/figure-align.png new file mode 100644 index 000000000..be2871619 Binary files /dev/null and b/tests/ref/figure-align.png differ diff --git a/tests/suite/model/figure.typ b/tests/suite/model/figure.typ index 6846760f1..13e944811 100644 --- a/tests/suite/model/figure.typ +++ b/tests/suite/model/figure.typ @@ -23,6 +23,13 @@ We can clearly see that @fig-cylinder and caption: [The complex table.], ) +--- figure-align --- +#show figure: set align(start) +#figure( + rect[This is \ left], + caption: [Start-aligned] +) + --- figure-table --- // Testing figures with tables. #figure( @@ -37,6 +44,7 @@ We can clearly see that @fig-cylinder and --- figure-theorem --- // Testing show rules with figures with a simple theorem display #show figure.where(kind: "theorem"): it => { + set align(start) let name = none if not it.caption == none { name = [ #emph(it.caption.body)]