Fortlaufendes Inhaltsverzeichnis in Kapiteln

(Auszug aus "DocBook-XML: Medienneutrales und plattformunabhängiges Publizieren" von Thomas Schraitle)

Fortlaufende Inhaltsverzeichnisse werden verwendet, wenn viele Abschnitte vorhanden sind und diese platzsparend untergebracht werden sollen. Diese Art von Verzeichnis wird im Flattersatz gesetzt, Trennungen sollten vermieden werden. Gehen Sie wie folgt vor:

  1. Erstellen Sie eine Anpassungsdatei wie in Anpassungsdatei für XSL-FO anlegen gezeigt.
  2. Setzen Sie das Element <toc/> nach jedem Kapiteltitel, für das Sie ein fortlaufendes Inhaltsverzeichnis möchten.
  3. Ergänzen Sie den Parameter generate.toc um die folgende Zeile:
<xsl:param name="generate.toc"> 
chapter toc,title 
... 
</xsl:param>

  1. Fügen Sie folgenden Code ein, um in einem Kapitel ein fortlaufendes Inhaltsverzeichnis zu haben:
<xsl:template name="component.toc"> 
    <xsl:param name="toc-context" select="."/>
    <xsl:param name="toc.title.p" select="true()"/> 
    <xsl:variable name="id">
        <xsl:call-template name="object.id"/> 
    </xsl:variable> 
    <xsl:variable name="nodes" select="d:section|d:sect1"/>
    <xsl:if test="$nodes">
        <fo:block id="toc...{$id}" xsl:use-attribute-sets="toc.margin.properties" line-height="1.75" text-align="left">
            <!-- <xsl:if test="$toc.title.p"><xsl:call-template name="table.of.contents.titlepage"/></xsl:if> --> 
            <xsl:apply-templates select="$nodes" mode="chaptoc">
                <xsl:with-param name="toc-context" select="$toc-context"/> 
            </xsl:apply-templates> 
        </fo:block> 
    </xsl:if> 
</xsl:template>

Zeile 2: Enthält den aktuellen Kontext.
Zeile 4: Erstellt einen ID-Wert, erhalten durch das Template object.id. Wird später im Element fo:block verwendet.
Zeile 7: Speichert die gesuchten Knoten.
Zeile 8: Überprüft, ob die gesuchten Knoten im aktuellen Kontext vorhanden sind. Ist kein Knoten vorhanden, wird kein Inhaltsverzeichnis eingefügt.
Zeile 9: Erzeugt einen Block und fügt den ID-Wert von Zeile 4 ein. Bei dieser Art des Inhaltsverzeichnisses ist Blocksatz problematisch, daher linksbündige Ausrichtung. Durch line-height wird der Zeilenabstand ein wenig vergrößert um eine bessere Lesbarkeit zu erreichen.
Zeile 10: Auskommentiert. Wenn Sie das Wort Inhaltsverzeichnis vor Ihren Einträgen haben möchten, entfernen Sie die Kommentarzeichen.
Zeile 11: Formatiert den Eintrag für den gesuchten Knoten. Im Original wird der Modus toc verwendet.

  1. Fügen Sie folgenden Code ein, um alle Abschnitte der ersten Ebene zu formatieren:
<xsl:template match="d:chapter/d:sect1 | d:chapter/d:section" mode="chaptoc"> 
    <xsl:param name="toc-context" select="."/>
    <xsl:variable name="id">
        <xsl:call-template name="object.id"/> 
    </xsl:variable> 
    <fo:inline font-size="{$body.font.master}pt"> 
        <fo:inline hyphenate="false" space-end.minimum="0.25em" space-end.optimum="0.5em" space-end.maximum="0.5em"> 
            <fo:basic-link internal-destination="{$id}">
                <xsl:apply-templates select="." mode="titleabbrev.markup"/>
            </fo:basic-link> 
        </fo:inline> 
        <fo:inline space-end.conditionality="discard" space-end.optimum="1em" space-end.minimum="0pt" keep-with-previous.within-line="always"> 
            <fo:basic-link internal-destination="{$id}">
                <fo:page-number-citation ref-id="{$id}" font-weight="bold"/>
            </fo:basic-link> 
        </fo:inline> 
    </fo:inline> 
</xsl:template>

Zeile 2: Enthält den aktuellen Kontext.
Zeile 3: Erstellt einen ID-Wert, erhalten durch das Template object.id. Wird später im Element fo:block verwendet.
Zeile 7: Schaltet Trennungen ab und legt fest, wie die Abstände zur Seitenzahl sind.
Zeile 8: Erstellt einen internen Verweis für den Titel.
Zeile 9: Fügt den Titel ein, bevorzugt wird titleabbrev anstatt title. Besonders bei langen Titeln lassen sich diese durch titleabbrev abkürzen.
Zeile 12: Verhindert einen Umbruch zwischen Titel und Seite und legt den Abstand zum nachfolgenden Eintrag fest. Dieser sollte größer sein, als der Abstand von Titel zur Seite.
Zeile 13: Erstellt einen internen Verweis für die Seitenzahl.
Zeile 14: Fügt die Seitenzahl ein. Es wurde eine fette Schrift gewählt, um die Seitenzahl besser zu finden.

  1. Verwenden Sie Ihre Anpassungsdatei für Ihr Dokument.
  2. Wie solch ein Inhaltsverzeichnis aussieht, zeigt die folgende Abbildung:

    Darstellung eines fortlaufenden Inhaltsverzeichnisses

    Abbildung: Darstellung eines fortlaufenden Inhaltsverzeichnisses

  

<< zurück vor >>
Tipp der data2type-Redaktion:
Zum Thema DocBook bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © 2009 Millin Verlag
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "DocBook-XML: Medienneutrales und plattformunabhängiges Publizieren" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

Millin Verlag, Siebengebirgsring 36, 53797 Lohmar, info(at)millin.de