Code Monkey home page Code Monkey logo

Comments (41)

mojavelinux avatar mojavelinux commented on August 20, 2024 9

When you only need a change that can be controlled by the stylesheet, I think the best approach is to simply append a role in the AsciiDoc content and then append the necessary CSS to match. In this case, we should view the admonition types as broad categories or levels that can be "specialized" using a role. thinkspot (or just think) might fit either with tip or note. You'd type it as:

[NOTE.think]
====
A thinkspot admonition.
====

In HTML, that will output:

<div class="admonitionblock note think">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>A thinkspot admonition.</p>
</div>
</td>
</tr>
</table>
</div>

If you want the value of the title attribute to be “Thinkspot” instead of “Note”, you can set the caption too.

[NOTE.think,caption=Thinkspot]

You can then customize the icon using CSS, which can be appended using docinfo or a custom stylesheet.

.admonitionblock.think td.icon .icon-note:before {
  content:"\f0eb";
  color:#000;
}

from asciidoctor-extensions-lab.

nathany avatar nathany commented on August 20, 2024 6

How would I add additional admonitions, like [QUESTION] and customize the Font Awesome icon? I'd also like it to work in PDFs generated with asciidoctor-pdf.

from asciidoctor-extensions-lab.

nathany avatar nathany commented on August 20, 2024 2

Sweet. The PDF looks pretty great.

sample

There are some spots where it messes up, like when I have a quote or TIP inside the admonition. Those work fine when hijacking a different admonition, so it must be something in the CustomAdmonitionBlock code. Notice the byline is repeated below.

malacandra

[EXPERIMENT]
.Experiment: malacandra.go
====
[quote, C.S. Lewis, Out of the Silent Planet]
"Malacandra is much nearer than that: we shall make it in about twenty-eight days."

Malacandra is another name for Mars in a SciFi trilogy by C.S. Lewis. Write a program to determine how fast their ship would need to travel in order to reach Malacandra in 28 days. Assume a distance of 56,000,000 km.
====

Whether or not I should be doing that sorta thing is a whole other question.

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024 1

That's also how you can customize all the icons in Asciidoctor PDF.

Technically, you don't even need a custom admonition type if you just hijack the icon :)

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024 1

@kwoot I encourage you to direct your question to https://asciidoctor.zulipchat.com, where we can discuss usage scenarios as a community (without risk of going off topic).

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

If you add a new admonition type, then you'd technically be introducing a new type of block (named QUESTION, for instance), which would need to be handled by a custom block extension. You could then map the result back to an admonition node so that the built-in handler takes care of generating the output for it.

The icon is controlled by the "name" attribute (e.g., "icon-#{node.attr 'name'}"). It doesn't validate the name value, so it can be any value you want. You'd still need to add CSS to map that class to a Font Awesome icon.

The fact that admonition types are controlled by the block name is kind of strange. In UniDoc, I'd actually like to see the admonition type be a special attribute, something like:

[!QUESTION]
====
...
====

That way, we aren't introducing new block types for each type of admonition. But that's a separate discussion.

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

I thought of a way to mark this up for UniDoc (possibly supported in Asciidoctor before then). We overload the block title and allow a special prefix to indicate this is an admonition.

.QUESTION: optional title
====
...
====

That way, we aren't introducing a new block type for each admonition type. And it's much closer to the paragraph version (e.g., QUESTION: content...). You could technically implement this today using a Treeprocessor.

from asciidoctor-extensions-lab.

nathany avatar nathany commented on August 20, 2024

Thanks. Curious, what is this UniDoc thing you speak of? :-)

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

UniDoc is an (eventual) goal of making a specification for AsciiDoc to make it easier to create tools and other implementations and to refine the syntax where necessary. For more info, see https://github.com/asciidoctor/asciidoctor/wiki/AsciiDoc-Specification-(aka-UniDoc)-Planning.

from asciidoctor-extensions-lab.

nathany avatar nathany commented on August 20, 2024

Requiring a custom block type does seem like a bit much for adding a new admonition type. That I agree with.

I would basically just like to get rid of this warning:

asciidoctor: WARNING: ch01.adoc: line 93: invalid style for example block: QUESTION

If I do something like the README (which probably isn't the processing I want it to do) and require my file on the command line, that warning is still there.

-r ./lib/question-block.rb
RUBY_ENGINE == 'opal' ? (require 'question-block/extension') : (require_relative 'question-block/extension')

Extensions.register do
  block QuestionBlock
end
class QuestionBlock < Extensions::BlockProcessor
  use_dsl
  named :question
  on_context :open

  def process parent, reader, attrs
    create_paragraph parent, reader.lines, attrs
  end
end

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

from asciidoctor-extensions-lab.

nathany avatar nathany commented on August 20, 2024

Sure. Am I missing something here?

[QUESTION]
====
1. How can you save your work when using The Go Playground?
====

Also, my full command looks like this, in case it's just not loading for some reason:

asciidoctor -r asciidoctor-pdf -r ./lib/sectnumoffset-treeprocessor.rb -r ./lib/question-block.rb -b pdf -a source-highlighter=coderay -a pdf-fontsdir=resources/fonts -a pdf-style=resources/themes/manning-theme.yml manuscript/*.adoc -D pdf/

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

from asciidoctor-extensions-lab.

nathany avatar nathany commented on August 20, 2024

Made the change, I still get the warning when generating a pdf.

Maybe I shouldn't worry about it. As I understand it, my publisher is going to handle customizing the icons when they convert to DocBook. So I don't need it to look exactly right, which just means I get a warning when generating.

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

On a completely unrelated note, why not use the Q&A syntax for this?

[qanda]
How can you save your work when using The Go Playground?:: {empty}

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

...btw, I'm testing the extension...

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

Aha! The style is case sensitive. The following will work.

require 'asciidoctor/extensions'

class QuestionBlock < Asciidoctor::Extensions::BlockProcessor
  use_dsl
  named :QUESTION
  on_context :example 

  def process parent, reader, attrs
    create_paragraph parent, reader.lines, attrs
  end
end

Asciidoctor::Extensions.register do
  block QuestionBlock 
end

Btw, you probably want to create an admonition block instead of a paragraph in the process method. I'll try to fill in the details, then we can check this into the extension lab.

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

Voila!

require 'asciidoctor/extensions'

class QuestionBlock < Asciidoctor::Extensions::BlockProcessor
  use_dsl
  named :QUESTION
  on_context :example

  def process parent, reader, attrs
    attrs['name'] = 'question'
    attrs['caption'] = 'Question'
    admon = create_block parent, :admonition, nil, attrs, content_model: :compound
    parse_content admon, reader
    admon
  end
end

class QuestionBlockCss < Asciidoctor::Extensions::DocinfoProcessor
  use_dsl

  def process doc
    '<style>
.admonitionblock td.icon .icon-question:before{content:"\f128";color:#000}
</style>'
  end
end

Asciidoctor::Extensions.register do
  block QuestionBlock
  docinfo_processor QuestionBlockCss
end

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

I'll put this into the extensions lab so we can hack on it there.

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

It's there now.

from asciidoctor-extensions-lab.

nathany avatar nathany commented on August 20, 2024

Thanks. It works. I haven't done any custom icons in the PDF (for TIP, etc.) but this works as well as those ones.

As for [qanda], I'm using it for the answers at the end of the chapter, but never thought to use them for questions by themselves, which are scattered across several pages.

from asciidoctor-extensions-lab.

nathany avatar nathany commented on August 20, 2024

The combination of -r ./lib/custom-admonition-block.rb and -a icons=font result in a stack trace with asciidoctor-pdf

/usr/local/lib/ruby/gems/2.2.0/gems/asciidoctor-pdf-1.5.0.alpha.10/lib/asciidoctor-pdf/converter.rb:439:in
 `block (4 levels) in convert_admonition': undefined method `[]' for nil:NilClass (NoMethodError)

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

When using Asciidoctor PDF, you need to define an admonition type for question in the custom theme. See https://github.com/asciidoctor/asciidoctor-pdf/blob/master/docs/theming-guide.adoc#admonition. Otherwise, the icon resolves to nil.

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

The HTML5 backend just relies on the stylesheet to sort out the icon, but Asciidoctor PDF actually has to look it up.

from asciidoctor-extensions-lab.

nathany avatar nathany commented on August 20, 2024

Gotcha. I'll look into it, thanks

from asciidoctor-extensions-lab.

nathany avatar nathany commented on August 20, 2024

Hah. Guess I could've just hijacked the warning icon or something. Doh.

I must be doing something wrong, as I don't quite understand the layout of the YAML. I either get that nil error or a /theme_loader.rb:90:inprocess_entry': undefined method map' for 0:Fixnum error

admonition:
  border_color: $base_border_color
  border_width: $base_border_width
  admonition_icon_note_stroke_color: 000000
  admonition_icon_question_name: fa-question
  admonition_icon_question_stroke_color: 000000
  admonition_icon_question_size: 24
  admonition_icon_experiment_name: fa-flask
  admonition_icon_experiment_stroke_color: 000000
  admonition_icon_experiment_size: 24

from asciidoctor-extensions-lab.

nathany avatar nathany commented on August 20, 2024

no change with

admonition:
  admonition_icon_tip_name: fa-question

error asciidoctor-pdf/theme_loader.rb:90:in 'process_entry': undefined methodmap' for "fa-question":String (NoMethodError)` for either:

admonition_icon_tip_name: fa-question

or

admonition:
  icon_tip_name: fa-question

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

First, it has to be defined with the other admonition settings or else the theme is incomplete.

admonition:
  border_color: $base_border_color
  border_width: $base_border_width
  padding: [0, $horizontal_rhythm, 0, $horizontal_rhythm]
  icon:
    question:
      name: fa-question
      stroke_color: 000000
      size: 14

But that brings us to a separate problem. The converter attempts to merge the theme data with the built-in defaults, but the built-in default is nil. So a change is needed to Asciidoctor PDF at line https://github.com/asciidoctor/asciidoctor-pdf/blob/master/lib/asciidoctor-pdf/converter.rb#L1786.

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

With that change to Asciidoctor PDF, it works. I'll commit it. You'll need to use HEAD.

from asciidoctor-extensions-lab.

nathany avatar nathany commented on August 20, 2024

Hm. I don't suppose putting this in my Gemfile and running bundle update is enough to get it working?

gem 'asciidoctor-pdf', github: 'asciidoctor/asciidoctor-pdf'

obviously not, it's still using alpha.10. hmmmm

/usr/local/lib/ruby/gems/2.2.0/gems/asciidoctor-pdf-1.5.0.alpha.10/lib/asciidoctor-pdf/converter.rb:1786:in `admonition_icon_data': undefined method `merge' for nil:NilClass (NoMethodError)
converter.rb:1786:in `admonition_icon_data': undefined method `merge' for nil:NilClass (NoMethodError)

UPDATE: -r asciidoctor-pdf changed to a specific path -r ~/src/github.com/asciidoctor/asciidoctor-pdf/lib/asciidoctor-pdf works

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

The implementation is a bit naive at the moment. Now that we have the
basics down, we can fill in the gaps so it handles all the cases.
Le 6 déc. 2015 5:20 PM, "Nathan Youngman" [email protected] a
écrit :

Sweet. The PDF looks pretty great.

[image: sample]
https://cloud.githubusercontent.com/assets/4566/11616600/581c4644-9c3c-11e5-8949-80e8ac067395.png

There are some spots where it messes up, like when I have a quote or TIP
inside the admonition. Those work fine when hijacking a different
admonition, so it must be something in the CustomAdmonitionBlock code.
Notice the byline is repeated below.

[image: malacandra]
https://cloud.githubusercontent.com/assets/4566/11616640/84afed0e-9c3d-11e5-86a8-fe7c360ef54e.png

[EXPERIMENT].Experiment: malacandra.go====[quote, C.S. Lewis, Out of the Silent Planet]"Malacandra is much nearer than that: we shall make it in about twenty-eight days."Malacandra is another name for Mars in a SciFi trilogy by C.S. Lewis. Write a program to determine how fast their ship would need to travel in order to reach Malacandra in 28 days. Assume a distance of 56,000,000 km.====

Whether or not I should be doing that sorta thing is a whole other
question.


Reply to this email directly or view it on GitHub
#9 (comment)
.

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

Fixed. Turns out I couldn't remember how to create a block extension right myself :)

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

@nathany When you use a GitHub reference in your Gemfile, you have to run everything using bundle exec. Otherwise, Ruby doesn't see the clone.

from asciidoctor-extensions-lab.

nathany avatar nathany commented on August 20, 2024

Hah. I forgot about bundle exec. It's been a while. Everything looks to be working. Thanks for helping me out on your Sunday.

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

from asciidoctor-extensions-lab.

paulvickers avatar paulvickers commented on August 20, 2024

Thank you both for this. I have successfully added the four new blocks I need into a separate .rb file. Works a treat. The reason I wanted new blocks is to save having to remember which admonition I had mapped to thinkspot, etc. Now all I need to do is

[THINKSPOT]
====
1. How can you save your work when using The Go Playground?
====

from asciidoctor-extensions-lab.

paulvickers avatar paulvickers commented on August 20, 2024

One more question. One of my new blocks uses a custom icon which I had got to work before by hijacking the icon in the master css file thus:

.admonitionblock td.icon .icon-warning:before {content: url('data:image/png;base64,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TUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDA3LTA2LTIwVDIwOjAxOjU5PC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgNy4wPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjMwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6UGhvdG9tZXRyaWNJbnRlcnByZXRhdGlvbj4yPC90aWZmOlBob3RvbWV0cmljSW50ZXJwcmV0YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjMwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NzIwMDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj44NDU3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'); } /* Brian QandA */

Unfortunately, when I try this in the new block definition file:

class BrianFAQBlockCss < Asciidoctor::Extensions::DocinfoProcessor
  use_dsl

  def process doc
    '<style>
.admonitionblock td.icon .icon-brianfaq:before {content: url('data:image/png;base64,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TUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDA3LTA2LTIwVDIwOjAxOjU5PC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgNy4wPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjMwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6UGhvdG9tZXRyaWNJbnRlcnByZXRhdGlvbj4yPC90aWZmOlBob3RvbWV0cmljSW50ZXJwcmV0YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjMwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NzIwMDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj44NDU3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'); }
</style>'
  end

It throws errors when I try to run it through asciidoctor. Can I not use base64 images this way?

Also, how do I get the new blocks to work as paragraphs too? E.g.

THINKSPOT: This is a think spot

Rather than always having to use block mode:

[THINKSPOT]
====
This is a think spot
====

from asciidoctor-extensions-lab.

paulvickers avatar paulvickers commented on August 20, 2024

Any suggestions on the base64 question?

from asciidoctor-extensions-lab.

kwoot avatar kwoot commented on August 20, 2024

As an add-on question to the lovely discussion above. How hard is it to make a custom admonition block optional? So, if attribute "Teacher" is set, then all "Teacher" admonition blocks are included, otherwise they're not. In usecase lingo: An an author of school books I would like to have one source files that an be processed to a students- and to a teachers-edition (with extra included blocks to guide/hint the teaching process). I know I can create conditional text and that would work, but I' m just spoiled by all the fancy stuff Asciidoctor can do for me. :-)

from asciidoctor-extensions-lab.

mojavelinux avatar mojavelinux commented on August 20, 2024

There is a custom admonition block extension in this lab. That's as far as we are going to take it here.

from asciidoctor-extensions-lab.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.