是否可以使用模块化的AsciiDoc书(由少量文件组成)?

时间:2012-04-04 14:14:54

标签: asciidoc

考虑到DocBook格式的书籍可以以“模块化”方式完成,我希望我可以与AsciiDoc类似,并将章节和第一级部分分开放在不同的文件中。不幸的是,文档没有说明这一点。到目前为止,我看到的唯一可能的解决方案是编写我自己的AsciiDoc预处理器,它将合并所有“部分”文件并生成书。 有人现在解决了这个问题吗?

4 个答案:

答案 0 :(得分:14)

asciidoc cheatsheet的两个示例方式:http://powerman.name/doc/asciidoc

include::footer.txt[]

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

答案 1 :(得分:11)

我已经设置了一本我在书中使用的图书模板,你可以在这里找到它: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将包含的文件路径作为新包含的父项,看看这个树:

.
|-- 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[](因为它们位于同一目录中)。

我认为将所有包含放在同一个地方更容易,它对我有用。我只使用其他方式包含代码。

答案 2 :(得分:5)

以下是另一个例子,如果有人正在考虑如何做到这一点。

Book Title Goes Here
====================
Author's 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
=====

答案 3 :(得分:4)

用户指南中介绍了一个选项:http://www.methods.co.nz/asciidoc/userguide.html#X90

另一种选择是编写一个脚本,将cat所有部分文件放在一起,然后使用stdin将结果传递给asciidoc。这可能看起来像cat part1.txt part2.txt part3.txt | asciidoc -。请注意,有时通过stdin提供输入时会出现问题。另请注意,每个零件文件末尾可能需要额外的换行符,以防止cat影响格式化。