#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
$$$#   

##
