Version v0.12.0 of SILE has been released and is available for download!
See the included CHANGELOG.md or review the commit history for more explicit details.
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.
Features
- 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
-
with −
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)
Bug Fixes
-
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)
-
shaper: Fix memory leak in Harfbuzz library (#1243) (035dcc8)
Version v0.11.1 of SILE has been released and is available for download!
See the included CHANGELOG.md or review the commit history for more explicit details.
Summary of Improvements
Today’s small patch release is mostly to help out downstream packagers with some small issues that cropped up.
First it’s a stab in the dark hoping we made things easier to get Homebrew packaging working on ARM based macOS.
Secondly we added a build time check for git
, which is required in order to use SILE’s internal package manager.
This dependency may change in the future, but since we use it now it’s helpful that system compatibility is checked at build time.
Lastly we fixed up some internal usage of an API we deprecated 6 releases ago and documented as going away in v0.11.0, but forgot to stop using ourselves.
Notably the French language support module was affected.
Bug Fixes
-
build: Avoid implied line continuation in makefile (f2af48f)
-
build: Require Git even building tarballs, used by package manager (aba8662)
-
languages: Update deprecated syntax in language options (3fb1719)
Version v0.11.0 of SILE has been released and is available for download!
See the included CHANGELOG.md or review the commit history for more explicit details.
Summary of Improvements
This release brings a significant fix to the vertical grid typesetting system that was causing extra full grid spaces between paragraphs where they didn’t belong. The new behavior is objectively more correct, but it does break previous workarounds. If you previous used a workaround to get the right output in spite of the bug, those documents may not render incorrectly. They can be fixed by removing whatever other workaround was in place or adding a shim that makes the paragraph spacing emulate the old behavior. Some utility functions also received bug fixes. Thanks to contributor Fredrick Brennan, color fonts now behave themselves much better in TTB layouts and the counter display style Alpha works as documented.
Not much has been added on the feature front, just a few conveniences such as traditional units of (small) measurement and handling more attributes in documents converted via the Pandoc writer (as-yet unreleased).
Beginning with this release Docker images will now be available from GitHub Packages (also known as the GitHub Container Registry). This is an alternative to Docker Hub which has recently started limiting the features available to open source projects.
⚠ BREAKING CHANGES
-
packages: Previous to this release any and all leading between
paragraphs (as set with document.parskip) –even a 0 height skip– would
result in the skip of one full empty grid space — as if parskip had been
set to something approximating a full line height. This change corrects
the calculation so if a 0 height skip is added and everything fits, the
next line or paragraph will continue uninterrupted in the next grid
slot. To get the previous layout behavior back, document.parskip must
be explicitly set to be something larger than 0. Even a minimal 1pt
skip will result in paragraph spacing that includes one full grid height
left blank as before:
\set[parameter=document.parskip,value=1lh]
-
utilities: Previous return value for breadcrumbs:contains() was
just an depth index with -1 indicating no match. This made sense when
I wrote it, but coming back to it for a new project I expected a boolean
return value. Returning two values seems like the best option, but given
the function naming it seemed to make sense to return the boolean first,
hence the API breakage.
Features
- actions: Use tagged images for faster CI job spin up (6a00388)
- build: Add configure flag --disable-dependency-checks (5caf413)
- docker: Build, tag, and push images to GHCR (3988339)
- measurements: Add ‘hm’ (himetric) unit (f4b6b62)
- measurements: Add ‘twip’ unit (cf9d5a7)
- packages: Map unnumbered class to legacy opts in Pandoc package (#1167) (2868da2)
Bug Fixes
- core: Avoid crash on warn by using correct function (b403ad9)
- packages: Avoid crash on warn by using correct function (5d05be1)
- packages: Avoid unnecessary skips to next grid space (6424369)
- packages: Correctly handle color fonts on TTB pages (9b35d6a), closes #1171
Code Refactoring
Ubuntu PPA Now Covers Groovy and Hirsute
Our “official” Ubuntu PPA with prebuilt SILE packages –including all the dependencies missing from the base Ubuntu package set– fell a little bit behind last month. In fact it never got updated with the SILE v0.10.14 release. It has been revived and is now up to date with v0.10.15 packages.
As before, both of the last two major LTS releases are supported: Bionic Beaver (18.04) and Focal Fossa (20.04). In addition, as of today the distribution coverage has been expanded to cover both of the currently active short term releases. We were late getting on the ball with Groovy Gorilla (20.10) and it is already nearing the end of its short lifespan but if you are using it, SILE packages are available. To make up for the tardyness we’re early with Hirsute Hippo (21.04) support and SILE packages are available for it now — even ahead of it’s official release in April.
Usage is the same as before for all distros:
sudo add-apt-repository ppa:sile-typesetter/sile
sudo apt-get update
sudo apt-get install sile
The two latest distros Groovy and Hirsute should support Lua 5.4 as well. If you encounter any trouble with any of these packages feel free to open a new issue report on our GitHub tracker.
Lastly if anybody knows their way around Launchpad and Ubuntu package devoplement and is interested in helping automate and maintain the packaging, we’re willing to accept help. Maintaining packaging for distros we don’t use personally is quite a bit of mental overhead.