18

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

4

4 回答 4

14

asciidoc 备忘单中的两个示例方法: http ://powerman.name/doc/asciidoc

include::footer.txt[]

或者

[source,perl]
----
include::script.pl[]
----
于 2012-12-30T11:07:15.057 回答
13

我已经设置了一个书籍模板,我在所有书籍中都使用它,你可以在这里找到它: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.adocfeedback.adoc我将使用包含的内容include::capitulos/feedback.adoc[]
  • 但是,如果我在文件中cap1.adoc,您将不得不使用include::feedback.adoc[](因为它们位于同一目录中)。

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

于 2014-09-30T20:12:54.207 回答
6

这是另一个例子,以防有人正在寻找如何做到这一点。

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
=====
于 2014-07-27T22:43:56.687 回答
4

用户指南中介绍了一个选项:https ://asciidoc.org/userguide.html#X90

为了解释用户指南,请创建一个顶级包装文档,该文档使用include::宏添加所需的内容和:leveloffset:属性以调整标题级别。

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

于 2012-05-11T16:08:19.213 回答