Search code examples
htmldocbook

Docbook - suppressing TOC


I am converting a docbook to an html using 1.77 xsl transformation. But when it is transformed it automatically generates a Table of Contents. How do you change this behavior?

I have found this: Disable table of contents for documents

So I am guessing that html xsl transform would be the presentation system?


Solution

  • Elaborate DocBook formatting is meant to be customized using an xsl stylesheet.

    See Also

    Writing a DocBOok Customization Layer for Formatting

    Customizing Table Of Contents Using XSL

    customize_formatting.xsl: Example DocBook XSL Customization Layer

    <?xml version="1.0" encoding="UTF-8"?>
    
    <xsl:stylesheet 
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:fo="http://www.w3.org/1999/XSL/Format"
        version="1.0"> <!-- change this to 2.0 if your tools support it -->
        <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/>
    
        <!--uncomment this to suppress toc when using XSL 1.0 or 2.0
        <xsl:param name="generate.toc">article</xsl:param>
        <xsl:param name="generate.toc">book</xsl:param>
        -->
    
        <!--uncomment this to suppress toc when using XSL 2.0
        <xsl:param name="generate.toc">
            article nop
            book nop
        </xsl:param>
        -->
    
    </xsl:stylesheet>
    

    How to Use customize_formatting.xsl

    Point your tools to use customize_formatting.xsl instead of the off-the-shelf docbook.xsl. Then, put all your formatting customizations in the body of the <xsl:stylesheet> section.

    For TOC suppression, you can just uncomment the appropriate line.

    There is a quirk with some (or maybe all) XSL 1.0 tools that seem to prevent them from handling the whitespace-separated pairs used in the body of <xsl:param name="generate.toc">. I have had success suppressing TOC by just using the single word article or book instead of the proper whitespace separated pairs.