Skip to content

Releases: Omikhleia/markdown.sile

v2.1.0

31 Aug 17:21
17e80d8
Compare
Choose a tag to compare

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

16 Mar 18:40
401c712
Compare
Choose a tag to compare

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 to width="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 as piechart 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.

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

28 Jan 03:13
07cf1b4
Compare
Choose a tag to compare

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

28 Dec 10:47
1a5411f
Compare
Choose a tag to compare

This is just a patch release with better compatibility for Lua "minimum" profile, ensuring the module works with Lua 5.1 -- and most of all LuaJIT 2.x, since SILE is moving towards that target.

Many thanks to @alerque on the topic.

Fixes

  • Lua 5.1 minimum compatibility (#102)

v1.5.0

01 Oct 17:10
Compare
Choose a tag to compare

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.
  • 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.

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

02 Sep 17:23
Compare
Choose a tag to compare

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.

v1.4.1

11 Aug 12:34
Compare
Choose a tag to compare

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

  • Djot
    • Fix: Handle attributes on note references in Djot (#89, #90)
  • Common
    • Fix: Honor qualified BCP47 language to get correct smart quotes (#91, #92)

v1.4.0

28 Jul 18:44
ac1a6e0
Compare
Choose a tag to compare

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.
  • 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.

Fixes

  • Djot
    • Fix incorrect header identifiers in nested blocks (#83, #84)
    • Fix bad priority between alpha- and roman-numbered list items (#85) (backport)
  • 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

23 May 16:18
1aa39b8
Compare
Choose a tag to compare

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.
  • Djot (extensions)
    • Support captioned block quotes in Djot, rendered as nice epigraphs when resilient classes are used (#74)
    • Use Djot symbol and pseudo-footnotes for variable substitution (#62)
      While a non-standard experimental use of Djot symbols, it offers an interesting way to abstract some repetitive markup.
  • 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.

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
    • Avoid page break between term and definition in definition lists (94689a6)
    • Honor more attributes on direct links (#67, #68)
  • 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).
  • Markdown
    • Accepted syntax for attributes in native Markdown was too restrictive compared to Pandoc (#72)
    • Regression on smart ellipses since math support was introduced (#71)

v1.2.1

25 Apr 19:50
Compare
Choose a tag to compare

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 the marker 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:

    • Resilient styles can now be used via the custom-style attribute (#59, #61).
    • The resilient.lists package is now loaded instead of SILE's standard list package when a resilient class is used (#58, #60).
  • 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.