Как определить собственный макрос asciidoc
Как определить макрос в asciidoc/asciidoctor?
Я буду использовать повторяющийся шаблон во многих частях моего документа, поэтому я хотел бы сделать параметризованную замену, чтобы избежать многократного ввода одного и того же материала.
В частности, у меня есть следующий фрагмент кода asciidoc:
{set:cellbgcolor:grey}
[grid=none, frame=none]
|===
| X >| Y
|===
{set:cellbgcolor!}
И мне нужно поместить его в несколько частей документа с разными подстановками текста вместо X и Y. Как мне этого добиться?
1 ответ
По моему мнению, вы не получаете с Asciidoctor ту гибкость / простоту, которую вы получаете в других механизмах документирования:
- определение команды в LaTeX
- Шаблоны в MediaWiki.
Я думаю, что вы можете работать с макросом включения и переменными в Asciidoctor:
Создайте файл с именем snippet.adoc
(мой пример основан на вашем примере):
{set:cellbgcolor:grey}
[grid=none, frame=none]
|===
| {paramX} >| {paramY}
|===
{set:cellbgcolor!}
В вашем основном документе используйте это так:
== My document
:paramX: lorem
:paramY: ipsum
include::snippet.adoc[]
Lorem ipsum dolore.
:paramX: aaaa
:paramY: bbbb
include::snippet.adoc[]
Lorem ipsum dolore.
При этом асцидоктор может быть продлен. Вы также можете создать свой собственный реальный макрос (написанный на Java или на Ruby), но это требует больше работы. В зависимости от вашего варианта использования, вы можете найти несколько примеров в Интернете.