2016-11-07 3 views
1

Я пытаюсь создать простой макрос, чтобы сделать текстовый элемент в красном asciidoctor. Ниже не работает:использование ролей в макросах asciidoctor?

:redtext: [red]#some important text in red that occurs a lot# 

{redtext} 

или еще проще, например:

:redcross: [red]#✘# 

Я не ясно, о правилах для того, что может и не может быть заменен макросом. Руководство пользователя asciidoctor имеет пробел для макросов в настоящее время (http://asciidoctor.org/docs/user-manual/#macros). Руководство asciidoc (http://www.methods.co.nz/asciidoc/chunked/ch21.html) не так ясно, но может не применяться к asciidoctor в любом случае.

Относительно неотвеченного вопроса является Resuable markup fragments with Asciidoctor. Связанный с этим вопрос, который предполагает использование, включает в себя то, что является излишним для этого.

Каковы ограничения макросов?

ответ

0

Я думаю, что включает в себя работу достаточно хорошо. У нас есть один glossary.asciidoc файла, содержащего все повторно используемые фрагменты, например:

tag::redtext[] 
[red]#some important text in red that occurs a lot# 
end::redtext[] 

В index.asciidoc вы можете добавить немного помощника:

:g: glossary.asciidoc 

Тогда везде, где вам нужен этот фрагмент:

include::{g}[tag=redtext] 
+0

Это вводит несколько новых проблем: * The не включает могут быть использованы только в начале строки * Ваш документ уже не один исходный файл * включаемой почти так же многословен, как текст, я хочу, чтобы включить. –

1

То, что вы определили, не является макросом, это атрибут. (Когда вы его используете, это называется ссылкой на атрибут).

Вы можете выполнить замену в определении атрибута с помощью макроса inline pass. В целевой позиции он принимает список замещаемых имен (или букв подстановки), разделенных запятыми.

В вашем случае, вы можете написать:

:redtext: pass:q[[red]#some important text in red that occurs a lot#] 

Соответствующая часть:

pass:q[...] 

См substitutions in an attribute entry подробности.

Смежные вопросы