Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document how to create a new admonition type #9

Closed
paulvickers opened this issue Aug 16, 2014 · 41 comments
Closed

Document how to create a new admonition type #9

paulvickers opened this issue Aug 16, 2014 · 41 comments

Comments

@paulvickers
Copy link

I think it's an extension I need, but I'm not sure how to go about making one. Here's what I need:

I am converting a text book to various e-formats and the book has several in-text devices. Up till now I have been using the built-in admonitions and just created a new stylesheet to use different icons to match what I need. However, it seems to me that rather than subverting the existing admonitions it would be better to create new custom blocks for this project. For example, I need a block that looks and behaves exactly like an admonition except that it should be called thinkspot rather than tip, caution, warning, or note.

Can someone give me a step-by-step on what to do?

Thanks!

@mojavelinux
Copy link
Member

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;
}

@mojavelinux mojavelinux changed the title Tutorial Document how to create a new admonition type Jan 8, 2015
@nathany
Copy link

nathany commented Nov 17, 2015

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.

@mojavelinux
Copy link
Member

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.

@mojavelinux
Copy link
Member

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.

@nathany
Copy link

nathany commented Dec 1, 2015

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

@mojavelinux
Copy link
Member

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.

@nathany
Copy link

nathany commented Dec 6, 2015

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

@mojavelinux
Copy link
Member

mojavelinux commented Dec 6, 2015 via email

@nathany
Copy link

nathany commented Dec 6, 2015

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/

@mojavelinux
Copy link
Member

mojavelinux commented Dec 6, 2015 via email

@nathany
Copy link

nathany commented Dec 6, 2015

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.

@mojavelinux
Copy link
Member

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}

@mojavelinux
Copy link
Member

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

@mojavelinux
Copy link
Member

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.

@mojavelinux
Copy link
Member

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

@mojavelinux
Copy link
Member

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

@mojavelinux
Copy link
Member

It's there now.

@nathany
Copy link

nathany commented Dec 6, 2015

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.

@nathany
Copy link

nathany commented Dec 6, 2015

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)

@mojavelinux
Copy link
Member

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.

@mojavelinux
Copy link
Member

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

@nathany
Copy link

nathany commented Dec 6, 2015

Gotcha. I'll look into it, thanks

@mojavelinux
Copy link
Member

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 :)

@nathany
Copy link

nathany commented Dec 6, 2015

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

@nathany
Copy link

nathany commented Dec 6, 2015

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

@mojavelinux
Copy link
Member

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.

@mojavelinux
Copy link
Member

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

@nathany
Copy link

nathany commented Dec 6, 2015

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

@nathany
Copy link

nathany commented Dec 7, 2015

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.

@mojavelinux
Copy link
Member

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" notifications@github.com 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)
.

@mojavelinux
Copy link
Member

mojavelinux commented Dec 7, 2015 via email

@mojavelinux
Copy link
Member

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

@mojavelinux
Copy link
Member

@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.

@nathany
Copy link

nathany commented Dec 7, 2015

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

@mojavelinux
Copy link
Member

mojavelinux commented Dec 7, 2015 via email

@paulvickers
Copy link
Author

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?
====

@paulvickers
Copy link
Author

paulvickers commented Jul 28, 2016

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
====

@paulvickers
Copy link
Author

Any suggestions on the base64 question?

@kwoot
Copy link

kwoot commented Jun 20, 2021

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. :-)

@mojavelinux
Copy link
Member

@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).

@mojavelinux
Copy link
Member

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants