Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r60288 - in branches/release/tools: boostbook boostbook/xsl boostbook/xsl/doxygen quickbook quickbook/detail quickbook/doc quickbook/test
From: daniel_james_at_[hidden]
Date: 2010-03-07 06:11:54


Author: danieljames
Date: 2010-03-07 06:11:52 EST (Sun, 07 Mar 2010)
New Revision: 60288
URL: http://svn.boost.org/trac/boost/changeset/60288

Log:
Merge quickbook and boostbook from trunk.
Added:
   branches/release/tools/quickbook/test/fail-template-section-1.quickbook
      - copied unchanged from r59853, /trunk/tools/quickbook/test/fail-template-section-1.quickbook
   branches/release/tools/quickbook/test/fail-template-section-2.quickbook
      - copied unchanged from r59853, /trunk/tools/quickbook/test/fail-template-section-2.quickbook
   branches/release/tools/quickbook/test/fail-template-section-3.quickbook
      - copied unchanged from r59853, /trunk/tools/quickbook/test/fail-template-section-3.quickbook
   branches/release/tools/quickbook/test/include-sub.quickbook
      - copied unchanged from r59617, /trunk/tools/quickbook/test/include-sub.quickbook
   branches/release/tools/quickbook/test/include-sub2.quickbook
      - copied unchanged from r59617, /trunk/tools/quickbook/test/include-sub2.quickbook
   branches/release/tools/quickbook/test/include_1_5.gold
      - copied unchanged from r59617, /trunk/tools/quickbook/test/include_1_5.gold
   branches/release/tools/quickbook/test/include_1_5.quickbook
      - copied unchanged from r59617, /trunk/tools/quickbook/test/include_1_5.quickbook
   branches/release/tools/quickbook/test/simple_markup.gold
      - copied unchanged from r59853, /trunk/tools/quickbook/test/simple_markup.gold
   branches/release/tools/quickbook/test/simple_markup.quickbook
      - copied unchanged from r59853, /trunk/tools/quickbook/test/simple_markup.quickbook
   branches/release/tools/quickbook/test/template-section.gold
      - copied unchanged from r59853, /trunk/tools/quickbook/test/template-section.gold
   branches/release/tools/quickbook/test/template-section.quickbook
      - copied unchanged from r59853, /trunk/tools/quickbook/test/template-section.quickbook
   branches/release/tools/quickbook/test/unicode-escape.gold
      - copied unchanged from r60287, /trunk/tools/quickbook/test/unicode-escape.gold
   branches/release/tools/quickbook/test/unicode-escape.quickbook
      - copied unchanged from r60287, /trunk/tools/quickbook/test/unicode-escape.quickbook
   branches/release/tools/quickbook/test/utf-16be-bom.quickbook
      - copied unchanged from r59853, /trunk/tools/quickbook/test/utf-16be-bom.quickbook
   branches/release/tools/quickbook/test/utf-16le-bom.quickbook
      - copied unchanged from r59853, /trunk/tools/quickbook/test/utf-16le-bom.quickbook
   branches/release/tools/quickbook/test/utf-8-bom.gold
      - copied unchanged from r59853, /trunk/tools/quickbook/test/utf-8-bom.gold
   branches/release/tools/quickbook/test/utf-8-bom.quickbook
      - copied unchanged from r59853, /trunk/tools/quickbook/test/utf-8-bom.quickbook
   branches/release/tools/quickbook/test/utf-8.gold
      - copied unchanged from r59853, /trunk/tools/quickbook/test/utf-8.gold
   branches/release/tools/quickbook/test/utf-8.quickbook
      - copied unchanged from r59853, /trunk/tools/quickbook/test/utf-8.quickbook
Properties modified:
   branches/release/tools/boostbook/ (props changed)
   branches/release/tools/quickbook/ (props changed)
Text files modified:
   branches/release/tools/boostbook/xsl/doxygen/doxygen2boostbook.xsl | 6
   branches/release/tools/boostbook/xsl/html.xsl | 12
   branches/release/tools/boostbook/xsl/navbar.xsl | 81
   branches/release/tools/boostbook/xsl/xhtml.xsl | 12
   branches/release/tools/quickbook/detail/actions.cpp | 48
   branches/release/tools/quickbook/detail/actions.hpp | 11
   branches/release/tools/quickbook/detail/actions_class.cpp | 8
   branches/release/tools/quickbook/detail/actions_class.hpp | 3
   branches/release/tools/quickbook/detail/post_process.cpp | 8
   branches/release/tools/quickbook/detail/quickbook.cpp | 2
   branches/release/tools/quickbook/detail/utils.cpp | 75 +
   branches/release/tools/quickbook/doc/quickbook.qbk | 26
   branches/release/tools/quickbook/phrase.hpp | 16
   branches/release/tools/quickbook/test/Jamfile.v2 | 14
   branches/release/tools/quickbook/test/quickbook-manual.gold | 2540 +++++++++++++++++++++------------------
   branches/release/tools/quickbook/test/table_1_5.gold | 175 +-
   16 files changed, 1707 insertions(+), 1330 deletions(-)

Modified: branches/release/tools/boostbook/xsl/doxygen/doxygen2boostbook.xsl
==============================================================================
--- branches/release/tools/boostbook/xsl/doxygen/doxygen2boostbook.xsl (original)
+++ branches/release/tools/boostbook/xsl/doxygen/doxygen2boostbook.xsl 2010-03-07 06:11:52 EST (Sun, 07 Mar 2010)
@@ -1239,6 +1239,12 @@
     </xsl:if>
   </xsl:template>
 
+ <xsl:template match="para/simplesect[@kind='par']" mode="passthrough">
+ <formalpara>
+ <xsl:apply-templates mode="passthrough"/>
+ </formalpara>
+ </xsl:template>
+
   <xsl:template match="simplesectsep" mode="passthrough">
     <xsl:apply-templates mode="passthrough"/>
   </xsl:template>

Modified: branches/release/tools/boostbook/xsl/html.xsl
==============================================================================
--- branches/release/tools/boostbook/xsl/html.xsl (original)
+++ branches/release/tools/boostbook/xsl/html.xsl 2010-03-07 06:11:52 EST (Sun, 07 Mar 2010)
@@ -24,10 +24,20 @@
   <xsl:import href="relative-href.xsl"/>
   <xsl:import href="callout.xsl"/>
 
+ <xsl:param name="html.stylesheet">
+ <xsl:choose>
+ <xsl:when test = "$boost.defaults = 'Boost'">
+ <xsl:value-of select = "concat($boost.root, '/doc/src/boostbook.css')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ boostbook.css
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
   <xsl:param name="admon.style"/>
   <xsl:param name="admon.graphics">1</xsl:param>
   <xsl:param name="boostbook.verbose" select="0"/>
- <xsl:param name="html.stylesheet" select="'boostbook.css'"/>
   <xsl:param name="navig.graphics" select="1"/>
   <xsl:param name="navig.graphics.extension" select="'.png'"/>
   <xsl:param name="chapter.autolabel" select="1"/>

Modified: branches/release/tools/boostbook/xsl/navbar.xsl
==============================================================================
--- branches/release/tools/boostbook/xsl/navbar.xsl (original)
+++ branches/release/tools/boostbook/xsl/navbar.xsl 2010-03-07 06:11:52 EST (Sun, 07 Mar 2010)
@@ -12,13 +12,24 @@
 <xsl:import href="relative-href.xsl"/>
 
    <!--
+ boost.defaults:
+ *custom - only use explicitly set parameters
+ Boost - use standard boost settings, can be overridden
+ -->
+ <xsl:param name = "boost.defaults" select = "'none'"/>
+
+ <!--
       how to render the Home | Libraries | ... | More contents
- none - do not display ("standalone" mode)
- *horizontal - display in old-Boost style format
+ *none - do not display ("standalone" mode)
+ horizontal - display in old-Boost style format (default for Boost)
          vertical - like the new Getting Started layout
    -->
- <xsl:param name = "nav.layout" select = "'horizontal'"/>
-
+ <xsl:param name = "nav.layout">
+ <xsl:choose>
+ <xsl:when test = "$boost.defaults='Boost'">horizontal</xsl:when>
+ <xsl:otherwise>none</xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
    <!--
       header border layout
          Boost - place the old-Boost border around the header
@@ -33,17 +44,37 @@
         *Spirit - display "mini" navigation on the right
    -->
    <xsl:param name = "nav.flow" select = "'Spirit'"/>
-
+
    <!-- location of the various Boost elements -->
 
    <xsl:param name = "boost.root" select = "'../..'"/>
    <xsl:param name = "boost.website" select = "'http://www.boost.org'"/>
- <xsl:param name = "boost.image.src"
- select = "concat($boost.root, '/boost.png')"/>
- <xsl:param name = "boost.image.alt" select = "'Boost C++ Libraries'"/>
- <xsl:param name = "boost.image.w" select = "277"/>
- <xsl:param name = "boost.image.h" select = "86"/>
- <xsl:param name = "boost.libraries" select = "'libraries.html'"/>
+ <!-- Logo image location, leave empty for no logo -->
+ <xsl:param name = "boost.image.src">
+ <xsl:if test = "$boost.defaults = 'Boost'">
+ <xsl:value-of select = "concat($boost.root, '/boost.png')"/>
+ </xsl:if>
+ </xsl:param>
+ <xsl:param name = "boost.image.alt">
+ <xsl:if test = "$boost.defaults = 'Boost'">
+ <xsl:value-of select = "'Boost C++ Libraries'"/>
+ </xsl:if>
+ </xsl:param>
+ <xsl:param name = "boost.image.w">
+ <xsl:if test = "$boost.defaults = 'Boost'">
+ <xsl:value-of select = "277"/>
+ </xsl:if>
+ </xsl:param>
+ <xsl:param name = "boost.image.h">
+ <xsl:if test = "$boost.defaults = 'Boost'">
+ <xsl:value-of select = "86"/>
+ </xsl:if>
+ </xsl:param>
+ <xsl:param name = "boost.libraries">
+ <xsl:if test = "$boost.defaults = 'Boost'">
+ <xsl:value-of select = "concat($boost.root, '/libs/libraries.htm')"/>
+ </xsl:if>
+ </xsl:param>
 
    <!-- header -->
 
@@ -64,13 +95,15 @@
             <xsl:if test = "$nav.border = 'Boost'">
                <xsl:attribute name = "style">background-color: white; width: 50%;</xsl:attribute>
             </xsl:if>
- <img alt="{$boost.image.alt}" width="{$boost.image.w}" height="{$boost.image.h}">
- <xsl:attribute name="src">
- <xsl:call-template name="href.target.relative">
- <xsl:with-param name="target" select="$boost.image.src"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
+ <xsl:if test = "boolean(normalize-space($boost.image.src))">
+ <img alt="{$boost.image.alt}" width="{$boost.image.w}" height="{$boost.image.h}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="$boost.image.src"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </xsl:if>
          </td><xsl:choose>
             <xsl:when test = "$nav.layout = 'horizontal'">
                <xsl:call-template name = "header.navdata-horiz"/>
@@ -111,9 +144,11 @@
          </xsl:call-template>
       </xsl:variable>
       <xsl:variable name="libraries_link">
- <xsl:call-template name="href.target.relative">
- <xsl:with-param name="target" select="$boost.libraries"/>
- </xsl:call-template>
+ <xsl:if test = "boolean($boost.libraries)">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="$boost.libraries"/>
+ </xsl:call-template>
+ </xsl:if>
       </xsl:variable>
       <xsl:variable name="people_link">
          <xsl:call-template name="href.target.relative">
@@ -134,7 +169,9 @@
       <xsl:choose>
          <xsl:when test = "$nav.border = 'Boost'">
             <td align = "center" class = "boost-headtd"><a href = "{$home_link}" class = "boost-headelem">Home</a></td>
- <td align = "center" class = "boost-headtd"><a href = "{$libraries_link}" class = "boost-headelem">Libraries</a></td>
+ <xsl:if test = "boolean($libraries_link)">
+ <td align = "center" class = "boost-headtd"><a href = "{$libraries_link}" class = "boost-headelem">Libraries</a></td>
+ </xsl:if>
             <td align = "center" class = "boost-headtd"><a href = "{$people_link}" class = "boost-headelem">People</a></td>
             <td align = "center" class = "boost-headtd"><a href = "{$faq_link}" class = "boost-headelem">FAQ</a></td>
             <td align = "center" class = "boost-headtd"><a href = "{$more_link}" class = "boost-headelem">More</a></td>

Modified: branches/release/tools/boostbook/xsl/xhtml.xsl
==============================================================================
--- branches/release/tools/boostbook/xsl/xhtml.xsl (original)
+++ branches/release/tools/boostbook/xsl/xhtml.xsl 2010-03-07 06:11:52 EST (Sun, 07 Mar 2010)
@@ -24,10 +24,20 @@
   <xsl:import href="relative-href.xsl"/>
   <xsl:import href="callout.xsl"/>
 
+ <xsl:param name="html.stylesheet">
+ <xsl:choose>
+ <xsl:when test = "$boost.defaults = 'Boost'">
+ <xsl:value-of select = "concat($boost.root, '/doc/src/boostbook.css')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ boostbook.css
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
   <xsl:param name="admon.style"/>
   <xsl:param name="admon.graphics">1</xsl:param>
   <xsl:param name="boostbook.verbose" select="0"/>
- <xsl:param name="html.stylesheet" select="'boostbook.css'"/>
   <xsl:param name="navig.graphics" select="1"/>
   <xsl:param name="navig.graphics.extension" select="'.png'"/>
   <xsl:param name="chapter.autolabel" select="1"/>

Modified: branches/release/tools/quickbook/detail/actions.cpp
==============================================================================
--- branches/release/tools/quickbook/detail/actions.cpp (original)
+++ branches/release/tools/quickbook/detail/actions.cpp 2010-03-07 06:11:52 EST (Sun, 07 Mar 2010)
@@ -415,6 +415,25 @@
         detail::print_char(*first, phrase.get());
     }
 
+ void escape_unicode_action::operator()(iterator first, iterator last) const
+ {
+ while(first != last && *first == '0') ++first;
+
+ // Just ignore \u0000
+ // Maybe I should issue a warning?
+ if(first == last) return;
+
+ std::string hex_digits(first, last);
+
+ if(hex_digits.size() == 2 && *first > '0' && *first <= '7') {
+ using namespace std;
+ detail::print_char(strtol(hex_digits.c_str(), 0, 16), phrase.get());
+ }
+ else {
+ phrase << "&#x" << hex_digits << ";";
+ }
+ }
+
     void attribute_action::operator()(iterator first, iterator last) const
     {
         boost::spirit::classic::file_position const pos = first.get_position();
@@ -787,6 +806,10 @@
         std::string result;
         actions.push(); // scope the actions' states
         {
+ // Store the current section level so that we can ensure that
+ // [section] and [endsect] tags in the template are balanced.
+ actions.min_section_level = actions.section_level;
+
             template_symbol const* symbol =
                 actions.templates.find(actions.template_info[0]);
             BOOST_ASSERT(symbol);
@@ -849,6 +872,17 @@
                 ++actions.error_count;
                 return;
             }
+
+ if (actions.section_level != actions.min_section_level)
+ {
+ boost::spirit::classic::file_position const pos = first.get_position();
+ detail::outerr(pos.file,pos.line)
+ << "Mismatched sections in template " << template_info[0] << std::endl;
+ actions.pop(); // restore the actions' states
+ --actions.template_depth;
+ ++actions.error_count;
+ return;
+ }
         }
 
         actions.pop(); // restore the actions' states
@@ -1056,19 +1090,19 @@
 
     void end_section_action::operator()(iterator first, iterator last) const
     {
- out << "</section>";
-
- --section_level;
- if (section_level < 0)
+ if (section_level <= min_section_level)
         {
             boost::spirit::classic::file_position const pos = first.get_position();
             detail::outerr(pos.file,pos.line)
                 << "Mismatched [endsect] near column " << pos.column << ".\n";
             ++error_count;
             
- // $$$ TODO: somehow fail parse else BOOST_ASSERT(std::string::npos != n)
- // $$$ below will assert.
+ return;
         }
+
+ --section_level;
+ out << "</section>";
+
         if (section_level == 0)
         {
             qualified_section_id.clear();
@@ -1077,7 +1111,7 @@
         {
             std::string::size_type const n =
                 qualified_section_id.find_last_of('.');
- BOOST_ASSERT(std::string::npos != n);
+ if(std::string::npos != n);
             qualified_section_id.erase(n, std::string::npos);
         }
     }

Modified: branches/release/tools/quickbook/detail/actions.hpp
==============================================================================
--- branches/release/tools/quickbook/detail/actions.hpp (original)
+++ branches/release/tools/quickbook/detail/actions.hpp 2010-03-07 06:11:52 EST (Sun, 07 Mar 2010)
@@ -368,6 +368,14 @@
         collector& phrase;
     };
     
+ struct escape_unicode_action
+ {
+ escape_unicode_action(collector& phrase) : phrase(phrase) {}
+ void operator()(iterator first, iterator last) const;
+
+ collector& phrase;
+ };
+
     struct attribute_action
     {
         // Handle image attributes
@@ -715,10 +723,12 @@
         end_section_action(
             collector& out
           , int& section_level
+ , int& min_section_level
           , std::string& qualified_section_id
           , int& error_count)
         : out(out)
         , section_level(section_level)
+ , min_section_level(min_section_level)
         , qualified_section_id(qualified_section_id)
         , error_count(error_count) {}
 
@@ -726,6 +736,7 @@
 
         collector& out;
         int& section_level;
+ int& min_section_level;
         std::string& qualified_section_id;
         int& error_count;
    };

Modified: branches/release/tools/quickbook/detail/actions_class.cpp
==============================================================================
--- branches/release/tools/quickbook/detail/actions_class.cpp (original)
+++ branches/release/tools/quickbook/detail/actions_class.cpp 2010-03-07 06:11:52 EST (Sun, 07 Mar 2010)
@@ -47,6 +47,7 @@
         , outdir(outdir_)
         , macro()
         , section_level(0)
+ , min_section_level(0)
         , section_id()
         , qualified_section_id()
         , source_mode("c++")
@@ -97,6 +98,7 @@
         , tip(out, temp_para, tip_pre, tip_post)
         , plain_char(phrase)
         , raw_char(phrase)
+ , escape_unicode(phrase)
         , attribute(attributes, attribute_name)
         , image(phrase, attributes, image_fileref)
         , cond_phrase_pre(phrase, conditions, macro)
@@ -172,7 +174,7 @@
         , anchor(out)
 
         , begin_section(out, phrase, doc_id, section_id, section_level, qualified_section_id, element_id)
- , end_section(out, section_level, qualified_section_id, error_count)
+ , end_section(out, section_level, min_section_level, qualified_section_id, error_count)
         , xinclude(out, *this)
         , include(*this)
         , import(out, *this)
@@ -201,6 +203,7 @@
               , outdir
               , macro
               , section_level
+ , min_section_level
               , section_id
               , qualified_section_id
               , source_mode
@@ -212,7 +215,7 @@
         temp.push();
         temp_para.push();
         list_buffer.push();
- templates.push();
+ templates.push();
     }
 
     void actions::pop()
@@ -222,6 +225,7 @@
           , outdir
           , macro
           , section_level
+ , min_section_level
           , section_id
           , qualified_section_id
           , source_mode

Modified: branches/release/tools/quickbook/detail/actions_class.hpp
==============================================================================
--- branches/release/tools/quickbook/detail/actions_class.hpp (original)
+++ branches/release/tools/quickbook/detail/actions_class.hpp 2010-03-07 06:11:52 EST (Sun, 07 Mar 2010)
@@ -62,6 +62,7 @@
         fs::path outdir;
         string_symbols macro;
         int section_level;
+ int min_section_level;
         std::string section_id;
         std::string qualified_section_id;
         std::string source_mode;
@@ -71,6 +72,7 @@
           , fs::path
           , string_symbols
           , int
+ , int
           , std::string
           , std::string
           , std::string>
@@ -120,6 +122,7 @@
         phrase_action warning, caution, important, note, tip;
         plain_char_action plain_char;
         raw_char_action raw_char;
+ escape_unicode_action escape_unicode;
         attribute_action attribute;
         image_action image;
         cond_phrase_action_pre cond_phrase_pre;

Modified: branches/release/tools/quickbook/detail/post_process.cpp
==============================================================================
--- branches/release/tools/quickbook/detail/post_process.cpp (original)
+++ branches/release/tools/quickbook/detail/post_process.cpp 2010-03-07 06:11:52 EST (Sun, 07 Mar 2010)
@@ -179,8 +179,11 @@
           "author"
         , "blockquote"
         , "bridgehead"
+ , "callout"
+ , "calloutlist"
         , "caution"
         , "copyright"
+ , "entry"
         , "footnote"
         , "important"
         , "informaltable"
@@ -190,20 +193,19 @@
         , "note"
         , "orderedlist"
         , "para"
- , "replaceable"
         , "row"
         , "section"
+ , "table"
         , "tbody"
         , "textobject"
         , "tgroup"
         , "thead"
         , "tip"
         , "variablelist"
+ , "varlistentry"
         , "warning"
         , "xml"
         , "xi:include"
- , "calloutlist"
- , "callout"
     };
 
     char const* doc_types_[] =

Modified: branches/release/tools/quickbook/detail/quickbook.cpp
==============================================================================
--- branches/release/tools/quickbook/detail/quickbook.cpp (original)
+++ branches/release/tools/quickbook/detail/quickbook.cpp 2010-03-07 06:11:52 EST (Sun, 07 Mar 2010)
@@ -29,7 +29,7 @@
 #pragma warning(disable:4355)
 #endif
 
-#define QUICKBOOK_VERSION "Quickbook Version 1.5"
+#define QUICKBOOK_VERSION "Quickbook Version 1.5.1"
 
 namespace quickbook
 {

Modified: branches/release/tools/quickbook/detail/utils.cpp
==============================================================================
--- branches/release/tools/quickbook/detail/utils.cpp (original)
+++ branches/release/tools/quickbook/detail/utils.cpp 2010-03-07 06:11:52 EST (Sun, 07 Mar 2010)
@@ -181,13 +181,74 @@
         }
     }
 
+ // Read the first few bytes in a file to see it starts with a byte order
+ // mark. If it doesn't, then write the characters we've already read in.
+ // Although, given how UTF-8 works, if we've read anything in, the files
+ // probably broken.
+
+ template <class InputIterator, class OutputIterator>
+ bool check_bom(InputIterator& begin, InputIterator end,
+ OutputIterator out, char const* chars, int length)
+ {
+ char const* ptr = chars;
+
+ while(begin != end && *begin == *ptr) {
+ ++begin;
+ ++ptr;
+ --length;
+ if(length == 0) return true;
+ }
+
+ // Failed to match, so write the skipped characters to storage:
+ while(chars != ptr) *out++ = *chars++;
+
+ return false;
+ }
+
+ template <class InputIterator, class OutputIterator>
+ std::string read_bom(InputIterator& begin, InputIterator end,
+ OutputIterator out)
+ {
+ if(begin == end) return "";
+
+ const char utf8[] = {0xef, 0xbb, 0xbf};
+ const char utf32be[] = {0, 0, 0xfe, 0xff};
+ const char utf32le[] = {0xff, 0xfe, 0, 0};
+
+ unsigned char c = *begin;
+ switch(c)
+ {
+ case 0xEF: { // UTF-8
+ return check_bom(begin, end, out, utf8, 3) ? "UTF-8" : "";
+ }
+ case 0xFF: // UTF-16/UTF-32 little endian
+ return !check_bom(begin, end, out, utf32le, 2) ? "" :
+ check_bom(begin, end, out, utf32le + 2, 2) ? "UTF-32" : "UTF-16";
+ case 0: // UTF-32 big endian
+ return check_bom(begin, end, out, utf32be, 4) ? "UTF-32" : "";
+ case 0xFE: // UTF-16 big endian
+ return check_bom(begin, end, out, utf32be + 2, 2) ? "UTF-16" : "";
+ default:
+ return "";
+ }
+ }
+
     // Copy a string, converting mac and windows style newlines to unix
     // newlines.
 
     template <class InputIterator, class OutputIterator>
- void normalize_newlines(InputIterator begin, InputIterator end,
- OutputIterator out)
+ bool normalize(InputIterator begin, InputIterator end,
+ OutputIterator out, std::string const& filename)
     {
+ std::string encoding = read_bom(begin, end, out);
+
+ if(encoding != "UTF-8" && encoding != "") {
+ outerr(filename) << encoding << " is not supported. Please use UTF-8."
+ << std::endl;
+
+ return false;
+ }
+
         while(begin != end) {
             if(*begin == '\r') {
                 *out++ = '\n';
@@ -198,6 +259,8 @@
                 *out++ = *begin++;
             }
         }
+
+ return true;
     }
 
     int load(std::string const& filename, std::string& storage)
@@ -219,10 +282,14 @@
         // Turn off white space skipping on the stream
         in.unsetf(ios::skipws);
 
- normalize_newlines(
+ if(!normalize(
             istream_iterator<char>(in),
             istream_iterator<char>(),
- std::back_inserter(storage));
+ std::back_inserter(storage),
+ filename))
+ {
+ return 1;
+ }
 
         // ensure that we have enough trailing newlines to eliminate
         // the need to check for end of file in the grammar.

Modified: branches/release/tools/quickbook/doc/quickbook.qbk
==============================================================================
--- branches/release/tools/quickbook/doc/quickbook.qbk (original)
+++ branches/release/tools/quickbook/doc/quickbook.qbk 2010-03-07 06:11:52 EST (Sun, 07 Mar 2010)
@@ -180,6 +180,16 @@
 * Accept a space between `section:` and the section id.
 * Support table ids.
 
+[h3 Version 1.5.1]
+
+* Improve the post processor's list of block elements. `table`, `entry` and
+ `varlistentry` are treated as blocks. `replaceable` is treated as an inline
+ element.
+* Check that `[section]` and `[endsect]` tags are balanced in templates.
+* Add unicode escape characters, eg. `\u03B1` for \u03B1.
+* Support UTF-8 files with a unicode byte order mark.
+* Disallow `[` in simple markup. Fixes some errors with mismatched punctuation.
+
 [endsect]
 
 [section:syntax Syntax Summary]
@@ -622,6 +632,22 @@
 from the output.
 
 [endsect]
+[section Unicode escape]
+
+You can enter any 32-bit unicode character by using `\u` followed by its 4 digit
+hexadecimal code. eg.
+
+[pre'''
+\u03B1 + \u03B2
+''']
+
+will generate:
+
+[:
+\u03B1 + \u03B2
+]
+
+[endsect]
 [section Images]
 
 [pre'''

Modified: branches/release/tools/quickbook/phrase.hpp
==============================================================================
--- branches/release/tools/quickbook/phrase.hpp (original)
+++ branches/release/tools/quickbook/phrase.hpp 2010-03-07 06:11:52 EST (Sun, 07 Mar 2010)
@@ -223,14 +223,16 @@
                     | simple_teletype
                     ;
 
+ simple_phrase_end = '[' | phrase_end;
+
                 simple_markup(simple_bold,
- '*', actions.simple_bold, phrase_end);
+ '*', actions.simple_bold, simple_phrase_end);
                 simple_markup(simple_italic,
- '/', actions.simple_italic, phrase_end);
+ '/', actions.simple_italic, simple_phrase_end);
                 simple_markup(simple_underline,
- '_', actions.simple_underline, phrase_end);
+ '_', actions.simple_underline, simple_phrase_end);
                 simple_markup(simple_teletype,
- '=', actions.simple_teletype, phrase_end);
+ '=', actions.simple_teletype, simple_phrase_end);
 
                 phrase =
                    *( common
@@ -273,6 +275,10 @@
                         str_p("\\n") [actions.break_]
                     | "\\ " // ignore an escaped char
                     | '\\' >> punct_p [actions.raw_char]
+ | "\\u">> repeat_p(4)
+ [
+ chset<>("0-9a-fA-F")
+ ] [actions.escape_unicode]
                     | (
                             ("'''" >> !eol) [actions.escape_pre]
>> *(anychar_p - "'''") [actions.raw_char]
@@ -462,7 +468,7 @@
             }
 
             rule<Scanner> space, blank, comment, phrase, phrase_markup, image,
- phrase_end, bold, italic, underline, teletype,
+ simple_phrase_end, phrase_end, bold, italic, underline, teletype,
                             strikethrough, escape, url, common, funcref, classref,
                             memberref, enumref, macroref, headerref, conceptref, globalref,
                             anchor, link, hard_space, eol, inline_code, simple_format,

Modified: branches/release/tools/quickbook/test/Jamfile.v2
==============================================================================
--- branches/release/tools/quickbook/test/Jamfile.v2 (original)
+++ branches/release/tools/quickbook/test/Jamfile.v2 2010-03-07 06:11:52 EST (Sun, 07 Mar 2010)
@@ -23,14 +23,17 @@
     [ quickbook-test templates ]
     [ quickbook-test templates_1_4 ]
     [ quickbook-test templates_1_5 ]
+ [ quickbook-test template-section ]
     #[ quickbook-test xinclude ]
     [ quickbook-test import ]
+ [ quickbook-test include_1_5 ]
     [ quickbook-test section_1_4 ]
     [ quickbook-test section_1_5 ]
     [ quickbook-test heading ]
     [ quickbook-test table_1_5 ]
     [ quickbook-test image_1_5 ]
     [ quickbook-test callouts ]
+ [ quickbook-test simple_markup ]
     [ quickbook-fail-test fail-include ]
     [ quickbook-fail-test fail-import ]
     [ quickbook-fail-test fail-template-arguments1 ]
@@ -42,7 +45,12 @@
     [ quickbook-fail-test fail-parse-error1 ]
     [ quickbook-fail-test fail-parse-error2 ]
     [ quickbook-fail-test fail-template-lookup1 ]
+ [ quickbook-fail-test fail-template-section-1 ]
+ [ quickbook-fail-test fail-template-section-2 ]
+ [ quickbook-fail-test fail-template-section-3 ]
+ [ quickbook-test utf-8 ]
+ [ quickbook-test utf-8-bom ]
+ [ quickbook-test unicode-escape ]
+ [ quickbook-fail-test utf-16be-bom ]
+ [ quickbook-fail-test utf-16le-bom ]
     ;
-
-
-

Modified: branches/release/tools/quickbook/test/quickbook-manual.gold
==============================================================================
--- branches/release/tools/quickbook/test/quickbook-manual.gold (original)
+++ branches/release/tools/quickbook/test/quickbook-manual.gold 2010-03-07 06:11:52 EST (Sun, 07 Mar 2010)
@@ -283,9 +283,7 @@
           This will generate:
         </para>
         <para>
- <replaceable>
- replacement
- </replaceable>
+ <replaceable>replacement</replaceable>
         </para>
       </section>
       <section id="quickbook.syntax.phrase.quotations">
@@ -381,179 +379,197 @@
             lists</link>.
           </listitem>
         </itemizedlist>
- <table frame="all"> <title>More Formatting Samples</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- <para>
- Markup
- </para>
- </entry><entry>
- <para>
- Result
- </para>
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <para>
- <literal>*Bold*</literal>
- </para>
- </entry><entry>
- <para>
- <emphasis role="bold">Bold</emphasis>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <literal>*Is bold*</literal>
- </para>
- </entry><entry>
- <para>
- <emphasis role="bold">Is bold</emphasis>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <literal>* Not bold* *Not bold * * Not bold *</literal>
- </para>
- </entry><entry>
- <para>
- * Not bold* *Not bold * * Not bold *
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <literal>This*Isn't*Bold (no bold)</literal>
- </para>
- </entry><entry>
- <para>
- This*Isn't*Bold (no bold)
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <literal>(*Bold Inside*) (parenthesis not bold)</literal>
- </para>
- </entry><entry>
- <para>
- (<emphasis role="bold">Bold Inside</emphasis>) (parenthesis not bold)
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <literal>*(Bold Outside)* (parenthesis bold)</literal>
- </para>
- </entry><entry>
- <para>
- <emphasis role="bold">(Bold Outside)</emphasis> (parenthesis bold)
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <literal>3*4*5 = 60 (no bold)</literal>
- </para>
- </entry><entry>
- <para>
- 3*4*5 = 60 (no bold)
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <literal>3 * 4 * 5 = 60 (no bold)</literal>
- </para>
- </entry><entry>
- <para>
- 3 * 4 * 5 = 60 (no bold)
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <literal>3 *4* 5 = 60 (4 is bold)</literal>
- </para>
- </entry><entry>
- <para>
- 3 <emphasis role="bold">4</emphasis> 5 = 60 (4 is bold)
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <literal>*This is bold* this is not *but this is*</literal>
- </para>
- </entry><entry>
- <para>
- <emphasis role="bold">This is bold</emphasis> this is not <emphasis
- role="bold">but this is</emphasis>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <literal>*This is bold*.</literal>
- </para>
- </entry><entry>
- <para>
- <emphasis role="bold">This is bold</emphasis>.
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <literal>*B*. (bold B)</literal>
- </para>
- </entry><entry>
- <para>
- <emphasis role="bold">B</emphasis>. (bold B)
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <literal>['*Bold-Italic*]</literal>
- </para>
- </entry><entry>
- <para>
- <emphasis><emphasis role="bold">Bold-Italic</emphasis></emphasis>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <literal>*side-by*/-side/</literal>
- </para>
- </entry><entry>
- <para>
- <emphasis role="bold">side-by</emphasis><emphasis>-side</emphasis>
- </para>
- </entry>
- </row>
- </tbody>
- </tgroup>
+ <table frame="all">
+ <title>More Formatting Samples</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>
+ <para>
+ Markup
+ </para>
+ </entry>
+ <entry>
+ <para>
+ Result
+ </para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para>
+ <literal>*Bold*</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <emphasis role="bold">Bold</emphasis>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <literal>*Is bold*</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <emphasis role="bold">Is bold</emphasis>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <literal>* Not bold* *Not bold * * Not bold *</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ * Not bold* *Not bold * * Not bold *
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <literal>This*Isn't*Bold (no bold)</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ This*Isn't*Bold (no bold)
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <literal>(*Bold Inside*) (parenthesis not bold)</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ (<emphasis role="bold">Bold Inside</emphasis>) (parenthesis not
+ bold)
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <literal>*(Bold Outside)* (parenthesis bold)</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <emphasis role="bold">(Bold Outside)</emphasis> (parenthesis
+ bold)
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <literal>3*4*5 = 60 (no bold)</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ 3*4*5 = 60 (no bold)
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <literal>3 * 4 * 5 = 60 (no bold)</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ 3 * 4 * 5 = 60 (no bold)
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <literal>3 *4* 5 = 60 (4 is bold)</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ 3 <emphasis role="bold">4</emphasis> 5 = 60 (4 is bold)
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <literal>*This is bold* this is not *but this is*</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <emphasis role="bold">This is bold</emphasis> this is not <emphasis
+ role="bold">but this is</emphasis>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <literal>*This is bold*.</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <emphasis role="bold">This is bold</emphasis>.
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <literal>*B*. (bold B)</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <emphasis role="bold">B</emphasis>. (bold B)
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <literal>['*Bold-Italic*]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <emphasis><emphasis role="bold">Bold-Italic</emphasis></emphasis>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <literal>*side-by*/-side/</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <emphasis role="bold">side-by</emphasis><emphasis>-side</emphasis>
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
         </table>
         <para>
           As mentioned, simple markups cannot go past a single block. The text from
@@ -683,46 +699,50 @@
           A C++ comment <code><phrase role="comment">// looks like this</phrase></code>
           whereas a Python comment <code><phrase role="comment">#looks like this</phrase></code>.
         </para>
- <table frame="all"> <title>Supported Source Modes</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- <para>
- Mode
- </para>
- </entry><entry>
- <para>
- Source Mode Markup
- </para>
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <para>
- C++
- </para>
- </entry><entry>
- <para>
- <literal>[c++]</literal>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- Python
- </para>
- </entry><entry>
- <para>
- <literal>[python]</literal>
- </para>
- </entry>
- </row>
- </tbody>
- </tgroup>
+ <table frame="all">
+ <title>Supported Source Modes</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>
+ <para>
+ Mode
+ </para>
+ </entry>
+ <entry>
+ <para>
+ Source Mode Markup
+ </para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para>
+ C++
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[c++]</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ Python
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[python]</literal>
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
         </table>
         <note>
           <para>
@@ -1682,73 +1702,82 @@
         <para>
           Quickbook has some predefined macros that you can already use.
         </para>
- <table frame="all"> <title>Predefined Macros</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- <para>
- Macro
- </para>
- </entry><entry>
- <para>
- Meaning
- </para>
- </entry><entry>
- <para>
- Example
- </para>
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <para>
- __DATE__
- </para>
- </entry><entry>
- <para>
- Today's date
- </para>
- </entry><entry>
- <para>
- 2000-Dec-20
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- __TIME__
- </para>
- </entry><entry>
- <para>
- The current time
- </para>
- </entry><entry>
- <para>
- 12:00:00 PM
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- __FILENAME__
- </para>
- </entry><entry>
- <para>
- Quickbook source filename
- </para>
- </entry><entry>
- <para>
- NO_FILENAME_MACRO_GENERATED_IN_DEBUG_MODE
- </para>
- </entry>
- </row>
- </tbody>
- </tgroup>
+ <table frame="all">
+ <title>Predefined Macros</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>
+ <para>
+ Macro
+ </para>
+ </entry>
+ <entry>
+ <para>
+ Meaning
+ </para>
+ </entry>
+ <entry>
+ <para>
+ Example
+ </para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para>
+ __DATE__
+ </para>
+ </entry>
+ <entry>
+ <para>
+ Today's date
+ </para>
+ </entry>
+ <entry>
+ <para>
+ 2000-Dec-20
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ __TIME__
+ </para>
+ </entry>
+ <entry>
+ <para>
+ The current time
+ </para>
+ </entry>
+ <entry>
+ <para>
+ 12:00:00 PM
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ __FILENAME__
+ </para>
+ </entry>
+ <entry>
+ <para>
+ Quickbook source filename
+ </para>
+ </entry>
+ <entry>
+ <para>
+ NO_FILENAME_MACRO_GENERATED_IN_DEBUG_MODE
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
         </table>
       </section>
       <section id="quickbook.syntax.block.templates">
@@ -2120,73 +2149,82 @@
         <para>
           will generate:
         </para>
- <table frame="all"> <title>A Simple Table</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- <para>
- Heading 1
- </para>
- </entry><entry>
- <para>
- Heading 2
- </para>
- </entry><entry>
- <para>
- Heading 3
- </para>
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <para>
- R0-C0
- </para>
- </entry><entry>
- <para>
- R0-C1
- </para>
- </entry><entry>
- <para>
- R0-C2
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- R2-C0
- </para>
- </entry><entry>
- <para>
- R2-C1
- </para>
- </entry><entry>
- <para>
- R2-C2
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- R3-C0
- </para>
- </entry><entry>
- <para>
- R3-C1
- </para>
- </entry><entry>
- <para>
- R3-C2
- </para>
- </entry>
- </row>
- </tbody>
- </tgroup>
+ <table frame="all">
+ <title>A Simple Table</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>
+ <para>
+ Heading 1
+ </para>
+ </entry>
+ <entry>
+ <para>
+ Heading 2
+ </para>
+ </entry>
+ <entry>
+ <para>
+ Heading 3
+ </para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para>
+ R0-C0
+ </para>
+ </entry>
+ <entry>
+ <para>
+ R0-C1
+ </para>
+ </entry>
+ <entry>
+ <para>
+ R0-C2
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ R2-C0
+ </para>
+ </entry>
+ <entry>
+ <para>
+ R2-C1
+ </para>
+ </entry>
+ <entry>
+ <para>
+ R2-C2
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ R3-C0
+ </para>
+ </entry>
+ <entry>
+ <para>
+ R3-C1
+ </para>
+ </entry>
+ <entry>
+ <para>
+ R3-C2
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
         </table>
         <para>
           The table title is optional. The first row of the table is automatically
@@ -2220,55 +2258,59 @@
         <para>
           and thus:
         </para>
- <table frame="all"> <title>Table with fat cells</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- <para>
- Heading 1
- </para>
- </entry><entry>
- <para>
- Heading 2
- </para>
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <para>
- Row 0, Col 0: a small cell
- </para>
- </entry><entry>
- <para>
- Row 0, Col 1: a big fat cell with paragraphs
- </para>
- <para>
- Boost provides free peer-reviewed portable C++ source libraries.
- </para>
- <para>
- We emphasize libraries that work well with the C++ Standard Library.
- Boost libraries are intended to be widely useful, and usable across
- a broad spectrum of applications. The Boost license encourages both
- commercial and non-commercial use.
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- Row 1, Col 0: a small cell
- </para>
- </entry><entry>
- <para>
- Row 1, Col 1: a small cell
- </para>
- </entry>
- </row>
- </tbody>
- </tgroup>
+ <table frame="all">
+ <title>Table with fat cells</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>
+ <para>
+ Heading 1
+ </para>
+ </entry>
+ <entry>
+ <para>
+ Heading 2
+ </para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para>
+ Row 0, Col 0: a small cell
+ </para>
+ </entry>
+ <entry>
+ <para>
+ Row 0, Col 1: a big fat cell with paragraphs
+ </para>
+ <para>
+ Boost provides free peer-reviewed portable C++ source libraries.
+ </para>
+ <para>
+ We emphasize libraries that work well with the C++ Standard Library.
+ Boost libraries are intended to be widely useful, and usable
+ across a broad spectrum of applications. The Boost license encourages
+ both commercial and non-commercial use.
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ Row 1, Col 0: a small cell
+ </para>
+ </entry>
+ <entry>
+ <para>
+ Row 1, Col 1: a small cell
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
         </table>
         <para>
           Here's how to have preformatted blocks of code in a table cell:
@@ -2290,30 +2332,33 @@
     ]
 ]
 <!--quickbook-escape-postfix--></programlisting>
- <table frame="all"> <title>Table with code</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- <para>
- Comment
- </para>
- </entry><entry>
- <para>
- Code
- </para>
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <para>
- My first program
- </para>
- </entry><entry>
- <para>
-
+ <table frame="all">
+ <title>Table with code</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>
+ <para>
+ Comment
+ </para>
+ </entry>
+ <entry>
+ <para>
+ Code
+ </para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para>
+ My first program
+ </para>
+ </entry>
+ <entry>
+ <para>
+
 <programlisting><phrase role="preprocessor">#include</phrase> <phrase role="special">&lt;</phrase><phrase role="identifier">iostream</phrase><phrase role="special">&gt;</phrase>
 
 <phrase role="keyword">int</phrase> <phrase role="identifier">main</phrase><phrase role="special">()</phrase>
@@ -2322,11 +2367,11 @@
     <phrase role="keyword">return</phrase> <phrase role="number">0</phrase><phrase role="special">;</phrase>
 <phrase role="special">}</phrase>
 </programlisting>
- </para>
- </entry>
- </row>
- </tbody>
- </tgroup>
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
         </table>
       </section>
       <section id="quickbook.syntax.block.variable_lists">
@@ -2342,24 +2387,30 @@
           will generate:
         </para>
         <variablelist>
- <title>A Variable List</title> <varlistentry><term>term 1</term>
- <listitem>
- <para>
- The definition of term 1
- </para>
- </listitem>
- </varlistentry> <varlistentry><term>term 2</term>
- <listitem>
- <para>
- The definition of term 2
- </para>
- </listitem>
- </varlistentry> <varlistentry><term>term 3</term>
- <listitem>
- <para>
- The definition of term 3
- </para>
- </listitem>
+ <title>A Variable List</title>
+ <varlistentry>
+ <term>term 1</term>
+ <listitem>
+ <para>
+ The definition of term 1
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>term 2</term>
+ <listitem>
+ <para>
+ The definition of term 2
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>term 3</term>
+ <listitem>
+ <para>
+ The definition of term 3
+ </para>
+ </listitem>
           </varlistentry>
         </variablelist>
         <para>
@@ -2927,774 +2978,871 @@
     <para>
       [cpp]
     </para>
- <table frame="all"> <title>Syntax Compendium</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- <para>
- To do this...
- </para>
- </entry><entry>
- <para>
- Use this...
- </para>
- </entry><entry>
- <para>
- See this...
- </para>
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <para>
- comment
- </para>
- </entry><entry>
- <para>
- <literal>[/ some comment]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.comments">Comments</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <emphasis>italics</emphasis>
- </para>
- </entry><entry>
- <para>
- <literal>['italics] or /italics/</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.font_styles">Font Styles</link>
- and <link linkend="quickbook.syntax.phrase.simple_formatting">Simple
- formatting</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <emphasis role="bold">bold</emphasis>
- </para>
- </entry><entry>
- <para>
- <literal>[*bold] or *bold*</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.font_styles">Font Styles</link>
- and <link linkend="quickbook.syntax.phrase.simple_formatting">Simple
- formatting</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <emphasis role="underline">underline</emphasis>
- </para>
- </entry><entry>
- <para>
- <literal>[_underline] or _underline_</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.font_styles">Font Styles</link>
- and <link linkend="quickbook.syntax.phrase.simple_formatting">Simple
- formatting</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <literal>teletype</literal>
- </para>
- </entry><entry>
- <para>
- <literal>[^teletype] or =teletype=</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.font_styles">Font Styles</link>
- and <link linkend="quickbook.syntax.phrase.simple_formatting">Simple
- formatting</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <emphasis role="strikethrough">strikethrough</emphasis>
- </para>
- </entry><entry>
- <para>
- <literal>[-strikethrough]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.font_styles">Font Styles</link>
- and <link linkend="quickbook.syntax.phrase.simple_formatting">Simple
- formatting</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- <replaceable>
- replaceable
- </replaceable>
- </para>
- </entry><entry>
- <para>
- <literal>[~replaceable]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.replaceable">Replaceble</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- source mode
- </para>
- </entry><entry>
- <para>
- <literal>[c++]</literal> or <literal>[python]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.source_mode">Source Mode</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- inline code
- </para>
- </entry><entry>
- <para>
- <literal>`int main();`</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.inline_code">Inline code</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- code block
- </para>
- </entry><entry>
- <para>
- <literal>``int main();``</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.code">Code</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- code escape
- </para>
- </entry><entry>
- <para>
- <literal>``from c++ to QuickBook``</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.escape_back">Escaping Back To QuickBook</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- line break
- </para>
- </entry><entry>
- <para>
- <literal>[br] or \n</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.line_break">line-break</link>
- <emphasis role="bold">DEPRECATED</emphasis>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- anchor
- </para>
- </entry><entry>
- <para>
- <literal>[#anchor]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.anchors">Anchors</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- link
- </para>
- </entry><entry>
- <para>
- <literal>[@http://www.boost.org Boost]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.links">Links</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- anchor link
- </para>
- </entry><entry>
- <para>
- <literal>[link section.anchor Link text]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.anchor_links">Anchor links</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- refentry link
- </para>
- </entry><entry>
- <para>
- <literal>[link xml.refentry Link text]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.refentry_links">refentry links</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- function link
- </para>
- </entry><entry>
- <para>
- <literal>[funcref fully::qualified::function_name Link text]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.code_links">function, class, member,
- enum, macro, concept or header links</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- class link
- </para>
- </entry><entry>
- <para>
- <literal>[classref fully::qualified::class_name Link text]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.code_links">function, class, member,
- enum, macro, concept or header links</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- member link
- </para>
- </entry><entry>
- <para>
- <literal>[memberref fully::qualified::member_name Link text]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.code_links">function, class, member,
- enum, macro, concept or header links</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- enum link
- </para>
- </entry><entry>
- <para>
- <literal>[enumref fully::qualified::enum_name Link text]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.code_links">function, class, member,
- enum, macro, concept or header links</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- macro link
- </para>
- </entry><entry>
- <para>
- <literal>[macroref MACRO_NAME Link text]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.code_links">function, class, member,
- enum, macro, concept or header links</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- concept link
- </para>
- </entry><entry>
- <para>
- <literal>[conceptref ConceptName Link text]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.code_links">function, class, member,
- enum, macro, concept or header links</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- header link
- </para>
- </entry><entry>
- <para>
- <literal>[headerref path/to/header.hpp Link text]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.code_links">function, class, member,
- enum, macro, concept or header links</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- escape
- </para>
- </entry><entry>
- <para>
- <literal>'''escaped text (no processing/formatting)'''</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.escape">Escape</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- single char escape
- </para>
- </entry><entry>
- <para>
- <literal>\c</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.single_char_escape">Single char
- escape</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- images
- </para>
- </entry><entry>
- <para>
- <literal>[$image.jpg]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.phrase.images">Images</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- begin section
- </para>
- </entry><entry>
- <para>
- <literal>[section The Section Title]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.section">Section</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- end section
- </para>
- </entry><entry>
- <para>
- <literal>[endsect]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.section">Section</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- paragraph
- </para>
- </entry><entry>
- <para>
- No markup. Paragraphs start left-flushed and are terminated by two or
- more newlines.
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.paragraphs">Paragraphs</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- ordered list
- </para>
- </entry><entry>
- <para>
-
+ <table frame="all">
+ <title>Syntax Compendium</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>
+ <para>
+ To do this...
+ </para>
+ </entry>
+ <entry>
+ <para>
+ Use this...
+ </para>
+ </entry>
+ <entry>
+ <para>
+ See this...
+ </para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para>
+ comment
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[/ some comment]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.comments">Comments</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <emphasis>italics</emphasis>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>['italics] or /italics/</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.font_styles">Font Styles</link>
+ and <link linkend="quickbook.syntax.phrase.simple_formatting">Simple
+ formatting</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <emphasis role="bold">bold</emphasis>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[*bold] or *bold*</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.font_styles">Font Styles</link>
+ and <link linkend="quickbook.syntax.phrase.simple_formatting">Simple
+ formatting</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <emphasis role="underline">underline</emphasis>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[_underline] or _underline_</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.font_styles">Font Styles</link>
+ and <link linkend="quickbook.syntax.phrase.simple_formatting">Simple
+ formatting</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <literal>teletype</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[^teletype] or =teletype=</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.font_styles">Font Styles</link>
+ and <link linkend="quickbook.syntax.phrase.simple_formatting">Simple
+ formatting</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <emphasis role="strikethrough">strikethrough</emphasis>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[-strikethrough]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.font_styles">Font Styles</link>
+ and <link linkend="quickbook.syntax.phrase.simple_formatting">Simple
+ formatting</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ <replaceable>replaceable</replaceable>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[~replaceable]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.replaceable">Replaceble</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ source mode
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[c++]</literal> or <literal>[python]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.source_mode">Source Mode</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ inline code
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>`int main();`</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.inline_code">Inline code</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ code block
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>``int main();``</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.code">Code</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ code escape
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>``from c++ to QuickBook``</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.escape_back">Escaping Back
+ To QuickBook</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ line break
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[br] or \n</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.line_break">line-break</link>
+ <emphasis role="bold">DEPRECATED</emphasis>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ anchor
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[#anchor]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.anchors">Anchors</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ link
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[@http://www.boost.org Boost]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.links">Links</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ anchor link
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[link section.anchor Link text]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.anchor_links">Anchor links</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ refentry link
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[link xml.refentry Link text]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.refentry_links">refentry links</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ function link
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[funcref fully::qualified::function_name Link text]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.code_links">function, class,
+ member, enum, macro, concept or header links</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ class link
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[classref fully::qualified::class_name Link text]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.code_links">function, class,
+ member, enum, macro, concept or header links</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ member link
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[memberref fully::qualified::member_name Link text]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.code_links">function, class,
+ member, enum, macro, concept or header links</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ enum link
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[enumref fully::qualified::enum_name Link text]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.code_links">function, class,
+ member, enum, macro, concept or header links</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ macro link
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[macroref MACRO_NAME Link text]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.code_links">function, class,
+ member, enum, macro, concept or header links</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ concept link
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[conceptref ConceptName Link text]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.code_links">function, class,
+ member, enum, macro, concept or header links</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ header link
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[headerref path/to/header.hpp Link text]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.code_links">function, class,
+ member, enum, macro, concept or header links</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ escape
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>'''escaped text (no processing/formatting)'''</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.escape">Escape</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ single char escape
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>\c</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.single_char_escape">Single
+ char escape</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ images
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[$image.jpg]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.phrase.images">Images</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ begin section
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[section The Section Title]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.section">Section</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ end section
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[endsect]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.section">Section</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ paragraph
+ </para>
+ </entry>
+ <entry>
+ <para>
+ No markup. Paragraphs start left-flushed and are terminated by two
+ or more newlines.
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.paragraphs">Paragraphs</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ ordered list
+ </para>
+ </entry>
+ <entry>
+ <para>
+
 <programlisting><!--quickbook-escape-prefix--># one
 # two
 # three
 <!--quickbook-escape-postfix--></programlisting>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.lists.ordered_lists">Ordered lists</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- unordered list
- </para>
- </entry><entry>
- <para>
-
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.lists.ordered_lists">Ordered
+ lists</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ unordered list
+ </para>
+ </entry>
+ <entry>
+ <para>
+
 <programlisting><!--quickbook-escape-prefix-->* one
 * two
 * three
 <!--quickbook-escape-postfix--></programlisting>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.lists.unordered_lists">Unordered
- lists</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- code
- </para>
- </entry><entry>
- <para>
- No markup. Preformatted code starts with a space or a tab.
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.code">Code</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- preformatted
- </para>
- </entry><entry>
- <para>
- <literal>[pre preformatted]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.preformatted">Preformatted</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- block quote
- </para>
- </entry><entry>
- <para>
- <literal>[:sometext...]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.blockquote">Blockquote</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- heading 1
- </para>
- </entry><entry>
- <para>
- <literal>[h1 Heading 1]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.headings">Heading</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- heading 2
- </para>
- </entry><entry>
- <para>
- <literal>[h2 Heading 2]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.headings">Heading</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- heading 3
- </para>
- </entry><entry>
- <para>
- <literal>[h3 Heading 3]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.headings">Heading</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- heading 4
- </para>
- </entry><entry>
- <para>
- <literal>[h4 Heading 4]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.headings">Heading</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- heading 5
- </para>
- </entry><entry>
- <para>
- <literal>[h5 Heading 5]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.headings">Heading</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- heading 6
- </para>
- </entry><entry>
- <para>
- <literal>[h6 Heading 6]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.headings">Heading</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- macro
- </para>
- </entry><entry>
- <para>
- <literal>[def macro_identifier some text]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.macros">Macros</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- template
- </para>
- </entry><entry>
- <para>
- <literal>[template[a b] [a] body [b]]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.templates">Templates</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- blurb
- </para>
- </entry><entry>
- <para>
- <literal>[blurb advertisement or note...]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.blurbs">Blurbs</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- admonition
- </para>
- </entry><entry>
- <para>
- <literal>[warning Warning text...]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.admonitions">Admonitions</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- table
- </para>
- </entry><entry>
- <para>
-
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.lists.unordered_lists">Unordered
+ lists</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ code
+ </para>
+ </entry>
+ <entry>
+ <para>
+ No markup. Preformatted code starts with a space or a tab.
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.code">Code</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ preformatted
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[pre preformatted]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.preformatted">Preformatted</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ block quote
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[:sometext...]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.blockquote">Blockquote</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ heading 1
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[h1 Heading 1]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.headings">Heading</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ heading 2
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[h2 Heading 2]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.headings">Heading</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ heading 3
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[h3 Heading 3]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.headings">Heading</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ heading 4
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[h4 Heading 4]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.headings">Heading</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ heading 5
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[h5 Heading 5]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.headings">Heading</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ heading 6
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[h6 Heading 6]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.headings">Heading</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ macro
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[def macro_identifier some text]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.macros">Macros</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ template
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[template[a b] [a] body [b]]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.templates">Templates</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ blurb
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[blurb advertisement or note...]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.blurbs">Blurbs</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ admonition
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[warning Warning text...]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.admonitions">Admonitions</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ table
+ </para>
+ </entry>
+ <entry>
+ <para>
+
 <programlisting><!--quickbook-escape-prefix-->[table Title
 [[a][b][c]]
 [[a][b][c]]
 ]
 <!--quickbook-escape-postfix--></programlisting>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.tables">Tables</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- variablelist
- </para>
- </entry><entry>
- <para>
-
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.tables">Tables</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ variablelist
+ </para>
+ </entry>
+ <entry>
+ <para>
+
 <programlisting><!--quickbook-escape-prefix-->[variablelist Title
 [[a][b]]
 [[a][b]]
 ]
 <!--quickbook-escape-postfix--></programlisting>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.variable_lists">Variable Lists</link>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>
- include
- </para>
- </entry><entry>
- <para>
- <literal>[include someother.qbk]</literal>
- </para>
- </entry><entry>
- <para>
- <link linkend="quickbook.syntax.block.include">Include</link>
- </para>
- </entry>
- </row>
- </tbody>
- </tgroup>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.variable_lists">Variable Lists</link>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
+ include
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <literal>[include someother.qbk]</literal>
+ </para>
+ </entry>
+ <entry>
+ <para>
+ <link linkend="quickbook.syntax.block.include">Include</link>
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
     </table>
   </section>
 </article>

Modified: branches/release/tools/quickbook/test/table_1_5.gold
==============================================================================
--- branches/release/tools/quickbook/test/table_1_5.gold (original)
+++ branches/release/tools/quickbook/test/table_1_5.gold 2010-03-07 06:11:52 EST (Sun, 07 Mar 2010)
@@ -4,66 +4,69 @@
   <title>Table 1.5</title>
   <articleinfo>
   </articleinfo>
- <table frame="all" id="table_1_5.table1"> <title>Table 1</title>
- <tgroup cols="1">
- <thead>
- <row>
- <entry>
- <para>
- Heading
- </para>
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <para>
- cell
- </para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table> <table frame="all" id="table_1_5.table_2"> <title>Table 2</title>
- <tgroup cols="1">
- <thead>
- <row>
- <entry>
- <para>
- Heading
- </para>
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <para>
- cell
- </para>
- </entry>
- </row>
- </tbody>
- </tgroup>
+ <table frame="all" id="table_1_5.table1">
+ <title>Table 1</title>
+ <tgroup cols="1">
+ <thead>
+ <row>
+ <entry>
+ <para>
+ Heading
+ </para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para>
+ cell
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <table frame="all" id="table_1_5.table_2">
+ <title>Table 2</title>
+ <tgroup cols="1">
+ <thead>
+ <row>
+ <entry>
+ <para>
+ Heading
+ </para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para>
+ cell
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
   </table>
   <informaltable frame="all">
     <tgroup cols="1">
       <thead>
         <row>
           <entry>
- <para>
- Heading
- </para>
+ <para>
+ Heading
+ </para>
           </entry>
         </row>
       </thead>
       <tbody>
         <row>
           <entry>
- <para>
- cell
- </para>
+ <para>
+ cell
+ </para>
           </entry>
         </row>
       </tbody>
@@ -74,68 +77,70 @@
       <thead>
         <row>
           <entry>
- <para>
- Heading
- </para>
+ <para>
+ Heading
+ </para>
           </entry>
         </row>
       </thead>
       <tbody>
         <row>
           <entry>
- <para>
- cell
- </para>
+ <para>
+ cell
+ </para>
           </entry>
         </row>
       </tbody>
     </tgroup>
   </informaltable>
- <table frame="all" id="table_1_5._table5_"> <title>-table5-</title>
- <tgroup cols="1">
- <thead>
- <row>
- <entry>
- <para>
- Heading
- </para>
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <para>
- cell
- </para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <section id="table_1_5.section1">
- <title><link linkend="table_1_5.section1"> Section 1</link></title> <table frame="all"
- id="table_1_5.section1.table1"> <title>Table 1</title>
+ <table frame="all" id="table_1_5._table5_">
+ <title>-table5-</title>
     <tgroup cols="1">
       <thead>
         <row>
           <entry>
- <para>
- Heading
- </para>
+ <para>
+ Heading
+ </para>
           </entry>
         </row>
       </thead>
       <tbody>
         <row>
           <entry>
- <para>
- cell
- </para>
+ <para>
+ cell
+ </para>
           </entry>
         </row>
       </tbody>
     </tgroup>
+ </table>
+ <section id="table_1_5.section1">
+ <title><link linkend="table_1_5.section1"> Section 1</link></title>
+ <table frame="all" id="table_1_5.section1.table1">
+ <title>Table 1</title>
+ <tgroup cols="1">
+ <thead>
+ <row>
+ <entry>
+ <para>
+ Heading
+ </para>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para>
+ cell
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
     </table>
   </section>
 </article>


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