#Topic Bookmaker_Markup

# redefine markup character so examples below will not be parsed
###$

Text, except for the single markup character, requires no annotation.

# comments are preceded by a hash symbol and whitespace
# comments may terminated by linefeed or double hash ## <- end of comment

Keywords are preceded by a single hash symbol without whitespace.
#Keyword

Keywords are terminated by double hash and may be labeled
##            <- end of #keyword

#Keyword
#Keyword ##   <- alternate labeled end of #Keyword

Tables use single hash symbols to delimit columns, and double to end row.
#Table
#Legend
# first column in table # next column in table ##
##            <- end of #Legend
# a row                 # another row ##
# another row           # another row ##
#Table ##     <- or, just ##

$Table
$Legend
$ first column in table $ next column in table $$
$$
$ a row                 $ another row $$
$ another row           $ another row $$
$Table $$

The markup character is initially # at the start of any .bmh file
###x          <- redefine the markup character as 'x'
xxx#          <- restore the default markup character

  anchor, ala HTML
  anchors may start anywhere in the line
#A text #_reference ##

  class description
#Class SkClassName
description
methods
##

  if the example is not named, it inherits the name of its container
#Example
    #Description
    ##
    #Image
    #Width
    #Height
        code...
    #StdOut
        expected example output
    ##
##

#Enum __required_reference
description
#Code
##
#Example
##
#Enum ##

  method description
  the _method_reference must be unique within the class
#Method type name(params..)
description
#Param name  description ##
#Return return ##
#Example
##
#SeeAlso ##
##

#ToDo  description ##

$ restore markup character
$$$#

##
