Summary of Improvements
Please welcome MATH typesetting!
While this release follows close on the heels of previous releases it represents over 2 years of work from community contributors. Rui Xia started work on a native math feature in April of 2019. While this initial phase was never completed, it did get as far as a working prototype. In November of 2020, Oliver Nicole picked up on the work and transformed the prototype into the shape as found in this release. Additional thanks to Mateusz Czapliński for input throughout the process.
On a conceptual level the math support is based on MathML and relies on OpenType math fonts. The input notation may be MathML (either directly using the native XML syntax or using an 1-to-1 equivalent SILE syntax) or an alternative math shorthand similar to the math notation used by TeX. See section 5.29.5 in the v0.12.0 manual for detailed documentation on the new math package. Examples are given for various formulas and syntax options. A math example has also been added to the packages example gallery on this website.
Additionally Didier Willis contributed several new features and fixes including much more control over Table of Contents, styling options for PDF links, correct French punctuation treatment, and more.
Thanks to the contributions of Doron Behar, as of this release SILE is usable as a Nix Flake (in addition to the usual Nix package).
This is an easy way to test run the latest Git HEAD version at any time from almost any OS.
One you have flake support enabled, just run
nix run github:sile-typesetter/sile -- <sile orguments>.
This website uses this to regenerate some of the examples in the gallery.
Even though the math package is a major new feature, ultimately the major version bump was caused by a breaking change elsewhere. Previous to this release, the font used for footnotes was the SILE default unless specifically set. Setting changes were relative to the SILE default rather than the document default. This behavior was workable, but usually came as a surprise to most users. With this release, footnote and folio frame font settings default to being relative to the current document font. The font family, size, leading, and all other aspects of footnotes and folios are still configurable with the same tools as before. But this is a breaking change because those settings are now relative to a different base which might cause many documents to need updating.
⚠ BREAKING CHANGES
- packages: Previous to this release footnote and folio frames took their font settings from a new typesetter with default settings. With this release the settings are now derived from the typesetter in the default frame, hence inheriting font family, size, leading, and other settings. Values can still be set using the same functions, but relative values such as font sizes are based on a different base.
- core: Add MATH variants table parser (b6c554e)
- core: Add OpenType MATH table parser (835da21)
- math: Add ‘debug’ option to math command (58cc9dc)
- math: Add “big operator” support (5b9a150)
- math: Add fixes to support less complete fonts (1c22af3)
- math: Add italic correction to superscript; correct subscript size (d81fdee)
- math: Add math.font.filename setting (522d70b)
- math: Add math.font.size setting (5077d1c)
- math: Add operator defaults (14bdf1a)
- math: Add parameter to draw debug boxes around math components (2458d18)
- math: Add parameters and support mathvariant param for mi tag (869dca8)
- math: Add plain text support (3a09e9d)
- math: Add subscript and superscript; add math constants (0489c04)
- math: Add support for “symbol macros”, expanding to strings (27658f5)
- math: Add support for fractions (6f4fc24)
- math: Add tags for some mathematical symbols (b9fd771)
- math: Add tex-like math parser (edceaf7)
- math: Allow vertical stacking of top-level ‘mrow’s (56b553c)
- math: Center display math neatly (8951378)
- math: Implement and use munder and mover (61eac7a)
- math: Implement generic bbox shaper (9c86aff)
- math: Output error if rending with non-math font (c79617b)
- math: Replace leading
−in numbers (f8d490c)
- math: Support double-struck identifiers (29674bf)
- math: Support for simple macros (5b4ecf7)
- math: Support italic (c9b2884)
- math: Support more integral-like operators (90a6c44)
- math: Support of UTF-8 in texmath, support of mo, mi and mn in-grammar (959d1cc)
- math: Turn "-" (hyphen) into "−" (minus) in math (fbed523)
- packages: Add border style and color to hyperlinks (bb880be)
- packages: Add function to remove last added fallback font (acf987b)
- packages: Add linking support to toc entries (e589cb9)
- packages: Add toc depth option and hooks for showing section numbers (c48fcde)
- packages: Allow URLs to have many breakpoints (#1233) (b145605)
- packages: Warn if toc contents have changed (5b6eed8)
- tooling: Enable use as a Nix flake (8b503bb)
classes: Don't increment counters on unnumbered book sections (6cfca4d)
core: Correct --help output to reflect required values (da487ec)
languages: Add test 704 for French punctuations, fix expected 621 and 702 results (8e9b056)
languages: Correct Armenian support to use ISO 639 code ‘hy’ (ffafbe6)
languages: Correct punctuation rules for French (95c2398)
languages: Don't initialize Japanese unless actually called for (3aba931)
languages: Shortcut ICU soft breaks in French (ed8734c)
math: Fix underover error with sub wider than base but no sup (bc87393)
packages: Don't replace shaper unless actually initializing color-fonts package (269ca59)
packages: Fix deprecation warning command in package docs (a69d774)
packages: Reset footnote and folio settings top level state (3795a4e)