#attributes #asciidoc #asciidoctor #antora
#атрибуты #asciidoc #asciidoctor #antora
Вопрос:
Кажется, что встроенный макрос pass
не работает для атрибутов CLI.
Если я отрисовываю следующий фрагмент:
:foo: crazy
:bar: pass:q,a[{foo} *world*]
hello {bar}
Я получаю то, что ожидаю: привет, сумасшедший мир
Но если я передам два атрибута в CLI ( asciidoctor-pdf -a foo=crazy -a bar='pass:q,a[{foo} *world*]' foo.adoc
), это не сработает:
приветственный переход: q, a[{foo} * мир *]
Что я могу сделать, чтобы это заработало?
Чтобы добавить немного контекста, я планирую использовать antora для написания документации ПО, которое я разрабатываю. Я хотел бы определить атрибуты в antora-playbook.yml
или antora.yml
, чтобы они действовали как «макросы latex».
Ответ №1:
Атрибуты, указанные в командной строке, обрабатываются как строки, а не как разметка Asciidoc. Это означает, что pass
макрос не обрабатывается.
Однако по умолчанию атрибуты, указанные в командной строке, переопределяют атрибуты, указанные в документе. Итак, вы можете использовать свой документ, как описано выше, с включенными определениями атрибутов, а затем вы можете запустить:
asciidoctor-pdf -a foo=stable foo.adoc
Определение в командной строке для foo
атрибута переопределяет определение в документе, и результатом является hello stable world
.
Комментарии:
1. Да, но моя точка зрения заключается не в том, чтобы иметь атрибуты, указанные в документе (чтобы «централизовать» их определения), поэтому я хотел бы также иметь «bar» в командной строке
2. Вы можете указать строковые значения для атрибутов в командной строке. Вы не можете указать разметку Asciidoc в качестве значения атрибута в командной строке. Для достижения желаемого потребуется изменение кода, и его может быть сложно реализовать без внесения неожиданного поведения в существующий рабочий процесс создания документа. Запрос на извлечение приветствовался бы.