Releases: Omikhleia/markdown.sile
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 aspiechart
since 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.
v1.5.1
v1.5.0
This minor release introduces a few new features.
It provides a Djot extension for symbol-based conditionals.
Such "Djot templates" are notably used by resilient.sile version 2.2 to generate customizable "book matter" pages.
Reciprocally, version 2.2 of the resilient.sile collection introduces new environments for definition lists and verbatim text, which are now used when available. This offers the ability to easily style and customize such elements.
New features
-
Common
- feat: Use resilient.verbatim if available and refactor verbatim calls (#98)
We now use the verbatim environment provided by the resilient.verbatim package, when available, instead of SILE's default implementation, to benefit from its styling features. - feat: Support class- or package-provided definition environment (#99, 100)
This notably allows using the definition environment provided by the resilient.defn package, and to benefit from its styling features. - feat: Improve resilient class detection (#96)
Contributed by @nawordar, this internal change is mostly for class developers wanting to use a resilient class as their base class.
- feat: Use resilient.verbatim if available and refactor verbatim calls (#98)
-
Djot
- feat: Djot extension for symbol-based conditionals (#93)
As earlier versions introduced user-defined symbols, this Djot non-standard extension now allows using such symbols as conditionals, for example to conditionally include a block of text depending on the presence of a symbol. - feat: Support more decorative pendants in Djot (#95)
This allows using other pendants from the couyards.sile collection.
- feat: Djot extension for symbol-based conditionals (#93)
Other notable changes
As usual, the documentation also received a number of improvements. Notably, it now uses a resilient master document with book matter pages and covers (#97).
A few 3rd-party dependencies are updated. Notably, the silex.sile dependency is upgraded. Be aware that the latter overrides some of the core SILE components, changing their behavior — normally for the better, but it may break some workflows.
v1.4.2
This patch release fixes a few bugs.
Fixes
- Common:
- Fix: Hard breaks do not work well in centered or ragged-left blocks.
- Fix: Horizontal rules are too thin for print and inconsistent.
- Fix: Propagate header shifting and metadata to embedded rendered blocks.
- Djot:
- Fix: Soft breaks may leave multiple spaces in the output.
Other noteworthy changes
- Djot:
- Propagate positions in Djot input source (for better error reporting).
- Common
- Update silex.sile dependency from 0.1.0 to 0.2.0
N.B. If you were using this module with the resilient.sile v2.1 collection, the latter already required that dependency.
So this is a change only if you were using this module alone, in which case you will indirectly benefit from a few new features, e.g. emphasis nesting and improved centered and ragged (left, right) environments.
- Update silex.sile dependency from 0.1.0 to 0.2.0
v1.4.1
This patch release fixes a few bugs.
It's also the first release where all dependencies are versioned on LuaRocks, so that you can now install them without the --dev
option and get the required versions of each component.
This should make it much easier for you to install or upgrade the package collection, and get all dependencies right:
luarocks install markdown.sile
Fixes
v1.4.0
This minor release introduces two new exciting features.
And it's an anniversary release.
New features
- Common
- Header shifting option for Markdown, Djot, Pandoc AST (#86)
When including or embedding content, you now have the ability to shift the headings. So included "chapters" may become "sections", etc. If your document class supports it, it also allows accessing levels above the usual scheme, such as "parts" with the resilient book class.
- Header shifting option for Markdown, Djot, Pandoc AST (#86)
- Djot (extensions)
- Predefined symbols and external metadata passing in Djot (#87)
In the previous version, we already used Djot symbols in original ways. When including or embedding content, you now have the ability to pass metadata from the upper "wrapper" document and access them via symbols.
A few predefined symbols are also available: for inserting a table of contents, and as a convenience for typesetting Unicode characters by their code points.
- Predefined symbols and external metadata passing in Djot (#87)
Fixes
- Djot
- Markdown
- Fix references and notes in fenced divs (#82) (backport)
The documentation also received a number of fixes, rewrites and improvements.
An anniversary release...
Around mid-July 2022, I started overhauling SILE's native Markdown support, initially as a PR under the aegis of the SILE organization; later as this 3rd-party collection of packages, due to the amount of dependencies it involved and the design choices that had to be made.
One year later, after a bunch of contributions to the SILE typesetter and to the Lunamark library, I am quite happy with the result of this effort. As an early adopter of Djot, I also enjoy its capabilities and its extensibility; and I am glad it turned out just when it was the right moment for it to be included in this collection.
After trying this collection, if you enjoy it as much as I do, please add a "Star" ⭐ to its GitHub repository. It's important, for its visibility first of all, and also for myself to feel this is useful to other peoples. You are also welcome contributing to the GitHub discussions or reporting issues.
v1.3.0
This minor release marks the introduction of cool new features, and also includes several bug fixes.
New features
Most of these enhancements are things that this author felt useful in a typesetting work-in-progress project.
- Common
- Render fenced code blocks marked as being in Markdown or Djot (#69)
It notably allows mixing both markup languages in a document, so as to benefit from features unavailable in one or the other. - Add
.nobreak
pseudo-class on span/inline elements (#65)
It can help ensuring some content (e.g. proper names) won't be hyphenated and line-broken.
- Render fenced code blocks marked as being in Markdown or Djot (#69)
- Djot (extensions)
- Markdown (extensions)
- Support highlighting (
==mark==
) in Markdown (#70)
Pandoc supports it too since its v3.1 -- and Djot has{=mark=}
on its side -- so it's a sound addition.
- Support highlighting (
Fixes
The previous patch version could not be delayed due to the release of resilient v2.0.1 and SILE v0.14.9.
A few fixes couldn't make it in due time and are now addressed.
- Common
- Djot
- Change the default thematic break to the 20% rule in Djot (#64)
Done for consistency with the native Markdown approach, and also because the default behavior should be typographically sound. - Support Djot attributes on more inline elements (#63)
Notably on strong, emphasis and (double or single) quoted inline elements, where they were previously ignored with a warning (but that shouldn't have been the case).
- Change the default thematic break to the 20% rule in Djot (#64)
- Markdown
v1.2.1
This patch release fixes a few annoying issues and provides a better integration with the resilient.sile collection of classes & packages.
Some of the changes below, although traced as enhancements, may actually be considered as compatibility fixes.
Fixes
-
Centered environments could introduce vertical spaces between rows in tables (#53, #54).
-
Blank lines could be inserted between sectioning headers and subsequent content (#56, #57).
This issue is internally fixed by using themarker
option on resilient sectioning commands.
In other terms, there's unfortunately no fix available yet when using a non-resilient class (such as SILE's standard book class).
See recommendations below.
Features / compatibility fixes
-
Better integration with the resilient styling paradigm:
-
Unnumbered captioned elements are now supported (#51, #52).
This feature relies on using the.unnumbered
and.notoc
pseudo-attributes.
In Djot, attributes can be attached to any element, it works for both tables and figures.
In Markdown, it only works for figures. (Completely disabling figure or table numbering in your resilient style definition is also possible with resilient v2.0.1)
Documentation
The user guide and showcase document received several improvements (#55, etc.)
Recommendations
Important issues that also affected this collection were fixed in SILE v0.14.9.
We strongly recommend upgrading SILE, if you were using an older version.
As can be seen above, this collection also takes advantages of several features and fixes from the resilient collection of classes and packages in its latest version.
We strongly recommend using resilient.sile v2.0.1 or upper.