Как я могу преобразовать коллекцию файлов asciidoc в единый файл HTML?

В настоящее время мы используем формат asciidoc для документирования соответствующей информации о наших продуктах - каждый информационный раздел хранится в виде файлов adoc. Затем мы используем make-файл для запуска инструмента asciidoctor для создания html-файлов для каждого измененного файла adoc.

Однако я бы хотел объединить все файлы adoc в один унифицированный файл html.

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

asciidoctor --doctype=book --out-file=book.html file1.adoc file2.adoc dir1/file3.adoc

Это приводит к тому, что последний файл adoc (dir / file3.adoc) составляет файл book.html, вместо того, чтобы включать все указанные файлы adoc.


person HiDefLoLife    schedule 02.09.2020    source источник


Ответы (1)


Вам нужно будет объединить файлы в один. Упрощенный подход заключался бы в следующем:

cat *.adoc > all_in_one.adoc

К сожалению, один файл Asciidoc может иметь только один заголовок верхнего уровня. Каждый из ваших существующих файлов Asciidoc, вероятно, уже имеет заголовок верхнего уровня.

Я бы предложил создать мастер-документ, который использует макрос include для включения содержимого каждого файла. Вы можете использовать атрибут leveloffset в каждом включении, чтобы предотвратить предупреждения о нескольких заголовках верхнего уровня.

Например, вы можете собрать все имена файлов Asciidoc в один файл, например:

find . -name '*.adoc' > all_in_one.adoc

Затем отредактируйте файл, который может выглядеть так:

./a.adoc
./B/b.adoc
./c.adoc
...

Примерно так:

= Top-level title

include::./a.adoc[leveloffset=1]
include::./B/b.adoc[leveloffset=1]
include::./c.adoc[leveloffset=1]
...

Еще одна проблема: если есть несколько заголовков разделов с одинаковым идентификатором или одним и тем же именем и в которых используется автоматически сгенерированный идентификатор, вы увидите предупреждения о id assigned to section already in use. Вам нужно будет добавить собственный идентификатор или настроить текст заголовков, чтобы он отличался, если это необходимо.

person eskwayrd    schedule 03.09.2020