From 03675fc429bd4e7aa71890922e359940cbf3c2ca Mon Sep 17 00:00:00 2001 From: sitandr <60141933+sitandr@users.noreply.github.com> Date: Tue, 20 Jun 2023 17:58:22 +0300 Subject: [PATCH] Created new system for limits (fixes #1443) (#1452) --- library/src/math/attach.rs | 79 ++++++++++++++++++++++++----------- library/src/math/fragment.rs | 37 ++++++++++++---- library/src/math/op.rs | 8 +++- library/src/math/stretch.rs | 1 + tests/ref/math/attach.png | Bin 26810 -> 29232 bytes tests/typ/math/attach.typ | 8 ++++ 6 files changed, 99 insertions(+), 34 deletions(-) diff --git a/library/src/math/attach.rs b/library/src/math/attach.rs index cbf083c0e..eee1e80ec 100644 --- a/library/src/math/attach.rs +++ b/library/src/math/attach.rs @@ -77,18 +77,9 @@ impl LayoutMath for AttachElem { let b = layout_attachment(ctx, Self::b)?; ctx.unstyle(); - let as_limits = self.base().is::() - || (!self.base().is::() - && ctx.style.size == MathSize::Display - && base.class() == Some(MathClass::Large) - && match &base { - MathFragment::Variant(variant) => LIMITS.contains(&variant.c), - MathFragment::Frame(fragment) => fragment.limits, - _ => false, - }); - - let (t, tr) = if as_limits || tr.is_some() { (t, tr) } else { (None, t) }; - let (b, br) = if as_limits || br.is_some() { (b, br) } else { (None, b) }; + let limits = base.limits().active(ctx); + let (t, tr) = if limits || tr.is_some() { (t, tr) } else { (None, t) }; + let (b, br) = if limits || br.is_some() { (b, br) } else { (None, b) }; layout_attachments(ctx, base, [tl, t, tr, bl, b, br]) } } @@ -112,7 +103,10 @@ pub struct ScriptsElem { impl LayoutMath for ScriptsElem { #[tracing::instrument(skip(ctx))] fn layout_math(&self, ctx: &mut MathContext) -> SourceResult<()> { - self.body().layout_math(ctx) + let mut fragment = ctx.layout_fragment(&self.body())?; + fragment.set_limits(Limits::Never); + ctx.push(fragment); + Ok(()) } } @@ -135,10 +129,56 @@ pub struct LimitsElem { impl LayoutMath for LimitsElem { #[tracing::instrument(skip(ctx))] fn layout_math(&self, ctx: &mut MathContext) -> SourceResult<()> { - self.body().layout_math(ctx) + let mut fragment = ctx.layout_fragment(&self.body())?; + fragment.set_limits(Limits::Always); + ctx.push(fragment); + Ok(()) } } +/// Describes in which situation a frame should use limits for attachments. +#[derive(Debug, Copy, Clone)] +pub enum Limits { + /// Always scripts. + Never, + /// Display limits only in `display` math. + Display, + /// Always limits. + Always, +} + +impl Limits { + /// The default limit configuration if the given character is the base. + pub fn for_char(c: char) -> Self { + if Self::DEFAULT_TO_LIMITS.contains(&c) { + Limits::Display + } else { + Limits::Never + } + } + + /// Whether limits should be displayed in this context + pub fn active(&self, ctx: &MathContext) -> bool { + match self { + Self::Always => true, + Self::Display => ctx.style.size == MathSize::Display, + Self::Never => false, + } + } + + /// Unicode codepoints that should show attachments as limits in display + /// mode. + #[rustfmt::skip] + const DEFAULT_TO_LIMITS: &[char] = &[ + /* ∏ */ '\u{220F}', /* ∐ */ '\u{2210}', /* ∑ */ '\u{2211}', + /* ⋀ */ '\u{22C0}', /* ⋁ */ '\u{22C1}', + /* ⋂ */ '\u{22C2}', /* ⋃ */ '\u{22C3}', + /* ⨀ */ '\u{2A00}', /* ⨁ */ '\u{2A01}', /* ⨂ */ '\u{2A02}', + /* ⨃ */ '\u{2A03}', /* ⨄ */ '\u{2A04}', + /* ⨅ */ '\u{2A05}', /* ⨆ */ '\u{2A06}', + ]; +} + macro_rules! measure { ($e: ident, $attr: ident) => { $e.as_ref().map(|e| e.$attr()).unwrap_or_default() @@ -358,14 +398,3 @@ fn is_atomic_text_frame(frame: &Frame) -> bool { .filter(|item| !matches!(item, FrameItem::Meta(_, _))); matches!(iter.next(), Some(FrameItem::Text(_))) && iter.next().is_none() } - -/// Unicode codepoints that should have sub- and superscripts attached as limits. -#[rustfmt::skip] -const LIMITS: &[char] = &[ - /* ∏ */ '\u{220F}', /* ∐ */ '\u{2210}', /* ∑ */ '\u{2211}', - /* ⋀ */ '\u{22C0}', /* ⋁ */ '\u{22C1}', - /* ⋂ */ '\u{22C2}', /* ⋃ */ '\u{22C3}', - /* ⨀ */ '\u{2A00}', /* ⨁ */ '\u{2A01}', /* ⨂ */ '\u{2A02}', - /* ⨃ */ '\u{2A03}', /* ⨄ */ '\u{2A04}', - /* ⨅ */ '\u{2A05}', /* ⨆ */ '\u{2A06}', -]; diff --git a/library/src/math/fragment.rs b/library/src/math/fragment.rs index 027ab7da1..b70a3f7dc 100644 --- a/library/src/math/fragment.rs +++ b/library/src/math/fragment.rs @@ -90,6 +90,15 @@ impl MathFragment { } } + pub fn set_limits(&mut self, limits: Limits) { + match self { + Self::Glyph(glyph) => glyph.limits = limits, + Self::Variant(variant) => variant.limits = limits, + Self::Frame(fragment) => fragment.limits = limits, + _ => {} + } + } + pub fn is_spaced(&self) -> bool { match self { MathFragment::Frame(frame) => frame.spaced, @@ -113,6 +122,15 @@ impl MathFragment { _ => Frame::new(self.size()), } } + + pub fn limits(&self) -> Limits { + match self { + MathFragment::Glyph(glyph) => glyph.limits, + MathFragment::Variant(variant) => variant.limits, + MathFragment::Frame(fragment) => fragment.limits, + _ => Limits::Never, + } + } } impl From for MathFragment { @@ -149,6 +167,7 @@ pub struct GlyphFragment { pub class: Option, pub span: Span, pub meta: Vec, + pub limits: Limits, } impl GlyphFragment { @@ -164,6 +183,10 @@ impl GlyphFragment { } pub fn with_id(ctx: &MathContext, c: char, id: GlyphId, span: Span) -> Self { + let class = match c { + ':' => Some(MathClass::Relation), + _ => unicode_math_class::class(c), + }; let mut fragment = Self { id, c, @@ -175,11 +198,9 @@ impl GlyphFragment { width: Abs::zero(), ascent: Abs::zero(), descent: Abs::zero(), + limits: Limits::for_char(c), italics_correction: Abs::zero(), - class: match c { - ':' => Some(MathClass::Relation), - _ => unicode_math_class::class(c), - }, + class, span, meta: MetaElem::data_in(ctx.styles()), }; @@ -224,6 +245,7 @@ impl GlyphFragment { italics_correction: self.italics_correction, class: self.class, span: self.span, + limits: self.limits, frame: self.into_frame(), } } @@ -268,6 +290,7 @@ pub struct VariantFragment { pub font_size: Abs, pub class: Option, pub span: Span, + pub limits: Limits, } impl Debug for VariantFragment { @@ -282,7 +305,7 @@ pub struct FrameFragment { pub style: MathStyle, pub font_size: Abs, pub class: MathClass, - pub limits: bool, + pub limits: Limits, pub spaced: bool, pub base_ascent: Abs, } @@ -296,7 +319,7 @@ impl FrameFragment { font_size: ctx.size, style: ctx.style, class: MathClass::Normal, - limits: false, + limits: Limits::Never, spaced: false, base_ascent, } @@ -306,7 +329,7 @@ impl FrameFragment { Self { class, ..self } } - pub fn with_limits(self, limits: bool) -> Self { + pub fn with_limits(self, limits: Limits) -> Self { Self { limits, ..self } } diff --git a/library/src/math/op.rs b/library/src/math/op.rs index cc57eb614..8ad74c49e 100644 --- a/library/src/math/op.rs +++ b/library/src/math/op.rs @@ -26,7 +26,7 @@ pub struct OpElem { #[required] pub text: EcoString, - /// Whether the operator should force attachments to display as limits. + /// Whether the operator should show attachments as limits in display mode. #[default(false)] pub limits: bool, } @@ -39,7 +39,11 @@ impl LayoutMath for OpElem { ctx.push( FrameFragment::new(ctx, fragment.into_frame()) .with_class(MathClass::Large) - .with_limits(self.limits(ctx.styles())), + .with_limits(if self.limits(ctx.styles()) { + Limits::Display + } else { + Limits::Never + }), ); Ok(()) } diff --git a/library/src/math/stretch.rs b/library/src/math/stretch.rs index bbb0c9c44..910f7a818 100644 --- a/library/src/math/stretch.rs +++ b/library/src/math/stretch.rs @@ -185,6 +185,7 @@ fn assemble( italics_correction: Abs::zero(), class: base.class, span: base.span, + limits: base.limits, } } diff --git a/tests/ref/math/attach.png b/tests/ref/math/attach.png index ab93f25bf512f90dacd47368e5756416b8899e80..bf63cccecea97a66fb75a860835eb48dcbf3b406 100644 GIT binary patch literal 29232 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 z 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 literal 26810 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%0DsD;*9u9#mV-CY zKOA|KnaSS4L1B^W6kB1s&ol8RUX!QSZ623@mX5twHd?>d96{htWNV3K&ZrVQwI}C> z@iQS4dm$o5R+IXYktXFV3>v4`$5fgJDb|q741=T(_-iNYZVPQ5RT#YfOBPNp7as;G zvQ`*wdX<>{rJMsPyg2AmD(b>6#3g{nx45k;U zk0+!OlpfqM)j0ALjO6Q4m?(b#=2N2U=@@Dd#F0mu%_ev)$TfvQxCZEMEI#U2ng8<@ zz?Ha2ng3_NId%GNU8Bexp`NrFrE*4$!9+40-$z)rNr%A{$lpEQaoo~V zNt;D7n}x81^lr=#?`40IP+2&&`4-sqew*g6R02?JlzSk6TD3UxdTHL8&@?rwO~Ro{ z9$hznF5YYY4NGqKKJ1Z511st{Es+M`c6RecB;v9WbfoVc0N>JiHc#W5M-yQ@Hb0T!I;wPgA2gXlsl$s{REhA9&7v(_l;>72+!oEp|cn_w@>@{&-$H=5;EAi ztdWVw(PeOD%WPHw59J@yK%%GxO#e?+?-OsK!^g7!5VA+|FgWeeO^&cD=wDHiQg)P1B diff --git a/tests/typ/math/attach.typ b/tests/typ/math/attach.typ index f5f49627a..cb90e5a52 100644 --- a/tests/typ/math/attach.typ +++ b/tests/typ/math/attach.typ @@ -91,3 +91,11 @@ $ limits(integral)_a^b != integral_a^b $ --- // Error: 30-34 unknown variable: oops $ attach(A, t: #locate(it => oops)) $ + +--- +// Show and let rules for limits and scripts +#let eq = $ ∫_a^b iota_a^b $ +#eq +#show "∫": math.limits +#show math.iota: math.limits +#eq