
# Copyright 2005 Daniel James.
# Distributed under the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

path-constant images_location : ../ ;
path-constant admonishment_location : ../../../../doc/src/images ;

xml unordered : unordered.qbk ;
boostbook standalone : unordered :
    <xsl:param>chunk.first.sections=1
    <xsl:param>chunk.section.depth=2
    <xsl:param>generate.section.toc.level=2
    <xsl:param>toc.section.depth=1
    <xsl:param>toc.max.depth=1

    <xsl:param>boost.compact.typedef=0
    <xsl:param>boost.compact.function=0
    <xsl:param>boost.compact.enum=0

    # HTML Options:

    <format>html:<xsl:param>boost.root=../../../..
    <format>html:<xsl:param>img.src.path=../../../../doc/html/
    <format>xhtml:<xsl:param>boost.root=../../../..
    <format>xhtml:<xsl:param>img.src.path=../../../../doc/html/

    # PDF Options:

    # TOC Generation: this is needed for FOP-0.9 and later:
    <xsl:param>fop1.extensions=0
    <format>pdf:<xsl:param>xep.extensions=1
    # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
    <format>pdf:<xsl:param>fop.extensions=0
    # No indent on body text:
    <format>pdf:<xsl:param>body.start.indent=0pt
    # Margin size:
    <format>pdf:<xsl:param>page.margin.inner=0.5in
    # Margin size:
    <format>pdf:<xsl:param>page.margin.outer=0.5in
    # Paper type = A4
    <format>pdf:<xsl:param>paper.type=A4
    # Yes, we want graphics for admonishments:
    <xsl:param>admon.graphics=1
    # Set this one for PDF generation *only*:
    # default png graphics are awful in PDF form,
    # better use SVG's instead:
    <format>pdf:<xsl:param>admon.graphics.extension=".svg"
    <format>pdf:<xsl:param>use.role.for.mediaobject=1
    <format>pdf:<xsl:param>preferred.mediaobject.role=print
    <format>pdf:<xsl:param>img.src.path=$(images_location)/
    #<format>pdf:<xsl:param>admon.graphics.path=$(admonishment_location)
    <format>pdf:<xsl:param>draft.mode="no"
    <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/unordered/doc/html
    ;

