mirror of
https://github.com/typst/typst
synced 2025-05-14 17:15:28 +08:00
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
|
/// Whether limits should be displayed in this context
|
||||||
pub fn active(&self, ctx: &MathContext) -> bool {
|
pub fn active(&self, ctx: &MathContext) -> bool {
|
||||||
match self {
|
match self {
|
||||||
|
@ -2,12 +2,15 @@ use unicode_math_class::MathClass;
|
|||||||
|
|
||||||
use crate::diag::SourceResult;
|
use crate::diag::SourceResult;
|
||||||
use crate::foundations::{elem, Content, Packed};
|
use crate::foundations::{elem, Content, Packed};
|
||||||
use crate::math::{LayoutMath, MathContext};
|
use crate::math::{LayoutMath, Limits, MathContext};
|
||||||
|
|
||||||
/// Forced use of a certain math class.
|
/// Forced use of a certain math class.
|
||||||
///
|
///
|
||||||
/// This is useful to treat certain symbols as if they were of a different
|
/// 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
|
||||||
/// ```example
|
/// ```example
|
||||||
@ -37,6 +40,7 @@ impl LayoutMath for Packed<ClassElem> {
|
|||||||
ctx.unstyle();
|
ctx.unstyle();
|
||||||
|
|
||||||
fragment.set_class(*self.class());
|
fragment.set_class(*self.class());
|
||||||
|
fragment.set_limits(Limits::for_class(*self.class()));
|
||||||
ctx.push(fragment);
|
ctx.push(fragment);
|
||||||
Ok(())
|
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.
|
// 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