
######################################################
#                                                    #
#  Lout setup file for producing the user manual.    #
#                                                    #
#  Jeffrey H. Kingston                               #
#  20 June 1991                                      #
#  22 December 1991                                  #
#                                                    #
######################################################

@SysInclude { ft  }
@SysInclude { dl  }
@SysInclude { eq  }
@SysInclude { fig }
@SysInclude { tab }


   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 @@Begin             { @Code "@Begin"             }
   def @@Break             { @Code "@Break"             }
   def @@Case              { @Code "@Case"              }
   def @@Database          { @Code "@Database"          }
   def @@End               { @Code "@End"               }
   def @@Font              { @Code "@Font"              }
   def @@Galley            { @Code "@Galley"            }
   def @@Graphic           { @Code "@Graphic"           }
   def @@HAdjust           { @Code "@HAdjust"           }
   def @@HContract         { @Code "@HContract"         }
   def @@HExpand           { @Code "@HExpand"           }
   def @@HScale            { @Code "@HScale"            }
   def @@High              { @Code "@High"              }
   def @@Include           { @Code "@Include"           }
   def @@IncludeGraphic    { @Code "@IncludeGraphic"    }
   def @@Key               { @Code "@Key"               }
   def @@LClos             { @Code "@LClos"             }
   def @@LEnv              { @Code "@LEnv"              }
   def @@LInput            { @Code "@LInput"            }
   def @@LVis              { @Code "@LVis"              }
   def @@Moment            { @Code "@Moment"            }
   def @@Next              { @Code "@Next"              }
   def @@Null              { @Code "@Null"              }
   def @@OneCol            { @Code "@OneCol"            }
   def @@OneRow            { @Code "@OneRow"            }
   def @@Open              { @Code "@Open"              }
   def @@PAdjust           { @Code "@PAdjust"           }
   def @@PrependGraphic    { @Code "@PrependGraphic"    }
   def @@Rotate            { @Code "@Rotate"            }
   def @@Scale             { @Code "@Scale"             }
   def @@Space             { @Code "@Space"             }
   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 @@Use               { @Code "@Use"               }
   def @@VAdjust           { @Code "@VAdjust"           }
   def @@VContract         { @Code "@VContract"         }
   def @@VExpand           { @Code "@VExpand"           }
   def @@VScale            { @Code "@VScale"            }
   def @@Yield             { @Code "@Yield"             }
   def @@Wide              { @Code "@Wide"              }


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

   def @TeX { T{ /0.2fo E}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
   {
	{ 0 0 moveto xsize 0 lineto stroke } @Graphic {}
   }

   def @VDashLine
      right length
   {
      length @High {
	{ 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
           { 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 {
        { 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  { 0.015 cm }
      named linestyle  { dashed   }
      named dashlength { 0.15 cm  }
      named paint      { light    }
      right x
   {
      @HContract @VContract @Fig
      {   @Box margin { 0c } linewidth { linewidth } paint { paint }
	  {   @Figure
		 shape { -0.3 cm ymark
			 {xsize ymark} ++ {0.3 cm 0}  []
			 xmark -0.3 cm
			 {xmark ysize} ++ {0 0.3 cm}
		       }
		 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 {
			 xmark -0.3 cm
			 {xmark ysize} ++ {0 0.3 cm}
		       }
		 linewidth { linewidth }
		 linestyle { linestyle }
		 dashlength { dashlength }
	 x
      }
   }

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

   def @Box right x
   {
     "0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke"
     @Graphic x
   }

   def @GreyBox right x
   {
     "0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill"
     @Graphic x
   }

@Use { @DocumentLayout
  @MakeIndex        { Yes                  }
  @TableOfContents  { Yes                  }
  @AppendixGap      { 1.10b                }
  @BookTitleFormat  { {Bold 2.0f} @Font {//2.0f @Title //0.5f} }
}

@SysDatabase @Reference { loutrefs }
