asciidoctor / asciidoctor-extensions-lab

A lab for testing and demonstrating Asciidoctor extensions. Please do not use this code in production. If you want to use one of these extensions in your application, create a new project, import the code, and distribute it as a RubyGem. You can then request to make it a top-level project under the Asciidoctor organization.
Other
104 stars 101 forks source link

Section offset plugin fails when creating PDF #122

Closed arosien closed 3 years ago

arosien commented 3 years ago

The sectnumoffset extension works for me when outputting HTML, but gives me this error when outputting PDF:

/usr/lib/ruby/gems/2.6.0/gems/rouge-3.15.0/lib/rouge.rb:55:in `block in <top (required)>': asciidoctor: FAILED: /documents/book/excerpt-concurrent-state.adoc: Failed to load AsciiDoc document - uninitialized constant Rouge::Lexers (NameError)
        from /usr/lib/ruby/gems/2.6.0/gems/rouge-3.15.0/lib/rouge.rb:55:in `each'
        from /usr/lib/ruby/gems/2.6.0/gems/rouge-3.15.0/lib/rouge.rb:55:in `<top (required)>'
        from /usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:130:in `require'
        from /usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:130:in `rescue in require'
        from /usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:34:in `require'
        from /usr/lib/ruby/gems/2.6.0/gems/polyglot-0.3.5/lib/polyglot.rb:65:in `require'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/rouge_ext.rb:2:in `<top (required)>'
        from /usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from /usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from /usr/lib/ruby/gems/2.6.0/gems/polyglot-0.3.5/lib/polyglot.rb:65:in `require'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/helpers.rb:27:in `require_library'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/syntax_highlighter/rouge.rb:78:in `load_library'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/syntax_highlighter/rouge.rb:74:in `library_available?'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/syntax_highlighter/rouge.rb:12:in `highlight?'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/substitutors.rb:1288:in `commit_subs'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/parser.rb:918:in `next_block'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/parser.rb:379:in `next_section'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/parser.rb:364:in `next_section'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/parser.rb:364:in `next_section'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/parser.rb:364:in `next_section'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/parser.rb:97:in `parse'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/document.rb:549:in `parse'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/load.rb:83:in `load'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:78:in `convert'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:183:in `block in convert_file'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:183:in `open'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:183:in `convert_file'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/cli/invoker.rb:128:in `block in invoke!'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/cli/invoker.rb:111:in `each'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/cli/invoker.rb:111:in `invoke!'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/bin/asciidoctor:15:in `<top (required)>'
        from /usr/bin/asciidoctor:23:in `load'
        from /usr/bin/asciidoctor:23:in `<main>'
/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- rouge (LoadError)
        from /usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from /usr/lib/ruby/gems/2.6.0/gems/polyglot-0.3.5/lib/polyglot.rb:65:in `require'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/rouge_ext.rb:2:in `<top (required)>'
        from /usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from /usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from /usr/lib/ruby/gems/2.6.0/gems/polyglot-0.3.5/lib/polyglot.rb:65:in `require'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/helpers.rb:27:in `require_library'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/syntax_highlighter/rouge.rb:78:in `load_library'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/syntax_highlighter/rouge.rb:74:in `library_available?'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/syntax_highlighter/rouge.rb:12:in `highlight?'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/substitutors.rb:1288:in `commit_subs'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/parser.rb:918:in `next_block'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/parser.rb:379:in `next_section'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/parser.rb:364:in `next_section'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/parser.rb:364:in `next_section'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/parser.rb:364:in `next_section'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/parser.rb:97:in `parse'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/document.rb:549:in `parse'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/load.rb:83:in `load'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:78:in `convert'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:183:in `block in convert_file'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:183:in `open'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:183:in `convert_file'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/cli/invoker.rb:128:in `block in invoke!'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/cli/invoker.rb:111:in `each'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/lib/asciidoctor/cli/invoker.rb:111:in `invoke!'
        from /usr/lib/ruby/gems/2.6.0/gems/asciidoctor-2.0.10/bin/asciidoctor:15:in `<top (required)>'
        from /usr/bin/asciidoctor:23:in `load'
        from /usr/bin/asciidoctor:23:in `<main>'

I use docker-asciidoctor and am running asciidoctor-pdf with additional flags -r ./lib/sectnumoffset-treeprocessor.rb -a sectnums -a sectnumoffset=9 --trace.

If I remove those extra flags the PDF renders fine, so somehow this extension is interfering somehow, maybe some ordering issue?

(originally posted in asciidoctor/asciidoctor-pdf#166)

mojavelinux commented 3 years ago

This is due to a conflict between Asciidoctor core and an older version of Rouge when the include Asciidoctor statement is used (by the extension). You can fix it by upgrading Rouge to the latest version (see https://rubygems.org/gems/rouge). A corresponding fix in Asciidoctor will be in the 2.0.11 release. See https://github.com/asciidoctor/asciidoctor/issues/3623

arosien commented 3 years ago

Thanks!

I'm also a bit out of date with the docker image:

REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
asciidoctor/docker-asciidoctor   latest              0c383e26e3d9        7 months ago        428MB

so I'll see if updating that fixes it.

arosien commented 3 years ago

so I'll see if updating that fixes it.

It does... excellent. Thanks for being so responsive!

mojavelinux commented 3 years ago

Great news! Glad to help.