github asciidoctor/asciidoctor v2.0.11


This is a patch release that fixes a slew of issues that have been discovered from heavy usage. It's a larger release than we had planned because we're in the process of rewriting the docs and have been holding minor releases until the docs were merged. Unfortunately, that has taken longer than expected. But we're nearly there. In the meantime, we're putting out this patch release to publish the fixes that have accumulated in the meantime.

Notable changes include fixing two infinite loop scenarios, applying text formatting to cells in the implicit table head row when the column has the "a" or "l" style, restoring compatibility with Rouge >= 3.4 (by defining entry point API methods as class methods instead of module functions), fix bottom margin collapsing on an AsciiDoc table cell, removing excess hard line breaks in multi-line AsciiMath blocks, preserving repeating blackslashes in manpage output, move style tags for syntax highlighters into head of HTML output, for wrapping to avoid overflow in HTML output, fix cell borders for colspan or rowspan cells when frame and grid attribute values are congruent, and allow the encoding of the include file to be specified using the encoding attribute.

Oh, and the API docs on are working once again!

As usual, consult the CHANGELOG for all the gory details. 🎃


Asciidoctor is also packaged for Fedora, Debian, Ubuntu, Alpine Linux, OpenSUSE, and Homebrew. You can use the system's package manager to install the package named asciidoctor.

Release meta

Released on: 2020-11-02
Released by: @mojavelinux
Release beer: Chimay Blue

Logs: resolved issues | full diff | issues resolved in 2.0.x (cumulative)


Bug Fixes

  • Fix infinite loop when callout list with obsolete syntax is found inside list item (#3472)
  • Fix infinite loop when xreftext contains a circular reference path in HTML and manpage converters (#3543)
  • Apply text formatting to table cells in implicit header row when column has the "a" or "l" style (#3760)
  • Fix errant reference warning for valid reference when running in compat mode (#3555)
  • Initialize backend traits for converter (if not previously initialized) using assigned basebackend; mimics Asciidoctor < 2 behavior (#3341)
  • Set source_location on preamble block when sourcemap option is enabled (#3799)
  • Link the notitle and showtitle attributes so they act as opposites for the same toggle (#3804)
  • Pass options to constructor of Rouge lexer instead of #lex method; restores compatibility with Rouge >= 3.4 (#3336)
  • Don't clobber cgi-style options on language when enabling start_inline option on the Rouge PHP lexer (#3336)
  • Fix parsing of wrapped link and xref text, including when an attrlist signature is detected (#3331)
  • Restore deprecated writable number property on AbstractBlock
  • Always use title as xreftext if target block has an empty caption, regardless of xrefstyle value (#3745)
  • Allow a bibliography reference to be used inside a footnote (#3325)
  • Fix bottom margin collapsing on AsciiDoc table cell (#3370)
  • Remove excess hard line break in multi-line AsciiMath blocks (#3407)
  • Only strip trailing spaces from lines of AsciiDoc include file (#3436)
  • Remove errant optional flag in regexp for menu macro that breaks Asciidoctor.js (#3433)
  • Preserve repeating backslashes when generating manpage output (#3456)
  • Honor percentage width specified on macro of inline SVG (#3464)
  • Removing leading and trailing blank lines in AsciiDoc include file to match assumption of parser (#3470)
  • Activate extensions when :extensions option is set even if Extensions API is not yet loaded (#3570)
  • Don't activate global extensions if :extensions option is false (#3570)
  • Escape ellipsis at start of line in manpage output (#3645) (@jnavila)
  • Don't register footnote with ID if a footnote is already registered with that ID (#3690)
  • Honor start attribute on ordered list in manpage output (#3714)
  • Warn instead of crashing if SVG to inline is empty (#3638) (@mogztter)
  • Compute highlight line ranges on source block relative to value of start attribute (#3519) (@mogztter)
  • Prevent collapsible block from incrementing example number by assigning an empty caption (#3639)
  • Use custom init function for highlight.js to select the correct code elements (#3761)
  • Fix resolved value of :to_dir when both :to_file and :to_dir options are set to absolute paths (#3778)
  • Fix crash if value of stylesheets attribute contains a folder and the destination directory for the stylesheet does not exist (even when the :mkdirs option is set) (#3808)
  • Fix crash if value passed by API for copycss attribute is not a string (#3592)
  • Restore label in front of each bibliography entry in DocBook output that was dropped by fix for #3085 (#3782)
  • Apply max width to each top-level container instead of body in HTML output (#3513)
  • Don't apply border-collapse: separate to HTML for table blocks; fixes double border at boundary of colspan/rowspan (#3793) (@ahus1)
  • Don't remove right border on last table cell in row (#2563)
  • Rework table borders to leverage border collapsing (apply frame border to table, grid border to cells, and selectively override border on cells to accommodate frame) (#3387)


  • Add support for muted option to self-hosted video (#3408)
  • Move style tag for convert-time syntax highlighters (coderay, rouge, pygments) into head (#3462)
  • Move style tag for client-side syntax highlighters (highlight.js, prettify) into head (#3503)
  • Define entry point API methods (load, convert, load_file, convert_file) as class methods instead of module_function to avoid conflict with Kernel.load (#3625)
  • Retain attribute order on HTML code tag for source block to remain consistent with output from 1.5.x (#3786)
  • Correct language code for Korean language file from kr to ko (#3807) (@jnavila)


  • Apply word wrap (i.e., word-wrap: anywhere) to body in default stylesheet (#3544)
  • Allow nobreak and nowrap roles to be used on any inline element (#3544)
  • Preserve guard around XML-style callout when icons are not enabled (#3319)
  • Use .fam C command to switch font family for verbatim blocks to monospaced text in manpage output (#3561)
  • Remove redundant test for halign and valign attributes on table cell in DocBook converter
  • Allow encoding of include file to be specified using encoding attribute (#3248)
  • Allow template to be used to override outline by only specifying the outline template (#3491)
  • Upgrade MathJax from 2.7.5 to 2.7.6
  • Skip unused default attribute assignments for embedded document
  • Allow a URL macro to have a preceding single or double quote (#3376)
  • Add support for erubi template engine; use it in place of erubis in test suite; note the use of erubis is deprecated (#3737)
  • Download and embed remote custom stylesheet if allow-uri-read is set (#3765)
  • Remove direction property from default stylesheet (#3753) (@abdnh)
  • remove max width setting on content column for print media in default stylesheet (#3802)
  • Normalize frame value "topbot" to "ends" in HTML output (consistently use frame-ends class) (#3797)
  • Add role setter method on AbstractNode (#3614)

Build / Infrastructure

  • Run test suite on TruffleRuby nightly (@mogztter, @erebor)
  • Upgrade TruffleRuby to 20.0.0 (@mogztter)
  • Trigger upstream builds for AsciidoctorJ on Github Actions (@robertpanzer)


A very special thanks to all the awesome supporters of the Asciidoctor OpenCollective campaign who provided critical funding for the development of this release as well as ongoing development of the project. We'd also like to thank the maintainers of the Rouge project, who helped us work through the compatibility issue with Rouge and applied a fix to restore it ahead of our own release.

latest releases: v2.0.16, v2.0.15, v2.0.14...
10 months ago