Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Fails to turn into correct MathJSON

See original GitHub issue

I went through some mathematics notes and found the following interesting equations. I tested them on the compute engine demo page https://cortexjs.io/compute-engine/demo/

(Information for myself: Page 1 of ANA_UE_SS_21_Mo_1.pdf , meaning there are a few more testcases)

• \begin{equation*} N(\varepsilon)\coloneq\lceil\frac{4}{\varepsilon^2}\rceil \end{equation*} turns into "" syntax-error

• \begin{equation*} x_{1,2}=1,2 \end{equation*} turns into ["Equal", ["Subscript", "x", {num: "12"}], {num: "12"}]. Notice how the comma is missing

• \begin{equation*} \{1,2\} \end{equation*} turns into ["Multiply", "\\{", {num: "12"}, "\\}"]. I assume this happens because sets haven’t been implemented yet

• \begin{equation*} [1,2] \end{equation*} turns into "" syntax-error. I assume this happens because vectors/matrices and the like haven’t been implemented yet.

• \begin{equation*} \frac{2}{\sqrt{n}}\Leftrightarrow n>\frac{5}{n^2} \end{equation*} turns into the following, notice how \\Leftrightarrow doesn’t have a special meaning and its precedence is off
[
"Greater",
[
"Multiply",
["Divide",
{num: "2"}, ["Sqrt", "n"]],
"\\Leftrightarrow",
"n"
],
["Divide",
{num: "5"}, ["Power", "n", 2]]
]

• \begin{equation*} |a_n|\le\frac{2}{\sqrt{n}}\Rightarrow a_n\to0=0 \end{equation*} turns into the following, notice how \\Rightarrow doesn’t have a special meaning (implies) and its precedence is off.
[
"LessEqual",
["Abs", ["Subscript", "a", "n"]],
[
"Equal",
[
"To",
[
"Multiply",
["Divide",
{num: "2"}, ["Sqrt", "n"]],
"\\Rightarrow",
["Subscript", "a", "n"]
],

{num: "0"}
],

{num: "0"}
]
]
• \begin{equation*} 3\equiv5\mod7 \end{equation*} or also \begin{equation*} 3\equiv 5 (\mod 7) \end{equation*} This is a congruence relation. I assume this is simply something that hasn’t been implemented yet. Hopefully it’s a good test case for round-tripping

• \begin{equation*} a={\displaystyle \lim_{n\to\infin}a_n} \end{equation*} turns into

["Equal", "a", "Missing"]
syntax-error
• \begin{equation*} \forall x\in\C^2:|x|<0 \end{equation*} turns into the following
[
"Element",
["Multiply", "\\forall", "x"],
["Power", "ComplexNumber", 2]
]
syntax-error
• \begin{equation*} \forall n\colon a_n\le c_n\le b_n\implies\lim_{n\to\infin}c_n=a \end{equation*} turns into the following, note how a few operators aren’t parsed and how the precedences for other operators are slightly off. I think the correct order of operations in this case would start at the :, then the => and then the normal rules. Another interesting tidbit here are the two <= signs. While a comparison would usually return a boolean value (true/false), here the comparisons are more like a range. The expression is a part of the squeeze theorem.
[
"LessEqual",
[
"Multiply",
"\\forall",
"n",
"\\colon",
["Subscript", "a", "n"]
],
[
"LessEqual",
["Subscript", "c", "n"],
[
"Equal",
[
"Multiply",
["Subscript", "b", "n"],
"\\implies",
["Subscript", "\\lim", ["To", "n", "\\infin"]],
["Subscript", "c", "n"]
],
"a"
]
]
]

Issue Analytics

• State:
• Created 2 years ago

1reaction
arnogcommented, Jul 1, 2021

Yes, it’s considered a punctuation character and so has a small padding on its right.

Note also that you can configure which character (or rather which LaTeX command sequence) is used with the groupSeparator option.

Maybe I should reconsider the default value for groupSeparator… 😃

0reactions
stefnotchcommented, Aug 10, 2021

I found another case where the compute-engine doesn’t quite work: Logarithms.

For example \begin{equation*} \log_3(7) \end{equation*} gets parsed as

[
"Multiply",
["Subscript", "\\log", 3],
["Parentheses",
{num: "7"}]
]

@phcreery

Top Results From Across the Web

MathJSON format - CortexJS
MathJSON is a lightweight data interchange format for mathematical notation.
mathlive/CHANGELOG.md at master - GitHub
MathJSON has an extensive API that supports parsing and serializing of custom LaTeX expressions. You can use it to define your own LaTeX...
Alan Turing - Wikipedia
Alan Mathison Turing OBE FRS was an English mathematician, computer scientist, logician, cryptanalyst, philosopher, and theoretical biologist.
Cameron Mathison Turned His Battle with Cancer ... - YouTube
Actor Cameron Mathison has starred in more than a dozen Christmas movies and his reign continues with the latest film, “Kind Hearted ...
Alan Turing (1912 - 1954) - Biography
His father, Julius Mathison Turing, was a British member of the Indian ... for Turing who later was to become a fine athlete...

Troubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free