diff options
| author | Laurenz <laurmaedje@gmail.com> | 2023-03-12 12:53:50 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2023-03-12 13:20:36 +0100 |
| commit | ad05ba59256a67f429b71a8aba2cd92ed2cafac7 (patch) | |
| tree | 019ccf26f7308d907c042624ccbb647f76d3491b /library/src/math/matrix.rs | |
| parent | 2720a44b965d29e9c3453c732e38554fdb6413bb (diff) | |
Spans in math
Diffstat (limited to 'library/src/math/matrix.rs')
| -rw-r--r-- | library/src/math/matrix.rs | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/library/src/math/matrix.rs b/library/src/math/matrix.rs index 6dec645c..148d79e8 100644 --- a/library/src/math/matrix.rs +++ b/library/src/math/matrix.rs @@ -36,7 +36,13 @@ impl LayoutMath for VecNode { fn layout_math(&self, ctx: &mut MathContext) -> SourceResult<()> { let delim = self.delim(ctx.styles()); let frame = layout_vec_body(ctx, &self.children(), Align::Center)?; - layout_delimiters(ctx, frame, Some(delim.open()), Some(delim.close())) + layout_delimiters( + ctx, + frame, + Some(delim.open()), + Some(delim.close()), + self.span(), + ) } } @@ -112,7 +118,13 @@ impl LayoutMath for MatNode { fn layout_math(&self, ctx: &mut MathContext) -> SourceResult<()> { let delim = self.delim(ctx.styles()); let frame = layout_mat_body(ctx, &self.rows())?; - layout_delimiters(ctx, frame, Some(delim.open()), Some(delim.close())) + layout_delimiters( + ctx, + frame, + Some(delim.open()), + Some(delim.close()), + self.span(), + ) } } @@ -152,7 +164,7 @@ impl LayoutMath for CasesNode { fn layout_math(&self, ctx: &mut MathContext) -> SourceResult<()> { let delim = self.delim(ctx.styles()); let frame = layout_vec_body(ctx, &self.children(), Align::Left)?; - layout_delimiters(ctx, frame, Some(delim.open()), None) + layout_delimiters(ctx, frame, Some(delim.open()), None, self.span()) } } @@ -288,6 +300,7 @@ fn layout_delimiters( mut frame: Frame, left: Option<char>, right: Option<char>, + span: Span, ) -> SourceResult<()> { let axis = scaled!(ctx, axis_height); let short_fall = DELIM_SHORT_FALL.scaled(ctx); @@ -296,14 +309,17 @@ fn layout_delimiters( frame.set_baseline(height / 2.0 + axis); if let Some(left) = left { - ctx.push(GlyphFragment::new(ctx, left).stretch_vertical(ctx, target, short_fall)); + ctx.push( + GlyphFragment::new(ctx, left, span).stretch_vertical(ctx, target, short_fall), + ); } ctx.push(FrameFragment::new(ctx, frame)); if let Some(right) = right { ctx.push( - GlyphFragment::new(ctx, right).stretch_vertical(ctx, target, short_fall), + GlyphFragment::new(ctx, right, span) + .stretch_vertical(ctx, target, short_fall), ); } |
