2012-04-04 8 views
13

Considerando che un libro in formato DocBook può essere fatto in modo "modulare", speravo di poter fare lo stesso con AsciiDoc e dividere i capitoli e le sezioni di primo livello in file separati. Purtroppo la documentazione non dice nulla al riguardo. L'unica soluzione possibile che vedo finora è scrivere il mio preprocessore AsciiDoc che unirà tutte le "parti" -file e genererà il libro. Qualcuno ha già risolto questo problema?È possibile avere un libro AsciiDoc modulare (composto da pochi file)?

+1

Come scegliere una risposta? ;) – sjas

+0

Non l'ho visto, finché non hai scritto il commento! :) Fatto! – DejanLekic

risposta

4

Una possibilità è coperto nel manuale d'uso: http://www.methods.co.nz/asciidoc/userguide.html#X90

Un'altra opzione sarebbe quella di scrivere uno script che avrebbero cat tutti i file di parte insieme poi passare il risultato a asciidoc usando stdin. Potrebbe sembrare qualcosa come cat part1.txt part2.txt part3.txt | asciidoc -. Si noti che a volte sembra che ci siano dei problemi quando si fornisce l'input tramite stdin. Inoltre, potrebbero essere necessarie interruzioni di riga aggiuntive alla fine di ciascun file di parti per evitare che cat influenzi la formattazione.

+1

Sì, la soluzione che hai proposto è come lo faccio ora (e viene spiegato nell'OP) – DejanLekic

4

Ecco un altro esempio nel caso in cui qualcuno è alla ricerca come fare questo.

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 
===== 
9

Ho creato un modello di libro che uso in tutto da libro, lo si può trovare qui: 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. 
//// 

non dividere il capitolo su più file, perché quando si include un file di asciidoc prende il percorso del file incluso per essere il genitore di nuova include, guarda questo albero:

. 
|-- 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 
  • Quando sono a file livro.adoc e io cosa includere feedback.adoc userò include::capitulos/feedback.adoc[]
  • Ma se io sono il file cap1.adoc si dovrà utilizzare include::feedback.adoc[] (dal momento che sono allo stesso directory).

Penso che sia più facile tenere tutto incluso in uno stesso posto, funziona per me. Includo solo i codici che utilizzano l'altro modo.

+0

Una buona struttura di cartelle. Soprattutto quando hai documenti di codice sorgente aggiuntivi per ogni capitolo. –

+0

Non ne sono sicuro, ma penso che gli strumenti 'asciidoc' e' asciidoctor' includano file in modo diverso. È necessario utilizzare la struttura supportata dallo strumento. –

Problemi correlati