@cortex-js/compute-engine 0.55.5 → 0.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/compile.esm.js +912 -770
- package/dist/compile.min.esm.js +300 -523
- package/dist/compile.min.umd.cjs +301 -524
- package/dist/compile.umd.cjs +912 -770
- package/dist/compute-engine.esm.js +1517 -902
- package/dist/compute-engine.min.esm.js +300 -522
- package/dist/compute-engine.min.umd.cjs +300 -522
- package/dist/compute-engine.umd.cjs +1517 -902
- package/dist/core.esm.js +1516 -901
- package/dist/core.min.esm.js +299 -521
- package/dist/core.min.umd.cjs +299 -521
- package/dist/core.umd.cjs +1516 -901
- package/dist/interval.esm.js +268 -63
- package/dist/interval.min.esm.js +7 -7
- package/dist/interval.min.umd.cjs +7 -7
- package/dist/interval.umd.cjs +268 -63
- package/dist/latex-syntax.esm.js +371 -77
- package/dist/latex-syntax.min.esm.js +7 -6
- package/dist/latex-syntax.min.umd.cjs +7 -6
- package/dist/latex-syntax.umd.cjs +371 -77
- package/dist/math-json.esm.js +2 -2
- package/dist/math-json.min.esm.js +2 -2
- package/dist/math-json.min.umd.cjs +2 -2
- package/dist/math-json.umd.cjs +2 -2
- package/dist/numerics.esm.js +4 -2
- package/dist/numerics.min.esm.js +3 -3
- package/dist/numerics.min.umd.cjs +3 -3
- package/dist/numerics.umd.cjs +4 -2
- package/dist/types/big-decimal/big-decimal.d.ts +1 -1
- package/dist/types/big-decimal/index.d.ts +1 -1
- package/dist/types/big-decimal/transcendentals.d.ts +1 -1
- package/dist/types/big-decimal/utils.d.ts +1 -1
- package/dist/types/common/ansi-codes.d.ts +1 -1
- package/dist/types/common/configuration-change.d.ts +1 -1
- package/dist/types/common/fuzzy-string-match.d.ts +1 -1
- package/dist/types/common/grapheme-splitter.d.ts +1 -1
- package/dist/types/common/interruptible.d.ts +1 -1
- package/dist/types/common/one-of.d.ts +1 -1
- package/dist/types/common/signals.d.ts +1 -1
- package/dist/types/common/type/ast-nodes.d.ts +1 -1
- package/dist/types/common/type/boxed-type.d.ts +1 -1
- package/dist/types/common/type/lexer.d.ts +1 -1
- package/dist/types/common/type/parse.d.ts +1 -1
- package/dist/types/common/type/parser.d.ts +1 -1
- package/dist/types/common/type/primitive.d.ts +1 -1
- package/dist/types/common/type/reduce.d.ts +1 -1
- package/dist/types/common/type/serialize.d.ts +1 -1
- package/dist/types/common/type/subtype.d.ts +1 -1
- package/dist/types/common/type/type-builder.d.ts +1 -1
- package/dist/types/common/type/types.d.ts +2 -2
- package/dist/types/common/type/utils.d.ts +1 -1
- package/dist/types/common/utils.d.ts +1 -1
- package/dist/types/compile.d.ts +1 -1
- package/dist/types/compute-engine/assume.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/constants.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/factor.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/inequality-bounds.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/init-lazy-refs.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/invisible-operator.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/pattern-utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/polynomial-degree.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/predicates.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/rules.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/stochastic-equal.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/type-guards.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
- package/dist/types/compute-engine/collection-utils.d.ts +1 -1
- package/dist/types/compute-engine/compilation/base-compiler.d.ts +1 -1
- package/dist/types/compute-engine/compilation/compile-expression.d.ts +2 -3
- package/dist/types/compute-engine/compilation/constant-folding.d.ts +1 -1
- package/dist/types/compute-engine/compilation/glsl-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/gpu-target.d.ts +15 -58
- package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/javascript-target.d.ts +25 -3
- package/dist/types/compute-engine/compilation/python-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/types.d.ts +1 -67
- package/dist/types/compute-engine/compilation/wgsl-target.d.ts +1 -1
- package/dist/types/compute-engine/cost-function.d.ts +1 -1
- package/dist/types/compute-engine/engine-assumptions.d.ts +1 -1
- package/dist/types/compute-engine/engine-cache.d.ts +1 -1
- package/dist/types/compute-engine/engine-common-symbols.d.ts +1 -1
- package/dist/types/compute-engine/engine-compilation-targets.d.ts +1 -1
- package/dist/types/compute-engine/engine-configuration-lifecycle.d.ts +1 -1
- package/dist/types/compute-engine/engine-declarations.d.ts +1 -1
- package/dist/types/compute-engine/engine-expression-entrypoints.d.ts +1 -1
- package/dist/types/compute-engine/engine-extension-contracts.d.ts +1 -1
- package/dist/types/compute-engine/engine-library-bootstrap.d.ts +1 -1
- package/dist/types/compute-engine/engine-numeric-configuration.d.ts +1 -1
- package/dist/types/compute-engine/engine-runtime-state.d.ts +1 -1
- package/dist/types/compute-engine/engine-scope.d.ts +1 -1
- package/dist/types/compute-engine/engine-sequences.d.ts +1 -1
- package/dist/types/compute-engine/engine-simplification-rules.d.ts +1 -1
- package/dist/types/compute-engine/engine-startup-coordinator.d.ts +1 -1
- package/dist/types/compute-engine/engine-type-resolver.d.ts +1 -1
- package/dist/types/compute-engine/engine-validation-entrypoints.d.ts +1 -1
- package/dist/types/compute-engine/free-functions.d.ts +1 -1
- package/dist/types/compute-engine/function-utils.d.ts +1 -1
- package/dist/types/compute-engine/global-types.d.ts +1 -1
- package/dist/types/compute-engine/index.d.ts +23 -3
- package/dist/types/compute-engine/interval/arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/interval/comparison.d.ts +1 -1
- package/dist/types/compute-engine/interval/elementary.d.ts +1 -1
- package/dist/types/compute-engine/interval/index.d.ts +1 -1
- package/dist/types/compute-engine/interval/trigonometric.d.ts +1 -1
- package/dist/types/compute-engine/interval/types.d.ts +1 -1
- package/dist/types/compute-engine/interval/util.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/default-dictionary.d.ts +4 -3
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-colors.d.ts +10 -0
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-units.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/indexed-types.d.ts +9 -1
- package/dist/types/compute-engine/latex-syntax/latex-syntax.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse-number.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serialize-dms.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer.d.ts +4 -2
- package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/types.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
- package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/library/calculus.d.ts +1 -1
- package/dist/types/compute-engine/library/collections.d.ts +1 -1
- package/dist/types/compute-engine/library/colors.d.ts +1 -1
- package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
- package/dist/types/compute-engine/library/complex.d.ts +1 -1
- package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
- package/dist/types/compute-engine/library/core.d.ts +1 -1
- package/dist/types/compute-engine/library/fractals.d.ts +1 -1
- package/dist/types/compute-engine/library/library.d.ts +1 -1
- package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/library/logic-analysis.d.ts +1 -1
- package/dist/types/compute-engine/library/logic.d.ts +1 -1
- package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
- package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/library/quantity-arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
- package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
- package/dist/types/compute-engine/library/sets.d.ts +1 -1
- package/dist/types/compute-engine/library/statistics.d.ts +1 -1
- package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/library/type-handlers.d.ts +1 -1
- package/dist/types/compute-engine/library/unit-data.d.ts +1 -1
- package/dist/types/compute-engine/library/units.d.ts +1 -1
- package/dist/types/compute-engine/library/utils.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
- package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
- package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
- package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
- package/dist/types/compute-engine/numerics/linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
- package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
- package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
- package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
- package/dist/types/compute-engine/numerics/special-functions.d.ts +1 -1
- package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
- package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
- package/dist/types/compute-engine/numerics/types.d.ts +1 -1
- package/dist/types/compute-engine/numerics/unit-data.d.ts +1 -1
- package/dist/types/compute-engine/oeis.d.ts +1 -1
- package/dist/types/compute-engine/sequence.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu-cost.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/logic-utils.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-factorial.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-logic.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
- package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
- package/dist/types/compute-engine/tensor/tensors.d.ts +1 -1
- package/dist/types/compute-engine/types-definitions.d.ts +1 -1
- package/dist/types/compute-engine/types-engine.d.ts +6 -2
- package/dist/types/compute-engine/types-evaluation.d.ts +1 -1
- package/dist/types/compute-engine/types-expression.d.ts +1 -1
- package/dist/types/compute-engine/types-kernel-evaluation.d.ts +1 -1
- package/dist/types/compute-engine/types-kernel-serialization.d.ts +1 -1
- package/dist/types/compute-engine/types-serialization.d.ts +1 -1
- package/dist/types/compute-engine/types.d.ts +1 -1
- package/dist/types/compute-engine.d.ts +2 -3
- package/dist/types/core.d.ts +1 -1
- package/dist/types/interval.d.ts +1 -1
- package/dist/types/latex-syntax.d.ts +2 -2
- package/dist/types/math-json/symbols.d.ts +1 -1
- package/dist/types/math-json/types.d.ts +1 -1
- package/dist/types/math-json/utils.d.ts +1 -1
- package/dist/types/math-json.d.ts +2 -2
- package/dist/types/numerics.d.ts +1 -1
- package/package.json +2 -2
- package/dist/types/compute-engine/compilation/fractal-orbit.d.ts +0 -19
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** LatexSyntax 0.
|
|
1
|
+
/** LatexSyntax 0.56.0 */
|
|
2
2
|
(function(global,factory){typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'],factory):(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.LatexSyntax = {}));})(this, (function (exports) { 'use strict';
|
|
3
3
|
var LatexSyntax = (() => {
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1190,6 +1190,7 @@ var LatexSyntax = (() => {
|
|
|
1190
1190
|
];
|
|
1191
1191
|
var VALUE_TYPES = [
|
|
1192
1192
|
"value",
|
|
1193
|
+
"color",
|
|
1193
1194
|
...COLLECTION_TYPES,
|
|
1194
1195
|
...SCALAR_TYPES
|
|
1195
1196
|
];
|
|
@@ -2841,6 +2842,7 @@ var LatexSyntax = (() => {
|
|
|
2841
2842
|
symbol: [],
|
|
2842
2843
|
boolean: [],
|
|
2843
2844
|
string: [],
|
|
2845
|
+
color: [],
|
|
2844
2846
|
expression: EXPRESSION_TYPES
|
|
2845
2847
|
};
|
|
2846
2848
|
function isPrimitiveSubtype(lhs, rhs) {
|
|
@@ -4787,10 +4789,6 @@ var LatexSyntax = (() => {
|
|
|
4787
4789
|
// Lagrange notation
|
|
4788
4790
|
{
|
|
4789
4791
|
name: "Derivative",
|
|
4790
|
-
// @todo: Leibniz notation: {% latex " \\frac{d^n}{dx^n} f(x)" %}
|
|
4791
|
-
// @todo: Euler modified notation: This notation is used by Mathematica. The Euler notation uses `D` instead of
|
|
4792
|
-
// `\partial`: `\partial_{x} f`, `\partial_{x,y} f`
|
|
4793
|
-
// Newton notation (\dot{v}, \ddot{v}) is implemented below
|
|
4794
4792
|
serialize: (serializer, expr) => {
|
|
4795
4793
|
const degree = machineValue(operand(expr, 2)) ?? 1;
|
|
4796
4794
|
const base = serializer.serialize(operand(expr, 1));
|
|
@@ -5828,14 +5826,18 @@ var LatexSyntax = (() => {
|
|
|
5828
5826
|
return ["Complement", lhs];
|
|
5829
5827
|
}
|
|
5830
5828
|
// precedence: 240,
|
|
5831
|
-
// @todo: serialize for the multiple argument case
|
|
5832
5829
|
},
|
|
5833
5830
|
{
|
|
5834
5831
|
name: "Complement",
|
|
5835
5832
|
latexTrigger: ["^", "<{>", "\\complement", "<}>"],
|
|
5836
|
-
kind: "postfix"
|
|
5833
|
+
kind: "postfix",
|
|
5837
5834
|
// precedence: 240,
|
|
5838
|
-
|
|
5835
|
+
serialize: (serializer, expr) => {
|
|
5836
|
+
return joinLatex([
|
|
5837
|
+
serializer.serialize(operand(expr, 1)),
|
|
5838
|
+
"^\\complement"
|
|
5839
|
+
]);
|
|
5840
|
+
}
|
|
5839
5841
|
},
|
|
5840
5842
|
{
|
|
5841
5843
|
name: "Intersection",
|
|
@@ -5922,7 +5924,6 @@ var LatexSyntax = (() => {
|
|
|
5922
5924
|
// commands like \rbrack a, b \rbrack which are unambiguous.
|
|
5923
5925
|
{
|
|
5924
5926
|
name: "Multiple",
|
|
5925
|
-
// @todo: parse
|
|
5926
5927
|
serialize: serializeSet
|
|
5927
5928
|
},
|
|
5928
5929
|
{
|
|
@@ -5931,14 +5932,28 @@ var LatexSyntax = (() => {
|
|
|
5931
5932
|
kind: "infix",
|
|
5932
5933
|
precedence: 350
|
|
5933
5934
|
},
|
|
5935
|
+
// \mid as a separator/operator (used in set-builder notation: {x \mid x > 0})
|
|
5936
|
+
// Low precedence so it binds loosely — everything on each side is parsed first
|
|
5937
|
+
{
|
|
5938
|
+
name: "Divides",
|
|
5939
|
+
latexTrigger: ["\\mid"],
|
|
5940
|
+
kind: "infix",
|
|
5941
|
+
precedence: 160
|
|
5942
|
+
},
|
|
5934
5943
|
{
|
|
5935
5944
|
name: "Set",
|
|
5936
5945
|
kind: "matchfix",
|
|
5937
5946
|
openTrigger: "{",
|
|
5938
5947
|
closeTrigger: "}",
|
|
5939
|
-
// @todo: the set syntax can also include conditions...
|
|
5940
5948
|
parse: (_parser, body) => {
|
|
5941
5949
|
if (isEmptySequence(body)) return "EmptySet";
|
|
5950
|
+
const h = operator(body);
|
|
5951
|
+
if (h === "Divides" || h === "Colon") {
|
|
5952
|
+
const expr = operand(body, 1);
|
|
5953
|
+
const condition = operand(body, 2);
|
|
5954
|
+
if (expr !== null && condition !== null)
|
|
5955
|
+
return ["Set", expr, ["Condition", condition]];
|
|
5956
|
+
}
|
|
5942
5957
|
if (operator(body) == "Delimiter" && stringValue(operand(body, 2)) === ",") {
|
|
5943
5958
|
body = operand(body, 1);
|
|
5944
5959
|
}
|
|
@@ -5946,6 +5961,17 @@ var LatexSyntax = (() => {
|
|
|
5946
5961
|
return ["Set", ...operands(body)];
|
|
5947
5962
|
},
|
|
5948
5963
|
serialize: (serializer, expr) => {
|
|
5964
|
+
if (nops(expr) === 2 && operator(operand(expr, 2)) === "Condition") {
|
|
5965
|
+
const condition = operand(expr, 2);
|
|
5966
|
+
return joinLatex([
|
|
5967
|
+
"\\lbrace",
|
|
5968
|
+
serializer.serialize(operand(expr, 1)),
|
|
5969
|
+
"\\mid",
|
|
5970
|
+
// Serialize the inner expression of the Condition wrapper
|
|
5971
|
+
serializer.serialize(operand(condition, 1)),
|
|
5972
|
+
"\\rbrace"
|
|
5973
|
+
]);
|
|
5974
|
+
}
|
|
5949
5975
|
return joinLatex([
|
|
5950
5976
|
"\\lbrace",
|
|
5951
5977
|
operands(expr).map((x) => serializer.serialize(x)).join(", "),
|
|
@@ -6112,23 +6138,6 @@ var LatexSyntax = (() => {
|
|
|
6112
6138
|
if (expr === null) return "";
|
|
6113
6139
|
const h = operator(expr);
|
|
6114
6140
|
if (!h) return "";
|
|
6115
|
-
if (h === "Set") {
|
|
6116
|
-
if (nops(expr) === 0) return "\\emptyset";
|
|
6117
|
-
if (nops(expr) === 2 && operator(operand(expr, 2)) === "Condition") {
|
|
6118
|
-
return joinLatex([
|
|
6119
|
-
"\\left\\lbrace",
|
|
6120
|
-
serializer.serialize(operand(expr, 1)),
|
|
6121
|
-
"\\middle\\mid",
|
|
6122
|
-
serializer.serialize(operand(expr, 2)),
|
|
6123
|
-
"\\right\\rbrace"
|
|
6124
|
-
]);
|
|
6125
|
-
}
|
|
6126
|
-
return joinLatex([
|
|
6127
|
-
"\\left\\lbrace",
|
|
6128
|
-
...operands(expr).map((x) => serializer.serialize(x) + " ,"),
|
|
6129
|
-
"\\right\\rbrace"
|
|
6130
|
-
]);
|
|
6131
|
-
}
|
|
6132
6141
|
if (h === "Multiple") {
|
|
6133
6142
|
}
|
|
6134
6143
|
if (h === "Range") {
|
|
@@ -7276,11 +7285,13 @@ var LatexSyntax = (() => {
|
|
|
7276
7285
|
if (!parser.match("_")) return null;
|
|
7277
7286
|
const base = parser.parseGroup();
|
|
7278
7287
|
if (operator(base) !== "To") return null;
|
|
7279
|
-
const expr = parser.
|
|
7288
|
+
const expr = parser.parseExpression({
|
|
7289
|
+
minPrec: MULTIPLICATION_PRECEDENCE
|
|
7290
|
+
});
|
|
7280
7291
|
if (!expr) return null;
|
|
7281
7292
|
return [
|
|
7282
7293
|
"Limit",
|
|
7283
|
-
["Function", expr
|
|
7294
|
+
["Function", expr, operand(base, 1)],
|
|
7284
7295
|
operand(base, 2)
|
|
7285
7296
|
];
|
|
7286
7297
|
},
|
|
@@ -7361,6 +7372,8 @@ var LatexSyntax = (() => {
|
|
|
7361
7372
|
precedence: DIVISION_PRECEDENCE,
|
|
7362
7373
|
parse: "Mod"
|
|
7363
7374
|
},
|
|
7375
|
+
// Function-style alias: `\operatorname{mod}(a, b)`
|
|
7376
|
+
{ latexTrigger: "\\operatorname{mod}", parse: "Mod" },
|
|
7364
7377
|
{
|
|
7365
7378
|
latexTrigger: "\\pmod",
|
|
7366
7379
|
kind: "prefix",
|
|
@@ -7601,6 +7614,13 @@ var LatexSyntax = (() => {
|
|
|
7601
7614
|
const rhs = serializer.wrap(operand(expr, 2), ADDITION_PRECEDENCE + 3);
|
|
7602
7615
|
return joinLatex([lhs, "-", rhs]);
|
|
7603
7616
|
}
|
|
7617
|
+
},
|
|
7618
|
+
// Euclidean distance between two points (tuples of numbers).
|
|
7619
|
+
{
|
|
7620
|
+
name: "Distance",
|
|
7621
|
+
latexTrigger: ["\\operatorname{distance}"],
|
|
7622
|
+
kind: "function",
|
|
7623
|
+
serialize: (serializer, expr) => "\\operatorname{distance}" + serializer.wrapArguments(expr)
|
|
7604
7624
|
}
|
|
7605
7625
|
];
|
|
7606
7626
|
function getIndexAssignment(expr, upper) {
|
|
@@ -9025,7 +9045,9 @@ var LatexSyntax = (() => {
|
|
|
9025
9045
|
if (!expr || !symbol(expr)) return null;
|
|
9026
9046
|
return ["Mean", expr];
|
|
9027
9047
|
}
|
|
9028
|
-
}
|
|
9048
|
+
},
|
|
9049
|
+
// Function-style alias: `\operatorname{var}(...)`
|
|
9050
|
+
{ latexTrigger: "\\operatorname{var}", parse: "Variance" }
|
|
9029
9051
|
];
|
|
9030
9052
|
|
|
9031
9053
|
// src/compute-engine/numerics/unit-data.ts
|
|
@@ -9484,12 +9506,52 @@ var LatexSyntax = (() => {
|
|
|
9484
9506
|
];
|
|
9485
9507
|
|
|
9486
9508
|
// src/compute-engine/latex-syntax/dictionary/definitions-other.ts
|
|
9509
|
+
var TEX_UNITS = [
|
|
9510
|
+
"pt",
|
|
9511
|
+
"em",
|
|
9512
|
+
"mu",
|
|
9513
|
+
"ex",
|
|
9514
|
+
"mm",
|
|
9515
|
+
"cm",
|
|
9516
|
+
"in",
|
|
9517
|
+
"bp",
|
|
9518
|
+
"sp",
|
|
9519
|
+
"dd",
|
|
9520
|
+
"cc",
|
|
9521
|
+
"pc",
|
|
9522
|
+
"nc",
|
|
9523
|
+
"nd"
|
|
9524
|
+
];
|
|
9525
|
+
function skipTexDimension(parser) {
|
|
9526
|
+
parser.skipSpace();
|
|
9527
|
+
if (parser.peek === "-" || parser.peek === "+") parser.nextToken();
|
|
9528
|
+
while (/^[\d.]$/.test(parser.peek)) parser.nextToken();
|
|
9529
|
+
for (const unit of TEX_UNITS) {
|
|
9530
|
+
if (parser.matchAll([...unit])) return;
|
|
9531
|
+
}
|
|
9532
|
+
}
|
|
9487
9533
|
function parseSingleArg(cmd) {
|
|
9488
9534
|
return (parser) => {
|
|
9489
9535
|
const arg = parser.parseGroup();
|
|
9490
9536
|
return arg === null ? [cmd] : [cmd, arg];
|
|
9491
9537
|
};
|
|
9492
9538
|
}
|
|
9539
|
+
function parseMathStyleSwitch(mathStyle) {
|
|
9540
|
+
return (parser) => {
|
|
9541
|
+
const body = parser.parseExpression();
|
|
9542
|
+
if (body !== null && !isEmptySequence(body))
|
|
9543
|
+
return ["Annotated", body, { dict: { mathStyle } }];
|
|
9544
|
+
return "Nothing";
|
|
9545
|
+
};
|
|
9546
|
+
}
|
|
9547
|
+
function parseSizeSwitch(size) {
|
|
9548
|
+
return (parser) => {
|
|
9549
|
+
const body = parser.parseExpression();
|
|
9550
|
+
if (body !== null && !isEmptySequence(body))
|
|
9551
|
+
return ["Annotated", body, { dict: { size } }];
|
|
9552
|
+
return "Nothing";
|
|
9553
|
+
};
|
|
9554
|
+
}
|
|
9493
9555
|
var DEFINITIONS_OTHERS = [
|
|
9494
9556
|
{
|
|
9495
9557
|
name: "Overscript",
|
|
@@ -9729,80 +9791,71 @@ var LatexSyntax = (() => {
|
|
|
9729
9791
|
},
|
|
9730
9792
|
{
|
|
9731
9793
|
latexTrigger: ["\\displaystyle"],
|
|
9732
|
-
parse: (
|
|
9733
|
-
// @todo: parse as ['Annotated'...]
|
|
9794
|
+
parse: parseMathStyleSwitch("normal")
|
|
9734
9795
|
},
|
|
9735
9796
|
{
|
|
9736
9797
|
latexTrigger: ["\\textstyle"],
|
|
9737
|
-
parse: (
|
|
9738
|
-
// @todo: parse as ['Annotated'...]
|
|
9798
|
+
parse: parseMathStyleSwitch("compact")
|
|
9739
9799
|
},
|
|
9740
9800
|
{
|
|
9741
9801
|
latexTrigger: ["\\scriptstyle"],
|
|
9742
|
-
parse: (
|
|
9743
|
-
// @todo: parse as ['Annotated'...]
|
|
9802
|
+
parse: parseMathStyleSwitch("script")
|
|
9744
9803
|
},
|
|
9745
9804
|
{
|
|
9746
9805
|
latexTrigger: ["\\scriptscriptstyle"],
|
|
9747
|
-
parse: (
|
|
9748
|
-
// @todo: parse as ['Annotated'...]
|
|
9806
|
+
parse: parseMathStyleSwitch("scriptscript")
|
|
9749
9807
|
},
|
|
9750
9808
|
{
|
|
9751
9809
|
latexTrigger: ["\\color"],
|
|
9752
9810
|
parse: (parser) => {
|
|
9753
|
-
parser.
|
|
9811
|
+
const color = parser.parseStringGroup();
|
|
9812
|
+
if (color !== null) {
|
|
9813
|
+
const body = parser.parseExpression();
|
|
9814
|
+
if (body !== null && !isEmptySequence(body))
|
|
9815
|
+
return ["Annotated", body, { dict: { color } }];
|
|
9816
|
+
}
|
|
9754
9817
|
return "Nothing";
|
|
9755
9818
|
}
|
|
9756
9819
|
},
|
|
9757
9820
|
{
|
|
9758
9821
|
latexTrigger: ["\\tiny"],
|
|
9759
|
-
parse: ()
|
|
9760
|
-
// @todo: parse as ['Annotated'...]
|
|
9822
|
+
parse: parseSizeSwitch(1)
|
|
9761
9823
|
},
|
|
9762
9824
|
{
|
|
9763
9825
|
latexTrigger: ["\\scriptsize"],
|
|
9764
|
-
parse: ()
|
|
9765
|
-
// @todo: parse as ['Annotated'...]
|
|
9826
|
+
parse: parseSizeSwitch(2)
|
|
9766
9827
|
},
|
|
9767
9828
|
{
|
|
9768
9829
|
latexTrigger: ["\\footnotesize"],
|
|
9769
|
-
parse: ()
|
|
9770
|
-
// @todo: parse as ['Annotated'...]
|
|
9830
|
+
parse: parseSizeSwitch(3)
|
|
9771
9831
|
},
|
|
9772
9832
|
{
|
|
9773
9833
|
latexTrigger: ["\\small"],
|
|
9774
|
-
parse: ()
|
|
9775
|
-
// @todo: parse as ['Annotated'...]
|
|
9834
|
+
parse: parseSizeSwitch(4)
|
|
9776
9835
|
},
|
|
9777
9836
|
{
|
|
9778
9837
|
latexTrigger: ["\\normalsize"],
|
|
9779
|
-
parse: ()
|
|
9780
|
-
// @todo: parse as ['Annotated'...]
|
|
9838
|
+
parse: parseSizeSwitch(5)
|
|
9781
9839
|
},
|
|
9782
9840
|
{
|
|
9783
9841
|
latexTrigger: ["\\large"],
|
|
9784
|
-
parse: ()
|
|
9785
|
-
// @todo: parse as ['Annotated'...]
|
|
9842
|
+
parse: parseSizeSwitch(6)
|
|
9786
9843
|
},
|
|
9787
9844
|
{
|
|
9788
9845
|
latexTrigger: ["\\Large"],
|
|
9789
|
-
parse: ()
|
|
9790
|
-
// @todo: parse as ['Annotated'...]
|
|
9846
|
+
parse: parseSizeSwitch(7)
|
|
9791
9847
|
},
|
|
9792
9848
|
{
|
|
9793
9849
|
latexTrigger: ["\\LARGE"],
|
|
9794
|
-
parse: ()
|
|
9795
|
-
// @todo: parse as ['Annotated'...]
|
|
9850
|
+
parse: parseSizeSwitch(8)
|
|
9796
9851
|
},
|
|
9797
9852
|
{
|
|
9798
9853
|
latexTrigger: ["\\huge"],
|
|
9799
|
-
parse: ()
|
|
9800
|
-
// @todo: parse as ['Annotated'...]
|
|
9854
|
+
parse: parseSizeSwitch(9)
|
|
9801
9855
|
},
|
|
9802
9856
|
{
|
|
9803
9857
|
latexTrigger: ["\\Huge"],
|
|
9804
|
-
parse: ()
|
|
9805
|
-
// @todo: parse as ['Annotated'...]
|
|
9858
|
+
parse: parseSizeSwitch(10)
|
|
9806
9859
|
},
|
|
9807
9860
|
{
|
|
9808
9861
|
name: "Annotated",
|
|
@@ -9814,6 +9867,10 @@ var LatexSyntax = (() => {
|
|
|
9814
9867
|
result = joinLatex(["{\\displaystyle", result, "}"]);
|
|
9815
9868
|
else if (dict.dict.mathStyle === "compact")
|
|
9816
9869
|
result = joinLatex(["{\\textstyle", result, "}"]);
|
|
9870
|
+
else if (dict.dict.mathStyle === "script")
|
|
9871
|
+
result = joinLatex(["{\\scriptstyle", result, "}"]);
|
|
9872
|
+
else if (dict.dict.mathStyle === "scriptscript")
|
|
9873
|
+
result = joinLatex(["{\\scriptscriptstyle", result, "}"]);
|
|
9817
9874
|
const v = dict.dict.size;
|
|
9818
9875
|
if (v !== null && v >= 1 && v <= 10) {
|
|
9819
9876
|
result = joinLatex([
|
|
@@ -9901,6 +9958,28 @@ var LatexSyntax = (() => {
|
|
|
9901
9958
|
latexTrigger: ["\\enspace"],
|
|
9902
9959
|
parse: () => ["HorizontalSpacing", 9]
|
|
9903
9960
|
},
|
|
9961
|
+
{
|
|
9962
|
+
latexTrigger: ["\\hspace"],
|
|
9963
|
+
parse: (parser) => {
|
|
9964
|
+
if (parser.peek === "*") parser.nextToken();
|
|
9965
|
+
parser.parseStringGroup();
|
|
9966
|
+
return ["HorizontalSpacing", 0];
|
|
9967
|
+
}
|
|
9968
|
+
},
|
|
9969
|
+
{
|
|
9970
|
+
latexTrigger: ["\\hskip"],
|
|
9971
|
+
parse: (parser) => {
|
|
9972
|
+
skipTexDimension(parser);
|
|
9973
|
+
return ["HorizontalSpacing", 0];
|
|
9974
|
+
}
|
|
9975
|
+
},
|
|
9976
|
+
{
|
|
9977
|
+
latexTrigger: ["\\kern"],
|
|
9978
|
+
parse: (parser) => {
|
|
9979
|
+
skipTexDimension(parser);
|
|
9980
|
+
return ["HorizontalSpacing", 0];
|
|
9981
|
+
}
|
|
9982
|
+
},
|
|
9904
9983
|
{
|
|
9905
9984
|
latexTrigger: ["\\phantom"],
|
|
9906
9985
|
parse: (parser) => {
|
|
@@ -9951,7 +10030,17 @@ var LatexSyntax = (() => {
|
|
|
9951
10030
|
// `["HorizontalSpacing", expr, 'op'|'bin'|rel]` -> indicate a spacing around and expression, i.e. `\mathbin{x}`, etc...
|
|
9952
10031
|
serialize: (serializer, expr) => {
|
|
9953
10032
|
if (operand(expr, 2) !== null) {
|
|
9954
|
-
|
|
10033
|
+
const cls = stringValue(operand(expr, 2));
|
|
10034
|
+
const inner = serializer.serialize(operand(expr, 1));
|
|
10035
|
+
if (cls === "bin") return `\\mathbin{${inner}}`;
|
|
10036
|
+
if (cls === "op") return `\\mathop{${inner}}`;
|
|
10037
|
+
if (cls === "rel") return `\\mathrel{${inner}}`;
|
|
10038
|
+
if (cls === "ord") return `\\mathord{${inner}}`;
|
|
10039
|
+
if (cls === "open") return `\\mathopen{${inner}}`;
|
|
10040
|
+
if (cls === "close") return `\\mathclose{${inner}}`;
|
|
10041
|
+
if (cls === "punct") return `\\mathpunct{${inner}}`;
|
|
10042
|
+
if (cls === "inner") return `\\mathinner{${inner}}`;
|
|
10043
|
+
return inner;
|
|
9955
10044
|
}
|
|
9956
10045
|
const v = machineValue(operand(expr, 1));
|
|
9957
10046
|
if (v === null) return "";
|
|
@@ -9966,7 +10055,7 @@ var LatexSyntax = (() => {
|
|
|
9966
10055
|
36: "\\qquad"
|
|
9967
10056
|
}[v] ?? "";
|
|
9968
10057
|
}
|
|
9969
|
-
}
|
|
10058
|
+
},
|
|
9970
10059
|
// if (
|
|
9971
10060
|
// [
|
|
9972
10061
|
// '\\!',
|
|
@@ -9990,6 +10079,121 @@ var LatexSyntax = (() => {
|
|
|
9990
10079
|
// name: '',
|
|
9991
10080
|
// trigger: '\\check',
|
|
9992
10081
|
// },
|
|
10082
|
+
// ---------------------------------------------------------------------------
|
|
10083
|
+
// Function-style aliases for collection / random operators that some
|
|
10084
|
+
// notations write in lowercase (e.g. `\operatorname{shuffle}(L)`).
|
|
10085
|
+
// The capitalized library entries already exist; these are pure parse
|
|
10086
|
+
// aliases so the lowercase names don't land in `unsupported-operator`.
|
|
10087
|
+
// ---------------------------------------------------------------------------
|
|
10088
|
+
{ latexTrigger: "\\operatorname{random}", parse: "Random" },
|
|
10089
|
+
{ latexTrigger: "\\operatorname{shuffle}", parse: "Shuffle" },
|
|
10090
|
+
{ latexTrigger: "\\operatorname{repeat}", parse: "Repeat" },
|
|
10091
|
+
{ latexTrigger: "\\operatorname{join}", parse: "Join" },
|
|
10092
|
+
// ---------------------------------------------------------------------------
|
|
10093
|
+
// Geometric primitive heads. Registered as known typed heads so consumers
|
|
10094
|
+
// can branch on the operator name; CE itself doesn't render them. The
|
|
10095
|
+
// library entries (with no evaluator) live in `library/core.ts`.
|
|
10096
|
+
// ---------------------------------------------------------------------------
|
|
10097
|
+
{
|
|
10098
|
+
name: "Triangle",
|
|
10099
|
+
latexTrigger: ["\\operatorname{triangle}"],
|
|
10100
|
+
kind: "function",
|
|
10101
|
+
serialize: (serializer, expr) => "\\operatorname{triangle}" + serializer.wrapArguments(expr)
|
|
10102
|
+
},
|
|
10103
|
+
// Desmos's geometric `vector(p1, p2)` — a directed segment between two
|
|
10104
|
+
// points. Routed to a dedicated head (not the existing column-vector
|
|
10105
|
+
// `Vector`, which has a narrower `(number+) -> vector` signature).
|
|
10106
|
+
{
|
|
10107
|
+
name: "GeometricVector",
|
|
10108
|
+
latexTrigger: ["\\operatorname{vector}"],
|
|
10109
|
+
kind: "function",
|
|
10110
|
+
serialize: (serializer, expr) => "\\operatorname{vector}" + serializer.wrapArguments(expr)
|
|
10111
|
+
},
|
|
10112
|
+
{
|
|
10113
|
+
name: "Sphere",
|
|
10114
|
+
latexTrigger: ["\\operatorname{sphere}"],
|
|
10115
|
+
kind: "function",
|
|
10116
|
+
serialize: (serializer, expr) => "\\operatorname{sphere}" + serializer.wrapArguments(expr)
|
|
10117
|
+
},
|
|
10118
|
+
{
|
|
10119
|
+
name: "Segment",
|
|
10120
|
+
latexTrigger: ["\\operatorname{segment}"],
|
|
10121
|
+
kind: "function",
|
|
10122
|
+
serialize: (serializer, expr) => "\\operatorname{segment}" + serializer.wrapArguments(expr)
|
|
10123
|
+
}
|
|
10124
|
+
];
|
|
10125
|
+
|
|
10126
|
+
// src/compute-engine/latex-syntax/dictionary/definitions-colors.ts
|
|
10127
|
+
var DEFINITIONS_COLORS = [
|
|
10128
|
+
// Color constructors (one per colorspace, preserves space on evaluation)
|
|
10129
|
+
{
|
|
10130
|
+
name: "Rgb",
|
|
10131
|
+
latexTrigger: ["\\operatorname{rgb}"],
|
|
10132
|
+
kind: "function",
|
|
10133
|
+
serialize: (serializer, expr) => "\\operatorname{rgb}" + serializer.wrapArguments(expr)
|
|
10134
|
+
},
|
|
10135
|
+
{
|
|
10136
|
+
name: "Hsv",
|
|
10137
|
+
latexTrigger: ["\\operatorname{hsv}"],
|
|
10138
|
+
kind: "function",
|
|
10139
|
+
serialize: (serializer, expr) => "\\operatorname{hsv}" + serializer.wrapArguments(expr)
|
|
10140
|
+
},
|
|
10141
|
+
{
|
|
10142
|
+
name: "Hsl",
|
|
10143
|
+
latexTrigger: ["\\operatorname{hsl}"],
|
|
10144
|
+
kind: "function",
|
|
10145
|
+
serialize: (serializer, expr) => "\\operatorname{hsl}" + serializer.wrapArguments(expr)
|
|
10146
|
+
},
|
|
10147
|
+
{
|
|
10148
|
+
name: "Oklab",
|
|
10149
|
+
latexTrigger: ["\\operatorname{oklab}"],
|
|
10150
|
+
kind: "function",
|
|
10151
|
+
serialize: (serializer, expr) => "\\operatorname{oklab}" + serializer.wrapArguments(expr)
|
|
10152
|
+
},
|
|
10153
|
+
{
|
|
10154
|
+
name: "Oklch",
|
|
10155
|
+
latexTrigger: ["\\operatorname{oklch}"],
|
|
10156
|
+
kind: "function",
|
|
10157
|
+
serialize: (serializer, expr) => "\\operatorname{oklch}" + serializer.wrapArguments(expr)
|
|
10158
|
+
},
|
|
10159
|
+
// Conversion functions (color → color in the named space)
|
|
10160
|
+
{
|
|
10161
|
+
name: "AsRgb",
|
|
10162
|
+
latexTrigger: ["\\operatorname{asRgb}"],
|
|
10163
|
+
kind: "function",
|
|
10164
|
+
serialize: (serializer, expr) => "\\operatorname{asRgb}" + serializer.wrapArguments(expr)
|
|
10165
|
+
},
|
|
10166
|
+
{
|
|
10167
|
+
name: "AsHsv",
|
|
10168
|
+
latexTrigger: ["\\operatorname{asHsv}"],
|
|
10169
|
+
kind: "function",
|
|
10170
|
+
serialize: (serializer, expr) => "\\operatorname{asHsv}" + serializer.wrapArguments(expr)
|
|
10171
|
+
},
|
|
10172
|
+
{
|
|
10173
|
+
name: "AsHsl",
|
|
10174
|
+
latexTrigger: ["\\operatorname{asHsl}"],
|
|
10175
|
+
kind: "function",
|
|
10176
|
+
serialize: (serializer, expr) => "\\operatorname{asHsl}" + serializer.wrapArguments(expr)
|
|
10177
|
+
},
|
|
10178
|
+
{
|
|
10179
|
+
name: "AsOklab",
|
|
10180
|
+
latexTrigger: ["\\operatorname{asOklab}"],
|
|
10181
|
+
kind: "function",
|
|
10182
|
+
serialize: (serializer, expr) => "\\operatorname{asOklab}" + serializer.wrapArguments(expr)
|
|
10183
|
+
},
|
|
10184
|
+
{
|
|
10185
|
+
name: "AsOklch",
|
|
10186
|
+
latexTrigger: ["\\operatorname{asOklch}"],
|
|
10187
|
+
kind: "function",
|
|
10188
|
+
serialize: (serializer, expr) => "\\operatorname{asOklch}" + serializer.wrapArguments(expr)
|
|
10189
|
+
},
|
|
10190
|
+
// Perceptual difference (returns a scalar in [0, ~1])
|
|
10191
|
+
{
|
|
10192
|
+
name: "ColorDelta",
|
|
10193
|
+
latexTrigger: ["\\operatorname{colorDelta}"],
|
|
10194
|
+
kind: "function",
|
|
10195
|
+
serialize: (serializer, expr) => "\\operatorname{colorDelta}" + serializer.wrapArguments(expr)
|
|
10196
|
+
}
|
|
9993
10197
|
];
|
|
9994
10198
|
|
|
9995
10199
|
// src/compute-engine/latex-syntax/dictionary/default-dictionary.ts
|
|
@@ -10020,7 +10224,8 @@ var LatexSyntax = (() => {
|
|
|
10020
10224
|
...DEFINITIONS_STATISTICS,
|
|
10021
10225
|
...DEFINITIONS_UNITS,
|
|
10022
10226
|
...DEFINITIONS_OTHERS,
|
|
10023
|
-
...DEFINITIONS_PHYSICS
|
|
10227
|
+
...DEFINITIONS_PHYSICS,
|
|
10228
|
+
...DEFINITIONS_COLORS
|
|
10024
10229
|
];
|
|
10025
10230
|
|
|
10026
10231
|
// src/math-json/symbols.ts
|
|
@@ -10185,6 +10390,17 @@ var LatexSyntax = (() => {
|
|
|
10185
10390
|
} else if (Array.isArray(openTrigger) && openTrigger.length > 0) {
|
|
10186
10391
|
openTokens.push(openTrigger[0]);
|
|
10187
10392
|
}
|
|
10393
|
+
const closeTrigger = indexedEntry.closeTrigger;
|
|
10394
|
+
const closeTokens = /* @__PURE__ */ new Set();
|
|
10395
|
+
if (typeof closeTrigger === "string") {
|
|
10396
|
+
const variants = DELIMITER_SHORTHAND[closeTrigger];
|
|
10397
|
+
if (variants) for (const v of variants) closeTokens.add(v);
|
|
10398
|
+
else closeTokens.add(closeTrigger);
|
|
10399
|
+
if (closeTrigger === "||") closeTokens.add("|");
|
|
10400
|
+
} else if (Array.isArray(closeTrigger) && closeTrigger.length > 0) {
|
|
10401
|
+
closeTokens.add(closeTrigger[0]);
|
|
10402
|
+
}
|
|
10403
|
+
indexedEntry.closeTokens = closeTokens;
|
|
10188
10404
|
for (const token of openTokens) {
|
|
10189
10405
|
const existing = result.matchfixByOpen.get(token);
|
|
10190
10406
|
if (existing) {
|
|
@@ -10342,25 +10558,43 @@ var LatexSyntax = (() => {
|
|
|
10342
10558
|
result.arguments = entry.arguments;
|
|
10343
10559
|
return result;
|
|
10344
10560
|
}
|
|
10561
|
+
function serializeTabularBody(serializer, body) {
|
|
10562
|
+
if (!body) return "";
|
|
10563
|
+
if (operator(body) !== "List") return serializer.serialize(body);
|
|
10564
|
+
const rows = operands(body);
|
|
10565
|
+
if (rows.length === 0) return "";
|
|
10566
|
+
if (!rows.every((row) => operator(row) === "List"))
|
|
10567
|
+
return serializer.serialize(body);
|
|
10568
|
+
return rows.map(
|
|
10569
|
+
(row) => operands(row).map((cell) => serializer.serialize(cell)).join(" & ")
|
|
10570
|
+
).join(" \\\\\n");
|
|
10571
|
+
}
|
|
10345
10572
|
function makeSerializeHandler(entry, latexTrigger, idTrigger) {
|
|
10346
10573
|
if (typeof entry.serialize === "function") return entry.serialize;
|
|
10347
10574
|
const kind = entry["kind"] ?? "expression";
|
|
10348
10575
|
if (kind === "environment") {
|
|
10349
10576
|
const envName = entry["symbolTrigger"] ?? entry.name ?? "unknown";
|
|
10350
|
-
return (serializer, expr) =>
|
|
10351
|
-
|
|
10352
|
-
|
|
10353
|
-
|
|
10354
|
-
|
|
10577
|
+
return (serializer, expr) => {
|
|
10578
|
+
const body = operand(expr, 1);
|
|
10579
|
+
return joinLatex([
|
|
10580
|
+
`\\begin{${envName}}`,
|
|
10581
|
+
serializeTabularBody(serializer, body),
|
|
10582
|
+
`\\end{${envName}}`
|
|
10583
|
+
]);
|
|
10584
|
+
};
|
|
10355
10585
|
}
|
|
10356
10586
|
if (isMatchfixEntry(entry)) {
|
|
10357
10587
|
const openDelim = typeof entry.openTrigger === "string" ? DEFAULT_DELIMITER[entry.openTrigger] : tokensToString(entry.openTrigger);
|
|
10358
10588
|
const closeDelim = typeof entry.closeTrigger === "string" ? DEFAULT_DELIMITER[entry.closeTrigger] : tokensToString(entry.closeTrigger);
|
|
10359
|
-
return (serializer, expr) =>
|
|
10360
|
-
|
|
10361
|
-
serializer.serialize(operand(expr, 1))
|
|
10362
|
-
|
|
10363
|
-
|
|
10589
|
+
return (serializer, expr) => {
|
|
10590
|
+
const style = serializer.groupStyle(expr, serializer.level + 1);
|
|
10591
|
+
const inner = serializer.serialize(operand(expr, 1));
|
|
10592
|
+
if (style === "scaled")
|
|
10593
|
+
return joinLatex([`\\left${openDelim}`, inner, `\\right${closeDelim}`]);
|
|
10594
|
+
if (style === "big")
|
|
10595
|
+
return joinLatex([`\\Bigl${openDelim}`, inner, `\\Bigr${closeDelim}`]);
|
|
10596
|
+
return joinLatex([openDelim, inner, closeDelim]);
|
|
10597
|
+
};
|
|
10364
10598
|
}
|
|
10365
10599
|
let latex = entry.serialize;
|
|
10366
10600
|
if (latex === void 0 && latexTrigger) latex = tokensToString(latexTrigger);
|
|
@@ -12623,6 +12857,16 @@ var LatexSyntax = (() => {
|
|
|
12623
12857
|
}
|
|
12624
12858
|
|
|
12625
12859
|
// src/compute-engine/latex-syntax/parse.ts
|
|
12860
|
+
var _symbolToUnicode = null;
|
|
12861
|
+
function getSymbolToUnicode() {
|
|
12862
|
+
if (!_symbolToUnicode) {
|
|
12863
|
+
_symbolToUnicode = /* @__PURE__ */ new Map();
|
|
12864
|
+
for (const [, latex, codepoint] of SYMBOLS) {
|
|
12865
|
+
_symbolToUnicode.set(latex, String.fromCodePoint(codepoint));
|
|
12866
|
+
}
|
|
12867
|
+
}
|
|
12868
|
+
return _symbolToUnicode;
|
|
12869
|
+
}
|
|
12626
12870
|
var DELIMITER_SHORTHAND2 = {
|
|
12627
12871
|
"(": ["\\lparen", "("],
|
|
12628
12872
|
")": ["\\rparen", ")"],
|
|
@@ -13070,6 +13314,35 @@ var LatexSyntax = (() => {
|
|
|
13070
13314
|
this.nextToken();
|
|
13071
13315
|
this.skipVisualSpace();
|
|
13072
13316
|
}
|
|
13317
|
+
if (this.match("\\hspace")) {
|
|
13318
|
+
this.match("*");
|
|
13319
|
+
this.parseStringGroup();
|
|
13320
|
+
this.skipVisualSpace();
|
|
13321
|
+
}
|
|
13322
|
+
if (this.match("\\hskip") || this.match("\\kern")) {
|
|
13323
|
+
this.skipSpace();
|
|
13324
|
+
if (!this.match("-")) this.match("+");
|
|
13325
|
+
while (/^[\d.]$/.test(this.peek)) this.nextToken();
|
|
13326
|
+
for (const unit of [
|
|
13327
|
+
"pt",
|
|
13328
|
+
"em",
|
|
13329
|
+
"mu",
|
|
13330
|
+
"ex",
|
|
13331
|
+
"mm",
|
|
13332
|
+
"cm",
|
|
13333
|
+
"in",
|
|
13334
|
+
"bp",
|
|
13335
|
+
"sp",
|
|
13336
|
+
"dd",
|
|
13337
|
+
"cc",
|
|
13338
|
+
"pc",
|
|
13339
|
+
"nc",
|
|
13340
|
+
"nd"
|
|
13341
|
+
]) {
|
|
13342
|
+
if (this.matchAll([...unit])) break;
|
|
13343
|
+
}
|
|
13344
|
+
this.skipVisualSpace();
|
|
13345
|
+
}
|
|
13073
13346
|
this.skipSpace();
|
|
13074
13347
|
}
|
|
13075
13348
|
match(token) {
|
|
@@ -13407,7 +13680,8 @@ var LatexSyntax = (() => {
|
|
|
13407
13680
|
} else if (token === "<space>") {
|
|
13408
13681
|
result += " ";
|
|
13409
13682
|
} else if (token[0] === "\\") {
|
|
13410
|
-
|
|
13683
|
+
const unicode = getSymbolToUnicode().get(token);
|
|
13684
|
+
result += unicode ?? token;
|
|
13411
13685
|
} else {
|
|
13412
13686
|
result += token;
|
|
13413
13687
|
}
|
|
@@ -13561,6 +13835,19 @@ var LatexSyntax = (() => {
|
|
|
13561
13835
|
}
|
|
13562
13836
|
for (const def of defs) {
|
|
13563
13837
|
this.index = start;
|
|
13838
|
+
if (def.closeTokens.size > 0) {
|
|
13839
|
+
let found = false;
|
|
13840
|
+
const tokens = this._tokens;
|
|
13841
|
+
for (let i = start; i < tokens.length; i++) {
|
|
13842
|
+
if (def.closeTokens.has(tokens[i])) {
|
|
13843
|
+
found = true;
|
|
13844
|
+
break;
|
|
13845
|
+
}
|
|
13846
|
+
}
|
|
13847
|
+
if (!found) continue;
|
|
13848
|
+
}
|
|
13849
|
+
if (typeof def.openTrigger === "string" && def.openTrigger === "." && !OPEN_DELIMITER_PREFIX[currentToken])
|
|
13850
|
+
continue;
|
|
13564
13851
|
const matched = this.matchDelimiter(def.openTrigger, def.closeTrigger);
|
|
13565
13852
|
if (!matched) continue;
|
|
13566
13853
|
const bodyStart = this.index;
|
|
@@ -14767,7 +15054,7 @@ var LatexSyntax = (() => {
|
|
|
14767
15054
|
sansserif: (s) => `\\mathsf{${s}}`,
|
|
14768
15055
|
monospace: (s) => `\\mathtt{${s}}`
|
|
14769
15056
|
};
|
|
14770
|
-
var
|
|
15057
|
+
var Serializer5 = class {
|
|
14771
15058
|
options;
|
|
14772
15059
|
dictionary;
|
|
14773
15060
|
level = -1;
|
|
@@ -14782,11 +15069,18 @@ var LatexSyntax = (() => {
|
|
|
14782
15069
|
/**
|
|
14783
15070
|
* Serialize the expression, and if the expression is an operator
|
|
14784
15071
|
* of precedence less than or equal to prec, wrap it in some parens.
|
|
14785
|
-
*
|
|
15072
|
+
*
|
|
15073
|
+
* Skip wrapping for matchfix operators (Abs, Floor, Ceil, Norm, etc.)
|
|
15074
|
+
* and Delimiter since they already have visible delimiters.
|
|
14786
15075
|
*/
|
|
14787
15076
|
wrap(expr, prec) {
|
|
14788
15077
|
if (expr === null || expr === void 0) return "";
|
|
14789
15078
|
if (prec === void 0) {
|
|
15079
|
+
const name2 = operator(expr);
|
|
15080
|
+
if (name2) {
|
|
15081
|
+
const def = this.dictionary.ids.get(name2);
|
|
15082
|
+
if (def?.kind === "matchfix") return this.serialize(expr);
|
|
15083
|
+
}
|
|
14790
15084
|
return this.wrapString(
|
|
14791
15085
|
this.serialize(expr),
|
|
14792
15086
|
this.options.groupStyle(expr, this.level + 1)
|
|
@@ -15080,7 +15374,7 @@ var LatexSyntax = (() => {
|
|
|
15080
15374
|
return body;
|
|
15081
15375
|
}
|
|
15082
15376
|
function serializeLatex(expr, dict, options) {
|
|
15083
|
-
const serializer = new
|
|
15377
|
+
const serializer = new Serializer5(dict, options);
|
|
15084
15378
|
return serializer.serialize(expr);
|
|
15085
15379
|
}
|
|
15086
15380
|
|
|
@@ -15207,7 +15501,7 @@ var LatexSyntax = (() => {
|
|
|
15207
15501
|
}
|
|
15208
15502
|
|
|
15209
15503
|
// src/latex-syntax.ts
|
|
15210
|
-
var version = "0.
|
|
15504
|
+
var version = "0.56.0";
|
|
15211
15505
|
return __toCommonJS(latex_syntax_exports);
|
|
15212
15506
|
})();
|
|
15213
15507
|
Object.assign(exports, LatexSyntax); Object.defineProperty(exports, '__esModule', { value: true });}));
|