Как определить собственный макрос 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), но это требует больше работы. В зависимости от вашего варианта использования, вы можете найти несколько примеров в Интернете.

Другие вопросы по тегам