Возможно ли иметь модульную книгу AsciiDoc (которая состоит из нескольких файлов)?

Учитывая, что книга в формате DocBook может быть выполнена "модульным" способом, я надеялся, что смогу с аналогичным положением с AsciiDoc и разделять главы и разделы первого уровня в отдельных файлах. К сожалению, документация об этом ничего не говорит. Единственное возможное решение, которое я вижу до сих пор, - написать собственный препроцессор AsciiDoc, который объединит всю "часть" -files и сгенерирует книгу. Кто-нибудь решил эту проблему?

Ответ 1

Два примера пути из cheatsheet asciidoc: http://powerman.name/doc/asciidoc

include::footer.txt[]

или

[source,perl]
----
include::script.pl[]
----

Ответ 2

Я создал шаблон книги, который я использую в книге, вы можете найти здесь: asciidoc-book-template-with-rake-and-github

= Nome da disciplina
:doctype: book
:lang: pt-BR
:ascii-ids:
:showcomments:
:gitrepo: https://github.com/xxx/yyy
:code_dir: code
:image_dir: imagens

include::capitulos/prefacio.adoc[]

////
= Nome da Parte =
////

include::capitulos/cap1.adoc[]
include::capitulos/feedback.adoc[]
include::capitulos/cap2.adoc[]
include::capitulos/feedback.adoc[]
include::capitulos/cap3.adoc[]
include::capitulos/feedback.adoc[]
// ...
include::capitulos/glossario.adoc[]
include::capitulos/respostas.adoc[]

////
Always end files with a blank line to avoid include problems.
////

Я не разделяю главу на большее количество файлов, потому что, когда вы включаете файл, asciidoc берет включенный путь к файлу для родительского элемента new, смотрите это дерево:

.
|-- capitulos
|   |-- cap1.adoc
|   |-- cap2.adoc
|   |-- cap3.adoc
|   |-- code
|   |   '-- cap1
|   |       |-- helloworld.c
|   |       '-- Makefile
|   |-- feedback.adoc
|   |-- glossario.adoc
|   |-- prefacio.adoc
|   |-- respostas.adoc
|   '-- symbols.adoc
|-- docinfo.xml
|-- livro.asc
'-- wip.adoc
  • Когда я нахожусь в файле livro.adoc и мне, что включить feedback.adoc я буду использовать include::capitulos/feedback.adoc[]
  • Но если я нахожусь в файле cap1.adoc вам придется использовать include::feedback.adoc[] (поскольку они находятся в одном каталоге).

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

Ответ 3

Один из вариантов приведен в руководстве пользователя: http://www.methods.co.nz/asciidoc/userguide.html#X90

Другой вариант был бы написать сценарий, который бы cat все файлы детали вместе затем передать результат в asciidoc с использованием стандартного ввода. Это может выглядеть как cat part1.txt part2.txt part3.txt | asciidoc - cat part1.txt part2.txt part3.txt | asciidoc -. Обратите внимание, что иногда возникают проблемы при предоставлении ввода через stdin. Также обратите внимание, что в конце каждого файла детали могут потребоваться дополнительные разрывы строк, чтобы cat влияла на форматирование.

Ответ 4

Вот еще один пример, если кто-то ищет, как это сделать.

Book Title Goes Here
====================
Author Name
v1.1, 2012-11
:doctype: book
:icons:
:max-width: 45em

// Push titles down one level
:leveloffset: 1
include::chapter1.asciidoc[tabsize=4]

include::chapter2.asciidoc[]

include::chapter3.asciidoc[]

include::../../common/appendix/MigrationNotes.asciidoc[]

include::glossary.asciidoc[]

// Return to normal title levels
:leveloffset: 0

Index
=====