summaryrefslogtreecommitdiff
path: root/library/src/math/op.rs
diff options
context:
space:
mode:
Diffstat (limited to 'library/src/math/op.rs')
-rw-r--r--library/src/math/op.rs113
1 files changed, 0 insertions, 113 deletions
diff --git a/library/src/math/op.rs b/library/src/math/op.rs
deleted file mode 100644
index 8ad74c49..00000000
--- a/library/src/math/op.rs
+++ /dev/null
@@ -1,113 +0,0 @@
-use typst::eval::Scope;
-
-use super::*;
-
-/// A text operator in an equation.
-///
-/// ## Example { #example }
-/// ```example
-/// $ tan x = (sin x)/(cos x) $
-/// $ op("custom",
-/// limits: #true)_(n->oo) n $
-/// ```
-///
-/// ## Predefined Operators { #predefined }
-/// Typst predefines the operators `arccos`, `arcsin`, `arctan`, `arg`,
-/// `cos`, `cosh`, `cot`, `ctg`, `coth`, `csc`, `deg`, `det`, `dim`,
-/// `exp`, `gcd`, `hom`, `mod`, `inf`, `ker`, `lg`, `lim`, `ln`, `log`,
-/// `max`, `min`, `Pr`, `sec`, `sin`, `sinc`, `sinh`, `sup`, `tan`, `tg`,
-/// `tanh`, `liminf`, and `limsup`.
-///
-/// Display: Text Operator
-/// Category: math
-#[element(LayoutMath)]
-pub struct OpElem {
- /// The operator's text.
- #[required]
- pub text: EcoString,
-
- /// Whether the operator should show attachments as limits in display mode.
- #[default(false)]
- pub limits: bool,
-}
-
-impl LayoutMath for OpElem {
- #[tracing::instrument(skip(ctx))]
- fn layout_math(&self, ctx: &mut MathContext) -> SourceResult<()> {
- let fragment =
- ctx.layout_text(&TextElem::new(self.text()).spanned(self.span()))?;
- ctx.push(
- FrameFragment::new(ctx, fragment.into_frame())
- .with_class(MathClass::Large)
- .with_limits(if self.limits(ctx.styles()) {
- Limits::Display
- } else {
- Limits::Never
- }),
- );
- Ok(())
- }
-}
-
-macro_rules! ops {
- ($($name:ident $(: $value:literal)? $(($tts:tt))?),* $(,)?) => {
- pub(super) fn define(math: &mut Scope) {
- $(math.define(
- stringify!($name),
- OpElem::new(ops!(@name $name $(: $value)?).into())
- .with_limits(ops!(@limit $($tts)*))
- .pack()
- );)*
-
- let dif = |d| {
- HElem::new(THIN.into()).pack()
- + MathStyleElem::new(TextElem::packed(d)).with_italic(Some(false)).pack()
- };
- math.define("dif", dif('d'));
- math.define("Dif", dif('D'));
- }
- };
- (@name $name:ident) => { stringify!($name) };
- (@name $name:ident: $value:literal) => { $value };
- (@limit limits) => { true };
- (@limit) => { false };
-}
-
-ops! {
- arccos,
- arcsin,
- arctan,
- arg,
- cos,
- cosh,
- cot,
- ctg,
- coth,
- csc,
- deg,
- det (limits),
- dim,
- exp,
- gcd (limits),
- hom,
- mod,
- inf (limits),
- ker,
- lg,
- lim (limits),
- ln,
- log,
- max (limits),
- min (limits),
- Pr (limits),
- sec,
- sin,
- sinc,
- sinh,
- sup (limits),
- tan,
- tg,
- tanh,
- liminf: "lim inf" (limits),
- limsup: "lim sup" (limits),
-}