Make math.class
affect the limit configuration (#3231)
This commit is contained in:
parent
11abc1f1e3
commit
02b16bf9cf
@ -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 {
|
||||
|
@ -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(())
|
||||
}
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 7.4 KiB |
@ -34,4 +34,14 @@ $ a pluseq 5 $
|
||||
|
||||
---
|
||||
// Test exceptions.
|
||||
$ sqrt(3)\/2 quad d_0.d_1d_2 dots $
|
||||
$ sqrt(3)\/2 quad d_0.d_1d_2 dots $
|
||||
|
||||
---
|
||||
// Test if the math class changes the limit configuration.
|
||||
$ class("normal", ->)_a $
|
||||
$class("relation", x)_a$
|
||||
$ class("large", x)_a $
|
||||
$class("large", ->)_a$
|
||||
|
||||
$limits(class("normal", ->))_a$
|
||||
$ scripts(class("relation", x))_a $
|
||||
|
Loading…
x
Reference in New Issue
Block a user