
   def "->" { {Symbol Base} @Font "\256" } #174 decimal
   def "=>" { {Symbol Base} @Font "\336" } #222 decimal
   macro @JP	{ /0.5v  }

   def @Code right x
   { { Helvetica Base -1p } @Font lines @Break x }

   macro @JL { //1vx }

   ###################################################
   #                                                 #
   #  Lout keywords.                                 #
   #                                                 #
   ###################################################

   def @@BackEnd           { @Code "@BackEnd"           }
   def @@Background        { @Code "@Background"        }
   def @@Begin             { @Code "@Begin"             }
   def @@Break             { @Code "@Break"             }
   def @@Case              { @Code "@Case"              }
   def @@Char              { @Code "@Char"              }
   def @@Common            { @Code "@Common"            }
   def @@CurrLang          { @Code "@CurrLang"          }
   def @@CurrFamily        { @Code "@CurrFamily"        }
   def @@CurrFace          { @Code "@CurrFace"          }
   def @@Database          { @Code "@Database"          }
   def @@End               { @Code "@End"               }
   def @@Enclose           { @Code "@Enclose"           }
   def @@Font              { @Code "@Font"              }
   def @@ForceGalley       { @Code "@ForceGalley"       }
   def @@Galley            { @Code "@Galley"            }
   def @@Graphic           { @Code "@Graphic"           }
   def @@HAdjust           { @Code "@HAdjust"           }
   def @@HCover            { @Code "@HCover"            }
   def @@HContract         { @Code "@HContract"         }
   def @@HExpand           { @Code "@HExpand"           }
   def @@HLimited          { @Code "@HLimited"          }
   def @@High              { @Code "@High"              }
   def @@HScale            { @Code "@HScale"            }
   def @@HShift            { @Code "@HShift"            }
   def @@HSpan             { @Code "@HSpan"             }
   def @@Include           { @Code "@Include"           }
   def @@IncludeGraphic    { @Code "@IncludeGraphic"    }
   def @@KernShrink        { @Code "@KernShrink"        }
   def @@Key               { @Code "@Key"               }
   def @@Language          { @Code "@Language"          }
   def @@LClos             { @Code "@LClos"             }
   def @@LEnv              { @Code "@LEnv"              }
   def @@LInput            { @Code "@LInput"            }
   def @@LUse              { @Code "@LUse"              }
   def @@LVis              { @Code "@LVis"              }
   def @@Meld              { @Code "@Meld"              }
   def @@Merge             { @Code "@Merge"             }
   def @@Moment            { @Code "@Moment"            }
   def @@Next              { @Code "@Next"              }
   def @@NotRevealed       { @Code "@NotRevealed"       }
   def @@Null              { @Code "@Null"              }
   def @@OneCol            { @Code "@OneCol"            }
   def @@OneOf             { @Code "@OneOf"             }
   def @@OneRow            { @Code "@OneRow"            }
   def @@Open              { @Code "@Open"              }
   def @@PAdjust           { @Code "@PAdjust"           }
   def @@PageLabel         { @Code "@PageLabel"         }
   def @@PlainGraphic      { @Code "@PlainGraphic"    }
   def @@PrependGraphic    { @Code "@PrependGraphic"    }
   def @@RawVerbatim       { @Code "@RawVerbatim"       }
   def @@Rotate            { @Code "@Rotate"            }
   def @@Rump              { @Code "@Rump"              }
   def @@Insert            { @Code "@Insert"            }
   def @@Scale             { @Code "@Scale"             }
   def @@SetColor          { @Code "@SetColor"          }
   def @@SetColour         { @Code "@SetColour"         }
   def @@Space             { @Code "@Space"             }
   def @@StartHSpan        { @Code "@StartHSpan"        }
   def @@StartVSpan        { @Code "@StartVSpan"        }
   def @@StartHVSpan       { @Code "@StartHVSpan"       }
   def @@SysDatabase       { @Code "@SysDatabase"       }
   def @@SysInclude        { @Code "@SysInclude"        }
   def @@SysIncludeGraphic { @Code "@SysIncludeGraphic" }
   def @@SysPrependGraphic { @Code "@SysPrependGraphic" }
   def @@Tag               { @Code "@Tag"               }
   def @@Tagged            { @Code "@Tagged"            }
   def @@Underline         { @Code "@Underline"         }
   def @@Use               { @Code "@Use"               }
   def @@VAdjust           { @Code "@VAdjust"           }
   def @@VContract         { @Code "@VContract"         }
   def @@VCover            { @Code "@VCover"            }
   def @@VExpand           { @Code "@VExpand"           }
   def @@Verbatim          { @Code "@Verbatim"          }
   def @@VLimited          { @Code "@VLimited"          }
   def @@VScale            { @Code "@VScale"            }
   def @@VShift            { @Code "@VShift"            }
   def @@VSpan             { @Code "@VSpan"             }
   def @@Wide              { @Code "@Wide"              }
   def @@Yield             { @Code "@Yield"             }
   def @@YUnit             { @Code "@YUnit"             }
   def @@ZUnit             { @Code "@ZUnit"             }


   ###################################################
   #                                                 #
   #  Miscellaneous, mostly graphical definitions.   #
   #                                                 #
   ###################################################


   def @TeX
   { @OneCol { T &0.4fo {-0.2f @VShift E} &0.45fo X }
   }

   export sp sb
   def @Equation
      body x
   @Begin

      def sp left x right y { @OneRow { | "-2p" @Font y ^/0.5fk x } }
      def sb left x right y { @OneRow { x ^/0.5fk | "-2p" @Font y } }

      Slope @Font x

   @End @Equation

   def @Super
      left x
      right y
   { @OneRow { | -2p @Font y ^/0.5fk x }
   }

   def @NineSquare
      right x
   {
      def @Three { x |0.2i x |0.2i x }

      @Three /0.2i @Three /0.2i @Three
   }

   def @Leaders
   { ..   @Leaders
   }

   def @HLine
   {
      @BackEnd @Case {
      PostScript @Yield { {0 0 moveto xsize 0 lineto stroke} @Graphic {} }
             PDF @Yield { {0 0 m __xsize 0 l s} @Graphic {} }
      }
#	{ 0 0 moveto xsize 0 lineto stroke } @Graphic {}
   }

   def @VDashLine
      right length
   {
      length @High {
         @BackEnd @Case {
         PostScript @Yield { { 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke } @Graphic {} }

# VT: double quotes required:
                PDF @Yield { { "__pt 3 0 d    0 0 m   0 __ysize l   s" } @Graphic {} }
         }
#	{ 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke } @Graphic {}
      }
   }

   def @LBox
      right offset
   {  @HContract @VContract
      {
        {  //0.2c
           0.6c @High 1.2c @Wide

           @BackEnd @Case {
              PostScript @Yield {
                 { 0 0 moveto xsize 0 lineto
                   xsize ysize lineto 0 ysize lineto closepath
                   gsave 0.9 setgray fill grestore stroke } @Graphic {}
              }
              PDF @Yield {
                 { 0 0 m   __xsize 0 l
                   __xsize __ysize l   0 __ysize l   h
                   q 0.9 g f Q s } @Graphic {}
              }
           }

#           { 0 0 moveto xsize 0 lineto
#	     xsize ysize lineto 0 ysize lineto closepath
#	     gsave 0.9 setgray fill grestore stroke }
#           @Graphic {}
        }
        ||offset @VDashLine 1c
      }
   }

   def @Arrow
      right length
   {  @OneCol @OneRow
      {
	   30d @Rotate {0.12c @Wide @HLine}
	   //
	   length @Wide @HLine
	   //
	   "-30d" @Rotate {0.12c @Wide @HLine}
      }
   }

   def @DoubleArrow
      right length
   {  @OneCol @OneRow
      { 
         & 180d @Rotate @Arrow length
         |0io @Arrow length
      }
   }

   def @Put
     left coord
     right x
   { @OneCol @OneRow
     { coord / | @OneCol @OneRow x
     }
   }
   
   macro @At { //0io }


   ###################################################
   #                                                 #
   #  Interpolated example documents.                #
   #                                                 #
   ###################################################

   def @LittleEndRunPlace { @Galley }
   def @LittleEndRun
      force into { @LittleEndRunPlace&&preceding }
   {}

   def @LittleTextPlace { @Galley }
   def @LittleText into { @LittleTextPlace&&preceding }
      right x
   { x
   }

   def @LittleFootPlace { @Galley }
   def @LittleFootNote into { @LittleFootPlace&&following }
      right x
   { x
   }

   def @LittlePageColumn
      right x
   {
        9px @Break 8p @Font
        2.8c @Wide x
   }

   def @LittlePage
      right x
   {
      @HContract @VContract {
         @BackEnd @Case {
            PostScript @Yield {
               { 0 0 moveto xsize 0 lineto xsize ysize lineto
                 0 ysize lineto closepath stroke } @Graphic
               {  //0.3c ||0.3c
                  9px @Break 8p @Font
                  2.8c @Wide 3.8c @High x
                  ||0.3c //0.3c
               }
            }
            PDF        @Yield {
               { 0 0 m __xsize 0 l __xsize __ysize l
                 0 __ysize l h s } @Graphic
               {  //0.3c ||0.3c
                  9px @Break 8p @Font
                  2.8c @Wide 3.8c @High x
                  ||0.3c //0.3c
               }
            }
         }
#        { 0 0 moveto xsize 0 lineto xsize ysize lineto
#    	  0 ysize lineto closepath stroke } @Graphic
#        {  //0.3c ||0.3c
#           9px @Break 8p @Font
#           2.8c @Wide 3.8c @High x
#           ||0.3c //0.3c
#        }
      }
   }

   def @LittleFootSect
   {  1c @Wide @HLine
      //0.3v @LittleFootPlace ||0.5c
   }

   def @LittlePageList
     right @PageNum
   {
      @LittlePage { # |0.5rt @PageNum //0.8v
		//0.3v @LittleTextPlace
		//1rt @LittleFootSect
	     }
      //
      @LittlePageList @Next @PageNum
   }

   def @LittleDocument
   {  @LittlePage
      {  @LittleTextPlace
         //1rt @LittleFootSect
      }
      // @LittlePageList 2
      // @LittleEndRunPlace
   }
		
   def @ShowMarks
      named linewidth  {
      	@BackEnd @Case {
      	  PostScript @Yield { 0.015 cm }
      	  PDF        @Yield { __mul(0.015, __cm) }
      	}
      }
      named linestyle  { dashed   }
      named dashlength {
      	@BackEnd @Case {
      	  PostScript @Yield { 0.15 cm }
      	  PDF        @Yield { __mul(0.15, __cm) }
      	}
      }
      named paint      { lightgrey}
      right x
   {
      @HContract @VContract @Fig
      {   @Box margin { 0c } linewidth { linewidth } paint { paint }
	  {   @Figure
		 shape {
		   @BackEnd @Case {
		     PostScript @Yield {
		       -0.3 cm ymark
			   {xsize ymark} ++ {0.3 cm 0}  []
			   xmark -0.3 cm
			   {xmark ysize} ++ {0 0.3 cm}
		     }
		     PDF @Yield { ""	#	VT: PDF currently has no output
		     }
		   }
		 }
		 linewidth { linewidth }
		 linestyle { linestyle }
		 dashlength { dashlength }
	      x
	  }

      }
   }

   def @ShowVMark
      named linewidth  { 0.015 cm }
      named linestyle  { dashed   }
      named dashlength { 0.15 cm  }
      named paint      { light    }
      right x
   {
      @Fig
      {   
	 @Figure
		 shape {
		   @BackEnd @Case {
		     PostScript @Yield {
			   xmark -0.3 cm
			   {xmark ysize} ++ {0 0.3 cm}
		     }
		     PDF @Yield { ""	#	VT: PDF currently has no output
		     }
		   }
		 }
		 linewidth { linewidth }
		 linestyle { linestyle }
		 dashlength { dashlength }
	 x
      }
   }

   def @ShowHMark
      named linewidth  { 0.015 cm }
      named linestyle  { dashed   }
      named dashlength { 0.15 cm  }
      named paint      { light    }
      right x
   {
      @Fig
      {   
	 @Figure
		 shape {
		   @BackEnd @Case {
		     PostScript @Yield {
			 -0.3 cm ymark
			 {xsize ymark} ++ {0.3 cm 0}
		     }
		     PDF @Yield { ""	#	VT: PDF currently has no output
		     }
		   }
		 }
		 linewidth { linewidth }
		 linestyle { linestyle }
		 dashlength { dashlength }
	 x
      }
   }

   def @Strange
       named @Format right @Val { [@Val] }
       right x
   {   @Format x
   }

   def @TightBox right x
   {
      @BackEnd @Case {
         PostScript @Yield {
            "0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke"
            @Graphic x
         }
         PDF @Yield {
            "0 0 m __xsize 0 l __xsize __ysize l 0 __ysize l h s"
            @Graphic x
         }
      }
   }

   def @GreyBox right x
   {
      @BackEnd @Case {
         PostScript @Yield {
            "0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill"
            @Graphic x
         }
         PDF @Yield {
            "0 0 m __xsize 0 l __xsize __ysize l 0 __ysize l h 0.8 g f"
            @Graphic x
         }
      }
   }
