From b285bea41de7bea0ea33878d812fd4a046913128 Mon Sep 17 00:00:00 2001 From: Alex Saveau Date: Wed, 19 Apr 2023 10:08:59 -0700 Subject: [PATCH] Make `dot` be multiplication and add `dot.period` for periods (#747) --- docs/src/reference/details.yml | 4 ++-- library/src/math/matrix.rs | 4 ++-- library/src/symbols/sym.rs | 10 +++++----- tests/ref/math/syntax.png | Bin 4719 -> 5029 bytes tests/typ/math/cases.typ | 2 +- tests/typ/math/matrix.typ | 10 +++++----- tests/typ/math/multiline.typ | 4 ++-- tests/typ/math/syntax.typ | 4 ++++ 8 files changed, 21 insertions(+), 17 deletions(-) diff --git a/docs/src/reference/details.yml b/docs/src/reference/details.yml index 5d740336c..1926fb774 100644 --- a/docs/src/reference/details.yml +++ b/docs/src/reference/details.yml @@ -31,7 +31,7 @@ math: | ```example $ A = pi r^2 $ - $ "area" = pi dot.op "radius"^2 $ + $ "area" = pi dot "radius"^2 $ $ cal(A) := { x in RR | x "is natural" } $ #let x = 5 @@ -39,7 +39,7 @@ math: | ``` Math mode makes a wide selection of [symbols]($category/symbols/sym) like - `pi`, `dot.op`, or `RR` available. Many mathematical symbols are available in + `pi`, `dot`, or `RR` available. Many mathematical symbols are available in different variants. You can select between different variants by applying [modifiers]($type/symbol) to the symbol. Typst further recognizes a number of shorthand sequences like `=>` that approximate a symbol. When such a shorthand diff --git a/library/src/math/matrix.rs b/library/src/math/matrix.rs index f2a9fe97e..368cd5c48 100644 --- a/library/src/math/matrix.rs +++ b/library/src/math/matrix.rs @@ -10,7 +10,7 @@ const VERTICAL_PADDING: Ratio = Ratio::new(0.1); /// /// ## Example /// ```example -/// $ vec(a, b, c) dot.op vec(1, 2, 3) +/// $ vec(a, b, c) dot vec(1, 2, 3) /// = a + 2b + 3c $ /// ``` /// @@ -135,7 +135,7 @@ impl LayoutMath for MatElem { /// ## Example /// ```example /// $ f(x, y) := cases( -/// 1 "if" (x dot.op y)/2 <= 0, +/// 1 "if" (x dot y)/2 <= 0, /// 2 "if" x "is even", /// 3 "if" x in NN, /// 4 "else", diff --git a/library/src/symbols/sym.rs b/library/src/symbols/sym.rs index e48452ebe..421efe856 100644 --- a/library/src/symbols/sym.rs +++ b/library/src/symbols/sym.rs @@ -64,12 +64,12 @@ pub(crate) const SYM: &[(&str, Symbol)] = symbols! { // Punctuation. amp: ['&', inv: '⅋'], ast: [ - '*', + basic: '*', + op: '∗', low: '⁎', double: '⁑', triple: '⁂', small: '﹡', - op: '∗', circle: '⊛', sq: '⧆', ], @@ -89,8 +89,8 @@ pub(crate) const SYM: &[(&str, Symbol)] = symbols! { wave.double: '〰', ], dot: [ - '.', op: '⋅', + basic: '.', c: '·', circle: '⊙', circle.big: '⨀', @@ -111,10 +111,10 @@ pub(crate) const SYM: &[(&str, Symbol)] = symbols! { section: '§', semi: [';', rev: '⁏'], slash: ['/', double: '⫽', triple: '⫻'], - dots: [h: '…', h.c: '⋯', v: '⋮', down: '⋱', up: '⋰'], + dots: [h.c: '⋯', h: '…', v: '⋮', down: '⋱', up: '⋰'], tilde: [ - '~', op: '∼', + basic: '~', eq: '≃', eq.not: '≄', eq.rev: '⋍', diff --git a/tests/ref/math/syntax.png b/tests/ref/math/syntax.png index f223ba5aeb408e6d6f3a8d4091a2ebf467676a7a..3779f9a8fb88452bbc7dd1359c3940b23f3c449c 100644 GIT binary patch literal 5029 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 Cq8mW~ literal 4719 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 RR) \ 2 * 3 &"if" n != 5, 1 - 0 thick &..., ) $ + +--- +// Test common symbols. +$ dot \ dots \ ast \ tilde \ star $ --- // Error: 1:3 expected dollar sign