考虑到 DocBook 格式的书可以以“模块化”方式完成,我希望我可以使用 AsciiDoc 进行类似的操作,并将章节和第一级部分拆分到单独的文件中。不幸的是,文档没有说明这一点。到目前为止,我看到的唯一可能的解决方案是编写我自己的 AsciiDoc 预处理器,它将合并所有“部分”文件并生成本书。现在有人解决了这个问题吗?
4 回答
asciidoc 备忘单中的两个示例方法: http ://powerman.name/doc/asciidoc
include::footer.txt[]
或者
[source,perl]
----
include::script.pl[]
----
我已经设置了一个书籍模板,我在所有书籍中都使用它,你可以在这里找到它: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.
////
注意 include 指令之间的空行:它们防止包含文件的第一行和最后一行被邻接。我不会拆分更多文件的章节,因为当您包含一个文件时,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[]
(因为它们位于同一目录中)。
我认为将所有包含在同一个地方更容易,它对我有用。我只包含使用其他方式的代码。
这是另一个例子,以防有人正在寻找如何做到这一点。
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
=====
用户指南中介绍了一个选项:https ://asciidoc.org/userguide.html#X90
为了解释用户指南,请创建一个顶级包装文档,该文档使用include::
宏添加所需的内容和:leveloffset:
属性以调整标题级别。
另一种选择是编写一个脚本,将cat
所有部分文件放在一起,然后使用标准输入将结果传递给 asciidoc。这可能看起来像cat part1.txt part2.txt part3.txt | asciidoc -
. 请注意,通过标准输入提供输入时有时会出现问题。另请注意,每个零件文件的末尾可能需要额外的换行符,以防止cat
影响格式。