Repository navigation
Equations: Word (OMML) import, layout and save, plus an equation editor like Word's - #191
Merged
Merged
Conversation
Equations were flattened to plain text on import. Now OMML is read into a math tree (fractions, scripts, radicals, n-ary operators, delimiters, functions, limits, accents, bars, boxes, equation arrays, matrices, phantoms), laid out with the OpenType MATH table (Cambria Math when installed, else STIX Two Math and other open math fonts), drawn to screen and PDF, and written back as the original OMML. Display equations sit on their own centred line. insert.equation parses the linear format into structure. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… numbers Insert › Equation now opens an equation for in-place editing, with the Equation tab: ready-made equations, Unicode/LaTeX input and conversion (professional ↔ linear), Normal Text, eight symbol sets, and the eleven structure galleries (fraction, script, radical, integral, large operator, bracket, function, accent, limit and log, operator, matrix) with tiles rendered by the math engine. Typing builds up like Word (a/b, x^2, √, ∑… then space), Math AutoCorrect turns \alpha, \sqrt… into symbols, Tab moves between empty slots, arrows/Backspace work through structures, and the right-click menu has structure commands (fraction type, radical degree, limit position, matrix rows/columns, remove brackets…). A trailing #(n) numbers a display equation with the number at the right margin; # alone numbers it automatically. DOCX output keeps numbers Word-compatible. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Conflicts resolved: - session.rs: keep main's whole-stack undo snapshot (history + redo) and the PR's equation exit and "Typing" grouping for equation.type. - layout/para.rs: keep main's ParaLayout.shown and picture-on-baseline line metrics; equations keep counting their ascent/descent like text. Display equation lines are neither justified nor space-shrunk. - ui-egui: page_at takes the layout; the Equation tab joins contextual_tabs() next to Table/Picture Format; Picture Format tab kept. - formats: main's flow model builds InlineObject::Equation without the PR's `math` tree (empty = parse linear); doc -> flow uses the linear form. - i18n ja/zh: union. docs/parity.md regenerated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rainian The catalogs that landed on main after storytold#191 was opened lacked the Equation tab and equation command labels. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Clean room: the ready-made equation list used another product's gallery entry names and order. Same formulas (and ids), with our own descriptive labels, grouped by subject (geometry, algebra, calculus, trigonometry, probability). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…, Read Aloud, keytips) Conflicts: both sides' new modules, Session fields (Prefs/read_aloud and the equation state), layout Ctx (BoxBudget and eq_count), ParaLayout (left_out and maths/displays), keys.rs (keytips guard plus equation keys), WordApp fields, i18n rows (union), ROADMAP rows (main's picture row, the equations row). docs/parity.md regenerated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Member
|
Merged — thank you for the contribution, @gledguri! 🎉 Equations with OMML import/save, layout from the OpenType MATH table, and an in-place editor with its own tab is a huge piece of work. While merging main into your branch I:
If you haven't already, come join us on Discord: https://discord.gg/artcraft — we'd love to have you there. |
This was referenced Oct 11, 2026
|
Subscribing — validating releases on Ubuntu 26.04 (posted #1971). Interested in live TeX-math preview on top of the OMML work here; happy to test .tex round-trips and equation edge cases when there's something to try. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #24.
What's in it
Word equations (commit 1). OMML is read into a math tree (fractions, scripts, radicals, n-ary operators, delimiters, functions, limits, accents, bars, boxes, equation arrays, matrices, phantoms), laid out with the OpenType MATH table (Cambria Math when installed, otherwise STIX Two Math or another open math font), drawn on screen and in PDF, and written back as OMML. Display equations sit on their own centred line. Previously equations were flattened to plain text.
An equation editor modelled on Word's (commit 2).
a/b,x^2,√,∑… then space); Math AutoCorrect turns\alpha,\sqrt… into symbols; Tab moves between empty slots; arrows and Backspace work through structures.#(n)numbers a display equation at the right margin;#alone numbers it automatically. DOCX output keeps numbers Word-compatible.Testing
cargo xtask cipasses (fmt, clippy, tests, assets, layers, wasm).🤖 Generated with Claude Code