как определить собственный макрос asciidoc

Как определить макрос в asciidoc/asciidoctor?

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

В частности, у меня есть следующий фрагмент asciidoc:

{set:cellbgcolor:grey}
[grid=none, frame=none]
|===
| X >| Y
|===
{set:cellbgcolor!}

И мне нужно разместить его в нескольких частях документа с разными заменами текста вместо X и Y. Как мне этого добиться?


person igagis    schedule 19.05.2016    source источник


Ответы (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.

При этом asciidoctor может быть продлен. Вы также можете создать свой собственный реальный макрос (написанный на Java или на Ruby), но это потребует дополнительной работы. В зависимости от вашего варианта использования вы можете найти несколько примеров в Интернете.

person Jmini    schedule 23.05.2016