diff options
| author | Dan Allen <dan.j.allen@gmail.com> | 2022-05-11 01:11:45 -0600 |
|---|---|---|
| committer | Dan Allen <dan.j.allen@gmail.com> | 2022-05-11 01:19:42 -0600 |
| commit | e8831a5f9c82f82dc463a24b2d02b07270d607bd (patch) | |
| tree | d29f24febffc0d1d2c942633ae209af70f1bc3f7 /docs/modules/extend/examples | |
| parent | 96d57921a328fbaa2f077fe6cd597c4458611d67 (diff) | |
update extended converter that avoids a page break after a heading and use it in the test case
Diffstat (limited to 'docs/modules/extend/examples')
| -rw-r--r-- | docs/modules/extend/examples/pdf-converter-avoid-break-after-heading.rb | 32 | ||||
| -rw-r--r-- | docs/modules/extend/examples/pdf-converter-avoid-break-after-section-title.rb | 26 |
2 files changed, 32 insertions, 26 deletions
diff --git a/docs/modules/extend/examples/pdf-converter-avoid-break-after-heading.rb b/docs/modules/extend/examples/pdf-converter-avoid-break-after-heading.rb new file mode 100644 index 00000000..a024cdf3 --- /dev/null +++ b/docs/modules/extend/examples/pdf-converter-avoid-break-after-heading.rb @@ -0,0 +1,32 @@ +class PDFConverterAvoidBreakAfterSectionTitle < (Asciidoctor::Converter.for 'pdf') + register_for 'pdf' + + def arrange_heading node, title, opts + return if y >= page_height / 3 # <1> + orphaned = nil + dry_run single_page: true do # <2> + start_page = page + theme_font :heading, level: opts[:level] do + if opts[:part] + ink_part_title node, title, opts # <3> + elsif opts[:chapterlike] + ink_chapter_title node, title, opts # <3> + else + ink_general_heading node, title, opts # <3> + end + end + if page == start_page + page.tare_content_stream + orphaned = stop_if_first_page_empty do # <4> + if node.context == :section + traverse node + else # discrete heading + convert (siblings = node.parent.blocks)[(siblings.index node).next] + end + end + end + end + start_new_page if orphaned # <5> + nil + end +end diff --git a/docs/modules/extend/examples/pdf-converter-avoid-break-after-section-title.rb b/docs/modules/extend/examples/pdf-converter-avoid-break-after-section-title.rb deleted file mode 100644 index 28f01c78..00000000 --- a/docs/modules/extend/examples/pdf-converter-avoid-break-after-section-title.rb +++ /dev/null @@ -1,26 +0,0 @@ -class PDFConverterAvoidBreakAfterSectionTitle < (Asciidoctor::Converter.for 'pdf') - register_for 'pdf' - - def arrange_section sect, title, opts = {} - return if @y >= (@margin_box.absolute_top / 3) # <1> - orphaned = nil - dry_run single_page: true do # <2> - start_page = page - theme_font :heading, level: opts[:level] do - if opts[:part] - ink_part_title sect, title, opts # <3> - elsif opts[:chapterlike] - ink_chapter_title sect, title, opts # <3> - else - ink_general_heading sect, title, opts # <3> - end - end - if page == start_page - page.tare_content_stream - orphaned = stop_if_first_page_empty { traverse sect } # <4> - end - end - start_new_page if orphaned # <5> - nil - end -end |
