Asciidoctor PDF: A native PDF converter for AsciiDoc based on Asciidoctor and Prawn, written entirely in Ruby.
MIT License
Bot releases are hidden (Show)
Published by mojavelinux over 2 years ago
This is a patch release in the 2.1.x release line that includes backports of bug fixes from the 2.2.x release line.
If a block caption has both a background color and an outside margin, the background color will be placed at the location of the text rather than stacked above it. If the font size is set on tables in the theme, the font scaling will not compound in a nested table. Rather, the font size in the nested table will match the font size in the parent table.
Released on: 2022-07-10
Released by: @mojavelinux
Release beer: DDH Juicy Bits by WeldWerks Brewing
Logs: resolved issues | full diff
A very special thanks to all the awesome supporters of the Asciidoctor OpenCollective campaign, who provide critical funding for the ongoing development of this project.
Published by mojavelinux over 2 years ago
This is a patch release in the 2.1.x release line that includes backports from the 2.2.x release line. It fixes several issues that have been hiding in the shadows for a long time and enhances the warning message for truncated table cells.
If the alt text for a block image, video, or audio exceeds the width of the content area, the text will wrap to the next line instead of being advanced to the next page. This fix prevents a fixed width table cell from breaching the height of the page. In the event that a table cell does exceed the height of a page, and the sourcemap is enabled, the warning message will include the source location of the cell. The converter will no longer suggest enabling the allow-uri-read
attribute if an image target contains a colon, but is not a URL. If a custom role contains the text-transform
property, that transform will be applied the value of an attribute reference. Previously, the transform would be applied before attribute references are resolved.
Released on: 2022-06-25
Released by: @mojavelinux
Release beer: We Are the Weirdos by Beer Zombies Brewing
Logs: resolved issues | full diff
A very special thanks to all the awesome supporters of the Asciidoctor OpenCollective campaign, who provide critical funding for the ongoing development of this project.
Published by mojavelinux over 2 years ago
This is a patch release in the 2.1.x release line that backports fixes from the 2.2.x release line. It addresses a few minor layout bugs and one hairy bug that was staring us straight in the face.
If the value of either the page-numbering-start-at
or running-content-start-at
theme key is set to 1
, the converter was treating that value as 1
instead of 2
. Now it will interpret it as entered. If you import a page using the image macro, the converter will restore the margin and column layout on the page that follows it. Various border-color keys now accept the value transparent
rather than causing the converter to crash.
start-at
theme keys with value 1
correctly (as 1
instead of 2
) (#2255)thematic-break-border-color
, admonition-column-rule
, quote-border-color
, verse-border-color
)Released on: 2022-06-23
Released by: @mojavelinux
Release beer: Safe Stream IPA by Athletic Brewing Co.
Logs: resolved issues | full diff
A very special thanks to all the awesome supporters of the Asciidoctor OpenCollective campaign, who provide critical funding for the ongoing development of this project.
Published by mojavelinux over 2 years ago
This is a patch release in the 2.1.x release line. It fixes a few minor bugs. If the layout is changed from portrait to landscape or vice-versa in the main document, that same change is applied to the scratch document. This ensures that the extent of the content block is computed correctly. If an extended converter overrides the get_entries_for_toc method, the converter looks at that result instead of Document#sections? to determine if the TOC should be inserted. And the converter now uses the correct logic to insert an empty page before the TOC with automatic placement in a prepress book.
Numerous updates and enhancements were made to the docs during this release cycle as well.
The 2.2.x release line will be created following this patch release.
get_entries_for_toc
to determine if the TOC is non-empty rather than Document#sections?
Released on: 2022-06-17
Released by: @mojavelinux
Release beer: Strata-Ford IPA by Athletic Brewing Co.
Logs: resolved issues | full diff
A very special thanks to all the awesome supporters of the Asciidoctor OpenCollective campaign, who provide critical funding for the ongoing development of this project.
Published by mojavelinux over 2 years ago
This is the first patch release in the 2.1.x release line. It's once again focused on the columnar layout, fixing one edge case and providing additional information for extensions. This release also addresses a crash when using CodeRay as the syntax highlighter and a code block uses a source language that CodeRay does not recognize.
An SVG that's shorter than the height of the current column will be placed in the correct column. The Extent for a decorated block provides access to the zero-based column where the block starts (from.column
) and where the cursor was when the block was encountered (current.column
). This information is used by the extended converter in the docs that demonstrates how to imprint the source language label on a code block.
The converter now draws a border around a phrase with a custom role using the base border color if the role defines a border width without a border color.
border-radius
is > 0base-border-color
value if border width is set on role for inline phrase but not border colorReleased on: 2022-06-14
Released by: @mojavelinux
Release beer: Field Guide by Outer Range Brewing Co.
Logs: resolved issues | full diff
A very special thanks to all the awesome supporters of the Asciidoctor OpenCollective campaign, who provide critical funding for the ongoing development of this project.
Published by mojavelinux over 2 years ago
This patch release focuses on fixes related to image processing and rendering. First, it fixes a crash if an inline image without an explicit width is used in the doctitle or a section title with an automatic ID. The converter now delegates to prawn-gmagick, if available, to read an image referenced in an SVG, thus adding support for more formats and improving performance. The path of that image can now refer to any location within the Asciidoctor jail (i.e., base dir) rather than being restricted to the docdir. When prawn-gmagick is not available, and the converter encounters a corrupt or incomplete PNG or JPG, it will not recommend using prawn-gmagick (as the problem is with the image data, not the format). The prawn-gmagick integration is now verified to work on macOS.
This release was the first test of automating the release notes. The script didn't work entirely, but we're a step closer.
Released on: 2022-06-03
Released by: @mojavelinux
Release beer: Living the Ska Dream by Living the Dream Brewing
Logs: resolved issues | full diff
A very special thanks to all the awesome supporters of the Asciidoctor OpenCollective campaign, who provide critical funding for the ongoing development of this project.
Published by mojavelinux over 2 years ago
This is a patch release that further stabilizes the 2.0.x release line. This release fixes a regression/inconsistency with the layout of collapsible blocks, patches prawn-gmagick to fix a long-standing issue where the bit depth is sometimes read incorrectly, and correctly handles an SVG with a width specified using px units. It also ensures that the converter does not crash if a custom role for an inline phrase defines a border width without a border color, ignoring the border in this case.
Released on: 2022-05-30
Released by: @mojavelinux
Release beer: Angel of Darkness by Wild Blue Yonder Brewing Co.
Logs: resolved issues | full diff
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.
Published by mojavelinux over 2 years ago
This patch release is a continuation of 2.0.4 to fix a long-standing issue in the calculation of the TOC extent (the page range) when the sectids attribute is unset. All TOC entries are now included when computing the TOC extent so it matches the TOC extent when inked in the primary document. This patch release fixes another long-standing issue in the calculation of the width of a marked phrase (a phrase with a background color and/or border) when text justification is on.
Released on: 2022-05-26
Released by: @mojavelinux
Release beer: 7-Speed IPA by Living the Dream
Logs: resolved issues | full diff
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.
Published by mojavelinux over 2 years ago
This is a very minor patch release to fix a regression in the calculation of the TOC extent (the page span of the TOC) when the sectids attribute is toggled in the document. We expect to put out another patch release shortly to fix the issue more comprehensively.
Released on: 2022-05-26
Released by: @mojavelinux
Release beer: Ghost in the Machine by Parish Brewing Co.
Logs: resolved issues | full diff
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.
Published by mojavelinux over 2 years ago
Leveraging our new automated release process, we're putting out patch releases as fast and furious as the fixes for bugs we discover. This is a patch release that only fixes bugs and does not introduce any new functionality.
The fixes include adjusting the TrimBox on pages so the optimizer can successfully produce PDF/X compatible documents using Ghostscript, setting the height of an image resized to fit the height of a page accurately so it does not cause a page to be skipped, and truncating the title page contents to fit on a single page, logging a warning if this occurs. The one minor improvement is that an extended converter can access the optimize quality and compliance settings specified by the user through the @optimize
instance variable.
ink_title_page
Released on: 2022-05-25
Released by: @mojavelinux
Release beer: Ghost in the Machine by Parish Brewing Co.
Logs: resolved issues | full diff
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.
Published by mojavelinux over 2 years ago
In keeping with semantic versioning, this is a patch release that only fixes bugs and does not introduce any new functionality. We're continuing to work on bug fixes that didn't make it into 2.0.0. This release fixes two issues that pertain to table layouts. The first is that the column width calculation has been fixed in certain cases when the table contains colspans. The second is that the table will be advanced to the next page if the first row does not fit in the remaining space on the page when it contains a rowspan.
Released on: 2022-05-22
Released by: @mojavelinux
Release beer: The Citra Bomb One by HopLark
Logs: resolved issues | full diff
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.
Published by mojavelinux over 2 years ago
In keeping with semantic versioning, this is a patch release that only fixes bugs and does not introduce any new functionality. Shortly after the 2.0.0, there were two edge case bugs discovered. The first is that an inline image that is resized to fit the height of the page would cause the converter to go into an infinite loop trying to position it on the following page. We added a safeguard against this infinite loop in general, then fixed the position calculation so it would fit. We also discovered that long contiguous lines in a source block with linenums enabled would cause the line to be advanced to the next page and into the linenum gutter, which was also fixed.
Released on: 2022-05-21
Released by: @mojavelinux
Release beer: Xocolatl by Wild Blue Yonder
Logs: resolved issues | full diff
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.
Published by mojavelinux over 2 years ago
We began the journey towards the 2.0.0 release over two years ago with a goal of making this converter more accurate, easier to extend, and more thoroughly documented. It all started with #789. The result has turned out to be better than anything we could have hoped for. We never thought it would include basic support for image floats, and yet here we are. And despite all the changes, this release is backwards compatible with all existing themes and extended converters written for 1.6.x.
PDF, and printable documents in general, present what often feels like a bottomless pit of requirements. By providing a more robust framework, the hope is that users will be able to build on it to serve their own needs rather than having to wait and lobby for changes to the converter itself. The extended converter use cases page in the new docs highlights just how far this converter can be stretched to accommodate those needs. (If you look close, you can even find a recipe for applying a multi-column layout).
Getting the converter to work this way led to solutions for hundreds of open issues, 222 to be exact. With > 2,000 tests riding in on > 1,500 new commits means this converter is far more stable than it has ever been in the past. The converter is well-tested, better organized, and sufficiently documented. And while it still has limitations, that list has been cut down substantially.
This release marks a switch to semantic versioning and leaner releases in the future. Although this software is now very stable, the release also marks a shift in strategy to begin exploring other approaches to producing PDF documents, most likely by leveraging web technologies. We have pushed this PDF generation library well beyond its limits and intended use. To take this conversion further, new solutions are needed. We're leaving this repository in a state where it can continue to be maintained within the boundaries of what it currently provides. We wouldn't go so far as to call it maintenance mode, but maintenance will certainly become the focus.
For a more complete list of enhancements, improvements, and bug fixes that are included in this major milestone, see the What's New page in the documentation.
Released on: 2022-05-18
Released by: @mojavelinux
Release beer: 🎄 St. Bernardus Christmas Ale by St. Bernardus
Logs: resolved issues | full diff
A huge shout out to Sarah White (@graphitefriction) for collecting the raw materials of docs scattered throughout the repository and elsewhere and organizing them into a documentation component in the Asciidoctor documentation site. Not only do those docs make Asciidoctor PDF more approachable for new users, they also make the task of supporting all users a lot easier.
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.
Published by mojavelinux over 2 years ago
As we rounded up the issues and polished the documentation in preparation for the 2.0.0 release, we were able to squeeze in a few more enhancements, improvements, and bug fixes. We're more confident than ever that we're ready for a final release, which is why this release has been labeled as the release candidate.
The main enhancement is that it's now possible to position the caption for code and example blocks on the bottom end (below the block) using the theme. You can also use the theme to turn on text hyphenation. In an effort to organize the code, we've sorted the methods in the converter and marked which methods are private. This will give you more confidence when writing an extended converter. We've added a whole bunch of examples of extended converters to the docs. On the bug fix front, we finally fixed a long-standing issue that the top padding of line height was not being applied to the first line on the page when content is split across pages. We also addressed a few edge cases, like removing the image border on the title page logo, not leaving behind an entry for an empty notitle section at the bottom of the TOC and outline, and looking for the correct alignment role names on a block image. Since the focus of this release was largely on documentation, there have been a bunch of additions and improvements there as well.
The final 2.0.0 will follow this release shortly.
caption-end
key (#1730)base-hyphens
key in the theme (#2161)docdir
attribute reference in value of pdf-themesdir
and pdf-fontsdir
attributes (if not already replaced) (#412)start_title_page
method from ink_title_page
to make customization of the title page simpler using an extended converterstart_toc_page
method to handle positioning cursor at first page of TOCReleased on: 2022-05-17
Released by: @mojavelinux
Release beer: Strata-Ford IPA by Athletic Brewing
Logs: resolved issues | full diff
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.
Published by mojavelinux over 2 years ago
We received a lot of great feedback from the first beta that led to nearly a dozen bug fixes. While wrapping up documentation tasks for the 2.0.0, we had a breakthrough with wrapping...
Thanks to numerous changes and improvements to the code leading up to the 2.0.0 release, we determined it was easier to support image floats than to document how to patch them in. Thus, we're thrilled to announce that this release supports wrapping paragraph text around a floating image (a block image with the float attribute set)!
As part of that change, we updated the converter to coerce the image caption to automatically fit within the bounds of the image if the float attribute is set. Other types of blocks can be enlisted in float wrapping using an extended converter, which is now documented. We also added orphan checking to discrete headings, added a key to control the column gap in the index section, and added support for the text-transform property and the normal_italic font style to the first line of the abstract. The spacing around a thematic break is now controlled using padding instead of margins. The built-in theme suffix with-fallback-font has been changed to with-font-fallbacks, the sans-with-fallback-font has been renamed to default-sans-with-font-fallbacks, and there's a new default-sans theme. Finally, it's now possible to override the convert handler for listing, literal, stem, and pass blocks.
During this development cycle, the new docs for Asciidoctor PDF continued to be improved and reorganized. There's almost full coverage for the new features added in 2.0.0. Speaking of coverage, the test suite has surpassed the 2,000 test mark!
We're going to give users a chance to try this release so we can uncover any unexpected regressions, errors, or problem areas. If they come up, we will try to address them quickly so that we can turn around a final release very soon.
float
attribute (#353)supports_float_wrapping?
method for extended converter to override to enlist other blocks in float wrapping; add example to docs (#353)image-float-gap
key to theme to control space around image float (#353)text-transform
property on first line of abstract in theme (#2141)resolve_alignment_from_role
to resolve_text_align_from_role
to reflect proper terminology and purpose; alias old method namearrange_heading
) (#2151)arrange_section
to arrange_heading
to reflect proper terminology and purposeindex-column-gap
key to theme to control size of gap between columnsimage-caption-max-width
to fit-content
if float
attribute is set on block image (#2150):height
option to typeset_text
helpertypeset_text
and ink_prose
to return remaining fragments when :height
option is specified:indent_paragraphs
option to formatted text box (#353)float
attribute is set on block image, set max width on caption to fit-content
if max width not already set to a fit-content
valuethematic-break-padding
key instead of margin top and bottom (#2164)convert_listing_or_literal
to convert_code
and alias old nameconvert_stem
)convert_pass
) and remove block decorationcaption-align
when element align is not left
and caption-max-width
is % of element width (e.g., fit-content(50%)
) (#2156)normal_italic
(#2138):color
option to Prawn::Text::Formatted::Box
directly and remove workaroundscursor
method inside block for column box in index sectionconvert_code
method to handle convert_listing
and convert_literal
callsReleased on: 2022-05-14
Released by: @mojavelinux
Release beer: The Thistle by Iron Mule Brewery
Logs: resolved issues | full diff
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.
Published by mojavelinux over 2 years ago
The march is on towards the 2.0.0 release! We've determined that converter's behavior and APIs are now stable for this major release. The focus now turns towards fixing bugs, compatibility issues, and minor features that don't introduce breaking changes or deprecations.
Notable new features in this release include a new document attribute (index-pagenum-sequence-style
) to control the style of page sequences in the index, a new document attribute (outline-title
) to control the text and appearance of the title in the PDF outline, a new API method to control which elements are enlisted in the TOC and the corresponding logic to support non-sections, support for the smallcaps
text transform (e.g., Sᴍᴀʟʟ Cᴀᴘᴛɪᴀʟ Lᴇᴛᴛᴇʀs) and updates to the bundled fonts to support those glyphs, and the ability to control the color of all borders using the base-border-color
key when extending the base theme. In the theme, the caption-end
key was added to the image category and the caption-side
key on the table category was renamed to caption-end
to be consistent.
During this development cycle, the new docs for Asciidoctor PDF continued to be improved and reorganized. Along with lots of updates to the theming guide, they include a new page that covers a variety of use cases that can be addressed using an extended converter. The new docs will now go live on https://docs.asciidoctor.org in conjunction with this release.
We're going to give users a chance to try this release so we can uncover any unexpected regressions, errors, or problem areas. If they come up, we will try to address them quickly so that we can turn around a final release very soon.
May the 4th be with you! 🤺
index-pagenum-sequence-style
document attribute to control style of sequential page numbers in index when media=screen (#1656)outline-title
attribute (#1789)get_entries_for_toc
method (#2097)asciidoctor/pdf/nopngmagick
script to unregister Gmagick handler for PNG images only (#1687)Page#imported
method to mark page as imported (which suppresses running contennt)smallcaps
text transform by replacing lowercase letters with small capital variants (#1192)base-border-color
as default border color; control appearance of border using border-width
value alone (#2134)base-border-color
when extending themedelete_page
extension method to delete_current_page
to avoid conflict with incompatible method on Prawn::Document
table-caption-side
theme key to table-caption-end
(#2125)ÿ
in built-in fontsReleased on: 2022-05-04
Released by: @mojavelinux
Release beer: In the Steep by Outer Range Brewing
Logs: resolved issues | full diff
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.
Published by mojavelinux over 2 years ago
This release was mostly about improving consistency and compatibility as we near the Asciidoctor 2.0.0 release.
The main new feature is support for setting a border and padding per heading level, including the document title of an article. Implementing this feature meant adding support for setting the border width and padding independently on all edges of a block and capping the border corners. Any time a padding or margin value can be specified in the theme using an array value, the 2- and 3-value forms are now accepted. To help with the transition to Asciidoctor PDF 2.0.0, bottom padding hacks detected in an older theme are automatically neutralize to retain the same appearance to the degree possible. The top and bottom padding on quote and verse blocks is now uniform in the default theme, and tighter in the base theme. The default border and grid color and width for tables has been updated to match the behavior of the previous stable release. As usual, consult the CHANGELOG for a more detailed view of what has changed.
During this development cycle, the new docs for Asciidoctor PDF continued to be improved and reorganized thanks to the work by Sarah. The new docs will go live on https://docs.asciidoctor.org at the same time Asciidoctor PDF 2.0.0 is released.
To reiterate, we don't anticipate having many alpha releases or a long prerelease cycle. We're going to give users a chance to try this release so we can uncover any unexpected regressions, errors, or problem areas. If they come up, we will try to address them quickly so that we can turn around a final release very soon.
inscribe_
method prefix in converter to ink_
ink_toc
method in extended converter to insert page above TOC pagelayout_
methods contributed to converter by prepended modulebase-border-width
keyReleased on: 2022-04-30
Released by: @mojavelinux
Release beer: Proper Pour by Boulevard Brewing
Logs: resolved issues | full diff
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.
Published by mojavelinux over 2 years ago
We received great feedback on the first alpha for Asciidoctor PDF 2, and immediately got to work fixing bugs and wrapping up issues that didn't make it into the first alpha. This release very nearly represents what we want Asciidoctor PDF 2 to be.
There are several notable enhancements in this release worth drawing attention to. First, you can now add the notitle
option to the title of any section so it only appears in the TOC, not the document. This can be useful for creating entries in the TOC that are not sections, as the entry will effectively link to the first child element. Speaking of sections, you now add the breakable
option to a section to keep the title with the first block of content, just like you can do for tables. It doesn't change where the section breaks, but it does provide a hint to the converter to do extra work to keep the section title from being orphaned. On the table front, you can now style the ends and sides of the frame and the rows and cols of the grid independently. To help improve the terminology in the theme, we have separated the align and text-align keys so the meaning of these keys doesn't get entangled. You can also now set a background color on any caption and define image-based admonition icons in the theme. If you are writing an extended converter, note that all methods with the prefix layout_
have been renamed to have the prefix inscribe_
. However, if a converter uses the old method names, it will still work. Finally, this release includes numerous bug fixes and a few improvements to the log messages. As usual, consult the CHANGELOG for a more detailed view of what changed.
During this development cycle, the new docs for Asciidoctor PDF continued to be improved and reorganized thanks to the work by Sarah. The new docs will go live on https://docs.asciidoctor.org at the same time Asciidoctor PDF 2.0.0 is released.
To reiterate, we don't anticipate having many alpha releases or a long prerelease cycle. We're going to give users a chance to try this release so we can uncover any unexpected regressions, errors, or problem areas. If they come up, we will try to address them quickly so that we can turn around a final release very soon.
align
and text-align
keys in theme schema; remap old keys for backwards compatibility (#2095)breakable
option is set on section (#2075, #38)part
, chapterlike
, and hidden
options to arrange_section
methodbackground-color
property on caption (#1995)iconsdir
and having the icontype
file extension (#1770)asciidoctor/pdf/nogmagick
script to prevent Gmagick from handling PNG images (#1687)untitled
option on special section to notitle
notitle
optionnotitle
option (#1213)notitle
option on the preface section (#1786)notitle
option from the first block in the premable to preface section; restore lead role on opening paragraph (#1786)arrange_section
if section title is hiddentheme_font
enclosure around call to start_new_chapter
and start_new_part
layout_
method prefix to inscribe_
in converter (#2099)Released on: 2022-04-28
Released by: @mojavelinux
Release beer: Hop Zombie Red IPA by Lone Tree Brewing
Logs: resolved issues | full diff
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.
Published by mojavelinux over 2 years ago
I'm not even sure where to begin with summarizing this release, which has been in the works for well over two years. While still based on the same technology (Prawn), this release is a drastic improvement over the previous release line (thanks to some clever ingenuity and pure grit). I suppose I should start with the fact that the number of tests increased by almost 1,000 (from 1,032 to 1,890), which now cover 99.5% of the code. You can imagine those increases teased out a lot of bugs, which is reflected in the lengthy CHANGELOG and the 150 resolved issues.
Apart from a plethora of bug fixes, the flagship enhancements this release brings are that blocks are breakable by default, all blocks are arranged using the same logic, extra margin is not added below the last block of a parent, and the theming system is much more comprehensive.
IMPORTANT: You no longer need to declare a dependency on the upstream of the prawn-table gem in your Gemfile. The patch for prawn-table has been moved into Asciidoctor PDF, so you can use the version of prawn-table that is pulled in as a transitive dependency.
Reworking how blocks are arranged was the primary issue that was holding up this release. Previously, when the converter needed to know the boundaries of a block, it would render the block in a scratch document and return its height. This approach had several key flaws. First, the height in the scratch documented didn't always line up with the height of the block when rendered in the primary document, so the border and background would be off. The process also required that blocks be unbreakable by default in order to work reliably. And it didn't account for orphaned block titles. The logic has been completely rewritten to compute the extent of the block (start and end cursor) with intelligent positioning using multiple passes in order to get an accurate measure of the where the block begins and ends. As part of that change, blocks no longer need to be unbreakable, and thus have been changed to be breakable by default. The new logic also ensures that if no content is written on the first page, or only the block title fits, the block will automatically be advanced to the next page (regardless of whether the block is breakable). You can read more about the requirements and design behind this change in #2003 and #2004 (and the batch of related issues resolved by those issues).
As part of the new arrange block logic, the open block now serves as a generic container for keeping chunks of content together that don't themselves support the unbreakable option. And while tables now support the unbreakable option, this is the mechanism used behind the scenes to achieve that behavior.
Another big enhancement that was holding up the release was an overhaul of margin handling. In previous releases, the converter would add a bottom margin to the last block inside of another block or list. There were some hacks in place to minimize this quirk, but many edge cases still slipped through. The margin handling has been rewritten so that the bottom margin is only added to a block if it is followed by another block within the same enclosure (such as inside a sidebar). Top margins have been dropped and all margins are defined from the bottom edge of the block. With this new logic in place, you should no longer expect to see gaps at the bottom of content, and it drastically simplifies both the theme and the converter code.
For those who've been waiting for it, you can now apply a role defined in a theme to a paragraph. The role can be used to control the font properties, text alignment, and text transform. Speaking of the theme, there are many new categories and keys, and several have been renamed for consistency. There are also several new built-in themes for producing print-optimized PDFs and for replacing the bundle serif font (Noto Serif) with the equivalent sans font. Consult the theming guide for details.
On the compliance front, Asciidoctor PDF 2 will require Ruby 2.7 and JRuby 9.2 at a minimum.
Last but not least, during this development cycle, the docs for Asciidoctor moved to https://docs.asciidoctor.org. Thanks to the work by Sarah, the docs for Asciidoctor PDF are being migrated to join the family.
We do not anticipate having many alpha releases or a long prerelease cycle. We're going to give users a chance to try this release so we can uncover any unexpected regressions, errors, or problem areas. If they come up, we will try to address them quickly so that we can turn around a final release in a few weeks.
unbreakable
option on the block to retain the previous "keep together
" behavior (#2004, #578, #509, #240)top-margin
key on block and prose categories in theme; space between delimited blocks and lists now controlled using bottom margins only (#1515)block-anchor-top
key in theme (#2013)start_at
theme key (#1644)after-toc
to the respective start_at
theme key (#1763)abstract-first-line-font-color
keyuntitled
option on sectionpage-layout
attribute in running content so it can be used to select a background per layout (#1570)*
) (#1588)chapter-numeral
attribute in running content on pages in chapter if sectnums
attribute is set (#1373)part-numeral
attribute in running content on pages in part if partnums
attribute is set (#1373)text-left
) or list-text-align
theme key on callout liststext-center
) on block image (#1609)noheader
and/or nofooter
option is set on toc macro (#1378)outline
document attribute is unset (#1619)extends: base
(#1640)index_columns
key (#1663)id
attribute on link macrolink
attribute on icon macro (#1915)title_page
category key (#1754)outlinelevels
attribute on sectionauthor
attribute for PDF info and pdfmark if locked by the API (#1778)!important
(#1800)callout-list-margin-top-after-code
key (#1895)layout_general_heading
to allow extended converter to access node (#1904)Document#authors
to retrieve authors instead of extracting the information from the indexed document attributesarrange_section
method to compute whether section title should be advanced to next page (#2023)callout-list
category in theme to control font properties and item spacing of callout lists (#1722)prose-text-indent-inner
key is set in theme (#2034)Time.parse
is loadedcache-uri
is set but library is not availableicons=font
and admonition_label_min_width
is set in themeallow-uri-read
attribute is not setspecialchars
sub is disabledsection_indent
is positive (#1735)untitled-label
attribute as fallback value for doctitle in running content (#1772)untitled-label
attribute as fallback value for Title field in pdfmark (follow-up to #1772)fit=scale-down
author
attribute in PDF info and pdfmark if authors
attribute is not set (#1922)pdf-folio-placement
setting even when media=prepress
(#1917)pre-wrap
role on phrase (#1927)width
attribute on image has invalid format (#1970)pdf-folio-placement
(#1918)YAML.safe_load
from Ruby stdlib instead of safe_yaml gem
<color>
tag in passthrough content; use <font color="...">
instead (may affect themes)pdf-style
and pdf-stylesdir
attributes (#1827)vertical-spacing
key from the built-in themesoutline-list
category in the theme to list
and map the outline-list-
keys to list-
with warning if found (#1894)literal
category in the theme to codespan
and map the literal-
keys to codespan-
with warning if found (#1796)blockquote
category key in the theme to quote
and map the blockquote-
prefix to quote-
with warning if found (#2054)key
category key in theme to kbd
and map the key-
prefix to kbd-
with warning if found (#2052)uppercase_mb
); multibyte support for upcase, downcase, and capitalize is now provided by corelibReleased on: 2022-04-20
Released by: @mojavelinux
Release beer: Rochefort 10 by Brasserie de Rochefort
Logs: resolved issues | full diff
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.
Published by mojavelinux almost 3 years ago
This is a patch release for the v1.6.x line to fix a regression introduced by upgrading Prawn and to backport the feature to control when the link URI is shown using the show-link-uri
attribute.
show-link-uri
is set (#951)show-link-uri
is unset (#951)PDF::Core.real
and PDF::Core.real_params
to prevent scientific notation ending up in PDF (#1983) (@rillbert)Released on: 2021-12-31
Released by: @mojavelinux
Release beer: Hop Excavator by Our Mutual Friend
Logs: full diff
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.