|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r71518 - in sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc: . Images
From: pbristow_at_[hidden]
Date: 2011-04-26 12:16:57
Author: pbristow
Date: 2011-04-26 12:16:55 EDT (Tue, 26 Apr 2011)
New Revision: 71518
URL: http://svn.boost.org/trac/boost/changeset/71518
Log:
First public view. Still needs plenty more work.
Added:
sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc/Images/
sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc/Images/Proposed_for_Boost.png (contents, props changed)
sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc/Images/Proposed_for_Boost.svg (contents, props changed)
sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc/jamfile.v2 (contents, props changed)
sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc/quick_auto_dox_index.idx (contents, props changed)
sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc/quick_auto_dox_index.pdf (contents, props changed)
sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc/quick_auto_dox_index.qbk (contents, props changed)
Added: sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc/Images/Proposed_for_Boost.png
==============================================================================
Binary file. No diff available.
Added: sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc/Images/Proposed_for_Boost.svg
==============================================================================
--- (empty file)
+++ sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc/Images/Proposed_for_Boost.svg 2011-04-26 12:16:55 EDT (Tue, 26 Apr 2011)
@@ -0,0 +1,449 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="Layer_1"
+ width="444.1889"
+ height="146.81453"
+ viewBox="0 0 444.1889 146.81453"
+ overflow="visible"
+ enable-background="new 0 0 517 500"
+ xml:space="preserve"
+ inkscape:version="0.46"
+ sodipodi:docname="Proposed for Boost.svg"
+ inkscape:export-filename="C:\Users\Paul\Desktop\Proposed for Boost.png"
+ inkscape:export-xdpi="59.369999"
+ inkscape:export-ydpi="59.369999"
+ style="display:inline;overflow:visible"
+ sodipodi:version="0.32"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1440"
+ inkscape:window-height="845"
+ id="namedview11418"
+ showgrid="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:zoom="1.3350176"
+ inkscape:cx="148.34277"
+ inkscape:cy="59.740325"
+ inkscape:window-x="2320"
+ inkscape:window-y="37"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="layer7"><sodipodi:guide
+ id="guide11439"
+ position="-36.703636,107.11469"
+ orientation="0,1" /></sodipodi:namedview><metadata
+ id="metadata11422"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
+ id="defs11420"><linearGradient
+ id="linearGradient3816"
+ inkscape:collect="always"><stop
+ id="stop3818"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1;" /><stop
+ id="stop3820"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0;" /></linearGradient><inkscape:perspective
+ id="perspective11424"
+ inkscape:persp3d-origin="258.5 : 166.66667 : 1"
+ inkscape:vp_z="517 : 250 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 250 : 1"
+ sodipodi:type="inkscape:persp3d" /><radialGradient
+ r="58.375"
+ cy="246.375"
+ cx="63.75"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient11812"
+ xlink:href="#XMLID_5_"
+ inkscape:collect="always" /><linearGradient
+ y2="242.22659"
+ x2="110.314"
+ y1="242.22659"
+ x1="66.6689"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient11814"
+ xlink:href="#XMLID_7_"
+ inkscape:collect="always" /><linearGradient
+ y2="222.79201"
+ x2="78.625504"
+ y1="222.79201"
+ x1="39.3022"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient11816"
+ xlink:href="#XMLID_8_"
+ inkscape:collect="always" /><linearGradient
+ y2="262.375"
+ x2="72.826698"
+ y1="262.375"
+ x1="28.6553"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient11818"
+ xlink:href="#XMLID_6_"
+ inkscape:collect="always" /><radialGradient
+ gradientUnits="userSpaceOnUse"
+ r="58.375"
+ fy="246.375"
+ fx="63.75"
+ cy="246.375"
+ cx="63.75"
+ id="radialGradient3822"
+ xlink:href="#linearGradient3816"
+ inkscape:collect="always" /><radialGradient
+ r="58.375"
+ fy="246.375"
+ fx="63.75"
+ cy="246.375"
+ cx="63.75"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3826"
+ xlink:href="#linearGradient3816"
+ inkscape:collect="always" /></defs>
+
+<g
+ transform="translate(3.5916937e-8,-170.41634)"
+ id="boost">
+
+</g>
+
+
+
+
+<g
+ style="display:none"
+ inkscape:label="Alpha Background"
+ id="layer12"
+ inkscape:groupmode="layer"><rect
+ style="fill:none;stroke:none;display:inline;overflow:visible"
+ id="rect11821"
+ width="444.1889"
+ height="146.81453"
+ x="-3.5916937e-08"
+ y="170.41634"
+ transform="translate(2.8192073e-6,-170.41634)" /></g><g
+ transform="translate(3.5916937e-8,-170.41634)"
+ style="display:inline"
+ inkscape:label="White Background"
+ id="layer11"
+ inkscape:groupmode="layer"><rect
+ y="171.16539"
+ x="16.479183"
+ height="146.81453"
+ width="444.1889"
+ id="rect11810"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" /></g><g
+ transform="translate(3.5916937e-8,-170.41634)"
+ style="display:inline"
+ inkscape:label="Boost Logo"
+ id="layer7"
+ inkscape:groupmode="layer"><text
+ style="font-size:101.1230011px;fill:#4a6484;display:inline;overflow:visible;font-family:Denmark"
+ id="text11381"
+ font-size="101.123"
+ transform="matrix(0.9848,0,-0.1736,0.9848,128.1865,269.8252)">boost</text>
+
+
+
+
+
+
+
+
+
+<g
+ transform="matrix(0.98716824,0,0,0.93584122,0.8180256,15.55239)"
+ style="fill:url(#radialGradient3822);fill-opacity:1;display:inline;overflow:visible"
+ id="g3792">
+ <radialGradient
+ id="radialGradient3794"
+ cx="63.75"
+ cy="246.375"
+ r="58.375"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ offset="0"
+ style="stop-color:#000000;fill-opacity:1;fill:url(#radialGradient3822)"
+ id="stop3796" />
+ <stop
+ offset="0.0641"
+ style="stop-color:#191919;fill-opacity:1;fill:url(#radialGradient3822)"
+ id="stop3798" />
+ <stop
+ offset="0.2539"
+ style="stop-color:#5E5E5E;fill-opacity:1;fill:url(#radialGradient3822)"
+ id="stop3800" />
+ <stop
+ offset="0.4336"
+ style="stop-color:#979797;fill-opacity:1;fill:url(#radialGradient3822)"
+ id="stop3802" />
+ <stop
+ offset="0.5979"
+ style="stop-color:#C4C4C4;fill-opacity:1;fill:url(#radialGradient3822)"
+ id="stop3804" />
+ <stop
+ offset="0.7439"
+ style="stop-color:#E4E4E4;fill-opacity:1;fill:url(#radialGradient3822)"
+ id="stop3806" />
+ <stop
+ offset="0.866"
+ style="stop-color:#F8F8F8;fill-opacity:1;fill:url(#radialGradient3822)"
+ id="stop3808" />
+ <stop
+ offset="0.9494"
+ style="stop-color:#FFFFFF;fill-opacity:1;fill:url(#radialGradient3822)"
+ id="stop3810" />
+ </radialGradient>
+ <circle
+ cx="63.75"
+ cy="246.375"
+ r="58.375"
+ id="circle3812"
+ sodipodi:cx="63.75"
+ sodipodi:cy="246.375"
+ sodipodi:rx="58.375"
+ sodipodi:ry="58.375"
+ style="opacity:0.3;fill:url(#radialGradient3826);fill-opacity:1"
+ d="m 122.125,246.375 c 0,32.23962 -26.135378,58.375 -58.375,58.375 C 31.510378,304.75 5.375,278.61462 5.375,246.375 5.375,214.13538 31.510378,188 63.75,188 c 32.239622,0 58.375,26.13538 58.375,58.375 z" />
+</g><g
+ id="right-center"
+ style="display:inline;overflow:visible">
+ <linearGradient
+ y2="242.22659"
+ x2="110.314"
+ y1="242.22659"
+ x1="66.6689"
+ gradientUnits="userSpaceOnUse"
+ id="XMLID_7_">
+ <stop
+ id="stop11400"
+ style="stop-color:#B1D2EC"
+ offset="0.0056" />
+ <stop
+ id="stop11402"
+ style="stop-color:#C8E6F6"
+ offset="1" />
+ </linearGradient>
+ <polygon
+ style="fill:url(#linearGradient11814)"
+ id="polygon11404"
+ points="77.164,223.15 66.669,241.262 78.307,261.304 99.112,261.21 110.314,242.047 99.106,223.15 " />
+ <path
+ style="fill:#ffffff"
+ id="path11406"
+ d="M 99.675,222.15 H 98.536 77.739 76.586 l -0.578,0.997 -9.914,17.112 -0.581,1.004 0.582,1.003 11.056,19.039 0.582,1.001 1.157,-0.005 19.655,-0.088 1.142,-0.005 0.576,-0.986 10.617,-18.162 0.594,-1.016 -0.601,-1.013 -10.617,-17.901 -0.581,-0.98 0,0 z m -31.85,19.112 9.914,-17.112 h 20.797 l 10.617,17.901 0,0 0,0 -10.617,18.162 -19.655,0.088 -11.056,-19.039 0,0 0,0 z" />
+</g><g
+ id="left-up"
+ style="display:inline;overflow:visible">
+ <linearGradient
+ y2="222.79201"
+ x2="78.625504"
+ y1="222.79201"
+ x1="39.3022"
+ gradientUnits="userSpaceOnUse"
+ id="XMLID_8_">
+ <stop
+ id="stop11410"
+ style="stop-color:#B1D2EC"
+ offset="0.0056" />
+ <stop
+ id="stop11412"
+ style="stop-color:#C8E6F6"
+ offset="1" />
+ </linearGradient>
+ <path
+ style="fill:url(#linearGradient11816)"
+ id="path11414"
+ d="m 50.211,207.025 -10.909,19.045 6.912,12.442 16.451,0.047 c 0,0 11.104,-18.828 11.656,-19.763 0.766,0 4.304,0 4.304,0 l -6.704,-11.771 h -21.71 z" />
+ <path
+ style="fill:#ffffff"
+ id="path11416"
+ d="M 72.503,206.025 H 71.34 50.79 49.631 l -0.576,1.006 -10.34,18.053 -0.561,0.979 0.548,0.986 6.353,11.436 0.569,1.026 1.173,0.003 15.292,0.044 1.146,0.003 0.583,-0.987 11.075,-18.778 h 2.012 3.441 l -1.703,-2.99 -5.565,-9.771 -0.575,-1.01 0,0 z M 40.45,226.078 50.79,208.025 h 20.55 l 5.565,9.771 0,0 0,0 H 73.75 l -11.655,19.762 -15.292,-0.044 -6.353,-11.436 0,0 0,0 z" />
+</g><g
+ id="left-down"
+ style="display:inline;overflow:visible">
+ <linearGradient
+ y2="262.375"
+ x2="72.826698"
+ y1="262.375"
+ x1="28.6553"
+ gradientUnits="userSpaceOnUse"
+ id="XMLID_6_">
+ <stop
+ id="stop11390"
+ style="stop-color:#8AACD6"
+ offset="0" />
+ <stop
+ id="stop11392"
+ style="stop-color:#A7C7E6"
+ offset="1" />
+ </linearGradient>
+ <polygon
+ style="fill:url(#linearGradient11818)"
+ id="polygon11394"
+ points="39.721,281.375 61.665,281.375 72.827,262.465 61.668,243.375 39.724,243.375 28.655,262.286 " />
+ <path
+ style="fill:#ffffff"
+ id="path11396"
+ d="M 62.242,242.375 H 61.094 40.297 39.15 l -0.579,0.99 -10.485,17.914 -0.589,1.005 0.585,1.008 10.485,18.086 0.578,0.997 h 1.152 20.797 1.142 l 0.58,-0.983 10.572,-17.913 0.597,-1.012 -0.592,-1.014 -10.572,-18.087 -0.579,-0.991 0,0 z m -32.43,19.914 10.485,-17.914 h 20.797 l 10.572,18.087 0,0 0,0 -10.572,17.913 H 40.297 l -10.485,-18.086 0,0 0,0 z" />
+</g><g
+ id="c_x2B__x2B__libs"
+ style="display:inline;overflow:visible">
+ <g
+ id="g11384">
+
+ <text
+ style="font-size:14.2159996px;letter-spacing:13.40499973;fill:#4a6484;font-family:Denmark"
+ id="text11386"
+ letter-spacing="13.405"
+ font-size="14.216"
+ transform="matrix(0.9698,0,-0.1736,0.9848,129.4995,290.7246)">C++ LIBRARIES</text>
+
+
+
+
+
+
+
+
+
+
+ </g>
+</g><text
+ sodipodi:linespacing="100%"
+ id="text2453"
+ y="210.11618"
+ x="158.79939"
+ style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"><tspan
+ sodipodi:role="line"
+ id="tspan2450"
+ x="158.79939"
+ y="210.11618">Proposed for</tspan></text>
+
+
+
+</g><g
+ style="display:none"
+ inkscape:label="Proposed For"
+ id="layer10"
+ inkscape:groupmode="layer"><g
+ id="g2932"
+ style="display:inline;overflow:visible"
+ transform="translate(2.7832904e-6,0)"><g
+ id="g2925"><g
+ id="g2914"
+ style="display:inline;overflow:visible"
+ transform="translate(2.7832904e-6,0)"><g
+ id="g2897"><g
+ id="g2911"
+ style="display:inline;overflow:visible"
+ transform="translate(2.8192073e-6,-170.41634)"><text
+ xml:space="preserve"
+ style="font-size:14.34384632px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Denmark;-inkscape-font-specification:Bitstream Vera Sans"
+ x="175.09654"
+ y="220.46455"
+ id="text11435"
+ transform="scale(1.0495629,0.95277758)"><tspan
+ sodipodi:role="line"
+ id="tspan11437"
+ x="175.09654"
+ y="220.46455"
+ style="font-style:italic;font-weight:normal;letter-spacing:6.09533262;fill:#ff0000;-inkscape-font-specification:Bitstream Vera Sans Oblique">PROPOSED FOR</tspan></text>
+
+
+
+
+
+
+
+</g></g></g></g></g></g><g
+ style="display:inline"
+ inkscape:label="Unofficial Extension"
+ id="layer2"
+ inkscape:groupmode="layer"><g
+ id="g3016"
+ style="display:inline;overflow:visible"
+ transform="translate(2.7832904e-6,0)"><g
+ id="g3018"
+ style="display:inline;overflow:visible"
+ transform="translate(137.07948,-18.749054)"><g
+ id="g3020"
+ style="display:inline;overflow:visible"
+ transform="translate(2.8192073e-6,-170.41634)">
+
+
+
+</g></g></g></g><g
+ style="display:none"
+ inkscape:label="For Use With"
+ id="layer1"
+ inkscape:groupmode="layer"><g
+ id="g3010"><g
+ transform="translate(2.7832904e-6,0)"
+ style="display:inline;overflow:visible"
+ id="g2902"><g
+ transform="translate(2.8192073e-6,-170.41634)"
+ style="display:inline;overflow:visible"
+ id="g2904"><text
+ transform="scale(1.0495629,0.95277758)"
+ id="text2906"
+ y="220.46455"
+ x="182.23338"
+ style="font-size:14.34384632px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Denmark;-inkscape-font-specification:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-style:italic;font-weight:normal;letter-spacing:6.09533262;fill:#ff0000;-inkscape-font-specification:Bitstream Vera Sans Oblique"
+ y="220.46455"
+ x="182.23338"
+ id="tspan2908"
+ sodipodi:role="line">FOR USE WITH</tspan></text>
+
+
+
+
+
+
+
+</g></g></g></g><g
+ transform="translate(3.5916937e-8,-170.41634)"
+ style="display:none"
+ inkscape:label="Powered By"
+ id="layer6"
+ inkscape:groupmode="layer"><text
+ transform="scale(1.0495629,0.95277758)"
+ id="text11497"
+ y="220.46455"
+ x="203.05875"
+ style="font-size:14.34384632px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#4a6484;fill-opacity:1;stroke:none;display:inline;font-family:Denmark;-inkscape-font-specification:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-style:italic;font-weight:normal;letter-spacing:6.09533262;fill:#4a6484;fill-opacity:1;-inkscape-font-specification:Bitstream Vera Sans Oblique"
+ y="220.46455"
+ x="203.05875"
+ id="tspan11499"
+ sodipodi:role="line">POWERED BY</tspan></text>
+
+
+
+
+
+
+
+
+
+</g></svg>
\ No newline at end of file
Added: sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc/jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc/jamfile.v2 2011-04-26 12:16:55 EDT (Tue, 26 Apr 2011)
@@ -0,0 +1,351 @@
+# \boost-sandbox\tools\quick_auto_dox_index\libs\quick_auto_dox_index\doc\ jamfile.v2
+
+# Creating Boost documentation using Quickbook, Doxygen and Auto-Indexing.
+
+# Copyright Paul A. Bristow 2009, 2010
+
+# 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)
+
+# Reminder: whitespace MUST terminate variable name!
+# so spaces or newlines BEFORE ; and : and AFTER too.
+# (because : and ; are keywords!)
+
+# Creating documentation as html and pdf from Quickbook, using Doxygen, AND auto-indexing.
+# see quick_auto_dox_index.qbk or HTML or PDF produced therefrom.
+
+project quick_auto_dox_index ; # Insert your project name here.
+
+using quickbook ; # Required if you want to use Quickbook.
+using doxygen ; # Required if you want to use Doxygen.
+#using auto-index ; # Required if you want to use autoindexing.
+
+import modules ;
+import path ;
+import os ; # Needed to get environment variables.
+
+# Set up Boost root folder.
+# For example, might be current release, a previous release, or trunk.
+# Assumes you have set an environment variable $BOOST_ROOT.
+local BOOST_ROOT = [ os.environ BOOST_ROOT ] ;
+ECHO "os.environ BOOST_ROOT boost-root = " $(BOOST_ROOT) ; # Upper case for the value of environment variable(s).
+# For example: os.environ BOOST_ROOT boost-root = /boost_1_46_0
+
+ECHO "BOOST_ROOT " $(BOOST_ROOT) ;
+path-constant local-boost-root : $(BOOST_ROOT) ; # Or you can access your chosen boost version here.
+ECHO "local-boost-root = " $(local-boost-root) ; # local-boost-root = I:\boost_1_45_0
+
+local boost_sandbox = [ os.environ BOOST_SANDBOX ] ;
+ECHO "os.environ boost-sandbox = " $(boost_sandbox) ; # Upper case for the value of environment variable(s).
+
+
+path-constant here : . ; # Convenient to refer to files in the same directory as this jamfile.v2.
+ECHO "here = " $(here) ; # \boost-sandbox\tools\quick_auto_dox_index\libs\quick_auto_dox_index\doc
+
+path-constant nav_images : html/images/ ; # png and svg images for home, next, note, tip...
+# path-constant images_location : ../doc/html/images ; # location of SVG images referenced by Quickbook.
+# path-constant images_location : html/images ; ??? wrong
+
+path-constant images_location : html ; # location of SVG and PNG images referenced by Quickbook.
+
+echo "images_location" $(images_location) ;
+echo "nav_images" $(nav_images) ;
+
+
+if --enable-index in [ modules.peek : ARGV ]
+{
+ ECHO "Building the Quickdox docs with automatic index generation enabled." ;
+ using auto-index ;
+ project : requirements
+ <auto-index>on # Turns on index (or off).
+
+ <auto-index-verbose>on
+
+ # Choose indexing method (separately for html and pdf):
+ <format>html:<auto-index-internal>on # on (or off) to use internally generated indexes.
+ # <format>html:<xsl:param>generate.index=0 # Don't let the XSL stylesheets generate indexes.
+
+ <format>pdf:<auto-index-internal>off # on (or off) to use internally generated indexes.
+ # <auto-index-type>index # Use <index>...</index> as the XML wrapper.
+
+ <format>pdf:<xsl:param>index.on.type=1 # For the native stylesheets to generate the different indexes.
+ # PDF native index support is probably better for PDFs as then you actually get page numbers.
+
+ <auto-index-script>quick_auto_dox_index.idx # Specifies the name of the script to load.
+ # <auto-index-prefix>../../../ # OK for Boost /boost and /libs normal directory layout
+ # using scan-path in quick_auto_dox_index.idx, for example:
+
+ # Assume all header files are in boost/quick_auto_dox_index and sub-folders.
+ #!scan-path boost/quick_auto_dox_index ".*\.hpp" true
+
+ # Assume all Quickbook files are in /docs (none in sub-folders).
+ #!scan-path "libs/quick_auto_dox_index" ".*\.qbk"
+
+ <auto-index-prefix>../../..
+
+ # Inform Quickbook that there is to be an index(es).
+ <quickbook-define>enable_index
+
+ ;
+}
+else
+{
+ ECHO "Building the Quickdox docs with automatic index generation disabled. To get an auto-index, try building with --enable-index." ;
+}
+
+doxygen autodoc
+ :
+ [ glob ../../../boost/quick_auto_dox_index/*.hpp ] # These are your hpp include files.
+ [ glob ../../../boost/quick_auto_dox_index/detail/*.hpp ] # More include files, if necessary.
+ [ glob ../examples/src/*.cpp ] # These are your example source files.
+ # Might also be at just ../examples/*.cpp if you don't have a /src sub-directory.
+ :
+ # Lots of parameters passed to Doxygen. You can see these in the doxygen docs, or the Wizard Expert tab displays them.
+ # If you have successfuly built your Doxygen docs standalone using the Wizard (strongly recommended as it is much quicker).
+ # The values in your project's doxyfile are what to put as the Doxygen parameters passed below.
+ <doxygen:param>WARNINGS=YES # Default NO, but useful to see warnings, especially in a logfile.
+ # It is also wise to to set a warnings logfile like this:
+ <doxygen:param>WARN_LOGFILE=AutoDoxywarnings.log # This may not be empty (usually not a good sign!), depending on options chosen.
+ # Much better to send message to a logfile than the default stderr.
+ # and make sure that there are no Doxygen errors or significant warnings in the log file.
+
+ <doxygen:param>WARN_IF_UNDOCUMENTED=NO # Default NO but useful if you aim to Doxygen document *all* members.
+ <doxygen:param>WARNINGS=YES # Default NO, but useful to see warnings, especially in a logfile.
+ <doxygen:param>QUIET=NO # Default NO, and best left as NO.
+ <doxygen:param>WARN_NO_PARAMDOC=NO # Default no, but YES useful if you aim to document all function parameters.
+ # <doxygen:param>DOXYFILE_ENCODING=UTF-8 # Default is UTF-8 which is almost certainly OK.
+ <doxygen:param>PROJECT_NAME="Quickbook Doxygen Indexing Documentation Prototype" # Shows on Doxygen main page (if you have one).
+ <doxygen:param>PROJECT_NUMBER=1 # Might be useful for version numbering?
+ <doxygen:param>TAB_SIZE=2 # or your choice.
+ # <doxygen:param>OUTPUT_DIRECTORY # Default is current directory.
+ # <doxygen:param>CREATE_SUBDIRS=YES # Unlike to be useful except for a very large project.
+ # <doxygen:param>BRIEF_MEMBER_DESC=YES # Doxygen will include brief member descriptions by default, and is what you want.
+ # <doxygen:param>REPEAT_BRIEF=YES # Prepend brief description before detailed, default and is what you want.
+ # <doxygen:param>ALWAYS_DETAILED_SEC=NO # Probably not wanted.
+ # <doxygen:param>ABBREVIATE_BRIEF=NO # Probably not wanted.
+ # <doxygen:param>EXTRACT_ALL=YES # Documents everything, probably best to use to start and only extract selected items if it proves to be unmanageable.
+ <doxygen:param>INLINE_INHERITED_MEMB=YES # Show all inherited members of a class in the documentation of that class as if those members were ordinary class members.
+ <doxygen:param>SORT_MEMBER_DOCS=YES # sort docs into alphabetical order - generally useful.
+ #<doxygen:param>EXTRACT_PRIVATE=YES # Show all private members. Less useful for user documentation.
+ <doxygen:param>EXTRACT_PRIVATE=NO # If the EXTRACT_PRIVATE tag is set to YES all private members of a class will be included in the documentation
+ <doxygen:param>EXTRACT_STATIC=YES # Show all static members.
+
+ # <doxygen:param>EXTRACT_LOCAL_METHODS=YES # Only useful for Objective C.
+ # <doxygen:param>EXTRACT_ANON_NSPACES=YES # Probably not useful for user documentation?
+ <doxygen:param>EXTRACT_LOCAL_CLASSES=YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined locally in source files will be included in the documentation.
+ <doxygen:param>EXTRACT_LOCAL_METHODS=YES # Less useful for user documentation.
+ # The following are over-ridden by EXTRACT_ALL=YES
+ <doxygen:param>HIDE_UNDOC_MEMBERS=NO # Not useful unless you have carefully documented all members that you want Doxygen to list.
+ <doxygen:param>HIDE_UNDOC_CLASSES=YES # YES if you only want the items you *have* specifically documented all members that you want Doxygen to list.
+ <doxygen:param>HIDE_UNDOC_MEMBERS=NO # NO if you want all members Doxygen documented.
+ <doxygen:param>HIDE_FRIEND_COMPOUNDS=NO # Default is NO and will append friend information.
+ #<doxygen:param>HIDE_INBODY_DOCS=NO # Default is NO and will append this information. Option no longer supported?
+ <doxygen:param>INTERNAL_DOCS=YES # Allows implemented details NOT to be included in public docs.
+ <doxygen:param>CASE_SENSE_NAMES=NO # Must be NO for Boost which may include Windows file system. (means that all file names are lower case)
+ <doxygen:param>HIDE_SCOPE_NAMES=NO # Default NO is not to full qualify members with class and namespace.
+ <doxygen:param>SORT_MEMBER_DOCS=YES # Default YES is to sort alphabetically.
+ <doxygen:param>SORT_BRIEF_DOCS=YES # Default is to sort brief documentation alphabetically.
+ <doxygen:param>SORT_MEMBERS_CTORS_1ST=NO # Default No puts constructors and destructors first.
+ # Preprocessor settings.
+ # Some ugly examples of predefined macro calls (from Boost.Units library) :(
+ <doxygen:param>"PREDEFINED= \\
+ \"BOOST_UNITS_STATIC_CONSTANT(a,b)=static const b a\" \\
+ \"BOOST_UNITS_TYPEOF(a)=typeof(a)\" \\
+ \"BOOST_PREVENT_MACRO_SUBSTITUTION=\" \\
+ \"BOOST_UNITS_HAS_TYPEOF=1\""
+ <doxygen:param>ENABLE_PREPROCESSING=YES # Evaluates all C-preprocessor directives found in files.
+ <doxygen:param>MACRO_EXPANSION=YES # Will expand all macro names.
+ <doxygen:param>EXPAND_ONLY_PREDEF=YES # Only predefined macros expanded. See units library for an example.
+ <doxygen:param>SEARCH_INCLUDES=YES # Search #include files found.
+ <doxygen:param>INLINE_INFO=YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] is inserted in the documentation for inline members.
+ <doxygen:param>SORT_BRIEF_DOCS=YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief descriptions of file, namespace and class members alphabetically by member name.
+ <doxygen:param>SORT_MEMBER_DOCS=YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen will sort the (detailed) documentation of file and class members alphabetically by member name.
+ <doxygen:param>SHOW_INCLUDE_FILES=NO # List of the files that are included by a file in the documentation of that file.
+ <doxygen:param>REPEAT_BRIEF=YES # Prepend the brief description of a member or function before the detailed description
+ <doxygen:param>BRIEF_MEMBER_DESC=YES # Include brief member descriptions after the members that are listed in the file and class
+ <doxygen:param>MULTILINE_CPP_IS_BRIEF=YES # Treat a multi-line C++ special comment block (i.e. a block of //! or /// comments) as a brief description.
+ # May be best to always use \brief and \details to avoid ambiguity?
+ # <doxygen:param>STRIP_FROM_PATH=NO # Most useful to leave default to strip just the directory from which Doxygen is run.
+ # Yes gives the full path, but NO is more useful, only giving enough to be
+ # <doxygen:param>CPP_CLI_SUPPORT=NO # unless, most unusually, you are compiled for a 'managed' CLI application.
+ <doxygen:param>SHOW_USED_FILES=YES # Default YES to show a list files used to generate documention.
+ <doxygen:param>SHOW_DIRECTORIES=YES # Default NO, but useful to show directory heirarchy.
+ <doxygen:param>SHOW_FILES=YES # Default YES is to include a tab for a page of files listed. Useful.
+ <doxygen:param>SHOW_NAMESPACES=YES # Default YES to include tab for list of namespaces. Useful if you have namespacess other than boost::
+
+ #<doxygen:param>INCLUDE_PATH=$(BOOST_ROOT) # Useful? But slows because inspects ALL Boost!
+
+ <doxygen:param>FILE_PATTERNS= # Types of files to be used as input. Default includes *.c *.cc *.cxx *.cpp *.c++ *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp *.h++ *.py
+ # Might include .qbk?
+
+ <doxygen:param>RECURSIVE=YES # Search recursively down subdirectories.
+ <doxygen:param>EXCLUDE= # Files or directories that should be excluded from INPUT source files.
+ # Headers and footers are actually rather attractive,
+ <doxygen:param>HTML_HEADER="doxygen/my_doxygen_header.html" # A sample including a draft stamp and 'Not_Yet_In_Boost' logo.
+ # Take care that if you use this (recommended), you need to ensure that the html
+ <doxygen:param>HTML_FOOTER="doxygen/my_doxygen_footer.html" # This is very useful to add copyright, date of revision, versioning etc.
+
+ # A custom stylesheet is also useful.
+ # as the default syntax coloring is 'unusual' ;-)
+ <doxygen:param>HTML_STYLESHEET="doxygen/my_doxygen.css" # Placed in the doxygen directory,
+ # this will change to your choice of C++ syntax coloring when viewing source from Doxygen.
+ # Users can place (or edit) their own personal choice CSS file here.
+
+ # Default is just Reference but you can provide your own title for reference section here.
+ <xsl:param>"boost.doxygen.reftitle=QuickbookDoxygenAutoindex Reference"
+
+;
+ #<doxygen:param>"PREDEFINED=\"BOOST_DEDUCED_TYPENAME=typename\" "
+ # See Doxygen configuration for detailed explanation of these options.
+ # And if you have (wisely) produced the Doxygen index first using the Wizard,
+ # see your doxyfile (which you should save in the project's Doxygen directory).
+
+
+xml quick_auto_dox_index
+ :
+ quick_auto_dox_index.qbk # This is your 'root' Quickbook file (that may include other .qbk files).
+ :
+;
+
+boostbook standalone
+ :
+ quick_auto_dox_index
+ :
+
+ # Path for links to Boost:
+ #<xsl:param>boost.root=\$(local-boost-root) # Link to Boost logo boost.png
+ # Links are relative and trying to make absolute does NOT work.
+ # And remember that all links MUST (unless in quotes) use backslash, not forward that is trip char.
+
+ # Grep through our stylesheet layer in $(local-boost-root)/tools/boostbook/xsl for xsl:params you can alter.
+ # main xsl param reference for docbook http://docbook.sourceforge.net/release/xsl/current/doc/
+
+ <xsl:param>boost.root=../../../../../../../boost_trunk # OK but link to I:/boost_trunk/boost.png
+
+ # Also control links to admonitions, so need to set separately.
+ #<xsl:param>boost.root=../../../../../../../boost_1_46_0 # OK file:///I:/boost_1_46_0/boost.png
+ # Quickbook [@boost:/boost/units/detail/utility.hpp] should make it relative to xsl parameter boost.root.
+
+ # [@boost:boost.png Boost logo] # xsl parameter boost.root, for example I:/boost_1_45_0/boost.png
+
+ # Path for libraries index:
+ <xsl:param>boost.libraries=../../../../../../../boost_1_45_0/libs/libraries.htm
+ # Use the main Boost stylesheet:
+ #<xsl:param>html.stylesheet=$(local-boost-root)/doc/html/boostbook.css #? better
+ <xsl:param>html.stylesheet=./boostbook.css # in /doc folder.
+
+ # Use the your own local Boost stylesheet:
+ # <xsl:param>html.stylesheet=../html/boostbook.css
+
+ # Some general style settings:
+ # see http://docbook.sourceforge.net/release/xsl/current/doc/html/index.html
+ <xsl:param>table.footnote.number.format=1 # Identifies the format used for footnote numbers in tables.
+ <xsl:param>footnote.number.format=1 # Identifies the format used for text footnote numbers.
+
+ # Default to not including the Boost logo in the navbar, when one expressly asks to include the navbar.
+ # Boost jamroot now includes
+ # Default to not include a navbar.
+ #<xsl:param>nav.layout=none # No navigation bar (home, prev, next).
+ # defining creates a runtime error: Global parameter nav.layout already defined
+ <xsl:param>nav.layout=horizontal # to get a horizontal navigation bar (you probably DO want this).
+
+ <xsl:param>boost.image=Boost # options are: none (no logo), Boost (for boost.png), or your own logo like inspired_by_boost.png
+ <xsl:param>boost.image.src=./images/proposed_for_boost.png #
+ <xsl:param>boost.image.w=180 # Width of logo in pixels. (JM has W = 162, h = 46)
+ <xsl:param>boost.image.h=90 # Height of logo in pixels.
+
+ # HTML options:
+ # ------------
+ <xsl:param>navig.graphics=1 # Use graphics not text for navigation.
+ <xsl:param>chunk.section.depth=10 # How far down we chunk nested sections, basically all of them.
+ <xsl:param>chunk.first.sections=1 # Don't put the first section on the same page as the TOC.
+ <xsl:param>toc.section.depth=10 # How far down sections get TOCs.
+ <xsl:param>toc.max.depth=4 # Max depth in each TOC.
+ <xsl:param>generate.section.toc.level=10 # How far down we go with TOCs.
+
+ #<format>html:<xsl:param>img.src.path=$(images_location)/ # Path of image (.png) files. (Note trailing /)
+ # This doesn't work???
+
+ #<format>html:<xsl:param>admon.graphics.extension=".png" # default type for admonitions (important, warning, note ...)
+ #<format>html:<xsl:param>admon.graphics.path=$(nav-images)/ # path to admonition (warning, note...) image (.png) files.
+
+ #<xsl:param>root.filename="quick_auto_dox_index"
+ # <xsl:param>project.root=http://beta.boost.org/development
+ # <xsl:param>annotation.support=1
+ # <xsl:param>quickbook.source.style.show="'true'"
+
+ # PDF Options:
+ # -----------
+ # TOC Generation
+ <xsl:param>fop1.extensions=0 # DISable extensions for FOP version 0.90 and later .
+ <format>pdf:<xsl:param>fop.extensions=0 # DISable extensions for FOP version 0.20.5 and earlier.
+ <format>pdf:<xsl:param>xep.extensions=1 # Use XEP extension- PDF bookmarks, document information and better index processing.
+
+ # No indent on body text:
+ <format>pdf:<xsl:param>body.start.indent=0pt #
+ <format>pdf:<xsl:param>paper.type=A4 # Paper type = A4
+ # http://xml.resource.org/public/rfc/html/rfc2346.html
+ # Making Postscript and PDF International, J Palme, RFC 2346 recommends
+ # If you are using US letter paper format, ensure that both left and right margins are at least 21 mm (0.8 in).
+ # If you are using A4 paper, ensure that both the top and bottom margins are at least 33 mm (1.3 in).
+ # Margins sizes:
+ #<format>pdf:<xsl:param>page.margin.top=1.3in
+ #<format>pdf:<xsl:param>page.margin.inner=0.8in
+ #<format>pdf:<xsl:param>page.margin.bottom=1.3in
+ #<format>pdf:<xsl:param>page.margin.outer=0.8in
+
+ # http://docbook.sourceforge.net/release/xsl/current/doc/index.html
+ # DocBook XSL Stylesheets: Reference Documentation.
+
+ # Yes, we want graphics for admonishments:
+ <xsl:param>admon.graphics=1
+ # Set these one for PDF generation *only*:
+ #
+ # In PDF format, default PNG graphics are awful, so better use SVG images (type .svg) instead.
+ <format>pdf:<xsl:param>admon.graphics.extension=".svg" #
+ <format>pdf:<xsl:param>use.role.for.mediaobject=1 # Use print role on next line.
+ <format>pdf:<xsl:param>preferred.mediaobject.role=print # pdf role is to be printed.
+ <format>pdf:<xsl:param>img.src.path=$(images_location)/ # Path of image (.svg) files. (Note trailing /) ? //
+ #<format>pdf:<xsl:param>img.src.path=../ # alternative location of images.
+ <format>pdf:<xsl:param>admon.graphics.path=$(nav_images)/ # path to admonition (warning, note...) image (.svg) files.
+ <format>pdf:<xsl:param>draft.mode="no"
+ <format>pdf:<xsl:param>boost.url.prefix=I:/boost-sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc/html
+
+ <dependency>autodoc # Doxygen reference section
+ # <dependency>pdf-install # final pdf
+ <dependency>png-install # Boost standard icons in both png
+ <dependency>svg-install # and svg.
+ ;
+
+# To install a 'master'
+# install html : ../../../doc/html/boostbook.css ;
+# install ../ : ../../../boost.png ;
+
+# Install (copy) the 'master' copy of boostbook Cascading Style sheet
+# from your current Boost-root to the /doc/html folder.
+path-constant boost-root : [ modules.peek : BOOST ] ;
+install css-install : $(boost-root)/doc/src/boostbook.css : <location>html ;
+
+path-constant boost-root : [ modules.peek : BOOST ] ;
+
+
+# Install (copy) the 'master' copies of all icon images (both PNG and SVG)
+# and the Boost logo from your current Boost-root
+# to the local /doc/html/images folder so that html is complete and standalone.
+install png-install : [ glob $(boost-root)/doc/src/images/*.png $(boost-root)/boost.png ] : <location>html/images ;
+install svg-install : [ glob $(boost-root)/doc/src/images/*.svg ] : <location>html/images ;
+
+ # install unordered_pdf : standalone/<format>pdf : <location>. ;
+ # explicit unordered_pdf ; # The explicit rule is there so that it's only installed when the target is explicitly named.
+
+# Effectively copies the file from \bin folder to the \doc folder.
+# install pdf-install : standalone : <location>. <install-type>PDF ;
+# But will not work as expected if doxygen and/or autoindex is used
+# because a modified pdf file is created, so this command below
+# will rename the file to the expected filename, here quick_auto_dox_index.pdf.
+# <location>. means installed in same place as this jamfile, /doc.
+
+install pdf-install : standalone : <install-type>PDF <location>. <name>quick_auto_dox_index.pdf ;
+
+install callouts : [ glob src/images/callouts/*.png ] : <location>html/images/callouts ;
\ No newline at end of file
Added: sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc/quick_auto_dox_index.idx
==============================================================================
--- (empty file)
+++ sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc/quick_auto_dox_index.idx 2011-04-26 12:16:55 EDT (Tue, 26 Apr 2011)
@@ -0,0 +1,60 @@
+# quickautodoxindex index.idx list of files to be indexed.
+# Copyright (c) 2011 Paul A. Bristow
+#
+# 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)
+
+!debug regular-expression
+
+# Recursively scan through directories looking for all the files to scan
+# whose name matches a particular regular expression.
+# Note *regular expression* !, so must be ".*\.hpp" to find all .hpp!
+
+# Assume all header files are in boost/quick_auto_dox_index and sub-folders.
+!scan-path boost/quick_auto_dox_index ".*\.hpp" true
+
+# Assume all Quickbook files are in /docs (none in sub-folders).
+!scan-path "libs/quick_auto_dox_index" ".*\.qbk"
+
+# Safest to always use " quotes around paths.
+
+!exclude type arg1_type arg2_type arg3_type arg4_type arg5_type B D
+
+#!exclude result
+#!exclude if
+
+acknowledgements
+bold
+C++ \<C|C++\>
+CSS
+deprecated
+Doxygen
+example \<example\w*\>
+equations \<equation\w*\>
+FOP
+graphics \<graphic\w*\>
+links \<link\w*\>
+icons \<icon\w*\>
+images \<image\w*\>
+Inkscape \<Ink\w*\>
+italic \<italic\w*\>
+# index index and indexes (assume not using plural indices!)
+index \<index\w*\>
+path \<path\w*\>
+pre-conditions \<pre\w*\>
+post-conditions \<post\w*\>
+remark \<remark\w*\>
+snippet \<snippet\w*\>
+png
+Quickbook
+svg
+version \<version\w*\>
+warning \<warning\w*\>
+
+# Remove leading "A" or "The" prefixes from section titles.
+!rewrite-name "(?:A|An|The)\s+(.*)" "\1"
+
+
+
+
Added: sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc/quick_auto_dox_index.pdf
==============================================================================
Binary file. No diff available.
Added: sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc/quick_auto_dox_index.qbk
==============================================================================
--- (empty file)
+++ sandbox/tools/quick_auto_dox_index/libs/quick_auto_dox_index/doc/quick_auto_dox_index.qbk 2011-04-26 12:16:55 EDT (Tue, 26 Apr 2011)
@@ -0,0 +1,1328 @@
+[article Creating Boost HTML and PDF documentation using Quickbook, Doxygen and Auto-Indexing.
+ [quickbook 1.5]
+ [id quick_auto_dox_index]
+ [copyright 2011 Paul A. Bristow]
+ [license
+ 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])
+ ]
+ [authors [Bristow, Paul A.]]
+ [source-mode c++]
+]
+
+[/purpose Guidance on how to prepare HTML and PDF documentation for Boost using Quickbook.]
+
+[/ Images]
+[/ $images is a reference to a sub-folder where images are held.]
+
+[/ Links - by (most common) convention, prefixed with double underscore so not confused with other names.]
+[def __alert [$./images/alert.png]] [/ Examples of your own images (in doc/html/images/ .]
+[def __tip [$./images/tip.png]]
+[def __smiley [$./images/smiley.svg]]
+[/ If you provide a file type like .png, you may (probably) find that the file is missing in the pdf version.]
+[/ This is because the default file type specified is .png in html, but .svg for pdf version.]
+[/ You can easily interconvert between these types using Inkscape.]
+
+[/ Some links to external sources.]
+[def __boost [@http://www.boost.org/ Boost]]
+[/Note the custom url schema for linking to files within the Boost distribution.]
+[/def __boostroot [@boost: Boost root] does NOT work withe PDF, so avoid.]
+[/Note too that it can't be used for images.]
+[def __boostlicense [@http://www.boost.org/LICENSE_1_0.txt Boost License]]
+
+[def __boostbook [@http://www.boost.org/doc/html/boostbook.html BoostBook]]
+[def __boostbook_docs [@http://www.boost.org/doc/libs/1_46_0/doc/html/boostbook.html BoostBook documentation]]
+
+[def __quickbook [@http://www.boost.org/doc/tools/quickbook/index.html Quickbook]]
+[def __quickbook_syntax [@http://www.boost.org/doc/libs/1_46_0/doc/html/quickbook/ref.html Quickbook Syntax Compendium]]
+[def __quickbook_phrase_syntax [@http://boost-sandbox.sourceforge.net/doc/html/quickbook/syntax.html#quickbook.syntax.phrase Quickbook phrase level syntax]]
+
+[def __autoindex [@https://svn.boost.org/svn/boost/sandbox/tools/auto_index/doc/html/index.html AutoIndex]]
+
+[def __docbook [@http://www.docbook.org/ DocBook]]
+[def __doxygen [@http://www.doxygen.org/ Doxygen]]
+[def __pdf [@http://www.adobe.com/products/acrobat/adobepdf.html PDF]]
+[def __inkscape [@http://www.inkscape.org Inkscape]]
+[def __svg [@http://http://www.w3.org/TR/SVG/ SVG]]
+
+[def __todo [link quick_auto_dox_index.todo TODO]]
+
+[def __renderx [@http://www.renderx.com/tools/xep.html Render XEP]]
+
+[important This is NOT (nowhere near) yet an official Boost library.]
+[/It would also be MUCH better to have separate Boost logo(s) showing status as accepted after review, provisionally accepted, in the review queue, or under development.]
+
+[/ Examples of links to classes in own files.]
+[note Comments and suggestions (even bugs!) to Paul.A.Bristow (at) hetp (dot) u-net (dot) com]
+
+A PDF version of this manual that is printer-friendly is also available.
+
+[section:intro Introduction]
+[/ It is a good idea to give *all* sections an id - which must follow section: with *no* space(s).]
+[/ Perhaps also useful to use this text for the Doxygen standalone documentation.]
+
+There are many ways of generating documentation, but this combination of tools,
+(while absurdly complex and troublesome to set up, and a bit slow to build),
+produces some of the nicest and most comprehensive C++ documentation.
+
+Some features are:
+
+* Documentation is written in __quickbook, a [@http://en.wikipedia.org/wiki/Wikiwiki Wiki-Wiki-style language].
+
+* Output in both html and/or [@http://en.wikipedia.org/wiki/Adobe_PDF Adobe PDF] formats.
+ PDF format is useful to readers complementing html
+ because it is a convenient single readonly file,
+ and because it can be *globally* searched for any text string, providing a tool similar to an index,
+ but which does not depend on the author's choice of index terms.
+
+* __quickbook files (.qbk like this file `quick_auto_dox_index.qbk`) are text files that can be
+ edited with your favorite plain text editor.
+ (Syntax coloring of Quickbook files can usually be arranged, and is extremely helpful).
+
+* Portable to nearly all platforms.
+
+* __boostlicense (so OK for commercial applications as well as non-profit).
+
+* C++ specific, with C++ syntax colored code Quickbook blocks.
+
+* Automatic syntax coloring of C++ code samples in html and pdf.
+
+* [@http://en.wikipedia.org/wiki/Cascading_Style_Sheets CSS] support.
+Changing Boostbook.css allows the user to chose his own syntax coloring,
+something that people are surprisingly sensitive to!
+The best method of customising this is not yet clear.
+
+* __quickbook documentation can be embedded into C++ code (as comments) to document the code itself
+ and also provide separate html and pdf documentation.
+ This ensures that the code snippets shown in the documentation have been (re-)compiled,
+ (re-)tested, and are updated automatically as the source C++ is changed.
+
+* Simple markup to link to __doxygen generated entities.
+
+* __doxygen commands (as C++ comments) provide additional information
+both in Quickbook automatically added reference section,
+and also in Doxygen standalone documentation.
+
+* Automatic indexing to Doxygen-generated entities and to text with filtering.
+ For example, see __autoindex.
+
+* Macro system for simple text substitution.
+
+* Markup for italics, bold, preformatted, blurbs, notes, code samples, tables, URLs, anchors, images, etc.
+
+* Images (png, svg, jpg) of diagrams, graphs, equations, pictures... are embedded into PDF and linked from html.
+
+__alert
+To allow a standalone zipped version of html, the images must be copied into the doc\html\images sub-directory.
+
+This document is intended to provide a sort of template to help new writers get started,F*.pp
+
+with many handy hints and tips (based on the very many pitfalls encountered en route!).
+
+It is written in Quickbook to demonstrate some features
+(but for much more see __quickbook manual (itself written in Quickbook)
+especially the Quick Reference table 28.8 Syntax Compendium).
+
+This documentation can be rebuilt to confirm that the whole complex toolchain is working correctly.
+
+If all works OK, copy the whole `quick_auto_dox_index directory` structure to you own workspace.
+Check that it works and then use/replace each file as a starting point to fashion your own files.
+
+__tip I'm sure you will find it useful to do this before you start to write your own stuff! __smiley
+
+[endsect] [/section:intro Introduction]
+
+[/ Now follow the main sections of your documentation.
+These .qbk files can of course many sections, and may include other .qbk files,
+links to other files of any type and location,
+and import C++ file snippets that may turn one or more sections into templates that can be included.]
+
+[/include todo.qbk]
+[include acknowledgements.qbk] [/ Who deserves credit for what.]
+[/references references.qbk] [/ references to academic papers, patents, prior art...]
+
+[/include credits.qbk]
+[section:hints Hints and Tips]
+
+[section:examples Examples of using Quickbook]
+
+You will, of course, find studying other examples of using
+Quickbook to produce documentation very useful.
+
+The __quickbook manual is, of course, written in Quickbook,
+and will be the first thing to bookmark.
+
+A document written to demonstrate and test many features is also helpful.
+
+The results are at
+[@http://svn.boost.org/svn/boost/trunk/doc/test/gold/index.html]
+and the Quickbook source at
+[@http://svn.boost.org/svn/boost/trunk/doc/test/test.qbk test.qbk].
+
+It exposes some things that don't work so well.
+For example, using ['/[@boost:]] does not yield correct hyperlink in PDF,
+and so should not be used. Links to the [@http://svn.boost.org/svn/boost/trunk/ Boost-trunk]
+and [@http://boost-sandbox.sourceforge.net Boost-sandbox] are preferred.
+
+Other Boost libraries that use Quickbook for their documentation are
+
+* [@http://boost-sandbox.sourceforge.net/doc/html/mpi.html Boost.mpi]
+
+* Boost.Program_options is documented using Quickbook and good coverage of Doxygen comments
+(but is not autoindexed).
+
+* Boost.Spirit (Autoindexed but does not use Doxygen).
+
+* Boost.Units (but does not using Doxygen to fully describe classes, functions etc).
+
+* Boost.Accumulators (but does not using Doxygen to fully describe classes, functions etc).
+
+* Boost.Math (Autoindexed but does not using Doxygen to fully describe classes, functions etc).
+
+* Boost.Geometry Using of Dxoygen with Quickbook a bit differently to document
+is described by Barend Gehrels in a another 'real life' story
+[@http://barendgehrels.blogspot.com/2010/12/doxygen-and-quickbook.html Doxygen & Quickbook].
+
+* [@https://svn.boost.org/svn/boost/sandbox/SOC/2007/visualization/libs/svg_plot/doc/pdf/svg_plot.pdf SVG_plot]
+A sandbox GSoC project is documented with Quickbook and with Doxygen
+(with [*all] of a very large number of classes and functions fully described)
+and is also autoindexed.
+
+And several other new libraries with much improved documentation are appearing.
+
+[endsect] [/section:examples Examples of using Quickbook]
+
+
+[section:copyright Copyright and license]
+
+Do not forget to include copyright, Boost license for *all files*
+(and include guard for all .hpp files).
+
+ // Copyright YOURNAME 2009
+
+ // Use, modification and distribution are 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)
+
+ #ifndef BOOST_QUICK_AUTO_DOX_INDEX_HPP
+ #define BOOST_QUICK_AUTO_DOX_INDEX_HPP
+
+ ...
+
+ #endif // BOOST_QUICK_AUTO_DOX_INDEX_HPP
+
+(And don't forget a final newline right at the end, to ensure full C++ Standard compliance.
+MSVC in "no extensions mode" \/Za message "fatal error C1004: unexpected end-of-file found"
+signals this bug. You will also be named'n'shamed by the
+[@http://boost.cowic.de/rc/inspect-trunk.html#mathBoost Boost Inspection Report]!).
+
+In any Cascading Stylesheets (.css), include your version of
+
+ /*
+ Copyright YOURNAME 2009
+ Use, modification and distribution are 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)
+ */
+
+in html/XML files (for example Doxygen headers and footers)
+
+ <!-- Copyright 2011 YOURNAME. -->
+ <!-- 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) -->
+
+In jamfiles (where \# starts comments):
+[pre
+# \boost-sandbox\tools\quick_auto_dox_index\libs\quick_auto_dox_index\doc\quick_auto_dox_index.qbk
+# Runs Quickbook_Doxygen_indexing documentation example.
+# Copyright 2011 *YOURNAME*.
+# 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)
+]
+
+[endsect] [/section:copyright Copyright and license]
+
+[section:tools Hardware and Software Tools]
+
+* Screens and Windows. You will soon find that you cannot have too many screens,
+so that you can keep as many as possible of the various manuals, C++ code,
+output html and PDF, and the Quickbook file(s) being edited as visible as possible.
+
+* Quickbook files are plain ASCII 7-bit text so any text editor (not Word!) will suffice.
+
+* Syntax coloring provided by your text editor is *very* helpful
+in seeing immediately what is comment and what is keyword and bracket.
+Even rudimentary coloring is a big help.
+Some contributed syntax coloring files for various text editors are at
+[@boost:\tools\ syntax_colors].
+
+* Quickbook syntax is necessarily hugely unforgiving of mismatched `[]` brackets.
+A text editor that matches these will help avoid grief.
+[@http://sourceforge.net/projects/notepad-plus/ Notepad++],
+[@http://www.textpad.com/ Textpad],
+[@http://www.gnu.org/software/emacs/ Emacs],
+Microsoft IDE Automatic Brace Matching and/or ctrl \],
+and many others can all do this.
+
+[endsect] [/section:tools Hardware and Software Tools]
+
+
+[section:includes Included files and using statements]
+
+When you list #include files, it is often helpful to the reader to know *why* it is included,
+for example by listing the functions/classes used:
+
+ #include <iostream>
+ using std::cout;
+ using std::endl;
+
+Although this introduces some clutter, it may help to reduce the 'implicit include syndrome'
+where missing includes only pop up in use, often with very puzzling error messages.
+
+BUT you should *never* impose your `using` choices globally on an unsuspecting user
+who includes *your* files, so for .hpp files, either comment these out:
+
+ #include <iostream>
+ // using std::cout;
+ // using std::endl;
+
+or you can, of course, still write using statements at *local* scope, within functions,
+but these do not document which functions are provided by an include.
+
+When explaining code function is the main aim, for example tutorial examples,
+you could do [*both]
+
+* commenting the using statement(s) `// using std::cout;` after the `#include <iostream>`,
+* [*and] writing `using std::cout;` at local scope(s).
+
+[endsect] [/section:includes Included files and using statements]
+
+
+[section:source_links Links to source code and including snippets of code]
+
+Provide links to source code, especially examples.
+
+In Quickbook, provide a link like
+
+[@../../example/src/quick_auto_dox_index.cpp]
+
+This link assumes that the .qbk file is at `/libs/quick_auto_dox_index/doc`
+and the examples are at `/libs/quick_auto_dox_index/example/src`.
+
+Quick access to header files is provided in the C++ Reference section.
+
+But you can also provide a link to a header file like this:
+
+[@../../../../boost/quick_auto_dox_index/quick_auto_dox_index.hpp]
+
+This assumes the [@http://www.boost.org/development/requirements.html#Directory_structure Boost 'standard' folder layout].
+
+[endsect] [/section:source_links Links to source code and including snippets of code]
+
+[section:show_output Show the output from example programs.]
+
+It is also [*really] helpful for users to see the output from example (and other) programs
+[*together with] the program. This can be done as 'in-line' comments:
+
+If you write
+
+ cout << "my_value = " << my_value << endl; // my_value = 9
+
+You can also copy and paste the output from a screen in full, or just part elsewhere in the code.
+
+(If you are using MSVC IDE, add a post build (or custom) event:
+
+[pre
+Select Project, Property, Build events, Post-build event, and add a Commandline of
+
+"\$(TargetDir)\$(TargetName).exe"
+]
+
+and optionally a description of
+[pre
+"Autorun "\$(TargetDir)\$(TargetName).exe""
+]
+This will autorun the program after re-building and include the output in the IDE Output Window
+(removing any blank lines, a MSVC IDE 'feature' which may confuse you).
+
+This speeds the ['edit/compile/run/crash' cycle] __smiley
+
+It is then easy to copy and paste any or all of the output into the source code as a comment.
+
+You can do this by enclosing it in `/* ... */` C-style comments
+but it may also be useful to add output to the Doxygen output by adding it to the
+`\details` section.
+
+[pre
+ \file
+ \brief Trivial example.
+ \details Too trivial for details.
+
+ Output:
+ \verbatim
+ This is the program output.
+ my_value = 9
+ \endverbatim
+]
+
+[note \file picks up the real filename automatically, so is prefered.]
+
+[endsect] [/section:show_output Show the output from example programs.]
+
+
+[section:show_output_snippets Show the output using Quickbook 'snippets']
+
+You can also make it a Quickbook template some or all of the output (or source code)
+as C++ comment, so it can be included in Quickbook source.
+[@http://boost-sandbox.sourceforge.net/doc/html/quickbook/syntax.html#quickbook.syntax.block.import.code_snippet_markup Code snippet markup]
+ensures that the C++ source and documentation cannot get out of sync.
+
+ //[quick_auto_dox_index_output
+ Autorun "I:\boost-sandbox\tools\quick_auto_dox_index\libs\quick_auto_dox_index\doc\quick_auto_dox_index.cpp"
+ This is the demo output.
+ //] [/quick_auto_dox_index_output]
+
+Adding the name of the template as a comment (just add a prefix '/') after the 'opening bracket'
+will help you (and others) to avoid confusion about the start and end of snippets sections.
+If you have more than one snippet, it is also useful to number label them, for example:
+
+ //[quick_auto_dox_index_1
+ ... 1st snippet code
+ //] [\quick_auto_dox_index_1]
+
+ //[quick_auto_dox_index_2
+ ... 2nd snippet code
+ //] [\quick_auto_dox_index_2]
+
+[endsect] [/section:show_output_snippets Show the output using Quickbook 'snippets']
+
+
+[section:images Images, equations and graphics]
+
+You can insert an image of specific file type:
+
+[pre
+ \[$my_image.jpg\]
+]
+
+But you need to ensure that image is in the same directory as the html.
+
+It is usually assumed that all images in a sub-directory, say `/images`,
+so you will need to preface for example
+(and making it small, or larger, and try to align in center or left)
+
+[$./images/lena512color.jpg [depth 10mm] ]
+
+[$./images/lena512color.jpg [width 20mm] ]
+
+[$./images/lena512color.jpg [scale 10] [align left]]
+[br]
+
+[$./images/lena512color.jpg [scale 20] [align center] ] [/ center has no effect?]
+
+Or, for some images, making it mercifully small, and aligned right:
+
+[$./images/my_image.jpg [scale 5] [align right]]
+
+[note \[align right\] works on html, but not on pdf!]
+
+\[$images/smiley.png\] produces the png smiley [$images/smiley.png]
+
+Text or a newline is needed to avoid images on the same 'line'.
+
+\[$images/smiley.svg\] produces the svg smiley [$images/smiley.svg]
+
+But [valign top] does not seem to have any effect?
+
+You can NOT insert an image of unspecified type \[$my_image\] but ...
+
+This template graphic (template could be called `graph` or `equation` or `diagram`)
+automatically inserts the right type for html (PNG) and pdf (SVG)
+from the folder named images.
+
+ [template graphic[name] '''<inlinemediaobject>
+ <imageobject role="html">
+ <imagedata align="center" fileref="./images/'''[name]'''.png"></imagedata>
+ </imageobject>
+ <imageobject role="print">
+ <imagedata align="center" fileref="./images/'''[name]'''.svg"></imagedata>
+ </imageobject>
+ </inlinemediaobject>''']
+
+[tip You will need to insert the right path - and it [*must be relative]:
+`./images/` not absolute `/images/`
+
+or you will get an error message perhaps like:
+
+ \[error\] Failed to create image file:/images/pc1.svg of type null
+ \[error\] java.io.FileNotFoundException: \images\pc1.svg (The system cannot find the path specified)
+
+ rather than one like one warning where the directory is wrong:
+
+ \[warning\] Could not retrieve image from 'null':
+ java.net.MalformedURLException: Invalid URL or non-existent file:
+ I:\boost-sandbox\tools\quick_auto_dox_index\libs\quick_auto_dox_index\doc\html\images/./images/smiley.svg
+ \[error\] Failed to create image file:/images/my_image.png of type null
+ \[error\] java.io.FileNotFoundException: \images\my_image.png (The system cannot find the path specified)
+
+where the mistake in directory is clear.
+
+] [/tip]
+
+[note align="right" valign = "bottom" does not seem to have any effect?]
+
+[$images/smiley.png] [/ A graphic in png (only) format]
+
+Use template graphic thus:
+
+ [graphic smiley]
+
+You will have to provide both files types,
+for example, [*both] smiley.png and smiley.svg.
+
+__inkscape provides a convenient way to convert.
+
+[caution It is not permitted to insert an image (or anchor) outside a section.
+
+See [@http://lists.boost.org/boost-docs/2008/10/3659.php posts by Daniel James and John Maddock.
+
+This *only applies to pdf generation*, and produces an error message like this
+
+ (validate error Element 'fo:inline' cannot be a child of 'fo:flow'. Only
+ block-level elements are permitted in this context.
+ Parse error: Invalid XSL FO source
+] [/caution]
+
+You can add images to your html and pdf documentation
+(with optional size control and alignment using
+[@http://www.docbook.org/tdg/en/html/imagedata.html image metadata]).
+
+[$./images/boost.png]
+
+[$./images/lena512color.jpg [width 10mm] [height 10mm] ]
+
+It is often neater to put all the images in a sub-folder, say `libs/your_library/doc/html/images/`,
+especially as it is often best to use JPEG or PNG images for html
+(because a commonly-used browser does not render SVG images without an add-in),
+but .PNG may not be rendered well into pdfs.
+
+[caution file separator [*must] be backslash / - forward slash \\ is the Quickbook trip character!]
+
+To specify the location (actual images folder) of the admonitions:
+
+[pre
+ path-constant nav-images : $(local-boost-root)/doc/src/images ; # png and svg images for home, next, note, tip...
+] [/pre]
+
+To ensure SVG admonitions are used for pdf:
+
+ <format>pdf:<xsl:param>admon.graphics.extension=".svg"
+ <format>pdf:<xsl:param>admon.graphics.path=$(nav-images)/
+
+To set the location of your images folder, usually /doc\/html\/ (not /doc/html\/images\/):
+
+ path-constant images_location : html ; # location of SVG images referenced by Quickbook.
+
+To record in the bjam log file the location actually used:
+
+[pre
+ echo "images_location" \$(images_location) ;
+] [/pre]
+
+For example:
+ images_location I:\boost-sandbox\SOC\2007\visualization\libs\svg_plot\doc\html
+
+And here is an image in `libs\svg_plot\doc\html\images`
+
+[$images/demo_boxplot_full.svg]
+
+[endsect] [/section Images, equations and graphics]
+
+[section:callouts Callouts]
+
+[@http://www.docbook.org/tdg/en/html/callout.html callouts]
+are tiny icons linking notes to the C++ source, similar to footnotes in print.
+
+(But it may be clearer to add short comments on the same line as the code.
+
+ cout << 2+2 << endl; // Outputs "4".
+
+because to force the reader to move his eye down to the notes below is distracting,
+unless the note is rather long to add as a comment.
+
+So there is a choice between comments distracting the code,
+and callouts jumping to and fro to the notes.)
+
+To use callouts see
+[@http://boost-sandbox.sourceforge.net/doc/html/quickbook/syntax.html#quickbook.syntax.block.import.callouts callouts]
+
+The location of the callout icons can be specified in your jamfile.v2 with
+[pre
+ #<xsl:param>callout.graphics.path=../../images/callouts//
+] [/pre]
+
+The png icons themselves are at `/boost_1_46_0/tools/quickbook/doc/html/images/callouts`
+
+and another set is at `/boost-sandbox/boost0x/doc/src/images/callouts`
+
+and might reasonably be copied (installed) to `doc/html/images/callouts/`.
+
+[endsect] [/section:callouts Callouts]
+
+[section:windows Suggestions when using Windows]
+
+* To run jamfiles, you will find opening a "Command Window Here"
+either when you ['shift and right-click] on a folder,
+or you can patch the registry to make this option always available
+- saves pressing the shift key, and is recommended.
+
+[@http://www.howtogeek.com/howto/windows-vista/use-command-prompt-here-in-windows-vista Command Window Here],
+and many others, describe how to do this.
+
+Since you may be typing `bjam -a >my.log` quite often, this may be useful.
+
+Batch files containing this may also be convenient, for example:
+
+ bjam -a html > quickdoc_%date%_%time:~0,2%%time:~3,2%_html.log
+
+* You may find MS OS environment variables helpful (even if some regard them as evil!)
+In particular you may wish to define BOOST_ROOT
+and use these as $(BOOST_ROOT) in file specifications,
+for example: [@doc/html/boostbook.css].
+
+* You can 'read' environment variables, and use to copy a 'master' boostbook.css thus:
+
+ path-constant boost-root : [ modules.peek : BOOST ] ;
+ install css-install : $(boost-root)/doc/src/boostbook.css : <location>html ;
+
+* You can 'read' and display the location of other environment variables:
+
+ local boost_sandbox = [ os.environ BOOST_SANDBOX ] ;
+ ECHO "os.environ boost-sandbox = " $(boost_sandbox) ; # Upper case for the value of environment variable(s).
+
+ os.environ boost-sandbox = i:\boost-sandbox
+
+* To set (or change) MS environment variables, per user or globally, use
+Control Panel, System, Advanced System settings, Advanced tab, Environment variables.
+For examples, you could set BOOST_ROOT as `I:/boost_1_46_0/`.
+You need to close the command window and reopen it for this to take effect.
+
+* To check a current value, open a command window anywhere and type `> set boost_root`
+Surprisingly, this will display the current value `BOOST_ROOT=I:/boost_1_46_0/`
+(and not set anything - unless you append something to set!).
+
+* You should be able to refer to files relative to XSL parameter boost-root
+[@boost:/boost/units/detail/utility.hpp] should make it relative to xsl parameter boost.root.
+in the `jamfile.v2`.
+
+ <xsl:param>boost.root=$(BOOST_ROOT)
+
+[@http://www.boost.org/boost.png Boost logo] \# xsl parameter boost.root, for example `I:/boost_1_46_0/boost.png`
+
+[endsect] [/section:windows Suggestions when using Windows]
+
+
+[section:doxygen1 Getting started with Doxygen]
+
+# [@http://www.stack.nl/~dimitri/doxygen/index.html Doxygen documentation provides up-to-date information].
+
+# [@http://www.stack.nl/~dimitri/doxygen/manual.html Doxygen manual and commands].
+
+# [@http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc Doxygen download].
+
+# The Windows Doxygen GUI frontend doxywizard will get you off to a (prematurely?) quick start,
+but you will soon find you need to use the 'Expert' options,
+and then perhaps to hand edit the `doxyfile`
+(annoyingly untyped so may need to set mime-type manually to commit to SVN)
+where all the very many options are stored.
+
+# It is worth getting a Doxygen-style index working well because the display is,
+for some purposes, more friendly and compact that the automatically produced 'Reference'
+section that is inserted into the Quickbook produced documentation.
+
+# Running Doxygen is much quicker than running the whole Quickbook tool chain,
+so it is much quicker to iron out any bugs and missing/broken Doxygen comments in include
+files using Doxygen's Doxywizard first.
+
+# It is prudent to save to a Doxygen log file, for example `doxywarn.log`.
+It is tidier to ensure that there are no warnings, and to check that the log file is empty!
+
+# The main thing you need to get started is to select the directory containing C++ files.
+You may well need more than one (`/examples/detail` and `/src` ...),
+so you immediately need the expert tab and chose 'input'.
+You save your setting into an untyped file called Doxyfile.
+A reasonable place for this file is `/doc/Doxygen`.
+Examining this (well documented) file with a text editor will reveal the very many options.
+You probably do NOT want LaTex or RTF or other output formats.
+
+# You might want LaTeX for producing formula (see Boost.Accumulators documentation for an example).
+
+# When Doxygen is run automatically by the Quickbook auto-doc,
+you will probably need to copy some settings from your doxyfile as parameters into your jamfile.v2.
+
+# You probably don't need a main page - using the
+[@http://www.stack.nl/~dimitri/doxygen/commands.html#cmdmainpage \\mainpage command]
+(because the Doxygen output will be automatically incorporated into the Docbook).
+But if you provide one, users will be able to better use Doxygen 'free-standing'
+- this is sometimes useful, especially if you have fully Doxygenated your classes,
+functions etc (highly recommended, especially using
+`\pre \post \param \tparam \returns \warning \remark \see`
+commands, but hard work). You should provide a link to the full Quickbook documention.
+
+[tip The Doxygen is *not* a compiler! - it is well worth checking
+from time to time that your added Doxygen or other comments
+have not caused failure to compile. Not surprisingly, Doxygen can get confused by stuff that fails to compile!]
+
+[endsect] [/section:doxygen1 Getting started with Doxygen]
+
+[section:doxygen2 Writing C++ with Doxygen comments]
+
+A Reference section, using __doxygen
+(and Doxygen comments in the C++ code where you can put in the considerable work to provide them)
+will allow users to get an overview of the program, see what classes and function do,
+and where used, and to get to read individual files easily.
+
+* It is useful to always add a Doxygen `\file` info block as the first item
+in every `.*pp` file in your library, and adding at least `\brief` description, and often also `\details`.
+`\date` and `\author` might also be useful, but `\author` is usually redundant,
+and `\date` liable to be out-of-date.
+For example:
+
+ /*!
+ \file quick_auto_dox_index_cpp.hpp
+ \brief Template for documentation.
+ \details Example file for creating Boost documentation using Quickbook, Doxygen and Auto-Indexing.
+ */
+
+* Using the otherwise blank line(s)
+ (see [@http://beta.boost.org/development/header.html braces policy - popular but not mandatory])
+ starting with `{` to hold Doxygen comments thus `{ //!<` saves 'vertical space'.
+ (Note the < to 'pin' the comments to the item to the left.
+ Doxygen generally assumes that comments apply to the item ['below]).
+
+* There seem to be occasions when Doxygen mis-attaches the comment to the variable.
+
+* Class information, in particular, seems [*to have to be before] the class definition.
+(Using `\class my_class` ... does not seem to help).
+
+* See examples in .cpp and .hpp for adding Doxygen comments.
+
+* See Boost coding guidelines [@boost:/more/writingdoc/design.html]
+
+* Take special care not to use any html characters in Doxygen brief or details comments.
+A popular mistake is using ['n > 0] in a parameter precondition.
+You need to preface > with the trip character \\>.
+See [@http://www.stack.nl/~dimitri/doxygen/commands.html#cmdgt the several symbols] to which this applies.
+
+You will only get a uninformative warning about this when xsltproc tries to process this!
+
+ warning: Unsupported xml/html tag<_> found xslt-xsltproc.windows
+
+* It is *much* quicker to run Doxygen from the screen or a command file, so it is
+better to do this first before you try to generate html or pdf
+- which may take many minutes, especially if you have lots of code and want indexes.
+Until you get no warnings (a blank warnings file) it is may be premature to run the jamfile.
+
+* Doxygen is a bit unpredictable about when it links the comments with functions,
+so you can check that your code comments have the desired effect much more quickly
+with the compact Doxygen display.
+
+[endsect] [/section:doxygen2 Writing C++ with Doxygen comments]
+
+[section:jamfiles Jamfiles]
+
+# Jam and Bjam are the Outer Mongolian of computer languages,
+so expect to be surprised and puzzled ;-)
+If all goes well, it works well: if things go wrong, diagnosis is difficult.
+Ading -d2 (or even a higher debug level) to the bjam command may help.
+
+# Whitespace MUST terminate variable name! so spaces or newlines
+BEFORE ; and : and AFTER too (because : and ; are keywords!).
+
+# The strange layout you will see in jamfiles is designed to make this mistake less likely.
+
+# Colored syntax provided by your text editor will reduce the risk of misplaced (or mis-spaced) ; and :
+
+# \\ is the jam trip character, so if you really want a \\, for example in path and filename specifications, you *must* write \\\\.
+
+# It also means you *cannot* just copy a windows file specification from Windows Explorer because it will have back slashes :-(
+
+# If you specify path and filename that include a space you *must* enclose the whole specification in quotes.
+It is probably wise to always do this, and to always use / rather than \\.
+
+# Always include your copyright and Boost license as comments (\# is the jamfile comment start indicator).
+
+[endsect] [/section:jamfiles Jamfiles]
+
+[section:boostbook BoostBook]
+
+# The manual is at __boostbook_docs.
+
+# C++ Syntax coloring can be changed to suit using
+[@http://www.w3schools.com/CSS/css_colors.asp CSS named colors] in boostbook.css.
+If you want to impose your own C++ syntax colors in pdf,
+add this line to your `jamfile.v2`
+and copy your own version of `boostbook.css` to `libs/your_lib/doc/html/`.
+A 'Boost Standard' way of customising syntax colors has not been established.
+
+[pre
+ \# Use your local preference for syntax coloring.
+ <format>pdf:<xsl:param>html.stylesheet="./html/boostbook.css"
+] [/pre]
+
+[note The path has to be relative to the destination directory.]
+
+# To add multiple stylesheets, you can provide a list, [*space separated]
+
+ <xsl:param>html.stylesheet="./html/boostbook.css ./html/my_style_preferences.css"
+
+
+# To limit the width of text to 80 character width,
+you could add to a stylesheet (perhaps a second stylesheet)
+
+ html
+ {
+ max-width: 80em;
+ }
+
+
+
+[endsect] [/section:boostbook BoostBook]
+
+[section:quickbook Quickbook]
+
+* The manual is at [@boost:\tools\quickbook\index.html Quickbook].
+
+* Always append copyright and Boost license to Quickbook files (.qbk)
+as comments - see at the end of this file.
+
+* Always give the section an explicit ID, for example: `section:hints`
+(*no* spaces before or after the colon)
+rather than relying on the default conversion of section_title to an id.
+This is because the title may produce a difficult to predict long string,
+inconvenient to type in for links.
+
+* After each `endsect` block copy the full corresponding `section` block just after,
+and turn it into a comment by adding a / after the open bracket.
+This is because nesting can make it difficult to see which is the matching `endsect`.
+Readers of the quickbook source file, and even those doing maintenance
+will thank you for this - it might even be you :-).
+* Make sure you do not include any 8-bit (Latin-1) codes in any C++ files or in Quickbook files.
+Common offendors are accents, umlaut, letter n with tilde, plusminus sign, degrees sign.
+C++ must only use ANSI 7-bit code (blame paper tape!) - *even in comments*.
+Sorry that this means that some names are not spelt right - M Bezier, for example,
+but it's the C++ rules.
+MSVC IDE will warn you that you are going to do this - say no!
+If you make this mistake, the error will reported in the pdf production stage
+when it is really difficult to trace the original file and location of the offending character(s).
+
+[endsect] [/section:quickbook Quickbook]
+
+[section:autodoc Adding a Doxygen Reference section in Quickbook]
+
+* A reference section prepared from C/C++ files is extremely valuable to users, and
+is automatically derived from the actual code, so cannot get out of date as code changes.
+This is a major benefit for maintenance of documentation.
+(Using code snippets also helps avoid stale code in documentation).
+
+* The usefulness of a reference section is greatly increased by added Doxygen comments.
+These can explain the general function, and gives pre- and post- conditions, and return values.
+Sadly, commenting is a major task, best done at the time of writing the code.
+But it will increase the quality and maintainability of the code;
+(This comes at the price of cluttering the code with comments,
+but syntax coloring is a massive help in allowing the reader to mentally filter out the comments).
+
+* You can ensure that you have documented *all* classes and functions with the
+Dxoygen options `WARN_IF_UNDOCUMENTED=YES` and `WARN_NO_PARAMDOC=YES`.
+Any omissions (or mistakes) are logged in the `doxywarn.log` file.
+If you plan to provide complete Doxygen-style comments (recommended),
+you will want to enable this option in the doxyfile, and also in your jamfile.
+
+ <doxygen:param>WARN_IF_UNDOCUMENTED=YES # Default NO but useful if you aim to Doxygen document all members.
+ <doxygen:param>WARNINGS=YES # Default NO, but useful to see warnings, especially in a logfile.
+ <doxygen:param>WARN_NO_PARAMDOC=YES # Default no, but YES useful if you aim to document all function parameters.
+
+The last option ensures that you [*always] provide a Doxygen comment like
+
+ \tparam Template parameter like FPT floating-point type float, double ...
+ \param n Number of things required.
+ \returns Number of previous things for all parameters.
+
+* You will want to save any auto-doc Doxygen warnings,
+probably to a different log file from the Doxywizard 'hand-run' warnings.
+You will need to consult these logs to resolve mistakes.
+The pdf log also provides a useful list of missing/broken links
+(that the html log does not).
+
+* You will find it useful to run the jamfiles from batch file(s)
+and send the output to log files because there is usually too much output for a screen display.
+This also allows you to generate both html and pdf with one batch file.
+And new builds of Quickbook 1.4 upwards also set a return code
+so you can see immediately if all went well.[br]
+Sadly it does not signal all errors, so you may need to inspect the log file
+and the resultant html or pdf to be sure.
+
+ bjam -a html > html.log
+ echo %errorlevel%
+ bjam -a pdf > pdf.log
+ echo %errorlevel%
+
+* You will almost certainly find it necessary to set some Doxygen parameters.
+See jamfile for some documented examples, including suggestions.
+
+* Default section name/title for the Doxygen reference section is just ['Reference]
+but you can (optionally) provide your own title for your reference section like this example:
+
+ <xsl:param>"boost.doxygen.reftitle=QuickbookDoxygenAutoindex Reference"
+
+* The position of this `[xinclude autodoc.xml]` command in the Quickbook determines the location
+of the Doxygen references section. By convention, it is at the end, but before other index(es).
+
+[section:doxygen_macros How Doxygen parses and displays macros]
+
+ <doxygen:param>ENABLE_PREPROCESSING=YES # YES (default) evaluates conditional compilation statements (like #if) and evaluates macro definitions, but it does not perform macro expansion.
+ <doxygen:param>MACRO_EXPANSION=YES # YES will expand all macro names in the source code (default = NO).
+ <doxygen:param>EXPAND_ONLY_PREDEF=YES # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+
+ # If EXPAND_ONLY_PREDEF tag can be used to specify a list of macro names that should be expanded (as defined).
+ # The PREDEFINED tag can be used to specify one or more macro names that are defined
+ # before the preprocessor is started (similar to the -D option of gcc).
+ # The argument of the tag is a list of macros of the form:
+ # name or name=definition (no spaces).
+ # If the definition and the "=" are omitted, "=1" is assumed.
+ # To prevent a macro definition from being undefined via #undef or
+ # recursively expanded use the := operator instead of the = operator.
+ # See http://www.stack.nl/~dimitri/doxygen/config.html#cfg_predefined.
+ # static char *malloc BOOST_PREVENT_MACRO_SUBSTITUTION(const size_type bytes);
+ # will not produce a helpful Doxygen output, so
+ # replace some with more helpful text, or none, for example:
+
+ <doxygen:param>"PREDEFINED=\\
+ # BOOST_PREVENT_MACRO_SUBSTITUTION \\ # Don't show anything for this macro.
+ \"BOOST_MPL_ASSERT(expr)=\" \\
+ \"BOOST_STATIC_ASSERT(x)=\" \\
+ \"BOOST_DEDUCED_TYPENAME=typename\" \\ # Replace text with just typename.
+ \"BOOST_STRING_TYPENAME=typename\" \\
+ \"BOOST_CONSTEXPR=constexpr\" \\ # Replace text.
+ \"BOOST_STATIC_CONSTANT(T,V)=static x const y\" \\ # Replace text.
+ \"BOOST_UNITS_AUTO_STATIC_CONSTANT(a,b)=static const auto a = b\" \\
+ \"BOOST_UNITS_TYPEOF(a)=typeof(a)\" \\
+ \"BOOST_UNITS_HAS_TYPEOF=1\" \\
+ \"BOOST_UNITS_HAS_TYPEOF=1\" \\
+ "list_impl=list" \\ # Replace text.
+ "
+ # BOOST_PREVENT_MACRO_SUBSTITUTION, will not be replaced by ,
+ # BOOST_STATIC_CONSTANT will be replaced by "static x const y",
+ # BOOST_DEDUCED_TYPENAME will be replaced by "typename",
+ # BOOST_CONSTEXPR will be replaced by "constexpr".
+
+ # The syntax hoops to jump through are 'interesting' for more than one PREDEFINED item,
+ # and to permit spaces within definitions (use double quotes).
+ # Don't forget that every double quote needs a preceeding \trip character!
+ # and that each trailing continuation \ needs a preceeding \trip character too!
+ # And finally that if more than one item is included (as here) the whole is
+ # enclosed in "PREDEFINED=... ", but without any leading \. Go figure...
+
+ # A grep for PREDEFINED= in jamfiles will reveal even more complex examples.
+ # Boost Libraries with useful examples are: Accumulators, Interprocess, MPI, Random, Units, Expressive.
+
+
+* If there's a 1-to-1 correspondence between the macro uses and the user-visible entities that they create,
+then you can just have Doxygen expand the macros to something that looks sane in the documentation.
+The problem is when one macro defines multiple things that need to be documented independently.
+
+* [@http://www.stack.nl/~dimitri/doxygen/commands.html#cmd Doxygen commands]
+start with a backslash (\\) or at-sign (@).
+A useful convention is that @ is used for markup like @c to get a
+[@http://www.stack.nl/~dimitri/doxygen/commands.html#cmdc typewriter font]
+(by convention, used for code and prefixed by the ['backwards single tick] in Quickbook),
+but backslash is used for \\pre, \\post \\returns etc that become part of the output text.
+So a C++/Doxygen comment example might be `\\\ \param n @c number of things \returns number of unique types of thing.`
+
+[endsect] [/section:doxygen_macros How Doxygen parses and displays macros]
+
+
+[endsect] [/section:autodoc Doxygen Reference section in Quickbook]
+
+[section:autodocindex Autodoc internals]
+
+`doc/bin/msvc/debug/auto-index-internal-on/threading-multi/` contains the files generated for html if this option is chosen.
+
+`<format>html:<auto-index-internal>on `
+
+`/doc/bin` folder contains all the XML files created by Doxygen from your chosen files.
+
+`autodoc-xml.doxyfile` contains the Doxygen's doxyfile from <doxygen:param> settings that you have set.
+
+`autodoc-xml.doxygen` contains XML index entries created by Doxygen.
+
+`autodoc-xml.boostbook` contains the XML generated by Quickbook.
+
+`my_library.docbook` contains the html generated from Quickbook with added Doxygen.
+
+`my_library.modified.docbook` contains XML additions from auto-index.
+
+`autodoc-xml.xml-dir` contains the word ['Stamped] after some processing stage.
+
+Folder `autodoc-xml` contains xml and xsd created by Doxygen about your `.*pp` files.
+
+[endsect] [/section:autodocindex Autodoc and AutoIndex internals]
+
+[section:XSL XSL Parameters]
+
+There are many parameters to control layout that will need to be passed
+into html and pdf generation through your `jamfile.v2`.
+
+The `jamfile` for this project contains many examples
+(deliberately including many that may not be needed, and deliberately overcommented).
+
+[@http://docbook.sourceforge.net/release/xsl/current/doc/index.html DocBook XSL Stylesheets: Reference Documentation].
+[endsect] [/section:XSL XSL Parameters]
+
+[section:printer_margins Printer margins]
+
+Make sure that the margins of pdf are enough
+(unless you are desparate to take revenge on US writers for all those documents
+they have produced that are unreadable on paper by the rest of the world!).
+
+[@http://xml.resource.org/public/rfc/html/rfc2346.html Making Postscript and PDF International] by J Palme.
+
+You should use the International Standard paper size A4, then the jamfile should contain
+
+[pre
+<format>pdf:<xsl:param>paper.type=A4
+ # Margins sizes:
+ <format>pdf:<xsl:param>page.margin.top=1.3in
+ <format>pdf:<xsl:param>page.margin.inner=0.8in
+ <format>pdf:<xsl:param>page.margin.bottom=1.3in
+ <format>pdf:<xsl:param>page.margin.outer=0.8in
+]
+
+This should ensure that it is printable on both A4 and US letter paper sizes,
+even if an option 'resize to fit' is not available.
+
+[endsect] [/section:printer_margins Printer margins]
+
+[section:Making PDF versions]
+
+A major advantage of this toolchain is that PDF version can be produced.
+These are single standalone files that can be read on all systems.
+HTML versions consist of many files. A zip can be produced and downloaded
+to be isntalled on a users computer, but that is much more trouble,
+and potentially troublesome.
+
+The jamfile for this project is an example of the extra steps needed.
+
+Sadly the Apache FOP program just does not work for the examples that have been tried.
+
+[caution Do not make the mistake of removing setting of
+apparently redundant FOP options in the jamfile
+ - these remain essential even when using RenderX.]
+
+So a commercial program in Java __renderx has been used,
+kindly provided free-of-charge for Boost
+(at the price of a discreet logo on the bottom of each page).
+
+RenderX XEP converts XML (and __svg) documents into a printable form (PDF or PostScript)
+by applying XSL Formatting Objects with program XSLTproc.exe.
+
+You need to install the RenderX XEP program at a location of your choice,
+and enter the address in your user-config.jam. An example (at `C:\users\paul\`) is
+
+ # Copyright (C) Vladimir Prus 2003. Permission to copy, use, modify, sell and
+ # distribute this software is granted provided this copyright notice appears in
+ # all copies. This software is provided "as is" without express or implied
+ # warranty, and with no claim as to its suitability for any purpose.
+
+ # This file is used to configure your Boost.Build installation. Please read
+ # the user manual to find out where to put it.
+
+ # Toolset declarations are most important in this file. They tell Boost.Build
+ # what compilers are available and where to look for them. The first toolset
+ # will become "default" one.
+ # Some important libraries can also be configured.
+ # Uncomment relevant parts to suite your local configuration and preferences.
+
+ # Copyright Paul A. Bristow 2010
+ # for hetpA Windows 7 msvc 10 2 Aug 2010
+
+ ECHO $(BOOST_ROOT) ;
+
+ import toolset : using ;
+
+ # MSVC configuration
+ # Configure msvc (default version, searched in standard location and PATH).
+ using msvc : 10.0 ;
+
+ using quickbook
+ : "C:/Program Files/Quickbook/quickbook.exe" # Note essential quotes!
+ ;
+
+ using xsltproc
+ : "C:/Program Files/xsltproc_win32/xsltproc.exe" # OK.
+ # actually "C:/Program Files/xsltproc_win32/xsltproc.exe" according to Windows.
+ ;
+
+ # BoostBook configuration
+ # DOCBOOK_XSL_DIR is "C:/Program Files/Docbook_xsl_1_70_1"
+ # DOCBOOK_DTD_DIR is "C:/Program Files/DocbookXML/42"
+ # using boostbook <<<< NOT THIS FILE FORMAT - MUST BE DOS filename!!!!
+ # AND must use forward slash /, or double backslash \\ and NOT single backslash \
+ # : "C:/Program Files/DocBookXSL/docbook_xsl_1_70_1"
+ # ;
+
+ using boostbook
+ : "C:\\Program Files\\docbook\\docbook-xsl-1.74.0" # OK
+ # Contains eXtended Style Sheet programs.
+ : "C:\\Program Files\\DocbookXML\\42" # dir exists and contains docbookx.dtd 4.2
+ # actually C:\Program Files\DocbookXML\42
+ ;
+
+ # DTD (a document type definition), or schema, that provides instructions
+ # about the structure of your particular XML document.
+ # It's a rule book that states which tags <a_tag> are legal, and where.
+
+ # Doxygen info must come *after* boostbook info
+ using doxygen
+ #: "C:/Program Files/doxygen" # NOT OK - because doesn't search from path into /bin?
+ : "C:/Program Files/Doxygen/bin/doxygen.exe" # OK
+ ;
+
+ # XSLT-FO processor from RenderX.com
+ # actually C:\Program Files\RenderX\XEP\xep.bat
+ # actually C:\Program Files\Java\jre6
+
+ using fop
+ : # XEP batch filename
+ "C:/Progra~1/renderx/xep/xep.bat" # OK
+ # C:/Progra~1/renderx/xep/xep.bat # OK
+ # "C:/Program Files/renderx/xep/xep.bat" # Definitely does NOT seem to work.
+ # "C:\\Program Files\\renderx\\xep\\xep.bat" # NOT OK
+ # 'C:\Program' is not recognized as an internal or external command, operable program or batch file.
+
+ : # Java executable called by xep.bat.
+ # C:/PROGRA~1/Java/jre6 #OK
+ # "C:/PROGRA~1/Java/jre6" # OK
+ # "C:/Program files/Java/jre6" # OK
+ "C:\\Program files\\Java\\jre6" # OK
+ # "C:\Program files\Java\jre6" # NOT OK!
+ ;
+
+
+ #I:\boost-sandbox\tools\auto_index\build
+ using auto-index
+ :
+ "I:/boost-sandbox/tools/auto_index/build/auto_index.exe"
+ ;
+
+ # I:\boost-sandbox\tools\auto_index\auto-index.jam
+ # Must copy this auto-index.jam manually for each Boost release to tools/build/v2,
+ # for example to I:\boost_1_46_0\tools\build\v2 ...
+ # Or bjam build will fail complaing of missing `auto-index.jam`.
+ # This requirement will go away when autoindex is accepted as a Boost library.
+
+[caution All lines about FOP options in the jamfile are essential, even when using RenderX.]
+
+[note You may need to increase the Java heap size.]
+
+[endsect] [/section:Making PDF version]
+
+
+[section:navigation Logos, Navigation Admonition Icons]
+
+The location of the many icons for tip, note, warning, next, prev etc.
+
+[pre
+ <format>pdf:<xsl:param>admon.graphics.path=/$(nav-images)//
+]
+You probably DO want these navigation icons:
+
+[pre
+ <xsl:param>nav.layout=none # NO home, prev, next navigation icons
+]
+
+[h5 Logo - Boost reviewed and accepted libraries]
+
+You will want to have the Boost C++ libraries standard logo on your first page.
+[pre
+ <xsl:param>boost.image=Boost # options are: none (no logo), Boost (for boost.png), or your own logo like inspired_by_boost.png
+ <xsl:param>boost.image.w=170 # Width of logo in pixels.
+ <xsl:param>boost.image.h=90 # Height of logo in pixels.
+]
+
+[h5 Proposed_for_boost Logo - Boost not yet reviewed libraries]
+
+You may want to have some Boost C++ libraries logo on your first page.
+[pre
+ <xsl:param>boost.image=Boost # options are: none (no logo), Boost (for boost.png), or your own logo like inspired_by_boost.png
+ <xsl:param>boost.image.src=./images/Proposed_for_boost.png
+ # A variant for projects intended as candidates for Boost.
+ <xsl:param>boost.image.w=170 # Width of logo in pixels.
+ <xsl:param>boost.image.h=90 # Height of logo in pixels.
+]
+
+[h5 Powered_by_boost Logo - libraries wishing to acknowledge use of Boost Libraries]
+[pre
+ <xsl:param>boost.image.src=./images/Powered_by_boost.png
+ # A variant for projects that want to acknowledge that they *use* Boost.
+]
+
+[h5 Projects entirely outside Boost]
+[pre
+ <xsl:param>boost.image.srcimages/my_project_logo.png
+ <xsl:param>boost.image.alt"\"My Project\""
+ # Alternative text if .png srcimages can't be displayed.
+ <xsl:param>boost.image.w=100
+ <xsl:param>boost.image.h=50
+
+ #<xsl:param>nav.layout=none
+ # NO home, prev, next navigation icons (but you probably DO want these).
+]
+
+[endsect] [/section:navigation Logos, Navigation Admonition cons]
+
+[section:autoindex Autoindex]
+
+Users get great benefit from an *index* of nearly all documentation, however short.
+The only downside is that total size of documentation can be much increased by the index.
+Since space is not usually an issue, hyperlinking (in both html and pdf)
+makes the size increase an insignificant disadvantage.
+
+AutoIndexing - see __autoindex for guidance.
+
+The "Getting Started and Tutorial " section tells what you *really* need to know.
+
+Step 1 is not really optional - the indexing process is slow, even with explicit
+specification of the `auto-index.exe`. So follow these instructions carefully,
+including changes to your `user-config.jam`.
+
+When writing Quickbook that is to be autoindexed, bear in mind that the indexing
+is limited to referencing sections, not individual heading,lines or locations.
+Thus you may find creating not-too-long sections,
+rather than using long sections with many headings.
+
+Creating an index files, for example, called `quick_auto_dox_index.idx` is the
+step that requires your expert knowledge, and your skill reading the users' minds,
+by choosing the right index terms (including variants like plurals).
+
+
+[endsect] [/section:autoindex Autoindex]
+
+[section:optional Making AutoIndex optional]
+
+It is considerate to make the [*use of auto-index optional] in Boost.Build,
+to allow users who do not have AutoIndex installed to still be able to build your documentation.
+
+This also very convenient while you are refining your documentation,
+to allow you to decide to build indexes, or not:
+building indexes can take long time, if you are just correcting typos,
+you won't want to wait while you keep rebuilding the index!
+
+One method of setting up optional AutoIndex support is to place all
+AutoIndex configuration in a the body of a bjam if statement:
+
+[pre
+ if --enable-index in \[ modules.peek : ARGV \]
+ {
+ ECHO "Building the docs with automatic index generation enabled." ;
+
+ using auto-index ;
+ project : requirements
+ <auto-index>on
+ <auto-index-script>index.idx
+
+ ... other auto-index options here...
+
+ # And tell Quickbook that it should enable indexing.
+ <quickbook-define>enable_index
+ ;
+ }
+ else
+ {
+ ECHO "Building the my_library docs with automatic index generation disabled. To get an auto-index, try building with --enable-index." ;
+ }
+] [/pre]
+
+You will also need to add a conditional statement at the end of your Quickbook file,
+so that the index(es) is/are only added after the last section if indexing is enabled.
+
+[pre
+\[\? '''enable_index'''
+\'\'\'
+ <index/>
+\'\'\'
+\]
+] [/pre]
+
+To use this jamfile, you need to cd to your docs folder, for example:
+
+ cd \boost-sandbox\guild\mylibrary\libs\mylibrary\doc
+
+and then run `bjam` to build the docs without index, for example:
+
+ bjam -a html > mylibrary_html.log
+
+or with index(es)
+
+ bjam -a html --enable-index > mylibrary_html_index.log
+
+[endsect] [/section:optional Making AutoIndex optional]
+
+[endsect] [/section:hints Hints and Tips]
+
+[xinclude autodoc.xml] [/ Using Doxygen reference documentation.]
+[/ The position of this command in the Quickbook determines the location of the Doxygen references section.]
+
+[section:version_id Version Info]
+
+Last edit to Quickbook file __FILENAME__ was at __TIME__ on __DATE__.
+
+[tip This version information should appear on the pdf version
+ (but is redundant on html where the last revised date is on the bottom line of the home page).]
+[warning Home page "Last revised" is GMT, not local time. Last edit date is local time.]
+[/See also Adobe Reader pdf File Properties for creation date, and PDF producer, version and page count.]
+
+[caution It does not give the last edit date of other included .qbk files, so may mislead!]
+[/See also Adobe Reader pdf File Properties for creation date, and PDF producer, version and page count.]
+
+[endsect] [/section:version_id Version Info]
+
+[/This (if enabled) creates an Index section that include the class, function ... indexes, and also a full index with <index/>]
+
+[? enable_index
+'''
+ <index type="class_name">
+ <title>Class Index</title>
+ </index>
+
+ <index type="typedef_name">
+ <title>Typedef Index</title>
+ </index>
+
+ <index type="function_name">
+ <title>Function Index</title>
+ </index>
+
+
+ <index type="macro_name">
+ <title>Macro Index</title>
+ </index>
+
+ <index/>
+
+'''
+]
+[/if enable_index]
+
+[/ All your .qbk documentation files should append a license like this with your name.]
+
+[/ quick_auto_dox_index.qbk
+ Copyright 2011 Paul A. Bristow.
+ 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).
+]
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk