#// Boost.Range library
#//
#//  Copyright Thorsten Ottosen 2003-2008. Use, modification and
#//  distribution is subject to 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)
#//
#// For more information, see http://www.boost.org/libs/range/
#//

project boost/libs/range/doc ;
using boostbook ;
using quickbook ;

path-constant images_location : html ;

boostbook quickbook
  :
    boost_range.qbk
  :
    <xsl:param>boost.root=../../../..
    <xsl:param>chunk.section.depth=4
    <xsl:param>chunk.first.sections=1
    <xsl:param>toc.section.depth=3
    <xsl:param>toc.max.depth=3
    <xsl:param>generate.section.toc.level=4
    <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/doc/html
    <format>pdf:<xsl:param>img.src.path=$(images_location)/
  ;

