From 34862b7b27ad0df34bc12e486cdfa3726f824c33 Mon Sep 17 00:00:00 2001 From: Leedehai <18319900+Leedehai@users.noreply.github.com> Date: Mon, 27 Nov 2023 06:02:51 -0500 Subject: [PATCH] Implement mid() for middle delimiters in lr() (#2760) --- crates/typst/src/math/fragment.rs | 2 ++ crates/typst/src/math/lr.rs | 47 ++++++++++++++++++++++++++++++ crates/typst/src/math/mod.rs | 1 + crates/typst/src/math/stretch.rs | 1 + tests/ref/math/delimited.png | Bin 25691 -> 29571 bytes tests/typ/math/delimited.typ | 7 +++++ 6 files changed, 58 insertions(+) diff --git a/crates/typst/src/math/fragment.rs b/crates/typst/src/math/fragment.rs index fb1420bfe..d176dd962 100644 --- a/crates/typst/src/math/fragment.rs +++ b/crates/typst/src/math/fragment.rs @@ -297,6 +297,7 @@ impl GlyphFragment { span: self.span, limits: self.limits, frame: self.into_frame(), + mid_stretched: None, } } @@ -360,6 +361,7 @@ pub struct VariantFragment { pub class: Option, pub span: Span, pub limits: Limits, + pub mid_stretched: Option, } impl VariantFragment { diff --git a/crates/typst/src/math/lr.rs b/crates/typst/src/math/lr.rs index 93e5a43c6..1631623ba 100644 --- a/crates/typst/src/math/lr.rs +++ b/crates/typst/src/math/lr.rs @@ -57,6 +57,7 @@ impl LayoutMath for LrElem { .resolve(ctx.styles()) .relative_to(2.0 * max_extent); + // Scale up fragments at both ends. match fragments.as_mut_slice() { [one] => scale(ctx, one, height, None), [first, .., last] => { @@ -66,12 +67,58 @@ impl LayoutMath for LrElem { _ => {} } + // Handle MathFragment::Variant fragments that should be scaled up. + for fragment in &mut fragments { + if let MathFragment::Variant(ref mut variant) = fragment { + if variant.mid_stretched == Some(false) { + variant.mid_stretched = Some(true); + scale(ctx, fragment, height, Some(MathClass::Large)); + } + } + } + ctx.extend(fragments); Ok(()) } } +/// Scales contents vertically to the nearest surrounding lr() group. +/// +/// ```example +/// $ { x mid(|) sum_(i=1)^oo phi_i (x) < 1 } $ +/// ``` +#[elem(LayoutMath)] +pub struct MidElem { + /// The content to be scaled. + #[required] + pub body: Content, +} + +impl LayoutMath for MidElem { + #[tracing::instrument(skip(ctx))] + fn layout_math(&self, ctx: &mut MathContext) -> SourceResult<()> { + let mut fragments = ctx.layout_fragments(self.body())?; + + for fragment in &mut fragments { + match fragment { + MathFragment::Glyph(glyph) => { + let mut new = glyph.clone().into_variant(); + new.mid_stretched = Some(false); + *fragment = MathFragment::Variant(new); + } + MathFragment::Variant(variant) => { + variant.mid_stretched = Some(false); + } + _ => {} + } + } + + ctx.extend(fragments); + Ok(()) + } +} + /// Scale a math fragment to a height. fn scale( ctx: &mut MathContext, diff --git a/crates/typst/src/math/mod.rs b/crates/typst/src/math/mod.rs index d84d9b403..85227fc12 100644 --- a/crates/typst/src/math/mod.rs +++ b/crates/typst/src/math/mod.rs @@ -161,6 +161,7 @@ pub fn module() -> Module { math.define_elem::(); math.define_elem::(); math.define_elem::(); + math.define_elem::(); math.define_elem::(); math.define_elem::(); math.define_elem::(); diff --git a/crates/typst/src/math/stretch.rs b/crates/typst/src/math/stretch.rs index a8e22af45..bfeb80efc 100644 --- a/crates/typst/src/math/stretch.rs +++ b/crates/typst/src/math/stretch.rs @@ -187,6 +187,7 @@ fn assemble( class: base.class, span: base.span, limits: base.limits, + mid_stretched: None, } } diff --git a/tests/ref/math/delimited.png b/tests/ref/math/delimited.png index c83764ec2587058abc15475b8ce4c0eebfb67880..1a67cd1d7146159c34b7aa114ab589d3d873cfe6 100644 GIT binary patch literal 29571 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 Q{Hr&pDLqlFkT(ncZ;8u>-~a#s literal 25691 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

Y5s^i-zN&pKg7>=lzFI zzZ&k9I4&44DP3iGqH|XeV4=EGsdxF0|NKLK={k;Q`}WGE*#X){oDF+=MWJ)}!Apm` z_6cFpJbhYM*>j6G4A4;^8h_Z3`QnFQs~cyI2CWV$yQ+xYZRsUwW-KPk)=Pr2L6LY! z>qaNzdI%|&cFS*+1=it4qv#X^C+X!(ZDQ(Tn8t&aw+)Zlr zTrxwp>Ar>oh8ah~e>6KyRo9ujYRYz9bVghU1H&Zc3o2 zj@2KV-FN&&oBc2>M~h)N_C4USxu)B$RC!>x_I*9t$Q+MZp}ToeTjW0Ow$dN8^8!Zx r;ywG{|3%}^js8Dzw!ayUd|yv|Rp>AlLdsW@62E4yXRQ-6_9XlZP%-AN diff --git a/tests/typ/math/delimited.typ b/tests/typ/math/delimited.typ index e5b93cd6a..6607c3028 100644 --- a/tests/typ/math/delimited.typ +++ b/tests/typ/math/delimited.typ @@ -43,3 +43,10 @@ $ lr( text("(", fill: #green) a/b text(")", fill: #blue) ) $ + +--- +// Test middle functions +$ { x mid(|) sum_(i=1)^oo phi_i (x) < 1 } \ + { integral |x| dif x + mid(bar.v.double) + floor(hat(A) mid(|) { x mid(|) y } mid(|) A) } $