Kapitel 2. DocBook

DocBook er et sæt af stylesheets, som beskriver hvordan man laver en bog, artikel eller lignende ud af tekstfiler. DocBook er ligesom LaTeX således ikke et grafisk miljø hvor man skriver og kan se resultatet grafisk som det er tilfældet med Word, WordPerfect eller StarOffice. Den store fordel med DocBook er at der er gode værktøjer til at oversætte DocBook til HTML, PostScript, RTF og PDF og få et pænt og ensartet resultat.

Før vi tager fat på installation og en teknisk gennemgang af det "sprog" man skal skrive i - med en vilkårlig teksteditor - så er der i Eksempel 2-1 et eksempel på lidt tekst skrevet i DocBook. Som det kan ses så er det kildeteksten til teksten ovenfor som er vist. DocBook minder meget om at skrive HTML-kode - dvs. koderne afgrænses som <KODEN>.

Grunden til at denne bogserie er skrevet i DocBook er at det var sjovt at prøve. Det har vist sig at det fungerer godt med automatiske krydshenvisninger; det er nemt at håndtere store bogværker på denne måde. Da alle filerne der skrives i "ren ASCII" (tekst-filer), kan flere personer nemmere redigere i de samme filer samtidigt, og disse ændringer kan så blandes sammen med patch kommandoen.

Eksempel 2-1. Eksempel på DocBook kode

<chapter id="docbook">
<title>DocBook</title>

<para>
DocBook er et sæt af stylesheets, som beskriver hvordan man laver en
bog, artikel eller lignende ud af tekstfiler. DocBook er ligesom
LaTeX således <emphasis>ikke</emphasis> et grafisk miljø hvor man
skriver og kan se resultatet grafisk som det er tilfældet med Word,
WordPerfect eller StarOffice. Den store fordel med DocBook er at der
er gode værktøjer til at oversætte DocBook til HTML, PostScript, RTF
og PDF og få et pænt resultat.
</para>

2.1. Installation af Docbook værktøjer

En engelsk installationsvejledning kan findes på følgende URL;

http://www.tldp.org/HOWTO/mini/DocBook-Install/index.html. Nedenfor er en kort vejledning på dansk.

Man kan som regel installere docbook systemet ved under system-installation (eller system-opgradering) at medtage "document processing".

På Mandrake 9.1 er det ret enkelt at få DocBook værktøjerne til at virke. Installer følgende pakker med urpmi (efterfulgt af følgende navne). Dette gøres som root.

docbook-dtd412-xml
docbook-style-dsssl
docbook-dtd41-sgml
docbook-style-xsl
docbook-dtd30-sgml
docbook-dtd42-xml
docbook-utils-pdf
docbook-dtd31-sgml
docbook-utils
openjade
jadetex
libopenjade0

Hvis du bruger en af de distributioner, som har det hele med, kan du afprøve installationen ved for eksempel at bruge docbook-eksemplet, der kan hentes fra bogens hjemmeside under eksempler, eller med Eksempel 2-2 hallo-bog eksemplet her.

Eksempel 2-2. Hallo-hallo-bog

<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN">

<book id="index" lang="da">

<chapter id="hellobog-minikapitel"><title>Sgml-afprøvning</title>
<sect1 id="hellobog-minisect">
<title>Hallo, hallo!</title>

<para>
Hallo, Verden! Hallo, hallo! Her kommer indholdet i den nye bog.
Disse linjer ender med at blive en paragraf i den færdige bog.
For at kunne se, hvordan linjeombrydning fungerer, er denne
paragraf lidt længere end de berømte ord, Hello, World! 
</para>

<para>
Hvis du vil se et lidt længere eksempel med flere elementer og et
billede, kan du hente og udpakke docbook-eksemplet fra bogens
hjemmeside.
</para>

</sect1>
</chapter>
</book>

Du kan selvfølgelig også afprøve systemet ved at bruge sgml-filerne til andre bøger i denne serie. Så skal du huske at flytte billederne ned fra *_images/ directory'et til directory'et med .sgml filerne, husk at rette magic.sgml, så der står png i stedet for eps.

Når man står i directory'et med .sgml filerne og skriver følgende kommando, skal systemet generere en .pdf fil.

[root@MinMaskine RPMS]# db2pdf bog.sgml

Og hvis det fungerer er alt jo godt [1]

Hvorfor ikke installere det hele selv fra source? Det kan man selvfølgelig godt, men der er så mange pakker, der skal spille sammen, så det er faktisk ret svært og måske grænser det til spild af tid, når nu andre har gjort det for en. Men - hvis du prøver, vil vi gerne høre resultatet.

Hvis du kører Red Hat-8.0, Mandrake-9.0, eller SuSE kan du regne med, at tingene fungerer med det samme, du har installeret.

Man kan med for eksempel Red Hat bruge en fil-manager til at kigge på CD-Rom RPM-filerne, og så installere med point-and-click.

Du kan også hente docbook pakker ved at følge links fra linuxdoc (se ovenfor) eller hente RPM-pakker fra Red Hat. Hvis du gør det, så skal du ikke bruge installations-CD'erne og får ofte en nyere version ud af det. Med undtagelse af openjade*rpm skulle der ikke være noget i vejen for at bruge nyere pakker på en ældre installation. Se i øvrigt afsnittet i Sysadm-bogen om pakke-administration. www.linuxbog.dk/admin/bog/rpm.html

Med installations - CD'er er fremgangsmåden som følger:

Man "mounter" den første CD. Hvis ikke desktoppen selv gør det (hvis man ikke har slået det fra) så skal man på en kommandolinje skrive:

[root@MinMaskine RPMS]# mount /dev/cdrom 
[root@MinMaskine RPMS]# cd /mnt/cdrom/Red Hat/RPMS 

Kommandoen "cd /mnt/cdrom/Red Hat/RPMS" gør, at man "står" i det katalog (directory) hvor pakkerne ligger. Nu kan vi installere, kør:

Princippet er det samme for andre RPM-baserede systemer (fx. Mandrake). SuSE Yast2 og DEBIAN apt-get følger samme principper som RPM, men har helt andre kommandolinjetilvalg og kræver andre opsætningsfiler. Til gengæld kan man med en hurtig internetforbindelse her gratis drage fordel af, at apt-get kan have en liste af servere, hvorfra friske pakker kan hentes.

Se afsnit om administration af softwarepakker i sysadm-bogen eller på http://www.rpm.org.

Dette burde være nok til at installere pakkerne. Hvis du har problemer efter installationen, kan du følge vejledningen fra Norman Walsh, som du kan finde her. http://docbook.sourceforge.net/projects/dsssl/

Norman Walsh har skrevet de "modulære docbook-style sheets". Hans anvisninger er jo de korrekte for fejlfinding af en installation, men på den anden side, hvis der er problemer, og man har mulighed for at installere pakkerne fra en nyere version af sit system, så er det som regel en hurtigere løsning.

Grunden til, at vi skriver så meget om, hvad man skal gøre i tilfælde af fejl, er selvfølgelig, at vi er nogle stykker, som har kæmpet mod underlige fejl og har haft svært ved at finde en udvej; vi vil gerne hjælpe, hvis du sender en mail.

Se evt. også http://hvdkooij.xs4all.nl/docs-docbook.cms.

Der er en enkelt pakke man nok skal opdatere - læs mere på http://www.redhat.com/support/errata/RHEA-2001-167.html.

Slutbemærkning:

[1]

Mandrake 9.x og SuSE 8.1 samt Red Hat 8.0 kører med det samme, hvis du har valgt de relevante pakker. Vi kan ikke anbefale Red Hat 7.0, 7.1 og 7.2, da der har været mange problemer med at få deres docbook output til at fungere. Fejlene er rettede i senere versioner, så Red Hat 7.3 og 8.x fungerer uden problemer - og hvis man hellere vil baglæns, så kan man stadig få Red Hat 6.2 - docbook pakker til at fungere på en intel-baseret Linux.