All notable changes to this project will be documented in this file.
-
Raise minimum supported Rust version to 1.75 (#135)
-
[breaking] Overhaul HTML parsing and Pandoc communication (#137, #140)
This release completely changes how
mdbook-pandoc
parses Markdown files and how it interacts with Pandoc:- Raw HTML: Instead of processing a stream of HTML tokens,
mdbook-pandoc
now uses a browser-grade HTML parser (html5ever
) to parse raw HTML and construct a combined Markdown+HTML tree. This letsmdbook-pandoc
avoid having to think too much about the semantics of HTML (which elements are void vs need closing tags, when elements are implicitly closed, etc.). - Pandoc: Instead of generating preprocessed Markdown (Commonmark + many extensions), generates Pandoc's native format. This avoids ambiguity in parsing preprocessed markdown (previously, the meaning of Markdown in the original source may have changed based on the Pandoc extensions
mdbook-pandoc
enabled) and the difficulty of round-tripping Markdown (pulldown-cmark-to-cmark
often had subtle differences).
This may result in worse compatibility with old versions of Pandoc.
- Raw HTML: Instead of processing a stream of HTML tokens,
- Recognize
.latex
and.ltx
output files as LaTeX (#143)
- Improve logging when preprocessing a chapter fails (#139)
- Support more HTML link patterns (#134)
- [breaking] Raw HTML is now parsed and processed in a best-effort manner instead of being passed through verbatim.
For the most part, this should be neutral at worst (since raw HTML is stripped for most output formats) and improve
rendered output in the presence of
<img>
,<a>
, and<span>
elements (see Features). - Tweak log levels to better convey where time is spent (#129)
- Support
<img>
elements (#124) - Link to
<a>
elements byid
(#128) - Link to
<span>
elements byid
(#130)
- Set document metadata for all output formats (#125)
- Upgrade
pandoc
used for tests to version 3.6.1 (#122) - Update example books (#127, #131)
- Prevent infinite recursion when source directory contains destination directory (#116)
- Keep inline HTML inline (#112)
- Update example books (#114)
- Check for
disabled = true
before invokingpandoc
(#108)
- Minimum
pandoc
version is actually 2.8, not 1.14 (#90) - Resolve links correctly when book contains exactly one chapter (#101)
- Correctly resolve absolute-path links to be relative to book root (#103)
- [breaking] Work around Pandoc 3.2+ breaking links to chapters (#100)
- Replace unresolvable remote images with their descriptions (#105)
- Fix EPUB conversion with HTML elements spanning multiple blocks (#106)
- Raise minimum supported Rust version to 1.74 (#104)
- Preserve escape characters (or lack thereof) from Markdown source (#95)
- Allow overriding source format and extensions through Pandoc's
from
option (#98) disabled
flag to disable rendering even ifmdbook-pandoc
is available (#93)
- Fix
withBinaryFile
errors on Windows by normalizing paths withnormpath
instead ofstd::fs::canonicalize()
(#84)
- Correctly parse
pandoc
versions with fewer than three components (#82)
- Upgrade
pulldown-cmark-to-cmark
to 13.0 (#77)
- Improve rendering of example books (#79)
- Hide/show hidden lines in code blocks (#76)
- Replace redirects that can't be resolved with links to hosted HTML (#67)
-
[breaking] Upgrade
pulldown-cmark
to 0.10 andpulldown-cmark-to-cmark
to 12.0 (#70)This is not an API-breaking change but involves significant changes to the Commonmark parser and renderer and may therefore result in changes to rendered books.
-
Wrap long lines in code blocks (#60)
- Bump minimum supported Rust version (MSRV) to 1.71
- Emulate Pandoc's cell-wrapping behavior for tables to prevent wide tables from overflowing the page (#63)
- Added a
hosted-html
option to specify the URL of a hosted HTML version of the book. If set, relative links that can't be resolved within the book will be translated to links to the hosted version of the book (#66)
- Update example book submodules (#61)
- Correctly number chapters in the presence of prefix/suffix chapters and multiple top-level headings per chapter (#58)
- Don't nest suffix chapters under most recent book part in PDF bookmarks (#59)
- Correct
mdbook-pdf
link in README (#54)
- Update
cargo-dist
to v0.7.1 (#56)
-
[breaking] Options are now passed to Pandoc as a defaults file instead of as command-line arguments (#50)
As a result, some options must be specified with different names--in particular, the output file should now be specified as
output-file
instead ofoutput
.
- Pass metadata from
[book]
table to Pandoc (#53)
- Use Noto fonts in LaTeX tests (#48)
- Correctly check mdBook version compatibility (#45)
- Support lists nested more than four levels deep when rendering to LaTeX (#40)
- [breaking] Run
pandoc
with mdBook root as working directory (#34)
- Support older versions of Pandoc (with possibly degraded output) (#37)
- Update pandoc version used for testing from v3.1.9 -> v3.1.11 (#31)
- List support for
[output.html.redirect]
under features section of README (#28) - Link to sample rendered books in README (#30)
- Specify
pandoc
andrsvg-convert
as dependencies incargo-dist
config (#29) - Upload example rendered books to releases (#27)
- Download remote images that pandoc doesn't handle on its own (#24)
- Allow configuring logging with
RUST_LOG
environment variable (#21) - Take
[output.html.redirect]
into account when resolving links (#20)
- Correctly identify profiles as LaTeX when output file is PDF and no PDF engine or output format is specified (#14)
- Syntax highlighting for Rust code blocks with mdBook attributes (#16)
- Document known issue with images located at URLs that have
.yml
path extensions (#17)
- Escape quotes within link titles (#6)
- Eliminate redundant processing of tags during start and end events (#10)
- Only include necessary files in released packages (#8)
- Run CI clippy workflow on Windows and MacOS in addition to Ubuntu (#7)
- Update version of
cargo-dist
used to generate releases (#12) - Fix CI release workflow (#13)
- Run normal workflows on release PRs (#4)
Initial release