Releases: Omikhleia/markdown.sile
v3.1.0
This minor release adds a new feature to the Djot input processor.
Features
-
(Djot) Add support for Lua filters altering the Djot AST before processing (#156).
Djot filters are another tool in your arsenal, alongside raw annotations, custom styles, and programmatic symbols, for tailoring the converter to your needs. Thanks to @pekkavaa for the idea, the discussion, and the motivation to add this feature.
Other changes
The user manual has been updated, and an example filter has been added to the GitHub repository (examples/custom-filter.lua)
v3.0.0
This major release drops support for SILE versions older than 0.15.12.
Dropping all support for earlier versions of SILE is a (technical) breaking change, hence the major version bump.
This release also adds a new feature. Welcome indexed entries!
Features
-
Support a Djot extension for marking indexed terms, besides a regular ad-hoc attribute-based markup.
Enabling the indexer package and generating index(es) lies outside the scope of this module.
See the User Guide for details.
Breaking changes
This release now supports SILE 0.15.12 or SILE 0.15.13 only. Earlier versions are no longer supported. The dependency on the silex.sile module has been removed and the (hardly maintained) compatibility shims for SILE 0.14.x are no longer included. Some of the compatibility shims for earlier SILE 0.15.x versions have also been removed.
If your Linux distribution doesn't have SILE 0.15.13 or 0.15.12 yet, please refer to whom it deserves for these versions to become available for your system. SILE 0.15 was released in June 2024, more than one year ago. It includes lots of features and bug fixes used in our packages. Notably, SILE's indexer package received important improvements in 0.15.10 (March 2025).
This module does not depend on silex.sile anymore.
Other dependencies still do, though (on a much lower level and restrained subset of features), and will still install it.
This is part on an ongoing effort to gradually retire the silex.sile module, after its good service for the past years, and to simplify our code base and its dependencies.
Important note
It is strongly suggested that users of this collection and all related components learn to master their tool-chain (whether it's a GitHub CI, custom docker images or other setups), and ensure they know how to install and use supported versions of SILE.
Whenever new SILE versions are released, things may break. Actually, they will break, as it is the nature of software development in such a fast-paced environment and evolving ecosystem.
Keeping up with SILE's own development is not a project goal in itself, unless it brings new typesetting features that are useful for the collection. In other words, while doing its best to keep up, this collection will not necessarily be able to follow each and every SILE release in a timely manner.
v2.4.0
This minor release brings forth a new feature: code block syntax highlighting.
It also improves the support for bibliographic citations, allowing multiple citations in a single reference.
Features
-
Code syntax hightlighting (#4, #144)
The "naive" syntax highlighting for Lua code blocks has been removed and the collection now relies on the highlighter.sile collection to provide syntax highlighting for code blocks, for many programming or markup languages.
-
Multiple bibliography citations (#143, #145)
This improves and fixes the "basic support for bibliographic citations" feature introduced in v2.3.0.
Multiple citations (e.g.[@key1; @key2 page 123]) are now working as expected, relying on the support introduced in SILE 0.15.10.
Migration notes
This release should not introduce breaking changes, but there are some points to consider:
-
SILE 0.15.10 or later is required for multiple citations to work.
-
Some dependencies have been updated and the collection now depends on the highlighter.sile collection.
(Installation with luarocks will automatically install the required versions, so this note is mostly for rare users with custom setups.) -
If you had documents using the "naive" syntax highlighting on Lua code blocks, their appearance will change, as the new syntax hightlighter has its own default color theme.
For resilient documents, new definitions will be added to your style file when recompiling a document. In that case, you can customize the colors by editing the style file.
Other notes
The User Guide has been updated to reflect these changes.
Notwithstanding fixes, this release is expected to be the last one in the 2.x series.
v2.3.2
v2.3.1
v2.3.0
This minor release brings forth a new feature: bibliographic citations. It also fixes a couple of issues.
New feature
-
Basic support for bibliographic citations (#135, #10)
The Djot language does not officially support bibliographic citations yet, but we have modified the parser to allow for a basic form of citations.
We have enabled citations too in the Markdown package, following the same syntax as in Djot.
The supported syntax is a subset of the Pandoc citation syntax:
[@key]in the simplest form[@key, page 123]to specify a "locator" (e.g. page, chapter, etc.)- The comma between the key and the locator is optional (e.g.
[@key page 123]is also valid) - Only one locator per citation is supported.
- The locator must be one of the supported locators in SILE's BibTeX module with CSL support enabled.
- Some abbreviations are supported by SILE for locators, and here we accept an optional period after it (e.g.
[@key, chap. 5]is also valid for full[@key, chapter 5]).
- The comma between the key and the locator is optional (e.g.
- Be aware that multiple citations can be separated by semicolons (e.g.
[@key1; @key2 page 123]), but due to the limitations of the current implementation in SILE, the output will not be as expected
How to load bibliographies and configure citation styles is beyond the scope of this module. If you are using the resilient collection of classes and packages, the most natural way to do this is a "master document" (support
plannednow available in resilient v2.6.0).Also note the CSL (Citation Style Language) support in SILE is a very recent and experimental feature (introduced in SILE 0.15.7), so it may not work as expected in all cases.
Fixes
-
Fix broken embedders detection for rendered code blocks (#128, #127)
-
Always wrap tables in a captioned-table and let the latter handle a caption if present (#134)
The captioned-table environment from resilient.book and the fallback environment for other classes always supported tables without caption. It's thus better to always wrap tables into it, so styling (in resilient's use case) is applied, rather than return a raw table, which would not be styled.
Other notes
The User Guide has been updated to reflect these changes.
Many thanks to @kianmeng for the typo fixes in the documentation and in-code comments (#132).
The new version of the User Guide will be available soon, after resilient.sile gets its own update.
v2.2.0
This minor release brings forth a fix, new features and small improvements.
New features
-
Djot:
-
Support attributes for numbered display math equations (#81, #124)
This feature allows users to specify attributes for numbered display math equations, with SILE 0.15 or later.
Note that a soon-coming release of resilient.sile collection adds styles for the equation numbers, so users can easily customize the appearance of the equation numbers when this collection is used. -
Support programmatic symbols (extensible via Lua) (#121, #123)
This feature refactors the internal handling of Djot symbols, and provides a new API method for 3rd-party classes or packages to register their own symbols in addition to the built-in ones.
-
-
Pandoc AST:
-
Support Pandoc 3.1+ implicit figures (Pandoc types 1.23+) (#73, #125)
This feature improves compatibility with Pandoc 3.1+ (which enables
implicit_figuresby default and generates a specific node in its AST.) -
Support the lunajson parsing library as alternative (#21, #104, #119)
This collection now depends on the lunajson pure-Lua library for parsing the Pandoc AST JSON. It automatically installs it (when installed via LuaRocks), so users no longer have to install a JSON library separately, and can use the pandocast package from this collection out of the box.
It is still possible for users to install the LPEG-based luajson library, in which case the collection uses it instead. (Note that luajson, at the moment, must be in its development version, as the version distributed via LuaRocks has an issue with recent versions of the LPEG module.)
-
Fixes
v2.1.0
This minor release adds support for SILE 0.15, while still maintaining compatibility with SILE 0.14.11 and later.
However, we strongly recommend upgrading to at least SILE 0.15.5 for the best performance and compatibility.
If you are using an older version of SILE, please upgrade to avoid potential issues.
v2.0.0
This major release brings forth several new features and improvements.
It is major due to updated dependencies, significant code refactoring and modifications to the underlying implementation of various elements (such as insertions and deletions, underlines and strikethroughs, highlights, rendered code blocks, and divs).
However, for the majority of users, these changes should be seamless and have little noticeable impact on existing workflows.
New features
- Common
- Add a better fallback support for highlighted content (a.k.a. "mark"). (#112, #110)
- Customizable strike, underline, insertion, deletion and mark. (#112)
It offers an exact parity between these inline elements (from Djot and Markdown) with spans with a similar class, so both syntaxes are strictly equivalent. When resilient styles are used, this also offers the possibility to fully customize the appearance of these spans. - Support bare percentage in width and height key-value attributes (#114, #113)
It is now possible to specify e.g.width="50%"as an image size, and the converters take care of converting it towidth="50%lw"(SILE-specific unit). - Generic rendered code blocks are based on raw handlers and embedders. (#112, #111)
This removes the hard-coded class specifiers, allowing any existing SILE "raw handler" or any "embedder" to be used.
For instance, if the piecharts package is available, we can render blocks marked aspiechartsince the package provides a raw handler by that name. - CSV file as image source is interpreted as a pie chart. (#112, #111)
In addition to the generic processing on code blocks mentioned above, it allows using an external CSV pie chart file.
- Djot
- (Djot extension) caption on Div blocks. (#112)
We already added caption support on block quotes earlier. This adds it too for divs, interpreted as captioned figures.
- (Djot extension) caption on Div blocks. (#112)
Fixes
- Djot:
- Improve error handling in Djot to report location details (#109)
Other notable changes
The documentation has been completely overhauled, providing more thorough installation instructions.
The primary focus is now on Djot, presented first with a comprehensive description of its syntax, and many examples.
Following Djot, Markdown is introduced, along with notes highlighting its differences from Djot.
v1.5.2
This is a patch release for compatibility with silex.sile v0.4.
Fixes
- Do not load the resilient base class for feature detection (#108)
Notes
This is kind of a workaround for the general breaking issue (#107), but with markdown.sile 1.5.2 and silex.sile 0.4.1, only the minimal features from sile·x are now loaded (BCP47 support and AST utilities), without enforcing the other "possibly breaking" features here.
It should make this module play a bit better with non-resilient classes.
This being said, SILE 0.14.16 still has a multiple package instantiation issue which was avoided by sile·x... So your mileage may vary. The labelrefs package dependency, in particular, is suspected to behave poorly when loaded multiple times in some scenarios.
Using the resilient.sile module is strongly recommended, and the only officially supported workflow.
If you meet issues with other workflows, there's no guarantee they'll be addressed, unless you propose clean PRs.