diff options
Diffstat (limited to 'crates')
| -rw-r--r-- | crates/typst/src/math/attach.rs | 9 | ||||
| -rw-r--r-- | crates/typst/src/math/class.rs | 8 |
2 files changed, 15 insertions, 2 deletions
diff --git a/crates/typst/src/math/attach.rs b/crates/typst/src/math/attach.rs index ff66a386..09541d1c 100644 --- a/crates/typst/src/math/attach.rs +++ b/crates/typst/src/math/attach.rs @@ -212,6 +212,15 @@ impl Limits { } } + /// The default limit configuration for a math class. + pub fn for_class(class: MathClass) -> Self { + match class { + MathClass::Large => Self::Display, + MathClass::Relation => Self::Always, + _ => Self::Never, + } + } + /// Whether limits should be displayed in this context pub fn active(&self, ctx: &MathContext) -> bool { match self { diff --git a/crates/typst/src/math/class.rs b/crates/typst/src/math/class.rs index 9f430ad7..1b6c638c 100644 --- a/crates/typst/src/math/class.rs +++ b/crates/typst/src/math/class.rs @@ -2,12 +2,15 @@ use unicode_math_class::MathClass; use crate::diag::SourceResult; use crate::foundations::{elem, Content, Packed}; -use crate::math::{LayoutMath, MathContext}; +use crate::math::{LayoutMath, Limits, MathContext}; /// Forced use of a certain math class. /// /// This is useful to treat certain symbols as if they were of a different -/// class, e.g. to make a symbol behave like a relation. +/// class, e.g. to make a symbol behave like a relation. The class of a symbol +/// defines the way it is laid out, including spacing around it, and how its +/// scripts are attached by default. Note that the latter can always be +/// overridden using [`{limits}`](math.limits) and [`{scripts}`](math.scripts). /// /// # Example /// ```example @@ -37,6 +40,7 @@ impl LayoutMath for Packed<ClassElem> { ctx.unstyle(); fragment.set_class(*self.class()); + fragment.set_limits(Limits::for_class(*self.class())); ctx.push(fragment); Ok(()) } |
