Учитывая, что книга в формате DocBook может быть выполнена "модульным" способом, я надеялся, что смогу с аналогичным положением с AsciiDoc и разделять главы и разделы первого уровня в отдельных файлах. К сожалению, документация об этом ничего не говорит. Единственное возможное решение, которое я вижу до сих пор, - написать собственный препроцессор AsciiDoc, который объединит всю "часть" -files и сгенерирует книгу. Кто-нибудь решил эту проблему?
Возможно ли иметь модульную книгу AsciiDoc (которая состоит из нескольких файлов)?
Ответ 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
=====