Asciidoctor: активировать подстановку в атрибутах CLI

Кажется, встроенный макрос 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} *world*]

Что я могу сделать, чтобы заставить его работать?

Чтобы добавить немного контекста, я планирую использовать antora для написания документации к программному обеспечению, которое я разрабатываю. Я хотел бы определить атрибуты в antora-playbook.yml или antora.yml, чтобы они действовали как «латексные макросы».


person janou195    schedule 27.08.2020    source источник


Ответы (1)


Атрибуты, указанные в командной строке, обрабатываются как строки, а не как разметка Asciidoc. Это означает, что макрос pass не обрабатывается.

Однако по умолчанию атрибуты, указанные в командной строке, переопределяют атрибуты, указанные в документе. Таким образом, вы можете использовать свой документ, как описано выше, с включенными определениями атрибутов, а затем запустить:

asciidoctor-pdf -a foo=stable foo.adoc

Определение атрибута foo в командной строке переопределяет определение в документе, и результатом является hello stable world.

person eskwayrd    schedule 01.09.2020
comment
Да, но я не хочу, чтобы атрибуты были указаны в документе (чтобы «централизовать» их определения), поэтому я хотел бы иметь «бар» также в CLI. - person janou195; 03.09.2020
comment
Вы можете указать строковые значения для атрибутов в командной строке. Вы не можете указать разметку Asciidoc в качестве значения атрибута в командной строке. Для достижения желаемого потребуется изменение кода, и его может быть сложно реализовать, не вводя неожиданное поведение в существующий рабочий процесс производства документации. Запрос на вытягивание приветствуется. - person eskwayrd; 10.09.2020