1# Edits reaching into equation objects
2
3`lab/` holds COM reads of a disposable OneNote 2010 clone editing a copy of
4`corpus/math-edit/native-editor-4` by hand. `before.xml` is the page as it opened and
5`after.xml` as it ended; the rest are reads between steps.
6
7- A mouse selection from inside `√x+1`'s root into `∛x`'s shows both objects selected
8 whole, and Backspace removes both paragraphs (`roots-deleted.xml`).
9- From after `a₁` in `a₁+b₂` into the body of a sum ending its paragraph: the sum is taken
10 whole with the paragraph's end, so Backspace joins `a₁` to the integral below.
11- From a fraction's numerator in `One a/b+c two` into the root of `Three √x+y four`:
12 both objects whole, leaving `One +y four`.
13- Enter between `→` and `∞` in `lim_(n→∞) a_n` makes the limit an equation array
14 (`limit-enter.xml`).
15- A click in "Type equation here." selects the placeholder whole; Enter leaves its
16 paragraph empty above a new one (`placeholder-enter.xml`), and typing `x` replaces it.
17- A drag past a line's end also takes the paragraph's end: "Alpha beta", "Gamma delta"
18 selected from `Alp` to past `delta` delete to `Alpepsilon`.
19
20`candidate/` is the output of `selections_into_equation_objects_take_them_whole` in
21`crates/canvas/tests/links_equations.rs`: the same edits through the editor on the same
22page, one revision each. `cold/` is a fresh OneNote 2010 read of it, whose MathML matches
23the lab's equation for equation. `tools/test_equation_select.py` checks this without a VM.
24Regenerate with `CANVAS_EQUATION_SELECT_EXPORT` set to a new absolute directory while
25running the test, then cold-open it with
26`tools/native_runner.py OUTPUT COLD --expected-pages 1 --collect-notebook --screenshots`.