diff --git a/library/src/math/attach.rs b/library/src/math/attach.rs index eee1e80ec..340dd21e9 100644 --- a/library/src/math/attach.rs +++ b/library/src/math/attach.rs @@ -124,13 +124,25 @@ pub struct LimitsElem { /// The base to attach the limits to. #[required] pub body: Content, + + /// Whether to apply limits in inline equations. + /// + /// It is useful to disable this setting + /// in most cases of applying limits globally + /// (inside show rules or new elements) + #[default(true)] + pub inline: bool, } impl LayoutMath for LimitsElem { #[tracing::instrument(skip(ctx))] fn layout_math(&self, ctx: &mut MathContext) -> SourceResult<()> { let mut fragment = ctx.layout_fragment(&self.body())?; - fragment.set_limits(Limits::Always); + fragment.set_limits(if self.inline(ctx.styles()) { + Limits::Always + } else { + Limits::Display + }); ctx.push(fragment); Ok(()) } diff --git a/tests/ref/math/attach.png b/tests/ref/math/attach.png index bf63cccec..894f553f4 100644 Binary files a/tests/ref/math/attach.png and b/tests/ref/math/attach.png differ diff --git a/tests/typ/math/attach.typ b/tests/typ/math/attach.typ index cb90e5a52..0f404ac7f 100644 --- a/tests/typ/math/attach.typ +++ b/tests/typ/math/attach.typ @@ -97,5 +97,6 @@ $ attach(A, t: #locate(it => oops)) $ #let eq = $ ∫_a^b iota_a^b $ #eq #show "∫": math.limits -#show math.iota: math.limits +#show math.iota: math.limits.with(inline: false) #eq +$iota_a^b$