Added initial documentation test.

[SVN r50136]
This commit is contained in:
John Maddock 2008-12-05 16:34:46 +00:00
parent 508bc6ccb0
commit 351ce1eaf0
14 changed files with 1733 additions and 2 deletions

253
doc/test/HTML4_symbols.qbk Normal file
View file

@ -0,0 +1,253 @@
[/ File Latin1_symbols.qbk
Copyright 2006-2007 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).
]
[/ Symbols and Greek letters (about 120) from HTML4 ]
[/ File HTML4_symbols.qbk]
[/ See http://www.htmlhelp.com/reference/html40/entities/symbols.html]
[/ All (except 2 angle brackets) show OK on Firefox 2.0]
[/ Also some miscellaneous math charaters added to this list - see the end.]
[/ To use, enclose the template name in square brackets.]
[template fnof[]'''&#x192;'''] [/ <20> Latin small f with hook = function = florin]
[template Alpha[]'''&#x391;'''] [/ ? Greek capital letter alpha]
[template Beta[]'''&#x392;'''] [/ ? Greek capital letter beta]
[template Gamma[]'''&#x393;'''] [/ G Greek capital letter gamma]
[template Delta[]'''&#x394;'''] [/ ? Greek capital letter delta]
[template Epsilon[]'''&#x395;'''] [/ ? Greek capital letter epsilon]
[template Zeta[]'''&#x396;'''] [/ ? Greek capital letter zeta]
[template Eta[]'''&#x397;'''] [/ ? Greek capital letter eta]
[template Theta[]'''&#x398;'''] [/ T Greek capital letter theta]
[template Iota[]'''&#x399;'''] [/ ? Greek capital letter iota]
[template Kappa[]'''&#x39A;'''] [/ ? Greek capital letter kappa]
[template Lambda[]'''&#x39B;'''] [/ ? Greek capital letter lambda]
[template Mu[]'''&#x39C;'''] [/ ? Greek capital letter mu]
[template Nu[]'''&#x39D;'''] [/ ? Greek capital letter nu]
[template Xi[]'''&#x39E;'''] [/ ? Greek capital letter xi]
[template Omicron[]'''&#x39F;'''] [/ ? Greek capital letter omicron]
[template Pi[]'''&#x3A0;'''] [/ ? Greek capital letter pi]
[template Rho[]'''&#x3A1;'''] [/ ? Greek capital letter rho]
[template Sigma[]'''&#x3A3;'''] [/ S Greek capital letter sigma]
[template Tau[]'''&#x3A4;'''] [/ ? Greek capital letter tau]
[template Upsilon[]'''&#x3A5;'''] [/ ? Greek capital letter upsilon]
[template Phi[]'''&#x3A6;'''] [/ F Greek capital letter phi]
[template Chi[]'''&#x3A7;'''] [/ ? Greek capital letter chi]
[template Psi[]'''&#x3A8;'''] [/ ? Greek capital letter psi]
[template Omega[]'''&#x3A9;'''] [/ O Greek capital letter omega]
[template alpha[]'''&#x3B1;'''] [/ a Greek small letter alpha]
[template beta[]'''&#x3B2;'''] [/ <20> Greek small letter beta]
[template gamma[]'''&#x3B3;'''] [/ ? Greek small letter gamma]
[template delta[]'''&#x3B4;'''] [/ d Greek small letter delta]
[template epsilon[]'''&#x3B5;'''] [/ e Greek small letter epsilon]
[template zeta[]'''&#x3B6;'''] [/ ? Greek small letter zeta]
[template eta[]'''&#x3B7;'''] [/ ? Greek small letter eta]
[template theta[]'''&#x3B8;'''] [/ ? Greek small letter theta]
[template iota[]'''&#x3B9;'''] [/ ? Greek small letter iota]
[template kappa[]'''&#x3BA;'''] [/ ? Greek small letter kappa]
[template lambda[]'''&#x3BB;'''] [/ ? Greek small letter lambda]
[template mu[]'''&#x3BC;'''] [/ <20> Greek small letter mu]
[template nu[]'''&#x3BD;'''] [/ ? Greek small letter nu]
[template xi[]'''&#x3BE;'''] [/ ? Greek small letter xi]
[template omicron[]'''&#x3BF;'''] [/ ? Greek small letter omicron]
[template pi[]'''&#x3C0;'''] [/ p Greek small letter pi]
[template rho[]'''&#x3C1;'''] [/ ? Greek small letter rho]
[template sigmaf[]'''&#x3C2;'''] [/ ? Greek small letter final sigma]
[template sigma[]'''&#x3C3;'''] [/ s Greek small letter sigma]
[template tau[]'''&#x3C4;'''] [/ t Greek small letter tau]
[template upsilon[]'''&#x3C5;'''] [/ ? Greek small letter upsilon]
[template phi[]'''&#x3C6;'''] [/ f Greek small letter phi]
[template chi[]'''&#x3C7;'''] [/ ? Greek small letter chi]
[template psi[]'''&#x3C8;'''] [/ ? Greek small letter psi]
[template omega[]'''&#x3C9;'''] [/ ? Greek small letter omega]
[template thetasym[]'''&#x3D1;'''] [/ ? Greek small letter theta symbol]
[template upsih[]'''&#x3D2;'''] [/ ? Greek upsilon with hook symbol]
[template piv[]'''&#x3D6;'''] [/ ? Greek pi symbol]
[template bull[]'''&#x2022;'''] [/ <20> bullet = black small circle]
[template hellip[]'''&#x2026;'''] [/ <20> horizontal ellipsis = three dot leader]
[template prime[]'''&#x2032;'''] [/ ' prime = minutes = feet]
[template Prime[]'''&#x2033;'''] [/ ? double prime = seconds = inches]
[template oline[]'''&#x203E;'''] [/ ? overline = spacing overscore]
[template frasl[]'''&#x2044;'''] [/ / fraction slash]
[template weierp[]'''&#x2118;'''] [/ P script capital P = power set = Weierstrass p]
[template image[]'''&#x2111;'''] [/ I blackletter capital I = imaginary part]
[template real[]'''&#x211C;'''] [/ R blackletter capital R = real part symbol]
[template trade[]'''&#x2122;'''] [/ <20> trade mark sign]
[template alefsym[]'''&#x2135;'''] [/ ? alef symbol = first transfinite cardinal]
[template larr[]'''&#x2190;'''] [/ ? leftwards arrow]
[template uarr[]'''&#x2191;'''] [/ ? upwards arrow]
[template rarr[]'''&#x2192;'''] [/ ? rightwards arrow]
[template darr[]'''&#x2193;'''] [/ ? downwards arrow]
[template harr[]'''&#x2194;'''] [/ ? left right arrow]
[template crarr[]'''&#x21B5;'''] [/ ? downwards arrow with corner leftwards = CR]
[template lArr[]'''&#x21D0;'''] [/ ? leftwards double arrow]
[template uArr[]'''&#x21D1;'''] [/ ? upwards double arrow]
[template rArr[]'''&#x21D2;'''] [/ ? rightwards double arrow]
[template dArr[]'''&#x21D3;'''] [/ ? downwards double arrow]
[template hArr[]'''&#x21D4;'''] [/ ? left right double arrow]
[template forall[]'''&#x2200;'''] [/ ? for all]
[template part[]'''&#x2202;'''] [/ ? partial differential]
[template exist[]'''&#x2203;'''] [/ ? there exists]
[template empty[]'''&#x2205;'''] [/ <20> empty set = null set = diameter]
[template nabla[]'''&#x2207;'''] [/ ? nabla = backward difference]
[template isin[]'''&#x2208;'''] [/ ? element of]
[template notin[]'''&#x2209;'''] [/ ? not an element of]
[template ni[]'''&#x220B;'''] [/ ? contains as member]
[template prod[]'''&#x220F;'''] [/ ? n-ary product = product sign]
[template sum[]'''&#x2211;'''] [/ ? n-ary sumation]
[template minus[]'''&#x2212;'''] [/ - minus sign]
[template lowast[]'''&#x2217;'''] [/ * asterisk operator]
[template radic[]'''&#x221A;'''] [/ v square root = radical sign]
[template prop[]'''&#x221D;'''] [/ ? proportional to]
[template infin[]'''&#x221E;'''] [/ 8 infinity]
[template ang[]'''&#x2220;'''] [/ ? angle]
[template and[]'''&#x2227;'''] [/ ? logical and = wedge]
[template or[]'''&#x2228;'''] [/ ? logical or = vee]
[template cap[]'''&#x2229;'''] [/ n intersection = cap]
[template cup[]'''&#x222A;'''] [/ ? union = cup]
[template int[]'''&#x222B;'''] [/ ? integral]
[template there4[]'''&#x2234;'''] [/ ? therefore]
[template sim[]'''&#x223C;'''] [/ ~ tilde operator = varies with = similar to]
[template cong[]'''&#x2245;'''] [/ ? approximately equal to]
[template asymp[]'''&#x2248;'''] [/ <20> almost equal to = asymptotic to]
[template ne[]'''&#x2260;'''] [/ ? not equal to]
[template equiv[]'''&#x2261;'''] [/ = identical to]
[template le[]'''&#x2264;'''] [/ = less-than or equal to]
[template ge[]'''&#x2265;'''] [/ = greater-than or equal to]
[template subset[]'''&#x2282;'''] [/ ? subset of]
[template superset[]'''&#x2283;'''] [/ ? superset of]
[template nsubset[]'''&#x2284;'''] [/ ? not a subset of]
[template sube[]'''&#x2286;'''] [/ ? subset of or equal to]
[template supe[]'''&#x2287;'''] [/ ? superset of or equal to]
[template oplus[]'''&#x2295;'''] [/ ? circled plus = direct sum]
[template otimes[]'''&#x2297;'''] [/ ? circled times = vector product]
[template perp[]'''&#x22A5;'''] [/ ? up tack = orthogonal to = perpendicular]
[template sdot[]'''&#x22C5;'''] [/ <20> dot operator]
[template lceil[]'''&#x2308;'''] [/ ? left ceiling = APL upstile]
[template rceil[]'''&#x2309;'''] [/ ? right ceiling]
[template lfloor[]'''&#x230A;'''] [/ ? left floor = APL downstile]
[template rfloor[]'''&#x230B;'''] [/ ? right floor]
[template lang[]'''&#x2329;'''] [/ < left-pointing angle bracket = bra (Firefox shows ?)]
[template rang[]'''&#x232A;'''] [/ > right-pointing angle bracket = ket (Firefox shows ?)]
[template loz[]'''&#x25CA;'''] [/ ? lozenge]
[template spades[]'''&#x2660;'''] [/ ? black spade suit]
[template clubs[]'''&#x2663;'''] [/ ? black club suit = shamrock]
[template hearts[]'''&#x2665;'''] [/ ? black heart suit = valentine]
[template diams[]'''&#x2666;'''] [/ ? black diamond suit]
[/ Other symbols, not in the HTML4 list:]
[template space[]''' ''']
[template plusminus[]'''&#x00B1;'''] [/ ? plus or minus sign]
[/ Symbols and accented letters from Latin-1]
[/ File Latin1_symbols.qbk]
[/ http://www.htmlhelp.com/reference/html40/entities/latin1.html ]
[/ based on table Copyright </copyright.html> 1998-2006 Liam Quinn.]
[/ Glyphs <http://www.unicode.org/charts/> of the characters ]
[/ are available at the Unicode Consortium <http://www.unicode.org/>. ]
[template nbsp[]'''&#xA0;'''] [/ no-break space = non-breaking space]
[template iexcl[]'''&#xA1;'''] [/ inverted exclamation mark ]
[template cent[]'''&#xA2;'''] [/ cent sign ]
[template pound[]'''&#xA3;'''] [/ pound sign ]
[template curren[]'''&#xA4;'''] [/ currency sign ]
[template yen[]'''&#xA5;'''] [/ yen sign = yuan sign ]
[template brvbar[]'''&#xA6;'''] [/ broken vertical bar ]
[template sectsign[]'''&#xA7;'''] [/ section sign ]
[template uml[]'''&#xA8;'''] [/ diaeresis ]
[template copy[]'''&#xA9;'''] [/ copyright ]
[template ordf[]'''&#xAA;'''] [/ feminine ordinal indicator ]
[template laquo[]'''&#xAB;'''] [/ left-pointing double angle quotation mark = left pointing guillemet ]
[template not[]'''&#xAC;'''] [/ not sign ]
[template shy[]'''&#xAD;'''] [/ soft hyphen = discretionary hyphen ]
[template reg[]'''&#xAE;'''] [/ registered sign = registered trade mark sign ]
[template macron[]'''&#xAF;'''] [/ macron = spacing macron = overline = APL overbar ]
[template deg[]'''&#xB0;'''] [/ degree sign ]
[template plusmn[]'''&#xB1;'''] [/ plus-minus sign = plus-or-minus sign ]
[template sup2[]'''&#xB2;'''] [/ superscript two = superscript digit two = squared ]
[template cubed[]'''&#xB3;'''] [/ superscript three = superscript digit three = cubed ]
[template acute[]'''&#xB4;'''] [/ acute accent = spacing acute ]
[template micro[]'''&#xB5;'''] [/ micro sign ]
[template para[]'''&#xB6;'''] [/ pilcrow sign = paragraph sign ]
[template middot[]'''&#xB7;'''] [/ middle dot = Georgian comma = Greek middle dot ]
[template cedil[]'''&#xB8;'''] [/ cedilla = spacing cedilla ]
[template sup1[]'''&#xB9;'''] [/ superscript one = superscript digit one ]
[template ordm[]'''&#xBA;'''] [/ masculine ordinal indicator ]
[template raquo[]'''&#xBB;'''] [/ right-pointing double angle quotation mark = right pointing guillemet ]
[template frac14[]'''&#xBC;'''] [/ vulgar fraction one quarter = fraction one quarter ]
[template frac12[]'''&#xBD;'''] [/ vulgar fraction one half = fraction one half ]
[template frac34[]'''&#xBE;'''] [/vulgar fraction three quarters = fraction three quarters ]
[template iquest[]'''&#xBF;'''] [/ inverted question mark = turned question mark ]
[template Agrave[]'''&#xC0;'''] [/ Latin capital letter A with grave = Latin capital letter A grave ]
[template Aacute[]'''&#xC1;'''] [/ Latin capital letter A with acute = Latin capital letter A acute ]
[template Acirc[]'''&#xC2;'''] [/ Latin capital letter A with circumflex ]
[template Atilde[]'''&#xC3;'''] [/Latin capital letter A with tilde ]
[template Auml[]'''&#xC4;'''] [/ Latin capital letter A with diaeresis ]
[template Aring[]'''&#xC5;'''] [/ Latin capital letter A with ring above = Latin capital letter A ring ]
[template AElig[]'''&#xC6;'''] [/ Latin capital letter AE = Latin capital ligature AE ]
[template Ccedil[]'''&#xC7;'''] [/ Latin capital letter C with cedilla ]
[template Egrave[]'''&#xC8;'''] [/ Latin capital letter E with grave ]
[template Eacute[]'''&#xC9;'''] [/ Latin capital letter E with acute ]
[template Ecirc[]'''&#xCA;'''] [/ Latin capital letter E with circumflex ]
[template Euml[]'''&#xCB;'''] [/ Latin capital letter E with diaeresis ]
[template Igrave[]'''&#xCC;'''] [/ Latin capital letter I with grave ]
[template Iacute[]'''&#xCD;'''] [/ Latin capital letter I with acute ]
[template Icirc[]'''&#xCE;'''] [/ Latin capital letter I with circumflex ]
[template Iuml[]'''&#xCF;'''] [/ Latin capital letter I with diaeresis ]
[template ETH[]'''&#xD0;'''] [/ Latin capital letter ETH ]
[template Ntilde[]'''&#xD1;'''] [/ Latin capital letter N with tilde ]
[template Ograve[]'''&#xD2;'''] [/ Latin capital letter O with grave]
[template Oacute[]'''&#xD3;'''] [/ Latin capital letter O with acute ]
[template Ocirc[]'''&#xD4;'''] [/ Latin capital letter O with circumflex ]
[template Otilde[]'''&#xD5;'''] [/ Latin capital letter O with tilde ]
[template Ouml[]'''&#xD6;'''] [/ Latin capital letter O with diaeresis ]
[template times[]'''&#xD7;'''] [/ multiplication sign ]
[template Oslash[]'''&#xD8;'''] [/ Latin capital letter O with stroke = Latin capital letter O slash ]
[template Ugrave[]'''&#xD9;'''] [/ Latin capital letter U with grave ]
[template Uacute[]'''&#xDA;'''] [/ Latin capital letter U with acute ]
[template Ucirc[]'''&#xDB;'''] [/ Latin capital letter U with circumflex ]
[template Uuml[]'''&#xDC;'''] [/ Latin capital letter U with diaeresis ]
[template Yacute[]'''&#xDD;'''] [/ Latin capital letter Y with acute ]
[template THORN[]'''&#xDE;'''] [/ Latin capital letter THORN ]
[template szlig[]'''&#xDF;'''] [/ Latin small letter sharp s = ess-zed ]
[template agrave[]'''&#xE0;'''] [/ Latin small letter a with grave = Latin small letter a grave ]
[template aacute[]'''&#xE1;'''] [/ Latin small letter a with acute ]
[template acirc[]'''&#xE2;'''] [/ Latin small letter a with circumflex ]
[template atilde[]'''&#xE3;'''] [/ Latin small letter a with tilde ]
[template auml[]'''&#xE4;'''] [/ Latin small letter a with diaeresis ]
[template aring[]'''&#xE5;'''] [/ Latin small letter a with ring above = Latin small letter a ring ]
[template aelig[]'''&#xE6;'''] [/ Latin small letter ae = Latin small ligature ae ]
[template ccedil[]'''&#xE7;'''] [/ Latin small letter c with cedilla ]
[template egrave[]'''&#xE8;'''] [/ Latin small letter e with grave ]
[template eacute[]'''&#xE9;'''] [/ Latin small letter e with acute ]
[template ecirc[]'''&#xEA;'''] [/ Latin small letter e with circumflex ]
[template euml[]'''&#xEB;'''] [/ Latin small letter e with diaeresis ]
[template igrave[]'''&#xEC;'''] [/ Latin small letter i with grave ]
[template iacute[]'''&#xED;'''] [/ Latin small letter i with acute ]
[template icirc[]'''&#xEE;'''] [/ Latin small letter i with circumflex ]
[template iuml[]'''&#xEF;'''] [/ Latin small letter i with diaeresis ]
[template eth[]'''&#xF0;'''] [/ Latin small letter eth ]
[template ntilde[]'''&#xF1;'''] [/ Latin small letter n with tilde ]
[template ograve[]'''&#xF2;'''] [/Latin small letter o with grave ]
[template oacute[]'''&#xF3;'''] [/ Latin small letter o with acute ]
[template ocirc[]'''&#xF4;'''] [/ Latin small letter o with circumflex ]
[template otilde[]'''&#xF5;'''] [/ Latin small letter o with tilde ]
[template ouml[]'''&#xF6;'''] [/ Latin small letter o with diaeresis ]
[template divide[]'''&#xF7;'''] [/ division sign ]
[template oslash[]'''&#xF8;'''] [/ Latin small letter o with stroke = Latin small letter o slash ]
[template ugrave[]'''&#xF9;'''] [/ Latin small letter u with grave ]
[template uacute[]'''&#xFa;'''] [/ Latin small letter u with acute ]
[template ucirc[]'''&#xFB;'''] [/ Latin small letter u with circumflex ]
[template uuml[]'''&#xFC;'''] [/ Latin small letter u with diaeresis ]
[template yacute[]'''&#xFD;'''] [/ Latin small letter y with acute ]
[template thorn[]'''&#xFE;'''] [/ Latin small letter thorn ]
[template yuml[]'''&#xFF;'''] [/ Latin small letter y with diaeresis ]

View file

@ -1,2 +1,47 @@
# Distributed under the Boost Software License, Version 1.0.
# See http://www.boost.org/LICENSE_1_0.txt)
# Copyright John Maddock 2008. 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)
using quickbook ;
xml test : test.qbk ;
boostbook standalone
:
test
:
# HTML options first:
#======================================================================
<xsl:param>toc.max.depth=2
<xsl:param>toc.section.depth=2
<xsl:param>chunk.section.depth=1
<xsl:param>boost.root=../../..
<xsl:param>boost.libraries=../../../libs/libraries.htm
<xsl:param>navig.graphics=1
<xsl:param>html.stylesheet=../../../doc/html/boostbook.css
# PDF Options:
#======================================================================
# TOC Generation: this is needed for FOP-0.9 and later:
# <xsl:param>fop1.extensions=1
<xsl:param>xep.extensions=1
# TOC generation: this is needed for FOP 0.2, but must not be set to
# zero for FOP-0.9!
<xsl:param>fop.extensions=0
# No indent on body text:
<xsl:param>body.start.indent=0pt
# Margin size:
<xsl:param>page.margin.inner=0.5in
# Margin size:
<xsl:param>page.margin.outer=0.5in
# Yes, we want graphics for admonishments:
<xsl:param>admon.graphics=1
# Set this one for PDF generation *only*:
# default pnd graphics are awful in PDF form,
# better use SVG's instead:
#<xsl:param>admon.graphics.extension=".svg"
;

Binary file not shown.

After

Width:  |  Height:  |  Size: 853 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View file

@ -0,0 +1,143 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
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:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
x="0.00000000"
y="0.00000000"
id="svg6221"
width="745.60706"
height="513.25690"
sodipodi:version="0.32"
inkscape:version="0.42"
sodipodi:docname="Open_Clipart_Library_logo.svg">
<sodipodi:namedview
inkscape:cy="893.36713"
inkscape:cx="305.25953"
inkscape:zoom="0.86831670"
inkscape:window-height="913"
inkscape:window-width="1272"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:current-layer="svg6221" />
<metadata
id="metadata4">
<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>Open Clip Art Logo</dc:title>
<dc:date>10-01-2004</dc:date>
<dc:creator>
<cc:Agent>
<dc:title>Andreas Nilsson</dc:title>
</cc:Agent>
</dc:creator>
<cc:license
rdf:resource="http://web.resource.org/cc/PublicDomain" />
<dc:contributor>
<cc:Agent>
<dc:title>Jon Phillips, Tobias Jakobs</dc:title>
</cc:Agent>
</dc:contributor>
<dc:description>This is one version of the official Open Clip Art Library logo.</dc:description>
<dc:subject>logo, open clip art library logo, logotype</dc:subject>
</cc:Work>
<cc:License
rdf:about="http://web.resource.org/cc/PublicDomain">
<cc:permits
rdf:resource="http://web.resource.org/cc/Reproduction" />
<cc:permits
rdf:resource="http://web.resource.org/cc/Distribution" />
<cc:permits
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
</cc:License>
</rdf:RDF>
</metadata>
<defs
id="defs3" />
<path
d="M 405.82430,48.494855 C 396.10958,45.870336 386.13966,51.583653 383.51514,61.298370 L 298.15838,376.92441 C 295.53385,386.63914 301.24717,396.41506 310.96188,399.03957 L 626.58791,484.39635 C 636.30255,487.02086 646.27253,481.30755 648.89705,471.59283 L 734.25375,155.96679 C 735.49097,151.38725 734.71475,146.85751 732.70181,142.96928 L 732.70181,142.77528 L 732.50782,142.38730 L 732.50782,142.19331 C 732.46276,142.11490 732.36008,142.07704 732.31383,141.99931 L 717.76438,111.93045 L 651.80695,114.84034 L 405.82430,48.494855 z "
style="fill:#000000;fill-opacity:0.20000000;fill-rule:evenodd;stroke:none;stroke-width:1.6789947;stroke-miterlimit:4.0000000;stroke-opacity:0.20000000"
id="rect6080" />
<rect
width="363.28452"
height="363.28452"
rx="2.9260478"
ry="2.9260478"
x="363.42282"
y="-78.837021"
transform="matrix(0.965391,0.260807,-0.260807,0.965391,0.000000,0.000000)"
style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:7.7597070;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
id="rect911" />
<rect
width="288.49521"
height="288.49521"
rx="2.3236644"
ry="2.3236644"
x="398.72931"
y="-39.355053"
transform="matrix(0.965391,0.260807,-0.260807,0.965391,0.000000,0.000000)"
style="fill:#f3e533;fill-opacity:1.0000000;fill-rule:evenodd;stroke-width:0.79413080pt"
id="rect912" />
<path
d="M 552.48969,32.227283 L 486.13725,53.566475 L 486.71922,53.760468 L 235.30476,53.760468 C 225.24184,53.760468 217.26344,61.738811 217.26344,71.801785 L 217.26344,398.87339 C 217.26344,408.93643 225.24178,416.91471 235.30476,416.91471 L 562.37636,416.91471 C 572.43940,416.91471 580.41768,408.93637 580.41768,398.87339 L 580.41768,71.801785 C 580.41768,66.612962 578.25806,62.108236 574.79189,58.804276 L 552.48969,32.227283 z "
style="fill:#000000;fill-opacity:0.20000000;fill-rule:evenodd;stroke:none;stroke-width:1.6789950;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
id="rect6079" />
<rect
width="363.28418"
height="363.28418"
rx="2.9260466"
ry="2.9260466"
x="192.47523"
y="30.531385"
style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:7.7597060;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
id="rect913" />
<rect
width="288.49512"
height="288.49512"
rx="2.3236635"
ry="2.3236635"
x="227.78207"
y="70.013809"
style="fill:#ff7f00;fill-rule:evenodd;stroke-width:0.79413080pt"
id="rect914" />
<path
d="M 348.20848,28.541423 L 291.17463,66.563983 L 305.14211,68.115925 L 55.667554,157.15854 C 46.188236,160.53570 41.232826,170.76437 44.609974,180.24367 L 138.89040,445.04365 L 132.29465,444.84966 L 128.02682,485.39411 L 163.52746,498.58561 L 163.91546,498.58561 C 168.05181,500.44490 172.88654,501.00342 177.49494,499.36159 L 485.55528,389.56176 C 495.03452,386.18460 499.79600,375.76200 496.41886,366.28264 L 386.81301,58.416291 C 385.25785,54.051177 382.02384,50.975478 378.27734,48.910652 L 348.20848,28.541423 z "
style="fill:#000000;fill-opacity:0.20000000;fill-rule:evenodd;stroke:none;stroke-width:1.2500002;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
id="rect6078" />
<rect
width="363.28326"
height="363.28326"
rx="2.9260383"
ry="2.9260383"
x="-41.716114"
y="142.20343"
transform="matrix(0.942003,-0.335604,0.335604,0.942003,0.000000,0.000000)"
style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:7.7596951;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
id="rect915" />
<rect
width="288.49469"
height="288.49469"
rx="2.3236592"
ry="2.3236592"
x="-6.4090877"
y="181.68738"
transform="matrix(0.942003,-0.335604,0.335604,0.942003,0.000000,0.000000)"
style="fill:#bf0000;fill-rule:evenodd;stroke-width:0.79413080pt"
id="rect916" />
</svg>

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

372
doc/test/remez.qbk Normal file
View file

@ -0,0 +1,372 @@
[section:remez Sample Article (The Remez Method)]
The [@http://en.wikipedia.org/wiki/Remez_algorithm Remez algorithm]
is a methodology for locating the minimax rational approximation
to a function. This short article gives a brief overview of the method, but
it should not be regarded as a thorough theoretical treatment, for that you
should consult your favorite textbook.
Imagine that you want to approximate some function f(x) by way of a rational
function R(x), where R(x) may be either a polynomial P(x) or a ratio of two
polynomials P(x)/Q(x) (a rational function). Initially we'll concentrate on the
polynomial case, as it's by far the easier to deal with, later we'll extend
to the full rational function case.
We want to find the "best" rational approximation, where
"best" is defined to be the approximation that has the least deviation
from f(x). We can measure the deviation by way of an error function:
E[sub abs](x) = f(x) - R(x)
which is expressed in terms of absolute error, but we can equally use
relative error:
E[sub rel](x) = (f(x) - R(x)) / |f(x)|
And indeed in general we can scale the error function in any way we want, it
makes no difference to the maths, although the two forms above cover almost
every practical case that you're likely to encounter.
The minimax rational function R(x) is then defined to be the function that
yields the smallest maximal value of the error function. Chebyshev showed
that there is a unique minimax solution for R(x) that has the following
properties:
* If R(x) is a polynomial of degree N, then there are N+2 unknowns:
the N+1 coefficients of the polynomial, and maximal value of the error
function.
* The error function has N+1 roots, and N+2 extrema (minima and maxima).
* The extrema alternate in sign, and all have the same magnitude.
That means that if we know the location of the extrema of the error function
then we can write N+2 simultaneous equations:
R(x[sub i]) + (-1)[super i]E = f(x[sub i])
where E is the maximal error term, and x[sub i] are the abscissa values of the
N+2 extrema of the error function. It is then trivial to solve the simultaneous
equations to obtain the polynomial coefficients and the error term.
['Unfortunately we don't know where the extrema of the error function are located!]
[h4 The Remez Method]
The Remez method is an iterative technique which, given a broad range of
assumptions, will converge on the extrema of the error function, and therefore
the minimax solution.
In the following discussion we'll use a concrete example to illustrate
the Remez method: an approximation to the function e[super x][space] over
the range \[-1, 1\].
Before we can begin the Remez method, we must obtain an initial value
for the location of the extrema of the error function. We could "guess"
these, but a much closer first approximation can be obtained by first
constructing an interpolated polynomial approximation to f(x).
In order to obtain the N+1 coefficients of the interpolated polynomial
we need N+1 points (x[sub 0]...x[sub N]): with our interpolated form
passing through each of those points
that yields N+1 simultaneous equations:
f(x[sub i]) = P(x[sub i]) = c[sub 0] + c[sub 1]x[sub i] ... + c[sub N]x[sub i][super N]
Which can be solved for the coefficients c[sub 0]...c[sub N] in P(x).
Obviously this is not a minimax solution, indeed our only guarantee is that f(x) and
P(x) touch at N+1 locations, away from those points the error may be arbitrarily
large. However, we would clearly like this initial approximation to be as close to
f(x) as possible, and it turns out that using the zeros of an orthogonal polynomial
as the initial interpolation points is a good choice. In our example we'll use the
zeros of a Chebyshev polynomial as these are particularly easy to calculate,
interpolating for a polynomial of degree 4, and measuring /relative error/
we get the following error function:
[$images/remez-2.png]
Which has a peak relative error of 1.2x10[super -3].
While this is a pretty good approximation already, judging by the
shape of the error function we can clearly do better. Before starting
on the Remez method propper, we have one more step to perform: locate
all the extrema of the error function, and store
these locations as our initial ['Chebyshev control points].
[note
In the simple case of a polynomial approximation, by interpolating through
the roots of a Chebyshev polynomial we have in fact created a ['Chebyshev
approximation] to the function: in terms of /absolute error/
this is the best a priori choice for the interpolated form we can
achieve, and typically is very close to the minimax solution.
However, if we want to optimise for /relative error/, or if the approximation
is a rational function, then the initial Chebyshev solution can be quite far
from the ideal minimax solution.
A more technical discussion of the theory involved can be found in this
[@http://math.fullerton.edu/mathews/n2003/ChebyshevPolyMod.html online course].]
[h4 Remez Step 1]
The first step in the Remez method, given our current set of
N+2 Chebyshev control points x[sub i], is to solve the N+2 simultaneous
equations:
P(x[sub i]) + (-1)[super i]E = f(x[sub i])
To obtain the error term E, and the coefficients of the polynomial P(x).
This gives us a new approximation to f(x) that has the same error /E/ at
each of the control points, and whose error function ['alternates in sign]
at the control points. This is still not necessarily the minimax
solution though: since the control points may not be at the extrema of the error
function. After this first step here's what our approximation's error
function looks like:
[$images/remez-3.png]
Clearly this is still not the minimax solution since the control points
are not located at the extrema, but the maximum relative error has now
dropped to 5.6x10[super -4].
[h4 Remez Step 2]
The second step is to locate the extrema of the new approximation, which we do
in two stages: first, since the error function changes sign at each
control point, we must have N+1 roots of the error function located between
each pair of N+2 control points. Once these roots are found by standard root finding
techniques, we know that N extrema are bracketed between each pair of
roots, plus two more between the endpoints of the range and the first and last roots.
The N+2 extrema can then be found using standard function minimisation techniques.
We now have a choice: multi-point exchange, or single point exchange.
In single point exchange, we move the control point nearest to the largest extrema to
the absissa value of the extrema.
In multi-point exchange we swap all the current control points, for the locations
of the extrema.
In our example we perform multi-point exchange.
[h4 Iteration]
The Remez method then performs steps 1 and 2 above iteratively until the control
points are located at the extrema of the error function: this is then
the minimax solution.
For our current example, two more iterations converges on a minimax
solution with a peak relative error of
5x10[super -4] and an error function that looks like:
[$images/remez-4.png]
[h4 Rational Approximations]
If we wish to extend the Remez method to a rational approximation of the form
f(x) = R(x) = P(x) / Q(x)
where P(x) and Q(x) are polynomials, then we proceed as before, except that now
we have N+M+2 unknowns if P(x) is of order N and Q(x) is of order M. This assumes
that Q(x) is normalised so that it's leading coefficient is 1, giving
N+M+1 polynomial coefficients in total, plus the error term E.
The simultaneous equations to be solved are now:
P(x[sub i]) / Q(x[sub i]) + (-1)[super i]E = f(x[sub i])
Evaluated at the N+M+2 control points x[sub i].
Unfortunately these equations are non-linear in the error term E: we can only
solve them if we know E, and yet E is one of the unknowns!
The method usually adopted to solve these equations is an iterative one: we guess the
value of E, solve the equations to obtain a new value for E (as well as the polynomial
coefficients), then use the new value of E as the next guess. The method is
repeated until E converges on a stable value.
These complications extend the running time required for the development
of rational approximations quite considerably. It is often desirable
to obtain a rational rather than polynomial approximation none the less:
rational approximations will often match more difficult to approximate
functions, to greater accuracy, and with greater efficiency, than their
polynomial alternatives. For example, if we takes our previous example
of an approximation to e[super x], we obtained 5x10[super -4] accuracy
with an order 4 polynomial. If we move two of the unknowns into the denominator
to give a pair of order 2 polynomials, and re-minimise, then the peak relative error drops
to 8.7x10[super -5]. That's a 5 fold increase in accuracy, for the same number
of terms overall.
[h4 Practical Considerations]
Most treatises on approximation theory stop at this point. However, from
a practical point of view, most of the work involves finding the right
approximating form, and then persuading the Remez method to converge
on a solution.
So far we have used a direct approximation:
f(x) = R(x)
But this will converge to a useful approximation only if f(x) is smooth. In
addition round-off errors when evaluating the rational form mean that this
will never get closer than within a few epsilon of machine precision.
Therefore this form of direct approximation is often reserved for situations
where we want efficiency, rather than accuracy.
The first step in improving the situation is generally to split f(x) into
a dominant part that we can compute accurately by another method, and a
slowly changing remainder which can be approximated by a rational approximation.
We might be tempted to write:
f(x) = g(x) + R(x)
where g(x) is the dominant part of f(x), but if f(x)\/g(x) is approximately
constant over the interval of interest then:
f(x) = g(x)(c + R(x))
Will yield a much better solution: here /c/ is a constant that is the approximate
value of f(x)\/g(x) and R(x) is typically tiny compared to /c/. In this situation
if R(x) is optimised for absolute error, then as long as its error is small compared
to the constant /c/, that error will effectively get wiped out when R(x) is added to
/c/.
The difficult part is obviously finding the right g(x) to extract from your
function: often the asymptotic behaviour of the function will give a clue, so
for example the function __erfc becomes proportional to
e[super -x[super 2]]\/x as x becomes large. Therefore using:
erfc(z) = (C + R(x)) e[super -x[super 2]]/x
as the approximating form seems like an obvious thing to try, and does indeed
yield a useful approximation.
However, the difficulty then becomes one of converging the minimax solution.
Unfortunately, it is known that for some functions the Remez method can lead
to divergent behaviour, even when the initial starting approximation is quite good.
Furthermore, it is not uncommon for the solution obtained in the first Remez step
above to be a bad one: the equations to be solved are generally "stiff", often
very close to being singular, and assuming a solution is found at all, round-off
errors and a rapidly changing error function, can lead to a situation where the
error function does not in fact change sign at each control point as required.
If this occurs, it is fatal to the Remez method. It is also possible to
obtain solutions that are perfectly valid mathematically, but which are
quite useless computationally: either because there is an unavoidable amount
of roundoff error in the computation of the rational function, or because
the denominator has one or more roots over the interval of the approximation.
In the latter case while the approximation may have the correct limiting value at
the roots, the approximation is nonetheless useless.
Assuming that the approximation does not have any fatal errors, and that the only
issue is converging adequately on the minimax solution, the aim is to
get as close as possible to the minimax solution before beginning the Remez method.
Using the zeros of a Chebyshev polynomial for the initial interpolation is a
good start, but may not be ideal when dealing with relative errors and\/or
rational (rather than polynomial) approximations. One approach is to skew
the initial interpolation points to one end: for example if we raise the
roots of the Chebyshev polynomial to a positive power greater than 1
then the roots will be skewed towards the middle of the \[-1,1\] interval,
while a positive power less than one
will skew them towards either end. More usefully, if we initially rescale the
points over \[0,1\] and then raise to a positive power, we can skew them to the left
or right. Returning to our example of e[super x][space] over \[-1,1\], the initial
interpolated form was some way from the minimax solution:
[$images/remez-2.png]
However, if we first skew the interpolation points to the left (rescale them
to \[0, 1\], raise to the power 1.3, and then rescale back to \[-1,1\]) we
reduce the error from 1.3x10[super -3][space]to 6x10[super -4]:
[$images/remez-5.png]
It's clearly still not ideal, but it is only a few percent away from
our desired minimax solution (5x10[super -4]).
[h4 Remez Method Checklist]
The following lists some of the things to check if the Remez method goes wrong,
it is by no means an exhaustive list, but is provided in the hopes that it will
prove useful.
* Is the function smooth enough? Can it be better separated into
a rapidly changing part, and an asymptotic part?
* Does the function being approximated have any "blips" in it? Check
for problems as the function changes computation method, or
if a root, or an infinity has been divided out. The telltale
sign is if there is a narrow region where the Remez method will
not converge.
* Check you have enough accuracy in your calculations: remember that
the Remez method works on the difference between the approximation
and the function being approximated: so you must have more digits of
precision available than the precision of the approximation
being constructed. So for example at double precision, you
shouldn't expect to be able to get better than a float precision
approximation.
* Try skewing the initial interpolated approximation to minimise the
error before you begin the Remez steps.
* If the approximation won't converge or is ill-conditioned from one starting
location, try starting from a different location.
* If a rational function won't converge, one can minimise a polynomial
(which presents no problems), then rotate one term from the numerator to
the denominator and minimise again. In theory one can continue moving
terms one at a time from numerator to denominator, and then re-minimising,
retaining the last set of control points at each stage.
* Try using a smaller interval. It may also be possible to optimise over
one (small) interval, rescale the control points over a larger interval,
and then re-minimise.
* Keep absissa values small: use a change of variable to keep the abscissa
over, say \[0, b\], for some smallish value /b/.
[h4 References]
The original references for the Remez Method and it's extension
to rational functions are unfortunately in Russian:
Remez, E.Ya., ['Fundamentals of numerical methods for Chebyshev approximations],
"Naukova Dumka", Kiev, 1969.
Remez, E.Ya., Gavrilyuk, V.T., ['Computer development of certain approaches
to the approximate construction of solutions of Chebyshev problems
nonlinearly depending on parameters], Ukr. Mat. Zh. 12 (1960), 324-338.
Gavrilyuk, V.T., ['Generalization of the first polynomial algorithm of
E.Ya.Remez for the problem of constructing rational-fractional
Chebyshev approximations], Ukr. Mat. Zh. 16 (1961), 575-585.
Some English language sources include:
Fraser, W., Hart, J.F., ['On the computation of rational approximations
to continuous functions], Comm. of the ACM 5 (1962), 401-403, 414.
Ralston, A., ['Rational Chebyshev approximation by Remes' algorithms],
Numer.Math. 7 (1965), no. 4, 322-330.
A. Ralston, ['Rational Chebyshev approximation, Mathematical
Methods for Digital Computers v. 2] (Ralston A., Wilf H., eds.),
Wiley, New York, 1967, pp. 264-284.
Hart, J.F. e.a., ['Computer approximations], Wiley, New York a.o., 1968.
Cody, W.J., Fraser, W., Hart, J.F., ['Rational Chebyshev approximation
using linear equations], Numer.Math. 12 (1968), 242-251.
Cody, W.J., ['A survey of practical rational and polynomial
approximation of functions], SIAM Review 12 (1970), no. 3, 400-423.
Barrar, R.B., Loeb, H.J., ['On the Remez algorithm for non-linear
families], Numer.Math. 15 (1970), 382-391.
Dunham, Ch.B., ['Convergence of the Fraser-Hart algorithm for rational
Chebyshev approximation], Math. Comp. 29 (1975), no. 132, 1078-1082.
G. L. Litvinov, ['Approximate construction of rational
approximations and the effect of error autocorrection],
Russian Journal of Mathematical Physics, vol.1, No. 3, 1994.
[endsect][/section:remez The Remez Method]

69
doc/test/stub.cpp Normal file
View file

@ -0,0 +1,69 @@
/*=============================================================================
Copyright (c) 2006 Joel de Guzman
http://spirit.sourceforge.net/
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)
=============================================================================*/
#include <string>
//[ bar
//` This is the [*/bar/] function
std::string bar()
{
// return 'em, bar man!
return "bar";
}
//]
//[ foo
/*` This is the [*['foo]] function. */
std::string foo()
{
// return 'em, foo man!
return "foo";
}
//]
//[ foo_bar
std::string foo_bar() /*< The /Mythical/ FooBar.
See [@http://en.wikipedia.org/wiki/Foobar Foobar for details] >*/
{
return "foo-bar"; /*< return 'em, foo-bar man! >*/
}
//]
//[ class_
class x
{
public:
/*<< Constructor >>*/
x() : n(0)
{
}
/*<< Destructor >>*/
~x()
{
}
/*<< Get the `n` member variable >>*/
int get() const
{
return n; /*<- this will be ignored by quickbook ->*/
}
/*<< Set the `n` member variable >>*/
void set(int n_)
{
n = n_;
}
//<- this will be ignored by quickbook
private:
int n;
//->
};
//]

596
doc/test/test.qbk Normal file
View file

@ -0,0 +1,596 @@
[article Document To Test Formatting
[quickbook 1.4]
[copyright 2007 John Maddock, Joel de Guzman, Eric Niebler and Matias Capeletto]
[purpose Test Formatting Document]
[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 [Maddock, John], [de Guzman, Joel], [Niebler, Eric], [Capeletto, Matias] ]
[category math]
[/last-revision $Date: 2007-05-07 10:21:52 +0100 (Mon, 07 May 2007) $]
]
[include HTML4_symbols.qbk]
[/ Some composite templates]
[template super[x]'''<superscript>'''[x]'''</superscript>''']
[template sub[x]'''<subscript>'''[x]'''</subscript>''']
[template floor[x]'''&#x230A;'''[x]'''&#x230B;''']
[template floorlr[x][lfloor][x][rfloor]]
[template ceil[x] '''&#x2308;'''[x]'''&#x2309;''']
[section Introduction]
This document is purely a test case to test out HTML and PDF generation and style.
This is some body text.
int main()
{
double d = 2.345;
return d;
}
We can count in Greek too: [alpha], [beta], [gamma].
Try some superscrips and subscripts: x[super 2], x[sub i][super 3], [alpha][super 2],
[beta][super [alpha]], [floor x], [floor [alpha]], [ceil a].
[endsect]
[section Code Blocks]
[section Embedded code]
These should be syntax highlighted:
#include <iostream>
int main()
{
// Sample code
std::cout << "Hello, World\n";
return 0;
}
[endsect]
[section Imported code and callouts]
[import stub.cpp]
Here's some code with left-placed callouts:
[class_]
And again with callouts placed exactly where we put them:
[foo_bar]
[endsect]
[section Larger example]
Now let's include a larger example, this may span several pages
and should not be chopped off half way through... some FO processors
get this wrong!
namespace boost{
template <class BidirectionalIterator>
class sub_match;
typedef sub_match<const char*> csub_match;
typedef sub_match<const wchar_t*> wcsub_match;
typedef sub_match<std::string::const_iterator> ssub_match;
typedef sub_match<std::wstring::const_iterator> wssub_match;
template <class BidirectionalIterator>
class sub_match : public std::pair<BidirectionalIterator, BidirectionalIterator>
{
public:
typedef typename iterator_traits<BidirectionalIterator>::value_type value_type;
typedef typename iterator_traits<BidirectionalIterator>::difference_type difference_type;
typedef BidirectionalIterator iterator;
bool matched;
difference_type length()const;
operator basic_string<value_type>()const;
basic_string<value_type> str()const;
int compare(const sub_match& s)const;
int compare(const basic_string<value_type>& s)const;
int compare(const value_type* s)const;
#ifdef BOOST_REGEX_MATCH_EXTRA
typedef implementation-private capture_sequence_type;
const capture_sequence_type& captures()const;
#endif
};
//
// comparisons to another sub_match:
//
template <class BidirectionalIterator>
bool operator == (const sub_match<BidirectionalIterator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator != (const sub_match<BidirectionalIterator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator < (const sub_match<BidirectionalIterator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator <= (const sub_match<BidirectionalIterator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator >= (const sub_match<BidirectionalIterator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator > (const sub_match<BidirectionalIterator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
//
// comparisons to a basic_string:
//
template <class BidirectionalIterator, class traits, class Allocator>
bool operator == (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator != (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator < (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator > (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator >= (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator <= (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator == (const sub_match<BidirectionalIterator>& lhs,
const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator != (const sub_match<BidirectionalIterator>& lhs,
const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator < (const sub_match<BidirectionalIterator>& lhs,
const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator > (const sub_match<BidirectionalIterator>& lhs,
const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator >= (const sub_match<BidirectionalIterator>& lhs,
const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator <= (const sub_match<BidirectionalIterator>& lhs,
const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& rhs);
//
// comparisons to a pointer to a character array:
//
template <class BidirectionalIterator>
bool operator == (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator != (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator < (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator > (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator >= (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator <= (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator == (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
template <class BidirectionalIterator>
bool operator != (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
template <class BidirectionalIterator>
bool operator < ]``(const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
template <class BidirectionalIterator>
bool operator > (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
template <class BidirectionalIterator>
bool operator >= (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
template <class BidirectionalIterator>
bool operator <= (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
//
// comparisons to a single character:
//
template <class BidirectionalIterator>
bool operator == (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator != (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator < (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator > (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator >= (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator <= (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator == (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
template <class BidirectionalIterator>
bool operator != (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
template <class BidirectionalIterator>
bool operator < (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
template <class BidirectionalIterator>
bool operator > (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
template <class BidirectionalIterator>
bool operator >= (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
template <class BidirectionalIterator>
bool operator <= (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
//
// addition operators:
//
template <class BidirectionalIterator, class traits, class Allocator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type, traits, Allocator>
operator + (const std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& s,
const sub_match<BidirectionalIterator>& m);
template <class BidirectionalIterator, class traits, class Allocator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type, traits, Allocator>
operator + (const sub_match<BidirectionalIterator>& m,
const std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& s);
template <class BidirectionalIterator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
operator + (typename iterator_traits<BidirectionalIterator>::value_type const* s,
const sub_match<BidirectionalIterator>& m);
template <class BidirectionalIterator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
operator + (const sub_match<BidirectionalIterator>& m,
typename iterator_traits<BidirectionalIterator>::value_type const * s);
template <class BidirectionalIterator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
operator + (typename iterator_traits<BidirectionalIterator>::value_type const& s,
const sub_match<BidirectionalIterator>& m);
template <class BidirectionalIterator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
operator + (const sub_match<BidirectionalIterator>& m,
typename iterator_traits<BidirectionalIterator>::value_type const& s);
template <class BidirectionalIterator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
operator + (const sub_match<BidirectionalIterator>& m1,
const sub_match<BidirectionalIterator>& m2);
//
// stream inserter:
//
template <class charT, class traits, class BidirectionalIterator>
basic_ostream<charT, traits>&
operator << (basic_ostream<charT, traits>& os,
const sub_match<BidirectionalIterator>& m);
} // namespace boost
[endsect]
[endsect]
[section Basic Formatting]
[section Font Styles]
Here we go with some inline formatting:
['italic], [*bold], [_underline], [^teletype], [-strikethrough],
we can combine styles as well: ['[*bold italic]], [_[^teletype with underline]].
[endsect]
[section Replaceable Text]
Text that is intended to be user-replaceable is [~rendered like this].
[endsect]
[section Quotations]
Here we go: ["A question that sometimes drives me hazy: am I or are the others crazy?]--Einstein
Note the proper left and right quote marks. Also, while you can simply use ordinary quote marks like "quoted", our quotation, above, will generate correct DocBook quotations (e.g. <quote>quoted</quote>).
Like all phrase elements, quotations may be nested. Example:
["Here's the rule for bargains: ["Do other men, for they would do you.] That's
the true business precept.]
[endsect]
[section Inline Code]
This text has inlined code `int main() { return 0; }` in it.
The code should be syntax highlighted.
[endsect]
[section Links]
Try this: [@http://www.boost.org this is [*boost's] website....] it should
be visible as a link.
[endsect]
[section Footnotes]
Here's one [footnote A sample footnote].
And here's another [footnote Another sample footnote].
[endsect]
[section Blockquote]
Lets indent the next paragraph:
[:Here we go!!!]
[endsect]
[section Headings]
Now try rendering some heading styles:
[h1 Heading 1]
[h2 Heading 2]
[h3 Heading 3]
[h4 Heading 4]
[h5 Heading 5]
[h6 Heading 6]
[endsect]
[endsect]
[section Blurbs]
[section Preformatted text]
Here's some sample program output:
[pre
'''F test for equal standard deviations
____________________________________
Sample 1:
Number of Observations = 240
Sample Standard Deviation = 65.549
Sample 2:
Number of Observations = 240
Sample Standard Deviation = 61.854
Test Statistic = 1.123
CDF of test statistic: = 8.148e-001
Upper Critical Value at alpha: = 1.238e+000
Upper Critical Value at alpha/2: = 1.289e+000
Lower Critical Value at alpha: = 8.080e-001
Lower Critical Value at alpha/2: = 7.756e-001
Results for Alternative Hypothesis and alpha = 0.0500
Alternative Hypothesis Conclusion
Standard deviations are unequal (two sided test) REJECTED
Standard deviation 1 is less than standard deviation 2 REJECTED
Standard deviation 1 is greater than standard deviation 2 REJECTED'''
]
[endsect]
[section Admonishments]
There are four admonishments supported by Docbook XML:
[note This is a note]
[tip This is a tip]
[important This is important]
[caution This is a caution]
[warning This is a warning
They can contain more than one paragraph.
]
[endsect]
[section Blurbs]
[blurb [*An eye catching advertisement or note...]
These should be rendered in a manner similar to admonishments.
They can contain more than one paragraph.
]
[endsect]
[endsect]
[section Lists and Tables]
[section Lists]
A numbered list:
# One
# Two
# Three
# Three.a
# Three.b
# Three.c
# Four
# Four.a
# Four.a.i
# Four.a.ii
# Five
An unordered list:
* First
* Second
* Third
A mixture of the two:
# 1
* 1.a
# 1.a.1
# 1.a.2
* 1.b
# 2
* 2.a
* 2.b
# 2.b.1
# 2.b.2
* 2.b.2.a
* 2.b.2.b
[endsect]
[section Variable Lists]
[variablelist A Variable List
[[term 1] [The definition of term 1]]
[[term 2] [The definition of term 2]]
[[term 3] [The definition of term 3]]
]
[endsect]
[section Tables]
Here's a big table with code and other tricky things:
[table Notes on the Implementation of the Beta Distribution
[[Function][Implementation Notes]]
[[pdf]
[f(x;[alpha],[beta]) = x[super[alpha] - 1] (1 - x)[super[beta] -1] / B([alpha], [beta])
Implemented using ibeta_derivative(a, b, x).]]
[[cdf][Using the incomplete beta function ibeta(a, b, x)]]
[[cdf complement][ibetac(a, b, x)]]
[[quantile][Using the inverse incomplete beta function ibeta_inv(a, b, p)]]
[[quantile from the complement][ibetac_inv(a, b, q)]]
[[mean][`a/(a+b)`]]
[[variance][`a * b / (a+b)^2 * (a + b + 1)`]]
[[mode][`(a-1) / (a + b + 2)`]]
[[skewness][`2 (b-a) sqrt(a+b+1)/(a+b+2) * sqrt(a * b)`]]
[[kurtosis excess][ [$../beta_dist_kurtosis.png] ]]
[[kurtosis][`kurtosis + 3`]]
[[parameter estimation][ ]]
[[alpha
from mean and variance][`mean * (( (mean * (1 - mean)) / variance)- 1)`]]
[[beta
from mean and variance][`(1 - mean) * (((mean * (1 - mean)) /variance)-1)`]]
[[The member functions `estimate_alpha` and `estimate_beta`
from cdf and probability x
and *either* `alpha` or `beta`]
[Implemented in terms of the inverse incomplete beta functions
ibeta_inva, and ibeta_invb respectively.]]
[[`estimate_alpha`][`ibeta_inva(beta, x, probability)`]]
[[`estimate_beta`][`ibeta_invb(alpha, x, probability)`]]
]
[endsect]
[endsect]
[section Images]
These are tricky enough that they warrent their own section.
Let's start with a PNG file that's set to 120dpi, it should render at
a sensible size in both html and PDF forms. It should print OK too!
[$images/digamma3.png]
Now try again with a sample SVG image:
[$images/open_clipart_library_logo.svg]
[endsect]
[include test_HTML4_symbols.qbk]
[include remez.qbk]

View file

@ -0,0 +1,253 @@
[section:test test HTML4 symbols]
[/ Examples of using all the Greek and Math symbols defined in HTML4_symbols.qbk]
[/ See http://www.htmlhelp.com/reference/html40/entities/symbols.html]
[/ Also some miscellaneous math charaters added to this list - see the end.]
[/ To use, enclose the template name in square brackets.]
[section test Greek and Math symbols]
[fnof],
[Alpha],
[Beta],
[Gamma],
[Delta],
[Epsilon],
[Zeta],
[Eta],
[Theta],
[Iota],
[Kappa],
[Lambda],
[Mu],
[Nu],
[Xi],
[Omicron],
[Pi],
[Rho],
[Sigma],
[Tau],
[Upsilon],
[Phi],
[Chi],
[Psi],
[Omega],
[alpha],
[beta],
[gamma],
[delta],
[epsilon],
[zeta],
[eta],
[theta],
[iota],
[kappa],
[lambda],
[mu],
[nu],
[xi],
[omicron],
[pi],
[rho],
[sigmaf],
[sigma],
[tau],
[upsilon],
[phi],
[chi],
[psi],
[omega],
[thetasym],
[upsih],
[piv],
[bull],
[hellip],
[prime],
[Prime],
[oline],
[frasl],
[weierp],
[image],
[real],
[trade],
[alefsym],
[larr],
[uarr],
[rarr],
[darr],
[harr],
[crarr],
[lArr],
[uArr],
[rArr],
[dArr],
[hArr],
[forall],
[part],
[exist],
[empty],
[nabla],
[isin],
[notin],
[ni],
[prod],
[sum],
[minus],
[lowast],
[radic],
[prop],
[infin],
[ang],
[and],
[or],
[cap],
[cup],
[int],
[there4],
[sim],
[cong],
[asymp],
[ne],
[equiv],
[le],
[ge],
[subset],
[superset],
[nsubset],
[sube],
[supe],
[oplus],
[otimes],
[perp],
[sdot],
[lceil],
[rceil],
[lfloor],
[rfloor],
[lang],
[rang],
[loz],
[spades],
[clubs],
[hearts],
[diams]
[endsect]
[section test Latin1 symbols]
[/ Examples of using all the symbols defined in Latin1_symbols.qbk]
[/ http://www.htmlhelp.com/reference/html40/entities/latin1.html ]
[/ To use, enclose the template name in square brackets.]
[nbsp],
[iexcl],
[cent],
[pound],
[curren],
[yen],
[brvbar],
[sectsign],
[uml],
[copy],
[ordf],
[laquo],
[not],
[shy],
[reg],
[macron],
[deg],
[plusmn],
[sup2],
[cubed],
[acute],
[micro],
[para],
[middot],
[cedil],
[sup1],
[ordm],
[raquo],
[frac14],
[frac12],
[frac34],
[iquest],
[Agrave],
[Aacute],
[Acirc],
[Atilde],
[Auml],
[Aring],
[AElig],
[Ccedil],
[Egrave],
[Eacute],
[Ecirc],
[Euml],
[Igrave],
[Iacute],
[Icirc],
[Iuml],
[ETH],
[Ntilde],
[Ograve],
[Oacute],
[Ocirc],
[Otilde],
[Ouml],
[times],
[Oslash],
[Ugrave],
[Uacute],
[Ucirc],
[Uuml],
[Yacute],
[THORN],
[szlig],
[agrave],
[aacute],
[acirc],
[atilde],
[auml],
[aring],
[aelig],
[ccedil],
[egrave],
[eacute],
[ecirc],
[euml],
[igrave],
[iacute],
[icirc],
[iuml],
[eth],
[ntilde],
[ograve],
[oacute],
[ocirc],
[otilde],
[ouml],
[divide],
[oslash],
[ugrave],
[uacute],
[ucirc],
[uuml],
[yacute],
[thorn],
[yuml],
[endsect]
[endsect]
[/ testsymbols.qbk
Copyright 2006 John Maddock and 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).
]