2010-04-08 3 views
5

Esiste un modo per definire macro (come le macro tex o latex) nei documenti DocBook?Macro DocBook?

DocBook è molto dettagliato e le macro potrebbero essere di grande aiuto. Non li ho trovati in tutorial quickstart.

In tal caso, qualcuno potrebbe fornire un semplice esempio o un collegamento?

Grazie

risposta

6

Non sicuro, se questo è esattamente quello che vuoi/se soddisfa pienamente le tue esigenze, ma sto pensando a ENTITY. Puoi definirli in alto (del tuo documento XML, quindi XML generale, niente di specifico su DocBook). Come visto qui per "doc.release.number" e "doc.release.date". Ma possono anche essere inclusi in un file separato. Come si vede nella terza riga ENTITY. Qui il SISTEMA significa, proveniente da un altro file 'entities.ent'.

<?xml version="1.0" encoding="UTF-8"?> 

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" 
    "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [ 

    <!ENTITY doc.release.number     "1.0.0.beta-1"  > 
    <!ENTITY doc.release.date     "April 2010"   > 

    <!ENTITY % entities SYSTEM "entities.ent" > 

    %entities; 

]> 

<!-- This document is based on http://readyset.tigris.org/nonav/templates/userguide.html --> 
<article lang="en"> 
    <articleinfo> 
    <title>&project.impl.title; - User Manual</title> 
    <subtitle></subtitle> 
    <date>&project.impl.release.date;</date> 
    <copyright> 
     <year>doc.release.year</year> 
     <holder>Team - &project.impl.title;</holder> 
    </copyright> 
    <releaseinfo>&doc.release.number;</releaseinfo> 
    </articleinfo> 

    <section> 
    <title>Introduction</title> 
    <para> 
    The &project.impl.title; has been created to clean up (X)HTML and XML documents as part of 


    </para> 
    <section> 
</article> 

Nel documento si fa riferimento i soggetti attraverso una partenza & e termina ; come in &project.impl.title;

Nel file 'entities.ent' si specificano gli elementi ENTITÀ in modo simile:

<?xml version="1.0" encoding="UTF-8"?> 

<!ENTITY project.impl.title   'Maven Tidy Plug-in' > 
<!ENTITY project.impl.group-id   'net.sourceforge.docbook-utils.maven-plugin' > 
<!ENTITY project.impl.artifact-id  'maven-tidy-plugin'  > 
<!ENTITY project.impl.release.number '1.0.0.beta-1'   > 
<!ENTITY project.impl.release.date  'April 2010'   > 
<!ENTITY project.impl.release.year  '2010'     > 
<!ENTITY project.impl.url    '../'     > 
<!ENTITY project.spec.title   '' > 
<!ENTITY project.spec.release.number '' > 
<!ENTITY project.spec.release.date  '' > 
<!ENTITY doc.release.year    '2010'     > 
+0

Bello! Quale sarebbe l'equivalente per Docbook v5.0? – jdkoftinoff

0

Avete preso in considerazione la generazione di DocBook da un altro formato (come reStructuredText?)

ho trovato abbastanza bello per la documentazione.

Inoltre, si potrebbe probabilmente scrivere un preprocessore macro (o esaminare in m4) abbastanza rapidamente. Se stai usando la versione XML di DocBook, un semplice XSLT funzionerà. Basta creare alcuni tag e trasformarli. Avere aggiunto automaticamente le informazioni di base. E preparati a essere davvero arrabbiato con XSLT. Per non essere tutto ciò che potrebbe essere. Per fare il tuo pensiero curvatura.

+0

@Daren: vuoi dire che il ddt docbook non include qualcosa come tex: \ def \ h {hello everyone} e poi usarlo \ h? Sarebbe una grande colpa. Scrittura di un preprocessore macro? La cosa migliore è usare il preprocessore C con define. Darò un'occhiata a quel testo ristrutturato Grazie – cibercitizen1

1

Non esattamente quello che hai chiesto, ma forse utile per alcuni dei tuoi casi: puoi definire modelli nel foglio di stile del wrapper in cui definisci i comandi fo. Alcuni esempi:

Codice:

<xsl:template match="symbolchar"> 
    <fo:inline font-family="Symbol"> 
    <xsl:choose> 
     <xsl:when test=".='ge'">&#x2265;</xsl:when> 
     <xsl:when test=".='le'">&#x2264;</xsl:when> 
     <xsl:when test=".='sqrt'">&#x221A;</xsl:when> 
     <xsl:otherwise>?!?</xsl:otherwise> 
    </xsl:choose> 
    </fo:inline> 
</xsl:template> 

Usage:

<symbolchar>le</symbolchar> 

Codice:

<xsl:template match="processing-instruction('linebreak')"> 
    <fo:block/> 
</xsl:template> 

Usage:

<?linebreak?>