Patch title: Release 87 bulk changes
Abstract:
File: /pliant/protocol/http/page.page
Key:
    Removed line
    Added line
   
# Copyright (C) 1999  HELIOSAM (France)
# Work performed by  Loic Dumas  loic.dumas@heliosam.fr
#
# This program is free software; you can redistribute it and
# modify it under the terms of the GNU General Public Licens
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be us
# but WITHOUT ANY WARRANTY; without even the implied warrant
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public 
# version 2 along with this program; if not, write to the Fr
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 


para
  [The Pliant .page format is an alternative to native HTML.
  [The Pliant HTTP server will translate on the fly any .pag
  [On the server side, there are several advantages using .p
  list
    item
      [.page format enables you to write dynamic pages witho
    item
      [styles binding is performed on server side using the 
para  
  [A document written in Pliant .page format, is saved with 
  [The ] ; link "style/default.style" "style/default.style" 
  [Several attributes, such as 'bold' need the area it appli
para
  [On this page you will have every .page format instruction
  
center
  table columns 1 border 0  
    cell
      header "Table of content" 
        table columns 2 border 0    
# Copyright (C) 1999  HELIOSAM (France)
# Work performed by  Loic Dumas  loic.dumas@heliosam.fr
#
# This program is free software; you can redistribute it and
# modify it under the terms of the GNU General Public Licens
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be us
# but WITHOUT ANY WARRANTY; without even the implied warrant
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public 
# version 2 along with this program; if not, write to the Fr
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 


para
  [The Pliant .page format is an alternative to native HTML.
  [The Pliant HTTP server will translate on the fly any .pag
  [On the server side, there are several advantages using .p
  list
    item
      [.page format enables you to write dynamic pages witho
    item
      [styles binding is performed on server side using the 
para  
  [A document written in Pliant .page format, is saved with 
  [The ] ; link "style/default.style" "style/default.style" 
  [Several attributes, such as 'bold' need the area it appli
para
  [On this page you will have every .page format instruction
  
center
  table columns 1 border 0  
    cell
      header "Table of content" 
        table columns 2 border 0    
          cell color lsh 78 5 130
          cell color (color hsl 130 5 78)
            list
              item 
                link "Basic Instructions" "" section "basic"
                fixed
                  list 
                    item 
                      [text]                      
                    item 
                      [eol]
                    item 
                     [ html]
                    item 
                      [link]
                    item
                      [note]
                    item 
                      [image]
                    item 
                      [listing] 
                    item 
                      [highlight] 
              item
                link "Structural Instructions" "" section "s
                fixed
                  list
                    item
                      [title]
                    item
                      [chapter]
                    item
                      [header]
                    item
                      [para]
                    item
                      [list]
                    item
                      [table]
                            
              item
                link "Attributes" "" section "attributes"
                fixed
                  list
                    item
                      [bold]
                    item
                      [italic]
                    item
                      [small]
                    item
                      [big]
                    item
                      [center]
                    item
                      [fixed]
                    item
                      [color] 
              
              item
                link "Dynamic Instructions" "" section "dyna
                fixed
                  list
                    item
                      [dynamic]
                    item
                      [input]
                    item
                      [button]
              item
                link "Shortcuts" "" section "shortcuts"
                fixed
                  list
                    item
                      [[lb]text[rb]]
                    item
                      [;]



  header "text"
    para
      [The 'text' instruction is to display text.]
    para
      [syntax:]
      listing
        ¤text `string
      [Where 'string' is a character string you want to be d
    para
      [Sample code:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            text "hello world "
            text "on the same line [lf]"
            text "on the next line"
        cell
          [------>]
        cell
          text "hello world "
          text "on the same line [lf]"
          text "on the next line"
    small
      [Beware that Pliant uses a non standard encoding for ]
  
  header "eol"
    para
      [The 'eol' instruction inserts a line feed.]
    para
      [Syntax:] ; eol
      listing
        ¤eol
      [So, it's equivalent to:]
      listing
        text "[lf]"
    para
      [Sample code:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            text "my first line"
            eol
            text "my second line"
        cell
          [------>]
        cell
          text "my first line"
          eol
          text "my second line"
    para
      text "alternatives that will give the same result:"
      listing
        text "my first line"
        text "[lf]"
        text "my second line"
      listing
        text "my first line[lf]"
        text "my second line"
      listing
        text "my first line[lf]my second line"
  
  header "html"
    para
      [The 'html' instruction, can display pure html code in
    para
      [Syntax:]
      listing
        ¤html 'string 
      [Where 'string' is raw HTML code]
    para
      [Sample code:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            html "<hr>"
        cell
          [------>]
        cell          
          html "<hr>"  
    small
      [beware that Pliant uses a non standard encoding for ]
  
  header "link"
    para
      [The 'link' instruction makes hyperlinks between pages
    para
      [Syntax:]
      listing
        ¤link `label `target [¤section `section] [¤options `
      [Where 'label' is the hyperlink label.] ; eol
      [Where 'target' is the link destination.] ; eol
      [Where 'section' specify the section requested in the 
      [Where 'options' specifies some options to be passed t
    para
      [Sample code: 1:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            link "Pliant home page" "http://pliant.cx/"
        cell
          [------>]
        cell
          link "Pliant home page" "http://pliant.cx/"
    para
      [Various sections within a page are defined using 'sec
    para
      [Syntax:]
      listing
        ¤section `name
      [Where 'name' is a string.]
    para
      [Sample code 2:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            section "mysection"
            text "bla bla bla[lf]"
            text "more bla bla bla[lf]"
            link "jump to beginning of my section" "" sectio
        cell
          [------>]
        cell
          section "mysection"
          text "bla bla bla[lf]"
          text "more bla bla bla[lf]"
          link "jump to beginning of my section" "" section 
  
  header "note"
    para
      [The 'note' instruction is set to make a note in your 
      [On the client side it will appear like an hypertext, 
    para
      [Syntax: ]
      listing
        ¤note `label
          `instructions
      [Where 'label' is the note label] ; eol
      [And 'instructions' is the content of your note.]
    para
      [Sample code:]
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            text "more "
            note "explanations"
              title "My sample note"
              text "As you can see the note is displayed on 
              text "page, but you included it in your main d
            text " about notes."
        cell
          bold
            [------>]
        cell
          text "more "
          note "explanations"
            title "My sample note"
            text "As you can see the note is displayed on a 
            text "page, but you included it in your main doc
          text " about notes."
  
  header "image"
    para
      [The 'image' instruction inserts image in your page.] 
      [If 'image' has a single parameter, it's a true image 
    para
      [Syntax:]
      listing
        ¤image `url [`target] [¤section `section] [¤options 
      [Where 'url' is the image access path.] ; eol
      [Where 'target' and the following parameters have exac
      [Please also notice that the image will be inserted in
    para
      [Sample code:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            text "A passive image:[lf]"
            image "/pliant/welcome/image/pliant.jpeg"
            eol
            text "An active image (in other words, an hyperl
            list
              item 
                link "Basic Instructions" "" section "basic"
                fixed
                  list 
                    item 
                      [text]                      
                    item 
                      [eol]
                    item 
                     [ html]
                    item 
                      [link]
                    item
                      [note]
                    item 
                      [image]
                    item 
                      [listing] 
                    item 
                      [highlight] 
              item
                link "Structural Instructions" "" section "s
                fixed
                  list
                    item
                      [title]
                    item
                      [chapter]
                    item
                      [header]
                    item
                      [para]
                    item
                      [list]
                    item
                      [table]
                            
              item
                link "Attributes" "" section "attributes"
                fixed
                  list
                    item
                      [bold]
                    item
                      [italic]
                    item
                      [small]
                    item
                      [big]
                    item
                      [center]
                    item
                      [fixed]
                    item
                      [color] 
              
              item
                link "Dynamic Instructions" "" section "dyna
                fixed
                  list
                    item
                      [dynamic]
                    item
                      [input]
                    item
                      [button]
              item
                link "Shortcuts" "" section "shortcuts"
                fixed
                  list
                    item
                      [[lb]text[rb]]
                    item
                      [;]



  header "text"
    para
      [The 'text' instruction is to display text.]
    para
      [syntax:]
      listing
        ¤text `string
      [Where 'string' is a character string you want to be d
    para
      [Sample code:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            text "hello world "
            text "on the same line [lf]"
            text "on the next line"
        cell
          [------>]
        cell
          text "hello world "
          text "on the same line [lf]"
          text "on the next line"
    small
      [Beware that Pliant uses a non standard encoding for ]
  
  header "eol"
    para
      [The 'eol' instruction inserts a line feed.]
    para
      [Syntax:] ; eol
      listing
        ¤eol
      [So, it's equivalent to:]
      listing
        text "[lf]"
    para
      [Sample code:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            text "my first line"
            eol
            text "my second line"
        cell
          [------>]
        cell
          text "my first line"
          eol
          text "my second line"
    para
      text "alternatives that will give the same result:"
      listing
        text "my first line"
        text "[lf]"
        text "my second line"
      listing
        text "my first line[lf]"
        text "my second line"
      listing
        text "my first line[lf]my second line"
  
  header "html"
    para
      [The 'html' instruction, can display pure html code in
    para
      [Syntax:]
      listing
        ¤html 'string 
      [Where 'string' is raw HTML code]
    para
      [Sample code:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            html "<hr>"
        cell
          [------>]
        cell          
          html "<hr>"  
    small
      [beware that Pliant uses a non standard encoding for ]
  
  header "link"
    para
      [The 'link' instruction makes hyperlinks between pages
    para
      [Syntax:]
      listing
        ¤link `label `target [¤section `section] [¤options `
      [Where 'label' is the hyperlink label.] ; eol
      [Where 'target' is the link destination.] ; eol
      [Where 'section' specify the section requested in the 
      [Where 'options' specifies some options to be passed t
    para
      [Sample code: 1:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            link "Pliant home page" "http://pliant.cx/"
        cell
          [------>]
        cell
          link "Pliant home page" "http://pliant.cx/"
    para
      [Various sections within a page are defined using 'sec
    para
      [Syntax:]
      listing
        ¤section `name
      [Where 'name' is a string.]
    para
      [Sample code 2:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            section "mysection"
            text "bla bla bla[lf]"
            text "more bla bla bla[lf]"
            link "jump to beginning of my section" "" sectio
        cell
          [------>]
        cell
          section "mysection"
          text "bla bla bla[lf]"
          text "more bla bla bla[lf]"
          link "jump to beginning of my section" "" section 
  
  header "note"
    para
      [The 'note' instruction is set to make a note in your 
      [On the client side it will appear like an hypertext, 
    para
      [Syntax: ]
      listing
        ¤note `label
          `instructions
      [Where 'label' is the note label] ; eol
      [And 'instructions' is the content of your note.]
    para
      [Sample code:]
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            text "more "
            note "explanations"
              title "My sample note"
              text "As you can see the note is displayed on 
              text "page, but you included it in your main d
            text " about notes."
        cell
          bold
            [------>]
        cell
          text "more "
          note "explanations"
            title "My sample note"
            text "As you can see the note is displayed on a 
            text "page, but you included it in your main doc
          text " about notes."
  
  header "image"
    para
      [The 'image' instruction inserts image in your page.] 
      [If 'image' has a single parameter, it's a true image 
    para
      [Syntax:]
      listing
        ¤image `url [`target] [¤section `section] [¤options 
      [Where 'url' is the image access path.] ; eol
      [Where 'target' and the following parameters have exac
      [Please also notice that the image will be inserted in
    para
      [Sample code:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            text "A passive image:[lf]"
            image "/pliant/welcome/image/pliant.jpeg"
            eol
            text "An active image (in other words, an hyperl
            image "/pliant/welcome/image/pliant.jpeg" "http:
            image "/pliant/welcome/image/pliant.jpeg" "http://pliant.cx/" # FIXME
        cell
          [------>]
        cell
          text "A passive image:[lf]"
          image "/pliant/welcome/image/pliant.jpeg"
          eol
          text "An active image (in other words, an hyperlin
        cell
          [------>]
        cell
          text "A passive image:[lf]"
          image "/pliant/welcome/image/pliant.jpeg"
          eol
          text "An active image (in other words, an hyperlin
          image "/pliant/welcome/image/pliant.jpeg" "http://
          image "/pliant/welcome/image/pliant.jpeg" # "http://pliant.cx/"
  
  header "listing"
    para
      [The 'listing' instruction displays pure ASCII code in
    para
      [Syntax:]
      listing
        ¤listing
          `bloc
      [Where 'bloc' is the ASCII text.] ; eol
      [Please notice that the Syntax is not completely free:
    para
      [Sample code:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
             listing
                what ever you want
                 with free indentation
                and on several lines
        cell
          [------>]
        cell
          listing
            what ever you want
             with free indentation
            and on several lines
 
  header "highlight"
    para
      [The 'highlight' instruction is a very useful instruct
    para
      [Syntax:]
      listing
        ¤highlight `string
      [Where string is the text you want to highlight.];eol
    para
      [Sample code:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            highlight "look at this"
        cell
          [------>]
        cell
          highlight "look at this"


section "structural"
header "Structural instructions"
   header "title"
    para
      [The 'title' instruction has the same function than <t
    para  
      [Syntax:]
      listing
        ¤title `string
      [Where string is your page title.]
    para
      [Sample code:];eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            title "My page"
        cell
          [------>]
  
  header "listing"
    para
      [The 'listing' instruction displays pure ASCII code in
    para
      [Syntax:]
      listing
        ¤listing
          `bloc
      [Where 'bloc' is the ASCII text.] ; eol
      [Please notice that the Syntax is not completely free:
    para
      [Sample code:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
             listing
                what ever you want
                 with free indentation
                and on several lines
        cell
          [------>]
        cell
          listing
            what ever you want
             with free indentation
            and on several lines
 
  header "highlight"
    para
      [The 'highlight' instruction is a very useful instruct
    para
      [Syntax:]
      listing
        ¤highlight `string
      [Where string is the text you want to highlight.];eol
    para
      [Sample code:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            highlight "look at this"
        cell
          [------>]
        cell
          highlight "look at this"


section "structural"
header "Structural instructions"
   header "title"
    para
      [The 'title' instruction has the same function than <t
    para  
      [Syntax:]
      listing
        ¤title `string
      [Where string is your page title.]
    para
      [Sample code:];eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            title "My page"
        cell
          [------>]
        cell color lsh 64 100/8 130
        cell color (color hsl 130 100/8 64)
          html "<FONT FACE=[dq]Helvetica[dq] SIZE=[dq]+4[dq]
          bold [My page]
          html (repeat 10 "&nbsp;")+"</FONT>"
    
  header "chapter"
    para 
      [The instruction 'chapter' is a big heading, in a pref
    para
      [Syntax:]
      listing
        ¤chapter `string
      [Where 'string' is your chapter name.]
    para
      [Sample code:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            chapter "chapter XVI"
        cell
          [------>]
        cell
          chapter "chapter XVI"
 
  header "header"
    para
      [The `header` instruction is also a heading, if you in
    para
      [Syntax:]
      listing
        ¤header `string
        `content
      [or]
      listing
        ¤header `string
          `content
      [Where 'string' is your header name.] ; eol
      [If 'content' is indented an contains some 'header' in
    para
      [Sample code:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            header "first"
            text "first text"
            header "one"
              header "two"
                text "second text"
        cell
          [------>]
        cell
          html "<FONT FACE=[dq]Helvetica[dq] SIZE=[dq]+4[dq]
          bold [My page]
          html (repeat 10 "&nbsp;")+"</FONT>"
    
  header "chapter"
    para 
      [The instruction 'chapter' is a big heading, in a pref
    para
      [Syntax:]
      listing
        ¤chapter `string
      [Where 'string' is your chapter name.]
    para
      [Sample code:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            chapter "chapter XVI"
        cell
          [------>]
        cell
          chapter "chapter XVI"
 
  header "header"
    para
      [The `header` instruction is also a heading, if you in
    para
      [Syntax:]
      listing
        ¤header `string
        `content
      [or]
      listing
        ¤header `string
          `content
      [Where 'string' is your header name.] ; eol
      [If 'content' is indented an contains some 'header' in
    para
      [Sample code:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            header "first"
            text "first text"
            header "one"
              header "two"
                text "second text"
        cell
          [------>]
        cell
          var Pointer:Int h :> env kmap "default header leve
          var Int memo := h ; h := 0
          # FIXME
          # var Pointer:Int h :> environment kmap "default header level" Int
          # var Int memo := h ; h := 0
          header "first"
          text "first text"
          header "one"   
            header "two"
              text "second text"
          header "first"
          text "first text"
          header "one"   
            header "two"
              text "second text"
          h := memo
          # h := memo
               
  header "para"
    para
      [The 'para' instruction creates paragraphs.]
    para
      [Syntax: ]
      listing
        ¤para
          `instructions
      [where 'instructions' defines the content of the parag
    para
      [Sample code:];eol   
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:] 
        cell
          listing
            para
              text "once upon a time, bla bla bla"
              eol
              text "more bla bla bla."
            para
              text "and they lived happy and , bal bla bla"
              eol
              text "even more bla bla bla."
        cell
          [------>]
        cell
          para
            text "once upon a time, bla bla bla"
            eol
            text "more bla bla bla."
          para
            text "and they lived happy and , bal bla bla"
            eol
            text "even more bla bla bla."


  section "color"                
  header "color"
    para
      [There are two ways to code colors with Pliant .page f
      [lsh stands for light saturation and hue. ]
      [Please notice that Pliant lsh encoding does not confo
      [In particular, with Pliant lsh encoding 'light' value
    para
      [Syntax :]
      listing 
        ¤color ¤lsh `light `saturation `hue
          `instructions
      [Where 'light' and 'saturation' are two floating point
      [And 'hue' is a floating point number ranging from 0 t
    para
      [The following tables should help you understand the m
      table columns 2 border 0
        var Float light := 50
        var Float sat1 := 10
        var Float hue := 0
        cell
          text "saturation = 0[lf]so hue does not matter"
        cell
          table columns 6
               
  header "para"
    para
      [The 'para' instruction creates paragraphs.]
    para
      [Syntax: ]
      listing
        ¤para
          `instructions
      [where 'instructions' defines the content of the parag
    para
      [Sample code:];eol   
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:] 
        cell
          listing
            para
              text "once upon a time, bla bla bla"
              eol
              text "more bla bla bla."
            para
              text "and they lived happy and , bal bla bla"
              eol
              text "even more bla bla bla."
        cell
          [------>]
        cell
          para
            text "once upon a time, bla bla bla"
            eol
            text "more bla bla bla."
          para
            text "and they lived happy and , bal bla bla"
            eol
            text "even more bla bla bla."


  section "color"                
  header "color"
    para
      [There are two ways to code colors with Pliant .page f
      [lsh stands for light saturation and hue. ]
      [Please notice that Pliant lsh encoding does not confo
      [In particular, with Pliant lsh encoding 'light' value
    para
      [Syntax :]
      listing 
        ¤color ¤lsh `light `saturation `hue
          `instructions
      [Where 'light' and 'saturation' are two floating point
      [And 'hue' is a floating point number ranging from 0 t
    para
      [The following tables should help you understand the m
      table columns 2 border 0
        var Float light := 50
        var Float sat1 := 10
        var Float hue := 0
        cell
          text "saturation = 0[lf]so hue does not matter"
        cell
          table columns 6
            cell color lsh 90 20 60 bold:[light]
            cell color lsh 90 20 60 [0]
            cell color lsh 90 20 60 [25]
            cell color lsh 90 20 60 [50]
            cell color lsh 90 20 60 [75]
            cell color lsh 90 20 60 [100]
            cell color lsh 90 20 60 [result]
            cell color lsh 0 0 0
              color lsh 100 0 0 [black]
            cell color lsh 25 0 0 [dark grey]
            cell color lsh 50 0 0 [grey]
            cell color lsh 75 0 0 [light grey]
            cell color lsh 100 0 0 [white]
            cell header bold:[light]
            cell header [0]
            cell header [25]
            cell header [50]
            cell header [75]
            cell header [100]
            cell header [result]
            cell color (color hsl 0 0 0)
              font color (color hsl 0 0 100) [black]
            cell color (color hsl 0 0 25) [dark grey]
            cell color (color hsl 0 0 50) [grey]
            cell color (color hsl 0 0 75) [light grey]
            cell color (color hsl 0 0 100) [white]
        cell
          text "light = "+string:light+" , hue = "+string:hu
        cell
          table columns 5
        cell
          text "light = "+string:light+" , hue = "+string:hu
        cell
          table columns 5
            cell color lsh 90 20 60 bold:[saturation]
            cell color lsh 90 20 60 [0]
            cell color lsh 90 20 60 [10]
            cell color lsh 90 20 60 [50]
            cell color lsh 90 20 60 [100]
            cell color lsh 90 20 60 [result]
            cell color lsh light 0 hue [grey]
            cell color lsh light 10 hue [redish grey]
            cell color lsh light 50 hue [dull red]
            cell color lsh light 100 hue [pure red]
            cell header bold:[saturation]
            cell header [0]
            cell header [10]
            cell header [50]
            cell header [100]
            cell header [result]
            cell color (color hsl hue 0 light) [grey]
            cell color (color hsl hue 10 light) [redish grey]
            cell color (color hsl hue 50 light) [dull red]
            cell color (color hsl hue 100 light) [pure red]
        cell
          text "saturation = 100[lf]so light does not matter
        cell
          table columns 8
        cell
          text "saturation = 100[lf]so light does not matter
        cell
          table columns 8
            cell color lsh 90 20 60 bold:[hue]
            cell color lsh 90 20 60 [0]
            cell color lsh 90 20 60 [60]
            cell color lsh 90 20 60 [120]
            cell color lsh 90 20 60 [180]
            cell color lsh 90 20 60 [240]
            cell color lsh 90 20 60 [300]
            cell color lsh 90 20 60 [360]
            cell color lsh 90 20 60 [result]
            cell color lsh light 100 0 [red]
            cell color lsh light 100 60 [yellow]
            cell color lsh light 100 120 [green]
            cell color lsh light 100 180 [cyan]
            cell color lsh light 100 240 [blue]
            cell color lsh light 100 300 [magenta]
            cell color lsh light 100 360 [red]
            cell header bold:[hue]
            cell header [0]
            cell header [60]
            cell header [120]
            cell header [180]
            cell header [240]
            cell header [300]
            cell header [360]
            cell header [result]
            cell color (color hsl 0 100 light) [red]
            cell color (color hsl 60 100 light) [yellow]
            cell color (color hsl 120 100 light) [green]
            cell color (color hsl 180 100 light) [cyan]
            cell color (color hsl 240 100 light) [blue]
            cell color (color hsl 300 100 light) [magenta]
            cell color (color hsl 360 100 light) [red]
        cell
          text "light = "+string:light
        cell
          table columns 4
        cell
          text "light = "+string:light
        cell
          table columns 4
            cell color lsh 90 20 60 bold:[hue / saturation] 
            cell color lsh 90 20 60 [0] ; cell color lsh lig
            cell color lsh 90 20 60 [30] ; cell color lsh li
            cell color lsh 90 20 60 [60] ; cell color lsh li
            cell color lsh 90 20 60 [120] ; cell color lsh l
            cell color lsh 90 20 60 [180] ; cell color lsh l
            cell color lsh 90 20 60 [240] ; cell color lsh l
            cell color lsh 90 20 60 [300] ; cell color lsh l
            cell header bold:[hue / saturation] ; cell header (text string:sat1) ; cell header [50] ; cell header [100]
            cell header [0] ; cell color (color hsl 0 sat1 light) [red] ; cell color (color hsl 0 50 light) [red] ; cell color (color hsl 0 100 light) [red]
            cell header [30] ; cell color (color hsl 30 sat1 light) [orange] ; cell color (color hsl 30 50 light) [orange] ; cell color (color hsl 30 100 light) [orange]
            cell header [60] ; cell color (color hsl 60 sat1 light) [yellow] ; cell color (color hsl 60 50 light) [yellow] ; cell color (color hsl 60 100 light) [yellow]
            cell header [120] ; cell color (color hsl 120 sat1 light) [green] ; cell color (color hsl 120 50 light) [green] ; cell color (color hsl 120 100 light) [green]
            cell header [180] ; cell color (color hsl 180 sat1 light) [cyan] ; cell color (color hsl 180 50 light) [cyan] ; cell color (color hsl 180 100 light) [cyan]
            cell header [240] ; cell color (color hsl 240 sat1 light) [blue] ; cell color (color hsl 240 50 light) [blue] ; cell color (color hsl 240 100 light) [blue]
            cell header [300] ; cell color (color hsl 300 sat1 light) [magenta] ; cell color (color hsl 300 50 light) [magenta] ; cell color (color hsl 300 100 light) [magenta]
        cell
          text "hue = "+string:hue
        cell
          table columns 4
        cell
          text "hue = "+string:hue
        cell
          table columns 4
            cell color lsh 90 20 60 bold:[light / saturation
            cell color lsh 90 20 60 [0] ; cell color lsh 0 s
            cell color lsh 90 20 60 [25] ; cell color lsh 25
            cell color lsh 90 20 60 [50] ; cell color lsh 50
            cell color lsh 90 20 60 [75] ; cell color lsh 75
            cell color lsh 90 20 60 [100] ; cell color lsh 1
            cell header bold:[light / saturation] ; cell header (text string:sat1) ; cell header [50] ; cell header [100]
            cell header [0] ; cell color (color hsl hue sat1 0) [sample] ; cell color (color hsl hue 50 0) [sample] ; cell color (color hsl hue 100 0) [sample]
            cell header [25] ; cell color (color hsl hue sat1 25) [sample] ; cell color (color hsl hue 50 25) [sample] ; cell color (color hsl hue 100 25) [sample]
            cell header [50] ; cell color (color hsl hue sat1 50) [sample] ; cell color (color hsl hue 50 50) [sample] ; cell color (color hsl hue 100 50) [sample]
            cell header [75] ; cell color (color hsl hue sat1 75) [sample] ; cell color (color hsl hue 50 75) [sample] ; cell color (color hsl hue 100 75) [sample]
            cell header [100] ; cell color (color hsl hue sat1 100) [sample] ; cell color (color hsl hue 50 100) [sample] ; cell color (color hsl hue 100 100) [sample]
    para
      [Alternative syntax :]
      listing 
        ¤color ¤rgb `red `green `blue
          `instructions
      ['red' 'green' and 'blue' are three integers ranging f
      [This syntax will be more familiar to programmers, but
    para
      [Sample code:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
    para
      [Alternative syntax :]
      listing 
        ¤color ¤rgb `red `green `blue
          `instructions
      ['red' 'green' and 'blue' are three integers ranging f
      [This syntax will be more familiar to programmers, but
    para
      [Sample code:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            color lsh 50 100 60
            font color (color hsl 60 100 50)
              text "yellow text."   
        cell
          [------>]
        cell
              text "yellow text."   
        cell
          [------>]
        cell
          color lsh 50 100 60
          font color (color hsl 50 100 60)
            text "yellow text." 
    para
      [Sample code 2:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            text "yellow text." 
    para
      [Sample code 2:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            color rgb 255 255 0
            font color (color rgb 255 255 0)
              text "yellow text."   
        cell
          [------>]
        cell
              text "yellow text."   
        cell
          [------>]
        cell
          color rgb 255 255 0
          font color (color rgb 255 255 0)
            text "yellow text." 
    para
      [Sample code 3:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            table columns 1
            text "yellow text." 
    para
      [Sample code 3:] ; eol
      table columns 3 border 0
        cell
          [source:]
        cell
          void
        cell
          [result:]
        cell
          listing
            table columns 1
              cell color lsh 0 33 120
                color lsh 0 100 120
              cell color (color hsl 120 33 0)
                font color (color hsl 120 100 0)
                  text "green text, in a dark green cell."  
        cell
          [------>]
        cell
          table columns 1
                  text "green text, in a dark green cell."  
        cell
          [------>]
        cell
          table columns 1
            cell color lsh 0 33 120
              color lsh 0 100 120
            cell color (color hsl 120 33 0)
              font color (color hsl 120 100 0)
                text "green text, in a dark green cell." 



  header "semi colon for packaging several instruction on a 
    para
      [With [dq] ; [dq] you can write instructions on the sa
    para
      [Syntax: ]
      listing
        `instruction ¤; `instruction
    para
      [The following sample]
      listing
        [A ] ; bold [strong] ; [ word] ; eol
      [is equivalent to]
      listing
        text "A "
        bold
          text "strong"
        text " word"
        eol
                text "green text, in a dark green cell." 



  header "semi colon for packaging several instruction on a 
    para
      [With [dq] ; [dq] you can write instructions on the sa
    para
      [Syntax: ]
      listing
        `instruction ¤; `instruction
    para
      [The following sample]
      listing
        [A ] ; bold [strong] ; [ word] ; eol
      [is equivalent to]
      listing
        text "A "
        bold
          text "strong"
        text " word"
        eol