home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / APPS / lout2.lzh / LOUT2 / LIB / include / dl < prev    next >
Text File  |  1994-02-26  |  71KB  |  2,127 lines

  1.  
  2. ###############################################################################
  3. #                                                                             #
  4. #  Lout @DocumentLayout package (Version 2.0)                                 #
  5. #                                                                             #
  6. #  Version 1.0 by Jeffrey H. Kingston, 17 July 1991.                          #
  7. #  Version 2.0 by Jeffrey H. Kingston, 22 December 1992.                      #
  8. #                                                                             #
  9. #  This Lout package contains the basic definitions for documents, such as    #
  10. #  simple documents, technical reports, and books.  See "A Beginners' Guide   #
  11. #  to Lout" for user information.                                             #
  12. #                                                                             #
  13. #  Modified by Jeffrey H. Kingston, 22 June 1993, to (a) add an option to     #
  14. #  turn off running titles; (b) fix a bug which was allowing an odd number    #
  15. #  of introductory pages to be generated; (c) bring English-language          #
  16. #  specific parts to the surface so that they can be changed easily; (d)      #
  17. #  fix a bug with @BeginFigures and @BeginTables.                             #
  18. #                                                                             #
  19. ###############################################################################
  20.  
  21. export
  22.     @InitialFont @InitialBreak @Hyphenate
  23.     @MajorHeadingFont @HeadingFont @MinorHeadingFont @ParaGap @ParaIndent
  24.     @DispGap @DispIndent @DefaultIndent @WideIndent @VeryWideIndent
  25.  
  26.     @Roman @UCRoman @Alpha @UCAlpha @Months @ShortMonths
  27.     @WeekDays @ShortWeekDays
  28.  
  29.     "``" "''" "--" "---" @Bullet @ParSym @SectSym @Dagger @DaggerDbl @CDot
  30.     @Sterling @Yen @Florin @Star @Degree @Minute @Second @Multiply @Divide
  31.     @Lozenge @Register @CopyRight @TradeMark
  32.  
  33.     @R @I @B @S @MajorHeading @Heading @MinorHeading "^" "&-" @Date
  34.  
  35.     associate associates declination obligatory philanthropic present presents
  36.     project projects reciprocity recognizance reformation retribution table
  37.  
  38.     @Runner @PageMark @PageOf @NumberOf
  39.  
  40.     @PP @LP @DP @NP @CNP
  41.     
  42.     @BAD     @BeginAlignedDisplays
  43.     @EAD     @EndAlignedDisplays
  44.     @BND     @BeginNumberedDisplays
  45.     @END     @EndNumberedDisplays
  46.  
  47.     @D       @Display
  48.     @LD      @LeftDisplay
  49.     @ID      @IndentedDisplay
  50.     @CD      @CentredDisplay @CenteredDisplay
  51.     @AD      @AlignedDisplay
  52.     @LAD     @LeftAlignedDisplay
  53.     @IAD     @IndentedAlignedDisplay
  54.     @CAD     @CentredAlignedDisplay @CenteredAlignedDisplay
  55.     @ND      @NumberedDisplay
  56.     @LND     @LeftNumberedDisplay
  57.     @IND     @IndentedNumberedDisplay
  58.     @CND     @CentredNumberedDisplay @CenteredNumberedDisplay
  59.     @AND     @AlignedNumberedDisplay
  60.     @LAND    @LeftAlignedNumberedDisplay
  61.     @IAND    @IndentedAlignedNumberedDisplay
  62.     @CAND    @CentredAlignedNumberedDisplay @CenteredAlignedNumberedDisplay
  63.  
  64.     @RD      @RawDisplay
  65.     @RLD     @RawLeftDisplay
  66.     @RID     @RawIndentedDisplay
  67.     @RCD     @RawCentredDisplay @RawCenteredDisplay
  68.     @RAD     @RawAlignedDisplay
  69.     @RLAD    @RawLeftAlignedDisplay
  70.     @RIAD    @RawIndentedAlignedDisplay
  71.     @RCAD    @RawCentredAlignedDisplay @RawCenteredAlignedDisplay
  72.     @RND     @RawNumberedDisplay
  73.     @RLND    @RawLeftNumberedDisplay
  74.     @RIND    @RawIndentedNumberedDisplay
  75.     @RCND    @RawCentredNumberedDisplay @RawCenteredNumberedDisplay
  76.     @RAND    @RawAlignedNumberedDisplay
  77.     @RLAND   @RawLeftAlignedNumberedDisplay
  78.     @RIAND   @RawIndentedAlignedNumberedDisplay
  79.     @RCAND   @RawCentredAlignedNumberedDisplay
  80.              @RawCenteredAlignedNumberedDisplay
  81.     
  82.     @LI      @ListItem
  83.     @EL      @EndList
  84.  
  85.     @RLL     @RawLeftList
  86.     @RCL     @RawCentredList @RawCenteredList
  87.  
  88.     @LL         @LeftList
  89.     @CL         @CentredList @CenteredList
  90.  
  91.     @RIL     @RawIndentedList
  92.     @RNL     @RawNumberedList
  93.     @RPNL    @RawParenNumberedList
  94.     @RRL     @RawRomanList
  95.     @RPRL    @RawParenRomanList
  96.     @RUCRL   @RawUCRomanList
  97.     @RPUCRL  @RawParenUCRomanList
  98.     @RAL     @RawAlphaList
  99.     @RPAL    @RawParenAlphaList
  100.     @RUCAL   @RawUCAlphaList
  101.     @RPUCAL  @RawParenUCAlphaList
  102.     @RBL     @RawBulletList
  103.     @RSL     @RawStarList
  104.     @RDL     @RawDashList
  105.  
  106.     @IL      @IndentedList
  107.     @NL      @NumberedList 
  108.     @PNL     @ParenNumberedList
  109.     @RL      @RomanList
  110.     @PRL     @ParenRomanList
  111.     @UCRL    @UCRomanList
  112.     @PUCRL   @ParenUCRomanList
  113.     @AL      @AlphaList
  114.     @PAL     @ParenAlphaList
  115.     @UCAL    @UCAlphaList
  116.     @PUCAL   @ParenUCAlphaList
  117.     @BL      @BulletList 
  118.     @SL      @StarList 
  119.     @DL      @DashList
  120.  
  121.     @TI      @TagItem
  122.     @RTL     @RawTaggedList
  123.     @RWTL    @RawWideTaggedList
  124.     @RVWTL   @RawVeryWideTaggedList
  125.  
  126.     @TL         @TaggedList
  127.     @WTL     @WideTaggedList
  128.     @VWTL    @VeryWideTaggedList
  129.  
  130.     @Document @Doc @Report @Book            # root galley objects
  131.     @Abstract @Preface @Introduction            # outer level galleys
  132.     @Chapter @Section @Appendix @Text @ColText
  133.     @Figure @EndFigures @Table @EndTables        # inner level galleys
  134.     @Reference @RefStyle @RefPrint
  135.     @ReferenceSection @Ref @ChapRefSection @ChapRef
  136.     @IndexSection @Index @SubIndex @SubSubIndex @RawIndex
  137.     @RawSubIndex @RawSubSubIndex @IndexBlanks
  138.     @ContentsSection
  139.  
  140.  
  141.  
  142. def @DocumentLayout
  143.     named @InitialFont       {  Times Base 12p } # initial font
  144.     named @InitialBreak      {  adjust 1.20fx  } # initial break
  145.     named @Hyphenate         {  Yes            } # Want hyphenation? Yes or No
  146.     named @MajorHeadingFont  {  Bold 2.0f      } # font for major headings
  147.     named @HeadingFont       {  Bold           } # font for ordinary headings
  148.     named @MinorHeadingFont  {  Bold           } # font for minor headings
  149.     named @BookCoverFont     {  Helvetica Base } # font for book cover
  150.  
  151.     named @ParaGap           {  1.30vx         } # gap between paragraphs
  152.     named @ParaIndent        {  2.00f          } # paragraph first-line indent
  153.  
  154.     named @DispGap           {  1.00v          } # gap above and below displays
  155.     named @DispIndent        {  2.00f          } # @IndentedDisplay indent
  156.     named @DefaultIndent     {  0.5rt          } # @Display indent
  157.     named @WideIndent        {  4.00f          } # @WideTaggedList indent
  158.     named @VeryWideIndent    {  8.00f          } # @VeryWideTaggedList indent
  159.  
  160.     named @PageWidth         { 21.00c          } # width of page
  161.     named @PageHeight        { 29.70c          } # height of page
  162.     named @PageMargin        {  2.50c          } # size of all four margins
  163.     named @Columns           {  Single         } # Single, Double, Multi
  164.     named @DoubleColWidth    {  7.50c          } # column width used by Double
  165.     named @MultiColWidth     {  4.67c          } # column width used by Multi
  166.     named @ColGap            {  1.00c          } # gap between columns
  167.     named @TopGap            {  0.75c          } # gap between figures
  168.     named @MidGap            {  0.75c          } # gap above and below body text
  169.  
  170.     named @FootNoteFont      {  0.80f          } # font for footnotes
  171.     named @FootNoteBreak     {  1.20fx         } # break for footnotes
  172.     named @FootLen           {  2.00c          } # footnote line and indent size
  173.     named @ColFootLen        {  1.20c          } # @FootLen when Double, Multi
  174.     named @FootGap           {  0.20c          } # gap between footnotes
  175.  
  176.     named @MakeIndex         {  No             } # Want index? Yes or No
  177.     named @IndexColumns      {  Double         } # Single, Double, Multi
  178.  
  179.     named @TableOfContents   {  No             } # Want contents? Yes or No
  180.     named @MajorContentsGap  {  1.30v          } # gap above major entry
  181.     named @ContentsGap       {  1.00v          } # gap above ordinary entry
  182.  
  183.     named @ChapterNumbers    {  Yes            } # Yes or No            
  184.     named @SectionNumbers    {  Yes            } # Yes or No            
  185.     named @SubSectionNumbers {  Yes            } # Yes or No            
  186.     named @AppendixNumbers   {  Yes            } # Yes or No            
  187.     named @SubAppendixNumbers{  Yes            } # Yes or No            
  188.     named @ChapterGap        {  1.10b          } # gap before each chapter
  189.     named @SectionGap        {  2.00v          } # gap before each section
  190.     named @SubSectionGap     {  1.50v          } # gap before each subsection
  191.     named @AppendixGap       {  2.00v          } # gap before each appendix
  192.     named @SubAppendixGap    {  2.00v          } # gap before each subappendix
  193.  
  194.     named @PageNumbers       {  Yes            } # Want page numbers? Yes or No
  195.     named @FirstPageNumber   {  1              } # Number of first page 
  196.     named @RunningTitles     {  Yes            } # Want running titles? Yes/No
  197.     named @PageOneTopFormat  right @PageNum { @Null               }
  198.     named @PageOneFootFormat right @PageNum { @Null               }
  199.     named @PageTopFormat     right @PageNum { |0.5rt - @PageNum - }
  200.     named @PageFootFormat    right @PageNum { @Null               }
  201.     named @BookTitleFormat   right @Title   { Bold @Font @Title   } 
  202.  
  203. @Begin
  204.  
  205.     ###########################################################################
  206.     #                                                                         #
  207.     #  Complete list of English-language-specific output in this package.     #
  208.     #  To translate to another language, change these but also change the     #
  209.     #  "standard" database in $(LIBDIR)/data/standard.ld (don't forget to     #
  210.     #  delete standard.li if you change standard.ld).                         #
  211.     #                                                                         #
  212.     ###########################################################################
  213.  
  214.     def @ContentsWord        { Contents    }
  215.     def @ReferencesWord        { References    }
  216.     def @FigureWord        { Figure    }
  217.     def @TableWord        { Table        }
  218.     def @AbstractWord        { ABSTRACT    }
  219.     def @PrefaceWord        { Preface    }
  220.     def @IntroductionWord    { Introduction    }
  221.     def @ChapterWord        { Chapter    }
  222.     def @AppendixWord        { Appendix    }
  223.     def @IndexWord        { Index        }
  224.  
  225.  
  226.     ###########################################################################
  227.     #                                                                         #
  228.     #  @Protect x                                                             #
  229.     #                                                                         #
  230.     #  Like @CNP, this reserves space on the current page or else makes sure  #
  231.     #  x appears on the following page.  Lookahead is proportional to font    #
  232.     #  size.                                                                  #
  233.     #                                                                         #
  234.     ###########################################################################
  235.  
  236.     def @Protect right x { 3.0f @High //0io // x }
  237.  
  238.  
  239.     ###########################################################################
  240.     #                                                                         #
  241.     #   @HLine                                                                #
  242.     #                                                                         #
  243.     #   Draws a horizontal line to fill available space.                      #
  244.     #                                                                         #
  245.     ###########################################################################
  246.  
  247.     def @HLine { {0 0 moveto xsize 0 lineto stroke} @Graphic {} }
  248.  
  249.  
  250.     ###########################################################################
  251.     #                                                                         #
  252.     #  Symbols stored in the "standard" database:                             #
  253.     #                                                                         #
  254.     #    @Roman           lower case Roman numerals i, ii, ... , c            #
  255.     #    @UCRoman         upper case Roman numerals I, II, ... , C            #
  256.     #    @Alpha           lower case Roman alphabet a, b,  ... , z            #
  257.     #    @UCAlpha         upper case Roman alphabet A, B,  ... , Z            #
  258.     #    @Months          months of the year:  January, ... , December        #
  259.     #    @ShortMonths     months of the year, abbreviated:  Jan, ... , Dec    #
  260.     #    @WeekDays        days of the week:  Sunday, ... , Saturday           #
  261.     #    @ShortWeekDays   days of the week, abbreviated:  Sun, ... , Sat      #
  262.     #                                                                         #
  263.     ###########################################################################
  264.  
  265.     def @Roman        left @Tag right @Val { @Val }
  266.     def @UCRoman    left @Tag right @Val { @Val }
  267.     def @Alpha        left @Tag right @Val { @Val }
  268.     def @UCAlpha    left @Tag right @Val { @Val }
  269.     def @Months        left @Tag right @Val { @Val }
  270.     def @ShortMonths    left @Tag right @Val { @Val }
  271.     def @WeekDays    left @Tag right @Val { @Val }
  272.     def @ShortWeekDays    left @Tag right @Val { @Val }
  273.  
  274.     @SysDatabase @Roman @UCRoman @Alpha @UCAlpha @Months
  275.          @ShortMonths @WeekDays @ShortWeekDays
  276.     { standard  }
  277.  
  278.  
  279.     ###########################################################################
  280.     #                                                                         #
  281.     #  Selected characters from Adobe's fonts.                                #
  282.     #                                                                         #
  283.     ###########################################################################
  284.  
  285.     def "``"        { @Char "quotedblleft"                 }
  286.     def "''"        { @Char "quotedblright"                }
  287.     def "--"        { @Char "endash"                 }
  288.     def "---"        { @Char "emdash"                 }
  289.     def @Bullet        { @Char "bullet"                }
  290.     def @ParSym        { @Char "paragraph"                }
  291.     def @SectSym    { @Char "section"                }
  292.     def @Dagger        { @Char "dagger"                }
  293.     def @DaggerDbl    { @Char "daggerdbl"                }
  294.     def @CDot        { @Char "periodcentered"            }
  295.     def @Sterling    { @Char "sterling"                }
  296.     def @Yen        { @Char "yen"                    }
  297.     def @Florin        { @Char "florin"                }
  298.     def @Star        { { Symbol Base } @Font @Char "asteriskmath"    }
  299.     def @Degree        { { Symbol Base } @Font @Char "degree"        }
  300.     def @Minute        { { Symbol Base } @Font @Char "minute"        }
  301.     def @Second        { { Symbol Base } @Font @Char "second"        }
  302.     def @Multiply    { { Symbol Base } @Font @Char "multiply"    }
  303.     def @Divide        { { Symbol Base } @Font @Char "divide"        }
  304.     def @Lozenge    { { Symbol Base } @Font @Char "lozenge"        }
  305.     def @Register    { { Symbol Base } @Font @Char "registersans"    }
  306.     def @CopyRight    { { Symbol Base } @Font @Char "copyrightsans"    }
  307.     def @TradeMark    { { Symbol Base } @Font @Char "trademarksans"    }
  308.  
  309.  
  310.     ###########################################################################
  311.     #                                                                         #
  312.     #  Miscellaneous.                                                         #
  313.     #                                                                         #
  314.     ###########################################################################
  315.  
  316.     def @R             right x { Base @Font x                 }
  317.     def @I             right x { Slope @Font x                 }
  318.     def @B             right x { Bold @Font x                 }
  319.     def @S             right x { @OneRow { //0.04fo 0.8f @Font x }     }
  320.     def "^"               { {} ^& {}                 }
  321.     def "&-"  left x   right y { x &0ch y                 }
  322.     def @MajorHeading  right x { ragged @Break @MajorHeadingFont @Font x }
  323.     def @Heading       right x { ragged @Break @HeadingFont      @Font x }
  324.     def @MinorHeading  right x { ragged @Break @MinorHeadingFont @Font x }
  325.     def @Date { @Moment&&now @Open {@Day {@Months&&@Month}, @Century{@Year}} }
  326.  
  327.  
  328.     ###########################################################################
  329.     #                                                                         #
  330.     #  Exception list for hyphenation.                                        #
  331.     #                                                                         #
  332.     ###########################################################################
  333.  
  334.     def associate     { "as" &- "so" &- "ciate"                }
  335.     def associates    { "as" &- "so" &- "ciates"            }
  336.     def declination   { "dec" &- "li" &- "na" &- "tion"            }
  337.     def obligatory    { "oblig" &- "a" &- "tory"            }
  338.     def philanthropic { "phil" &- "an" &- "thropic"            }
  339.     def present       { "present"                    }
  340.     def presents      { "presents"                    }
  341.     def project       { "project"                    }
  342.     def projects      { "projects"                    }
  343.     def reciprocity   { "reci" &- "procity"                }
  344.     def recognizance  { "re" &- "cog" &- "ni" &- "zance"        }
  345.     def reformation   { "ref" &- "or" &- "ma" &- "tion"            }
  346.     def retribution   { "ret" &- "ri" &- "bu" &- "tion"            }
  347.     def table         { "ta" &- "ble"                    }
  348.  
  349.     def Associate     { "As" &- "so" &- "ciate"                }
  350.     def Associates    { "As" &- "so" &- "ciates"            }
  351.     def Declination   { "Dec" &- "li" &- "na" &- "tion"            }
  352.     def Obligatory    { "Oblig" &- "a" &- "tory"            }
  353.     def Philanthropic { "Phil" &- "an" &- "thropic"            }
  354.     def Present       { "Present"                    }
  355.     def Presents      { "Presents"                    }
  356.     def Project       { "Project"                    }
  357.     def Projects      { "Projects"                    }
  358.     def Reciprocity   { "Reci" &- "procity"                }
  359.     def Recognizance  { "Re" &- "cog" &- "ni" &- "zance"        }
  360.     def Reformation   { "Ref" &- "or" &- "ma" &- "tion"            }
  361.     def Retribution   { "Ret" &- "ri" &- "bu" &- "tion"            }
  362.     def Table         { "Ta" &- "ble"                    }
  363.  
  364.  
  365.     ###########################################################################
  366.     #                                                                         #
  367.     #  Page and item markers.   @Runner is used only by books.                #
  368.     #                                                                         #
  369.     ###########################################################################
  370.  
  371.     export @Tag
  372.     def @PageMarker
  373.     right @Tag
  374.     {
  375.     @Null
  376.     }
  377.  
  378.     def @PageMark
  379.     right x
  380.     {
  381.     @PageMarker&&preceding @Tagged x
  382.     }
  383.  
  384.     def @PageOf
  385.     right x
  386.     {
  387.     @PageMarker&&x @Open { @Tag }
  388.     }
  389.  
  390.     export @Tag
  391.     def @NumberMarker
  392.     right @Tag
  393.     {
  394.     @Null
  395.     }
  396.  
  397.     def @NumberOf
  398.     right x
  399.     {
  400.     @NumberMarker&&x @Open { @Tag }
  401.     }
  402.  
  403.     export @TopOdd @TopEven @FootOdd @FootEven
  404.     def @Runner
  405.     named @TopOdd    right @PageNum { @Null }
  406.     named @TopEven    right @PageNum { @Null }
  407.     named @FootOdd    right @PageNum { @Null }
  408.     named @FootEven    right @PageNum { @Null }
  409.     named @Tag {}
  410.     { @Null
  411.     }
  412.  
  413.  
  414.     ###########################################################################
  415.     #                                                                         #
  416.     #   @Hyph x                                                               #
  417.     #                                                                         #
  418.     #   Return "hyphen" if x is "Yes" or "yes", else "nohyphen".              #
  419.     #                                                                         #
  420.     ###########################################################################
  421.  
  422.     def @Hyph right x
  423.     {
  424.     x @Case {
  425.         {Yes yes} @Yield "hyphen"
  426.         else      @Yield "nohyphen"
  427.     }
  428.     }
  429.  
  430.  
  431.     ###########################################################################
  432.     #                                                                         #
  433.     #  x @OrElse y                                                            #
  434.     #                                                                         #
  435.     #  This returns x unless its value is "dft", in which case it returns y.  #
  436.     #  Useful for defaulting the value of one parameter to another.           #
  437.     #                                                                         #
  438.     ###########################################################################
  439.  
  440.     def @OrElse
  441.     left x
  442.     right y
  443.     {
  444.     x @Case {
  445.         dft  @Yield y
  446.         else @Yield x
  447.     }
  448.     }
  449.  
  450.  
  451.     ###########################################################################
  452.     #                                                                         #
  453.     #  Paragraphs.                                                            #
  454.     #                                                                         #
  455.     ###########################################################################
  456.  
  457.     macro @PP    { //@ParaGap @ParaIndent @Wide &0i }
  458.     macro @LP    { //@ParaGap               }
  459.     macro @DP    { //@DispGap               }
  460.     macro @NP    { //1.1b               }
  461.     macro @CNP    { // 3.2v @High //0io //           }
  462.  
  463.  
  464.     ###########################################################################
  465.     #                                                                         #
  466.     #  Beginning and ending of aligned displays.                              #
  467.     #                                                                         #
  468.     ###########################################################################
  469.  
  470.     def @APlace            { @Galley }
  471.     def @EndAlignedPlace   { @Galley }
  472.     def @AlignedPlace      { @Galley }
  473.  
  474.     def @BAligned into { @APlace&&preceding }
  475.     {
  476.     def @AlignedList { @AlignedPlace /1.1b @AlignedList }
  477.  
  478.     //1.1b @AlignedList
  479.     //     @EndAlignedPlace
  480.     }
  481.  
  482.     macro @BAD { // @APlace | @BAligned }
  483.     def   @EAD force into { @EndAlignedPlace&&preceding } {}
  484.  
  485.     macro @BeginAlignedDisplays { @BAD }
  486.     macro @EndAlignedDisplays   { @EAD }
  487.  
  488.  
  489.     ###########################################################################
  490.     #                                                                         #
  491.     #  Beginning and ending of numbered displays.                             #
  492.     #                                                                         #
  493.     ###########################################################################
  494.  
  495.     def @BeginNumberedPlace { @Galley }
  496.     def @EndNumberedPlace   { @Galley }
  497.     def @NextNumberPlace    { @Galley }
  498.  
  499.     def @NNumber into { @NextNumberPlace&&following } {}
  500.     macro @NN { @NNumber @BeginNumberedPlace }
  501.  
  502.     def @BNumbered into { @BeginNumberedPlace&&preceding }
  503.     named style right tag { (tag) }
  504.     named start { 1 }
  505.     {
  506.     def @NList right num
  507.     {
  508.         |1rt style num & @NumberMarker num & @NextNumberPlace
  509.         // @NList @Next num
  510.     }
  511.  
  512.     //  @NList start
  513.     //  @EndNumberedPlace
  514.     }
  515.  
  516.     macro @BND { // @BeginNumberedPlace // @BNumbered }
  517.     def   @END force into { @EndNumberedPlace&&preceding } {}
  518.     
  519.     macro @BeginNumberedDisplays { @BND }
  520.     macro @EndNumberedDisplays   { @END }
  521.  
  522.  
  523.     ###########################################################################
  524.     #                                                                         #
  525.     #  Galleys which carry displays to their places.                          #
  526.     #                                                                         #
  527.     ###########################################################################
  528.  
  529.     def @DispPlace { @Galley }
  530.  
  531.     def @Disp into { @DispPlace&&preceding }
  532.     right x
  533.     {
  534.     @OneRow x
  535.     }
  536.  
  537.     def @NDisp into { @DispPlace&&preceding }
  538.     named @Tag {}
  539.     right x
  540.     {
  541.     @OneRow {
  542.        @NumberMarker&&following @Tagged @Tag
  543.        @PageMarker&&preceding @Tagged @Tag
  544.        ^//
  545.        @OneRow x
  546.     }
  547.     }
  548.  
  549.     def @ADisp into { @AlignedPlace&&preceding }
  550.     right x
  551.     {
  552.     @OneRow x
  553.     }
  554.  
  555.     def @ANDisp into { @AlignedPlace&&preceding }
  556.     named @Tag {}
  557.     right x
  558.     {
  559.     @OneRow {
  560.        @NumberMarker&&following @Tagged @Tag
  561.        @PageMarker&&preceding @Tagged @Tag
  562.        ^/
  563.        @OneRow x
  564.     }
  565.     }
  566.  
  567.  
  568.     ###########################################################################
  569.     #                                                                         #
  570.     #  Displays and raw displays.                                             #
  571.     #                                                                         #
  572.     ###########################################################################
  573.  
  574.     macro @G  { |@DefaultIndent }
  575.     macro @LG { |               }
  576.     macro @IG { |@DispIndent    }
  577.     macro @CG { |0.5rt          }
  578.  
  579.     macro @D     { @DP @G   @DispPlace  |        @DP // @Disp   }
  580.     macro @LD    { @DP @LG  @DispPlace  |        @DP // @Disp   }
  581.     macro @ID    { @DP @IG  @DispPlace  |        @DP // @Disp   }
  582.     macro @CD    { @DP @CG  @DispPlace  |        @DP // @Disp   }
  583.  
  584.     macro @AD    { @DP @G   @APlace     |        @DP // @ADisp  }
  585.     macro @LAD   { @DP @LG  @APlace     |        @DP // @ADisp  }
  586.     macro @IAD   { @DP @IG  @APlace     |        @DP // @ADisp  }
  587.     macro @CAD   { @DP @CG  @APlace     |        @DP // @ADisp  }
  588.  
  589.     macro @ND    { @DP @G   @DispPlace  |1rt @NN @DP // @NDisp  }
  590.     macro @LND   { @DP @LG  @DispPlace  |1rt @NN @DP // @NDisp  }
  591.     macro @IND   { @DP @IG  @DispPlace  |1rt @NN @DP // @NDisp  }
  592.     macro @CND   { @DP @CG  @DispPlace  |1rt @NN @DP // @NDisp  }
  593.  
  594.     macro @AND   { @DP @G   @APlace     |1rt @NN @DP // @ANDisp }
  595.     macro @LAND  { @DP @LG  @APlace     |1rt @NN @DP // @ANDisp }
  596.     macro @IAND  { @DP @IG  @APlace     |1rt @NN @DP // @ANDisp }
  597.     macro @CAND  { @DP @CG  @APlace     |1rt @NN @DP // @ANDisp }
  598.  
  599.  
  600.     macro @RD    {     @G   @DispPlace  |               @Disp   }
  601.     macro @RLD   {     @LG  @DispPlace  |               @Disp   }
  602.     macro @RID   {     @IG  @DispPlace  |               @Disp   }
  603.     macro @RCD   {     @CG  @DispPlace  |               @Disp   }
  604.  
  605.     macro @RAD   {     @G   @APlace     |               @ADisp  }
  606.     macro @RLAD  {     @LG  @APlace     |               @ADisp  }
  607.     macro @RIAD  {     @IG  @APlace     |               @ADisp  }
  608.     macro @RCAD  {     @CG  @APlace     |               @ADisp  }
  609.  
  610.     macro @RND   {     @G   @DispPlace  |1rt @NN        @NDisp  }
  611.     macro @RLND  {     @LG  @DispPlace  |1rt @NN        @NDisp  }
  612.     macro @RIND  {     @IG  @DispPlace  |1rt @NN        @NDisp  }
  613.     macro @RCND  {     @CG  @DispPlace  |1rt @NN        @NDisp  }
  614.  
  615.     macro @RAND  {     @G   @APlace     |1rt @NN        @ANDisp }
  616.     macro @RLAND {     @LG  @APlace     |1rt @NN        @ANDisp }
  617.     macro @RIAND {     @IG  @APlace     |1rt @NN        @ANDisp }
  618.     macro @RCAND {     @CG  @APlace     |1rt @NN        @ANDisp }
  619.  
  620.  
  621.     macro @Display                            { @D     }
  622.     macro @LeftDisplay                        { @LD    }
  623.     macro @IndentedDisplay                    { @ID    }
  624.     macro @CentredDisplay                     { @CD    }
  625.     macro @CenteredDisplay                    { @CD    }
  626.  
  627.     macro @AlignedDisplay                     { @AD    }
  628.     macro @LeftAlignedDisplay                 { @LAD   }
  629.     macro @IndentedAlignedDisplay             { @IAD   }
  630.     macro @CentredAlignedDisplay              { @CAD   }
  631.     macro @CenteredAlignedDisplay             { @CAD   }
  632.  
  633.     macro @NumberedDisplay                    { @ND    }
  634.     macro @LeftNumberedDisplay                { @LND   }
  635.     macro @IndentedNumberedDisplay            { @IND   }
  636.     macro @CentredNumberedDisplay             { @CND   }
  637.     macro @CenteredNumberedDisplay            { @CND   }
  638.  
  639.     macro @AlignedNumberedDisplay             { @AND   }
  640.     macro @LeftAlignedNumberedDisplay         { @LAND  }
  641.     macro @IndentedAlignedNumberedDisplay     { @IAND  }
  642.     macro @CentredAlignedNumberedDisplay      { @CAND  }
  643.     macro @CenteredAlignedNumberedDisplay     { @CAND  }
  644.  
  645.  
  646.     macro @RawDisplay                         { @RD    }
  647.     macro @RawLeftDisplay                     { @RLD   }
  648.     macro @RawIndentedDisplay                 { @RID   }
  649.     macro @RawCentredDisplay                  { @RCD   }
  650.     macro @RawCenteredDisplay                 { @RCD   }
  651.  
  652.     macro @RawAlignedDisplay                  { @RAD   }
  653.     macro @RawLeftAlignedDisplay              { @RLAD  }
  654.     macro @RawIndentedAlignedDisplay          { @RIAD  }
  655.     macro @RawCentredAlignedDisplay           { @RCAD  }
  656.     macro @RawCenteredAlignedDisplay          { @RCAD  }
  657.  
  658.     macro @RawNumberedDisplay                 { @RND   }
  659.     macro @RawLeftNumberedDisplay             { @RLND  }
  660.     macro @RawIndentedNumberedDisplay         { @RIND  }
  661.     macro @RawCentredNumberedDisplay          { @RCND  }
  662.     macro @RawCenteredNumberedDisplay         { @RCND  }
  663.  
  664.     macro @RawAlignedNumberedDisplay          { @RAND  }
  665.     macro @RawLeftAlignedNumberedDisplay      { @RLAND }
  666.     macro @RawIndentedAlignedNumberedDisplay  { @RIAND }
  667.     macro @RawCentredAlignedNumberedDisplay   { @RCAND }
  668.     macro @RawCenteredAlignedNumberedDisplay  { @RCAND }
  669.  
  670.  
  671.     ###########################################################################
  672.     #                                                                         #
  673.     #  Lists and raw lists (except indented lists).                           #
  674.     #                                                                         #
  675.     ###########################################################################
  676.  
  677.     def   @ItemPlace { @Galley }
  678.     def   @ListItem into { @ItemPlace&&preceding } right x { x }
  679.     macro @LI { @ListItem }
  680.  
  681.     def   @EndListPlace { @Galley }
  682.     def   @EndList force into { @EndListPlace&&preceding } {}
  683.     macro @EL { @EndList }
  684.  
  685.     def @RLL
  686.     named indent { @DispIndent }
  687.     named gap    { @DispGap }
  688.     {
  689.     def @List { |indent @ItemPlace | //gap @List }
  690.  
  691.     @List // @EndListPlace
  692.     }
  693.  
  694.     def   @RCL    { @RLL indent { 0.5rt     } }
  695.     macro @LL    { @DP @RLL @DP    }
  696.     macro @CL    { @DP @RCL @DP    }
  697.  
  698.     macro @RawLeftList        { @RLL    }
  699.     macro @RawCentredList    { @RCL    }
  700.     macro @RawCenteredList    { @RCL    }
  701.     macro @LeftList        { @LL    }
  702.     macro @CentredList        { @CL    }
  703.     macro @CenteredList        { @CL    }
  704.  
  705.  
  706.     ###########################################################################
  707.     #                                                                         #
  708.     #  Indented lists and raw indented lists, tagged automatically.           #
  709.     #                                                                         #
  710.     ###########################################################################
  711.  
  712.     def @RawIndentedList
  713.        named style right tag    {               }
  714.        named indent        { @DispIndent    }
  715.        named gap        { @DispGap    }
  716.        named start        { 1        }
  717.     {
  718.     def @IList right num
  719.     {   indent @Wide {style num} | @ItemPlace |
  720.         //gap @IList @Next num
  721.     }
  722.  
  723.     @IList start // @EndListPlace
  724.     }
  725.  
  726.     def @RawNumberedList      { @RawIndentedList style { tag.               } }
  727.     def @RawParenNumberedList { @RawIndentedList style { (tag)               } }
  728.     def @RawRomanList          { @RawIndentedList style { {@Roman&&tag}.    } }
  729.     def @RawParenRomanList    { @RawIndentedList style { ({@Roman&&tag})   } }
  730.     def @RawUCRomanList          { @RawIndentedList style { {@UCRoman&&tag}.  } }
  731.     def @RawParenUCRomanList  { @RawIndentedList style { ({@UCRoman&&tag}) } }
  732.     def @RawAlphaList          { @RawIndentedList style { {@Alpha&&tag}.    } }
  733.     def @RawParenAlphaList    { @RawIndentedList style { ({@Alpha&&tag})   } }
  734.     def @RawUCAlphaList          { @RawIndentedList style { {@UCAlpha&&tag}.  } }
  735.     def @RawParenUCAlphaList  { @RawIndentedList style { ({@UCAlpha&&tag}) } }
  736.     def @RawBulletList          { @RawIndentedList style { @Bullet       } }
  737.     def @RawStarList          { @RawIndentedList style { @Star           } }
  738.     def @RawDashList          { @RawIndentedList style { --            } }
  739.  
  740.     macro @IndentedList          { @DP @RawIndentedList        @DP }
  741.     macro @NumberedList          { @DP @RawNumberedList        @DP }
  742.     macro @ParenNumberedList  { @DP @RawParenNumberedList    @DP }
  743.     macro @RomanList          { @DP @RawRomanList        @DP }
  744.     macro @ParenRomanList     { @DP @RawParenRomanList        @DP }
  745.     macro @UCRomanList          { @DP @RawUCRomanList        @DP }
  746.     macro @ParenUCRomanList   { @DP @RawParenUCRomanList    @DP }
  747.     macro @AlphaList          { @DP @RawAlphaList        @DP }
  748.     macro @ParenAlphaList     { @DP @RawParenAlphaList        @DP }
  749.     macro @UCAlphaList          { @DP @RawUCAlphaList        @DP }
  750.     macro @ParenUCAlphaList   { @DP @RawParenUCAlphaList    @DP }
  751.     macro @BulletList          { @DP @RawBulletList        @DP }
  752.     macro @StarList          { @DP @RawStarList        @DP }
  753.     macro @DashList          { @DP @RawDashList        @DP }
  754.  
  755.     macro @RIL        { @RawIndentedList    }
  756.     macro @RNL        { @RawNumberedList    }
  757.     macro @RPNL        { @RawParenNumberedList    }
  758.     macro @RRL        { @RawRomanList        }
  759.     macro @RPRL        { @RawParenRomanList    }
  760.     macro @RUCRL    { @RawUCRomanList    }
  761.     macro @RPUCRL    { @RawParenUCRomanList    }
  762.     macro @RAL        { @RawAlphaList        }
  763.     macro @RPAL        { @RawParenAlphaList    }
  764.     macro @RUCAL    { @RawUCAlphaList    }
  765.     macro @RPUCAL    { @RawParenUCAlphaList    }
  766.     macro @RBL        { @RawBulletList    }
  767.     macro @RSL        { @RawStarList        }
  768.     macro @RDL        { @RawDashList        }
  769.  
  770.     macro @IL        { @IndentedList        }
  771.     macro @NL        { @NumberedList        }
  772.     macro @PNL        { @ParenNumberedList    }
  773.     macro @RL        { @RomanList        }
  774.     macro @PRL        { @ParenRomanList    }
  775.     macro @UCRL        { @UCRomanList        }
  776.     macro @PUCRL    { @ParenUCRomanList    }
  777.     macro @AL        { @AlphaList        }
  778.     macro @PAL        { @ParenAlphaList    }
  779.     macro @UCAL        { @UCAlphaList        }
  780.     macro @PUCAL    { @ParenUCAlphaList    }
  781.     macro @BL        { @BulletList        }
  782.     macro @SL        { @StarList        }
  783.     macro @DL        { @DashList        }
  784.  
  785.  
  786.     ###########################################################################
  787.     #                                                                         #
  788.     #  Indented lists and raw indented lists, tagged by the author.           #
  789.     #                                                                         #
  790.     ###########################################################################
  791.  
  792.     def @TagPlace    { @Galley }
  793.  
  794.     def @TagItem into { @ItemPlace&&preceding }
  795.        left x
  796.        right y
  797.     { 
  798.        def senditem into { @TagPlace&&preceding } { x }
  799.  
  800.        senditem | y
  801.     }
  802.  
  803.     macro @TI { @TagItem }
  804.  
  805.     def @RawTaggedList
  806.     named style right tag { tag }
  807.     named indent { @DispIndent }
  808.     named gap    { @DispGap }
  809.     {
  810.     def @LList
  811.     {   indent @Wide {style @TagPlace} | @ItemPlace
  812.         //gap @LList
  813.     }
  814.  
  815.     @LList // @EndListPlace
  816.     }
  817.  
  818.     def @RawWideTaggedList    { @RawTaggedList indent { @WideIndent       } }
  819.     def @RawVeryWideTaggedList    { @RawTaggedList indent { @VeryWideIndent   } }
  820.     macro @TaggedList        { @DP @RawTaggedList        @DP }
  821.     macro @WideTaggedList    { @DP @RawWideTaggedList    @DP }
  822.     macro @VeryWideTaggedList    { @DP @RawVeryWideTaggedList    @DP }
  823.  
  824.     macro @RTL        { @RawTaggedList        }
  825.     macro @RWTL        { @RawWideTaggedList        }
  826.     macro @RVWTL    { @RawVeryWideTaggedList    }
  827.     macro @TL        { @TaggedList            }
  828.     macro @WTL        { @WideTaggedList        }
  829.     macro @VWTL        { @VeryWideTaggedList        }
  830.  
  831.  
  832.  
  833.     ###########################################################################
  834.     #                                                                         #
  835.     #  Definitions for laying out one general-purpose page.                   #
  836.     #                                                                         #
  837.     ###########################################################################
  838.  
  839.     def @FullPlace        { @Galley }
  840.     def @ColPlace         { @Galley }
  841.     def @IndexPlace       { @Galley }
  842.  
  843.     export @Tag
  844.     def @TopList right @Tag
  845.     {
  846.            @Galley
  847.     //@TopGap  @TopList @Next @Tag
  848.     }
  849.  
  850.     export @Tag
  851.     def @FootList right @Tag
  852.     {
  853.             @Galley
  854.     //@FootGap  @FootList @Next @Tag
  855.     }
  856.  
  857.     def @FootSect
  858.     {
  859.             @FootLen @Wide @HLine
  860.     //@FootGap  @FootList 1 ||@FootLen
  861.     }
  862.  
  863.     export @Tag
  864.     def @ColFootList right @Tag
  865.     {
  866.             @Galley
  867.     //@FootGap  @ColFootList @Next @Tag
  868.     }
  869.  
  870.     def @ColFootSect
  871.     {
  872.             @ColFootLen @Wide @HLine
  873.     //@FootGap  @ColFootList 1 ||@ColFootLen
  874.     }
  875.  
  876.     def @ColList right col
  877.     {
  878.     def @Column
  879.     {
  880.         @VExpand { @ColPlace //1rt @OneRow { //@MidGap @ColFootSect } }
  881.     }
  882.  
  883.     col @Case {
  884.  
  885.         Single @Yield @Column
  886.  
  887.         Double @Yield { @DoubleColWidth @Wide @Column
  888.                 ||@ColGap @ColList col }
  889.  
  890.         Multi  @Yield { @MultiColWidth @Wide @Column
  891.                 ||@ColGap @ColList col }
  892.  
  893.     }
  894.     }
  895.     
  896.     def @IndexColList right col
  897.     {
  898.     col @Case {
  899.  
  900.         Single @Yield @VExpand @IndexPlace
  901.  
  902.         Double @Yield { @DoubleColWidth @Wide @VExpand @IndexPlace
  903.                 ||@ColGap @IndexColList col }
  904.  
  905.         Multi  @Yield { @MultiColWidth @Wide @VExpand @IndexPlace
  906.                 ||@ColGap @IndexColList col }
  907.  
  908.     }
  909.     }
  910.  
  911.     def @Page right x
  912.     {    @PageWidth @Wide @PageHeight @High
  913.     {   //@PageMargin ||@PageMargin
  914.         @HExpand @VExpand x
  915.         ||@PageMargin //@PageMargin
  916.     }
  917.     }
  918.  
  919.     def @OnePage
  920.     named @Columns {}
  921.     named @PageTop {}
  922.     named @PageFoot {}
  923.     {
  924.     @Page {
  925.               @PageTop
  926.         //@MidGap @TopList
  927.         //@MidGap @FullPlace
  928.         //@MidGap @ColList @Columns
  929.         //@MidGap @IndexColList @IndexColumns
  930.         // //1rt  @OneRow { //@MidGap @FootSect //@MidGap @PageFoot }
  931.     }
  932.     }
  933.  
  934.  
  935.     ###########################################################################
  936.     #                                                                         #
  937.     #  Definitions for laying out introductory pages.                         #
  938.     #                                                                         #
  939.     ###########################################################################
  940.  
  941.     def @IntroFullPlace   { @Galley }
  942.     def @IntroColPlace    { @Galley }
  943.  
  944.     def @IntroColList right col
  945.     {
  946.     def @Column
  947.     {
  948.         @VExpand { @IntroColPlace //1rt @OneRow { //@MidGap @ColFootSect } }
  949.     }
  950.  
  951.     col @Case {
  952.  
  953.         Single @Yield @Column
  954.  
  955.         Double @Yield { @DoubleColWidth @Wide @Column
  956.                 ||@ColGap @IntroColList col }
  957.  
  958.         Multi  @Yield { @MultiColWidth @Wide @Column
  959.                 ||@ColGap @IntroColList col }
  960.  
  961.     }
  962.     }
  963.  
  964.     ###########################################################################
  965.     #                                                                         #
  966.     #  Page layout for documents other than books (simple and tech. reports)  #
  967.     #                                                                         #
  968.     ###########################################################################
  969.  
  970.     def @SimplePageList
  971.     named @Columns {}
  972.     named @PageNumbers {}
  973.     right @PageNum
  974.     {
  975.             @PageMarker @PageNum
  976.     //  @OnePage
  977.             @Columns { @Columns }
  978.             @PageTop {
  979.             @PageNumbers @Case
  980.             {
  981.                 {Yes yes} @Yield
  982.                 {
  983.                 @PageNum @Case
  984.                 {
  985.                     1    @Yield @PageOneTopFormat @PageNum
  986.                     else @Yield @PageTopFormat    @PageNum
  987.                 }
  988.                 }
  989.                 else @Yield @Null
  990.             }
  991.             }
  992.             @PageFoot {
  993.             @PageNumbers @Case
  994.             {
  995.             {Yes yes} @Yield
  996.             {
  997.                 @PageNum @Case
  998.                 {
  999.                 1    @Yield @PageOneFootFormat @PageNum
  1000.                 else @Yield @PageFootFormat    @PageNum
  1001.                 }
  1002.             }
  1003.             else @Yield @Null
  1004.             }
  1005.         }
  1006.     //  @SimplePageList
  1007.         @Columns { @Columns }
  1008.         @PageNumbers { @PageNumbers }
  1009.         @Next @PageNum
  1010.     }
  1011.  
  1012.  
  1013.     ###########################################################################
  1014.     #                                                                         #
  1015.     #  Page list for ordinary pages of books.                                 #
  1016.     #                                                                         #
  1017.     ###########################################################################
  1018.  
  1019.     def @OddPageList
  1020.     named @Columns {}
  1021.     right @PageNum
  1022.     {
  1023.     def @EvenPageList
  1024.         named @Columns {}
  1025.         right @PageNum
  1026.     {
  1027.         @PageMarker @PageNum
  1028.         //    @Runner&&following @Open
  1029.         {
  1030.             @OnePage
  1031.             @Columns { @Columns }
  1032.             @PageTop { @TopEven @PageNum }
  1033.             @PageFoot { @FootEven @PageNum }
  1034.         }
  1035.         //    @OddPageList
  1036.             @Columns { @Columns }
  1037.             @Next @PageNum
  1038.     }
  1039.  
  1040.         @PageMarker @PageNum
  1041.     //  @Runner&&following @Open
  1042.         {
  1043.         @OnePage
  1044.             @Columns { @Columns }
  1045.             @PageTop { @TopOdd @PageNum }
  1046.             @PageFoot { @FootOdd @PageNum }
  1047.         }
  1048.     //  @EvenPageList
  1049.         @Columns { @Columns }
  1050.         @Next @PageNum
  1051.     }
  1052.  
  1053.  
  1054.     ###########################################################################
  1055.     #                                                                         #
  1056.     #  Page list for introductory pages of books.  Unlike @OddPageList and    #
  1057.     #  @EvenPageList, this one always generates an even number of pages.      #
  1058.     #                                                                         #
  1059.     ###########################################################################
  1060.  
  1061.     def @IntroOddPageList
  1062.     named @Columns {}
  1063.     right @PageNum
  1064.     {
  1065.         @PageMarker @Roman&&@PageNum
  1066.     //  @Runner&&following @Open
  1067.         {
  1068.         @Page {
  1069.             @TopOdd @Roman&&@PageNum
  1070.             //@MidGap @TopList
  1071.             //@MidGap @IntroFullPlace
  1072.             //@MidGap @IntroColList @Columns
  1073.             //@MidGap @IndexColList @IndexColumns
  1074.             // //1rt @OneRow
  1075.             {  //@MidGap @FootSect
  1076.                //@MidGap @FootOdd @Roman&&@PageNum
  1077.             }
  1078.         }
  1079.         }
  1080.     //  @PageMarker @Roman&&{@Next @PageNum}
  1081.     //  @Runner&&following @Open
  1082.         {
  1083.         @Page {
  1084.             @TopEven @Roman&&{@Next @PageNum}
  1085.             //@MidGap @TopList
  1086.             //@MidGap @IntroFullPlace
  1087.             //@MidGap @IntroColList @Columns
  1088.             //@MidGap @IndexColList @IndexColumns
  1089.             // //1rt @OneRow
  1090.             {    //@MidGap @FootSect
  1091.             //@MidGap @FootEven @Roman&&{@Next @PageNum}
  1092.             }
  1093.         }
  1094.         }
  1095.     //  @IntroOddPageList
  1096.         @Columns { @Columns }
  1097.         @Next @Next @PageNum
  1098.     }
  1099.  
  1100.  
  1101.     ###########################################################################
  1102.     #                                                                         #
  1103.     #  Table of contents.                                                     #
  1104.     #                                                                         #
  1105.     ###########################################################################
  1106.  
  1107.     def @ContentsPlace { @Galley }
  1108.  
  1109.     def @ContentsEntry
  1110.     left lpart
  1111.     named pregap { @ContentsGap }
  1112.     right rpart
  1113.     {
  1114.     def @Leaders { .. &4s @Leaders }
  1115.  
  1116.     def sendentry into { @ContentsPlace&&preceding }
  1117.     {
  1118.         //pregap
  1119.         lpart |1rt &2s @Leaders & 2f @Wide {|1rt rpart}
  1120.     }
  1121.  
  1122.     @TableOfContents @Case {
  1123.         {Yes yes} @Yield sendentry
  1124.         else      @Yield @Null
  1125.     }
  1126.     }
  1127.  
  1128.     def @MajorContentsEntry
  1129.     left lpart
  1130.     named pregap { @MajorContentsGap }
  1131.     right rpart
  1132.     {
  1133.     {@B lpart} @ContentsEntry pregap { pregap } rpart
  1134.     }
  1135.  
  1136.     def @ContentsSection
  1137.     {
  1138.     def @ContentsList { @ContentsPlace // @ContentsList }
  1139.  
  1140.     @TableOfContents @Case {
  1141.         {Yes yes} @Yield { @BookTitleFormat @ContentsWord // @ContentsList }
  1142.         else      @Yield @Null
  1143.     }
  1144.     }
  1145.  
  1146.  
  1147.     ###########################################################################
  1148.     #                                                                         #
  1149.     #  Footnotes.                                                             #
  1150.     #                                                                         #
  1151.     ###########################################################################
  1152.  
  1153.     def @FullFootNote
  1154.     named @Tag {}
  1155.     right x
  1156.     {
  1157.     def ftag
  1158.     { @OneRow { @FootList&&@Tag @Open { 0.8f @Font @Tag } ^/0.3vo }
  1159.     }
  1160.  
  1161.     def fnote into { @FootList&&following }
  1162.     {
  1163.         @FootNoteFont @Font @FootNoteBreak @Break
  1164.         { @FootList&&preceding @Tagged @Tag  ftag & x }
  1165.     }
  1166.  
  1167.     @Null & @FootNoteFont @Font ftag & fnote
  1168.     }
  1169.  
  1170.     def @ColFootNote
  1171.     named @Tag {}
  1172.     right x
  1173.     {
  1174.     def ftag
  1175.     { @OneRow { @ColFootList&&@Tag @Open { 0.8f @Font @Tag } ^/0.3vo }
  1176.     }
  1177.  
  1178.     def fnote into { @ColFootList&&following }
  1179.     {
  1180.         @FootNoteFont @Font @FootNoteBreak @Break
  1181.         { @ColFootList&&preceding @Tagged @Tag  ftag & x }
  1182.     }
  1183.  
  1184.     @Null & @FootNoteFont @Font ftag & fnote
  1185.     }
  1186.  
  1187.  
  1188.     ###########################################################################
  1189.     #                                                                         #
  1190.     #  References.                                                            #
  1191.     #                                                                         #
  1192.     ###########################################################################
  1193.  
  1194.     export  @Type @Author @Title @Institution
  1195.         @Number @Publisher @Year @Proceedings
  1196.         @Journal @Volume @Pages @Comment
  1197.  
  1198.     def @Reference
  1199.     named @Tag          { TAG?         }
  1200.     named @Type         { TYPE?        }
  1201.     named @Author       { AUTHOR?      }
  1202.     named @Title        { TITLE?       }
  1203.     named @Institution  { INSTITUTION? }
  1204.     named @Number       { NUMBER?      }
  1205.     named @Publisher    { PUBLISHER?   }
  1206.     named @Year         { YEAR?        }
  1207.     named @Proceedings  { PROCEEDINGS? }
  1208.     named @Journal      { JOURNAL?     }
  1209.     named @Volume       { VOLUME?      }
  1210.     named @Pages        { PAGES?       }
  1211.     named @Comment      { @Null        }
  1212.     { @Null }
  1213.  
  1214.     export @Style
  1215.     def @RefStyle
  1216.     left @Tag
  1217.     named @Style right reftag {}
  1218.     {}
  1219.  
  1220.     @SysDatabase @RefStyle { "refstyles" }
  1221.  
  1222.     def @RefPrint right reftag
  1223.     {    @RefStyle&&{ @Reference&&reftag @Open { @Type } }
  1224.     @Open { @Style reftag }
  1225.     }
  1226.  
  1227.  
  1228.     ###########################################################################
  1229.     #                                                                         #
  1230.     #  Reference collection at end of chapter.                                #
  1231.     #                                                                         #
  1232.     ###########################################################################
  1233.  
  1234.     def @ChapRefPlace { @Galley }
  1235.  
  1236.     def @ChapRefSection
  1237.     named @Title        { @ReferencesWord }
  1238.     named style right tag    { tag. }
  1239.     named indent        { @DispIndent }
  1240.     named gap        { @DispGap }
  1241.     named start        { 1 }
  1242.     {
  1243.     def @RefList right num
  1244.     {
  1245.         @NumberMarker num &
  1246.         indent @Wide {style num}  |  @ChapRefPlace
  1247.         //gap @RefList @Next num
  1248.     }
  1249.  
  1250.     @Heading @Protect @Title
  1251.     //@DispGap
  1252.     @RefList start
  1253.     }
  1254.  
  1255.     def @ChapRef right x
  1256.     {
  1257.     def sendref into { @ChapRefPlace&&following }
  1258.         right @Key
  1259.     {
  1260.         @NumberMarker&&preceding @Tagged x &
  1261.         @PageMarker&&preceding @Tagged x &
  1262.         @RefPrint x
  1263.     }
  1264.  
  1265.     @NumberMarker&&x @Open { @Tag } sendref x
  1266.     }
  1267.  
  1268.  
  1269.     ###########################################################################
  1270.     #                                                                         #
  1271.     #  Reference collection at end of document.                               #
  1272.     #                                                                         #
  1273.     ###########################################################################
  1274.  
  1275.     def @RefPlace { @Galley }
  1276.  
  1277.     def @Ref right x
  1278.     {
  1279.     def sendref into { @RefPlace&&following }
  1280.         right @Key
  1281.     {
  1282.         @NumberMarker&&preceding @Tagged x &
  1283.         @PageMarker&&preceding @Tagged x &
  1284.         @RefPrint x
  1285.     }
  1286.  
  1287.     @NumberMarker&&x @Open { @Tag } sendref x
  1288.     }
  1289.  
  1290.     def @ReferenceSection
  1291.     named @Tag        {}
  1292.     named @Title        { @ReferencesWord }
  1293.     named @RunningTitle    { dft }
  1294.     named style right tag    { tag. }
  1295.     named headstyle right @Title { @Heading @Title }
  1296.     named indent        { @DispIndent }
  1297.     named gap        { @DispGap }
  1298.     named start        { 1 }
  1299.     {
  1300.     def @RefList right num
  1301.     {
  1302.         @NumberMarker num &
  1303.         indent @Wide {style num}  |  @RefPlace
  1304.         //gap @RefList @Next num
  1305.     }
  1306.  
  1307.         @Protect headstyle @Title
  1308.     //  @PageMarker&&preceding @Tagged @Tag
  1309.     //  @Title @MajorContentsEntry {@PageOf @Tag}
  1310.     //  @Runner
  1311.         @FootEven { |0.5rt 0.8f @Font @B @PageNum }
  1312.         @FootOdd  { |0.5rt 0.8f @Font @B @PageNum }
  1313.     //@DispGap  @RefList start
  1314.     //  @Runner
  1315.         @TopEven { @B @PageNum }
  1316.         @TopOdd  {
  1317.           @RunningTitles @Case {
  1318.             { Yes yes } @Yield @I {@RunningTitle @OrElse @Title}
  1319.             else        @Yield {}
  1320.           }
  1321.           |1rt @B @PageNum
  1322.         }
  1323.     }
  1324.  
  1325.  
  1326.     ###########################################################################
  1327.     #                                                                         #
  1328.     #  Floating figures.                                                      #
  1329.     #                                                                         #
  1330.     ###########################################################################
  1331.  
  1332.     def @FigurePlace { @Galley }
  1333.     def @EndFigurePlace { @Galley }
  1334.  
  1335.     def @FigureGalley into { @TopList&&following }
  1336.     right prefix
  1337.     {
  1338.     def @FigureList right x
  1339.     {
  1340.         @NumberMarker {prefix}x & ||0.5rt @FigurePlace ||
  1341.         //@TopGap
  1342.         @FigureList @Next x
  1343.     }
  1344.  
  1345.     @FigureList 1
  1346.     //
  1347.     @EndFigurePlace
  1348.     }
  1349.  
  1350.     def @EndFigures force into { @EndFigurePlace&&following } {}
  1351.  
  1352.     def @Figure into { @FigurePlace&&following }
  1353.     named @Caption {}
  1354.     named @Tag {}
  1355.     right @Body
  1356.     {
  1357.     @OneRow
  1358.     {
  1359.         ||0.5rt @HContract @Body
  1360.         //@DispGap
  1361.         ||0.5rt
  1362.         @NumberMarker&&preceding @Tagged @Tag
  1363.         @PageMarker&&preceding @Tagged @Tag
  1364.         @B { @FigureWord {@NumberOf @Tag}. }  @Caption
  1365.     }
  1366.     }
  1367.  
  1368.  
  1369.     ###########################################################################
  1370.     #                                                                         #
  1371.     #  Floating tables.                                                       #
  1372.     #                                                                         #
  1373.     ###########################################################################
  1374.  
  1375.     def @TablePlace { @Galley }
  1376.     def @EndTablePlace { @Galley }
  1377.  
  1378.     def @TableGalley into { @TopList&&following }
  1379.     right prefix
  1380.     {
  1381.     def @TableList right x
  1382.     {
  1383.         @NumberMarker {prefix}x & ||0.5rt @TablePlace ||
  1384.         //@TopGap
  1385.         @TableList @Next x
  1386.     }
  1387.  
  1388.     @TableList 1
  1389.     //
  1390.     @EndTablePlace
  1391.     }
  1392.  
  1393.     def @EndTables force into { @EndTablePlace&&following } {}
  1394.  
  1395.     def @Table into { @TablePlace&&following }
  1396.     named @Caption {}
  1397.     named @Tag {}
  1398.     right @Body
  1399.     {
  1400.     @OneRow
  1401.     {
  1402.         ||0.5rt @HContract @Body
  1403.         //@DispGap
  1404.         ||0.5rt
  1405.         @NumberMarker&&preceding @Tagged @Tag
  1406.         @PageMarker&&preceding @Tagged @Tag
  1407.         @B { @TableWord {@NumberOf @Tag}. }  @Caption
  1408.     }
  1409.     }
  1410.  
  1411.  
  1412.     ###########################################################################
  1413.     #                                                                         #
  1414.     #  Lists of chapters, sections, subsections, and appendices.              #
  1415.     #                                                                         #
  1416.     ###########################################################################
  1417.  
  1418.     export @Tag
  1419.     def @ChapterList right @Tag
  1420.     {
  1421.                 @Galley
  1422.     //@ChapterGap        @ChapterList @Next @Tag
  1423.     }
  1424.  
  1425.     export @Tag
  1426.     def @SectionList right @Tag
  1427.     {
  1428.                 @Galley
  1429.         //@SectionGap        @SectionList @Next @Tag
  1430.     }
  1431.  
  1432.     export @Tag
  1433.     def @SubSectionList right @Tag
  1434.     {
  1435.                 @Galley
  1436.     //@SubSectionGap    @SubSectionList @Next @Tag
  1437.     }
  1438.  
  1439.     export @Tag
  1440.     def @AppendixList right @Tag
  1441.     {
  1442.                 @Galley
  1443.     //@AppendixGap        @AppendixList @Next @Tag
  1444.     }
  1445.  
  1446.     export @Tag
  1447.     def @SubAppendixList right @Tag
  1448.     {
  1449.                 @Galley
  1450.     //@SubAppendixGap   @SubAppendixList @Next @Tag
  1451.     }
  1452.  
  1453.  
  1454.     ###########################################################################
  1455.     #                                                                         #
  1456.     #  Body text.                                                             #
  1457.     #                                                                         #
  1458.     ###########################################################################
  1459.  
  1460.     export @ColText @FootNote
  1461.        @BeginSections @EndSections @BeginAppendices @EndAppendices
  1462.  
  1463.     def @Text force into { @FullPlace&&preceding }
  1464.     body x
  1465.     {
  1466.     def @FootNote right x { @FullFootNote x }
  1467.  
  1468.     def @EndSectionsPlace { @Galley }
  1469.     def @EndSections force into { @EndSectionsPlace&&preceding }  {}
  1470.     macro @BeginSections
  1471.           { //@SectionGap @SectionList 1 // @EndSectionsPlace // }
  1472.  
  1473.     def @EndAppendicesPlace { @Galley }
  1474.     def @EndAppendices force into { @EndAppendicesPlace&&preceding }  {}
  1475.     macro @BeginAppendices
  1476.           { //@AppendixGap @AppendixList 1 // @EndAppendicesPlace //}
  1477.  
  1478.  
  1479.     export @FootNote
  1480.     def @ColText force into { @ColPlace&&following }
  1481.         body x
  1482.     {
  1483.         def @FootNote right x { @ColFootNote x }
  1484.     
  1485.         x
  1486.     }
  1487.  
  1488.     x
  1489.     }
  1490.  
  1491.     export @FootNote
  1492.        @BeginSections @EndSections @BeginAppendices @EndAppendices
  1493.     def @ColText force into { @ColPlace&&preceding }
  1494.     body x
  1495.     {
  1496.     def @FootNote right x { @ColFootNote x }
  1497.  
  1498.     def @EndSectionsPlace { @Galley }
  1499.     def @EndSections force into { @EndSectionsPlace&&preceding }  {}
  1500.     macro @BeginSections
  1501.           { //@SectionGap @SectionList 1 // @EndSectionsPlace // }
  1502.  
  1503.     def @EndAppendicesPlace { @Galley }
  1504.     def @EndAppendices force into { @EndAppendicesPlace&&preceding }  {}
  1505.     macro @BeginAppendices
  1506.           { //@AppendixGap @AppendixList 1 // @EndAppendicesPlace //}
  1507.     x
  1508.     }
  1509.  
  1510.  
  1511.     ###########################################################################
  1512.     #                                                                         #
  1513.     #  Abstract.                                                              #
  1514.     #                                                                         #
  1515.     ###########################################################################
  1516.  
  1517.     def @AbstractPlace { @Galley }
  1518.  
  1519.     export @FootNote
  1520.     def @Abstract into { @AbstractPlace&&preceding }
  1521.     named @Title { @AbstractWord }
  1522.     body x
  1523.     {  
  1524.     def @FootNote right x { @FullFootNote x }
  1525.  
  1526.     |0.5rt @I @Title
  1527.     //@DispGap x
  1528.     }
  1529.  
  1530.  
  1531.     ###########################################################################
  1532.     #                                                                         #
  1533.     #  Preface.                                                               #
  1534.     #                                                                         #
  1535.     ###########################################################################
  1536.  
  1537.     def @PrefacePlace { @Galley }
  1538.  
  1539.     export @FootNote @BeginFigures @BeginTables
  1540.     def @Preface force into { @PrefacePlace&&preceding }
  1541.     named @Tag {}
  1542.     named @Title { @PrefaceWord }
  1543.     named @RunningTitle { dft }
  1544.     body @Body
  1545.     {
  1546.     def @FootNote right x { @ColFootNote x }
  1547.     macro @BeginFigures { @FigureGalley {} }
  1548.     macro @BeginTables  { @TableGalley  {} }
  1549.  
  1550.         ragged @Break @BookTitleFormat @Title
  1551.     //  @PageMarker&&preceding @Tagged @Tag
  1552.     //  @Body
  1553.     //@SectionGap    @ChapRefSection
  1554.     }
  1555.  
  1556.  
  1557.     ###########################################################################
  1558.     #                                                                         #
  1559.     #  Introduction.                                                          #
  1560.     #                                                                         #
  1561.     ###########################################################################
  1562.  
  1563.     def @IntroductionPlace { @Galley }
  1564.  
  1565.     export @FootNote @BeginFigures @BeginTables
  1566.     def @Introduction force into { @IntroductionPlace&&preceding }
  1567.     named @Tag {}
  1568.     named @Title { @IntroductionWord }
  1569.     named @RunningTitle { dft }
  1570.     body @Body
  1571.     {
  1572.     def @FootNote right x { @ColFootNote x }
  1573.     macro @BeginFigures { @FigureGalley {} }
  1574.     macro @BeginTables  { @TableGalley  {} }
  1575.  
  1576.         ragged @Break @BookTitleFormat @Title
  1577.     //  @Runner
  1578.         @FootEven { |0.5rt 0.8f @Font @B @PageNum }
  1579.         @FootOdd  { |0.5rt 0.8f @Font @B @PageNum }
  1580.     //  @PageMarker&&preceding @Tagged @Tag
  1581.     //  @Title @MajorContentsEntry {@PageOf @Tag}
  1582.     //  @Body
  1583.     //@SectionGap    @ChapRefSection
  1584.     //  @Runner
  1585.         @TopEven { @B @PageNum }
  1586.         @TopOdd  {
  1587.           @RunningTitles @Case {
  1588.             { Yes yes } @Yield @I {@RunningTitle @OrElse @Title}
  1589.             else        @Yield {}
  1590.           }
  1591.           |1rt @B @PageNum
  1592.         }
  1593.     }
  1594.  
  1595.  
  1596.     ###########################################################################
  1597.     #                                                                         #
  1598.     #  Chapters containing sections and subsections.                          #
  1599.     #                                                                         #
  1600.     ###########################################################################
  1601.  
  1602.     export @FootNote @BeginFigures @BeginTables
  1603.        @BeginSections @EndSections @Section
  1604.     def @Chapter force into { @ChapterList&&preceding }
  1605.     named @Tag {}
  1606.     named @Title {}
  1607.     named @RunningTitle { dft }
  1608.     body @Body
  1609.     {
  1610.     def @FootNote right x { @ColFootNote x }
  1611.     macro @BeginFigures { @FigureGalley {@NumberOf @Tag}. }
  1612.     macro @BeginTables  { @TableGalley  {@NumberOf @Tag}. }
  1613.  
  1614.     def @EndSectionsPlace { @Galley }
  1615.     def @EndSections force into { @EndSectionsPlace&&preceding } {}
  1616.     macro @BeginSections
  1617.           { //@SectionGap @SectionList 1 // @EndSectionsPlace // }
  1618.  
  1619.     export @BeginSubSections @EndSubSections @SubSection
  1620.     def @Section force into { @SectionList&&preceding }
  1621.         named @Tag {}
  1622.         named @Title {}
  1623.         named @RunningTitle { dft }
  1624.         body @Body
  1625.     {
  1626.  
  1627.         def @EndSubSectsPlace { @Galley }
  1628.         def @EndSubSections force into { @EndSubSectsPlace&&preceding } {}
  1629.         macro @BeginSubSections
  1630.          { //@SubSectionGap @SubSectionList 1// @EndSubSectsPlace//}
  1631.  
  1632.         def @SubSection force into { @SubSectionList&&preceding }
  1633.         named @Tag {}
  1634.         named @Title {}
  1635.             named @RunningTitle { dft }
  1636.         body @Body
  1637.         {
  1638.         def @SubSectionTitle
  1639.         {
  1640.             @SubSectionNumbers @Case {
  1641.             {Yes yes} @Yield { {@NumberOf @Tag}.  |2s  @Title }
  1642.             else      @Yield @Title
  1643.             }
  1644.         }
  1645.  
  1646.             @MinorHeading @Protect @SubSectionTitle
  1647.         //  @NumberMarker {
  1648.             {@ChapterList&&@Tag    @Open { @Tag }}.{
  1649.              @SectionList&&@Tag    @Open { @Tag }}.{
  1650.              @SubSectionList&&@Tag @Open { @Tag }}
  1651.             }
  1652.         //  @ChapterList&&preceding     @Tagged @Tag
  1653.         //  @SectionList&&preceding     @Tagged @Tag
  1654.         //  @SubSectionList&&preceding  @Tagged @Tag
  1655.         //  @NumberMarker&&preceding    @Tagged @Tag
  1656.         //  @PageMarker&&preceding      @Tagged @Tag
  1657.         //  {&5f @SubSectionTitle} @ContentsEntry {@PageOf @Tag}
  1658.         //  @Body
  1659.         }
  1660.  
  1661.         def @SectionTitle
  1662.         {
  1663.         @SectionNumbers @Case {
  1664.             {Yes yes} @Yield { {@NumberOf @Tag}.  |2s  @Title }
  1665.             else      @Yield @Title
  1666.         }
  1667.         }
  1668.  
  1669.             @Heading @Protect @SectionTitle
  1670.         //  @NumberMarker {
  1671.             {@ChapterList&&@Tag @Open { @Tag }}.{
  1672.              @SectionList&&@Tag @Open { @Tag }}
  1673.         }
  1674.         //  @ChapterList&&preceding  @Tagged @Tag
  1675.         //  @SectionList&&preceding  @Tagged @Tag
  1676.         //  @NumberMarker&&preceding @Tagged @Tag
  1677.         //  @PageMarker&&preceding   @Tagged @Tag
  1678.         //  { &3f @SectionTitle } @ContentsEntry {@PageOf @Tag}
  1679.         //  @Body
  1680.  
  1681.     }
  1682.  
  1683.     def @ChapterTitle
  1684.     {
  1685.         @ChapterNumbers @Case {
  1686.         {Yes yes} @Yield { @ChapterWord {@NumberOf @Tag}.  |2s  @Title }
  1687.         else      @Yield @Title
  1688.         }
  1689.     }
  1690.  
  1691.     def @ChapterNum
  1692.     {
  1693.         @ChapterNumbers @Case {
  1694.         {Yes yes} @Yield { @ChapterWord {@NumberOf @Tag} }
  1695.         else      @Yield @Null
  1696.         }
  1697.     }
  1698.  
  1699.         ragged @Break @BookTitleFormat @ChapterTitle
  1700.     //  @NumberMarker {
  1701.         @ChapterList&&@Tag @Open { @Tag }
  1702.         }
  1703.     //  @ChapterList&&preceding  @Tagged @Tag
  1704.     //  @NumberMarker&&preceding @Tagged @Tag
  1705.     //  @PageMarker&&preceding   @Tagged @Tag
  1706.     //  { @ChapterTitle } @MajorContentsEntry {@PageOf @Tag}
  1707.     //  @Runner
  1708.         @FootEven { |0.5rt 0.8f @Font @B @PageNum }
  1709.         @FootOdd  { |0.5rt 0.8f @Font @B @PageNum }
  1710.     //  @Body
  1711.     //@SectionGap @ChapRefSection
  1712.     //  @Runner
  1713.         @TopEven { @B @PageNum |1rt @I @ChapterNum }
  1714.         @TopOdd  {
  1715.           @RunningTitles @Case {
  1716.             { Yes yes } @Yield @I {@RunningTitle @OrElse @Title}
  1717.             else        @Yield {}
  1718.           }
  1719.           |1rt @B @PageNum
  1720.         }
  1721.     }
  1722.  
  1723.  
  1724.     ###########################################################################
  1725.     #                                                                         #
  1726.     #  Sections containing subsections.                                       #
  1727.     #                                                                         #
  1728.     ###########################################################################
  1729.  
  1730.     export @FootNote @BeginFigures @BeginTables
  1731.        @BeginSubSections @SubSection @EndSubSections
  1732.     def @Section force into { @SectionList&&preceding }
  1733.     named @Tag {}
  1734.     named @Title {}
  1735.     named @RunningTitle { dft }
  1736.     body @Body
  1737.     {
  1738.     def @FootNote right x { @ColFootNote x }
  1739.     macro @BeginFigures { @FigureGalley {@NumberOf @Tag}. }
  1740.     macro @BeginTables  { @TableGalley  {@NumberOf @Tag}. }
  1741.  
  1742.     def @EndSubSectsPlace { @Galley }
  1743.     def @EndSubSections force into { @EndSubSectsPlace&&preceding }  {}
  1744.     macro @BeginSubSections
  1745.       { //@SubSectionGap @SubSectionList 1 // @EndSubSectsPlace // }
  1746.  
  1747.     def @SubSection force into { @SubSectionList&&preceding }
  1748.         named @Tag {}
  1749.         named @Title {}
  1750.         named @RunningTitle { dft }
  1751.         right @Body
  1752.     {
  1753.         def @SubSectionTitle
  1754.         {
  1755.         @SubSectionNumbers @Case {
  1756.             {Yes yes} @Yield { {@NumberOf @Tag}.  |2s  @Title }
  1757.             else      @Yield @Title
  1758.         }
  1759.         }
  1760.  
  1761.             @MinorHeading @Protect @SubSectionTitle
  1762.         //    @NumberMarker {
  1763.             {@SectionList&&@Tag @Open { @Tag }}.{
  1764.              @SubSectionList&&@Tag @Open { @Tag }}
  1765.         }
  1766.         //    @SubSectionList&&preceding @Tagged @Tag
  1767.         //    @SectionList&&preceding    @Tagged @Tag
  1768.         //    @NumberMarker&&preceding   @Tagged @Tag
  1769.         //    @PageMarker&&preceding     @Tagged @Tag
  1770.         //  @Body
  1771.     }
  1772.  
  1773.     def @SectionTitle
  1774.     {
  1775.         @SectionNumbers @Case {
  1776.         {Yes yes} @Yield { {@NumberOf @Tag}.  |2s  @Title }
  1777.         else      @Yield @Title
  1778.         }
  1779.     }
  1780.  
  1781.         @Heading @Protect @SectionTitle
  1782.     //  @NumberMarker {
  1783.         @SectionList&&@Tag @Open { @Tag }
  1784.         }
  1785.     //  @SectionList&&preceding  @Tagged @Tag
  1786.     //  @NumberMarker&&preceding @Tagged @Tag
  1787.     //  @PageMarker&&preceding   @Tagged @Tag
  1788.     //  @Body
  1789.     }
  1790.  
  1791.  
  1792.     ###########################################################################
  1793.     #                                                                         #
  1794.     #  Appendices.                                                            #
  1795.     #                                                                         #
  1796.     ###########################################################################
  1797.  
  1798.     export @FootNote @BeginFigures @BeginTables
  1799.        @BeginSubAppendices @SubAppendix @EndSubAppendices
  1800.     def @Appendix force into { @AppendixList&&preceding }
  1801.     named @Tag {}
  1802.     named @Title {}
  1803.     named @RunningTitle { dft }
  1804.     body  @Body
  1805.     {
  1806.     def @FootNote right x { @ColFootNote x }
  1807.     macro @BeginFigures { @FigureGalley {@NumberOf @Tag}. }
  1808.     macro @BeginTables  { @TableGalley  {@NumberOf @Tag}. }
  1809.  
  1810.     def @EndSubAppendicesPlace { @Galley }
  1811.     def @EndSubAppendices force into {@EndSubAppendicesPlace&&preceding} {}
  1812.     macro @BeginSubAppendices
  1813.       { //@SubAppendixGap @SubAppendixList 1 // @EndSubAppendicesPlace // }
  1814.  
  1815.     def @SubAppendix force into { @SubAppendixList&&preceding }
  1816.         named @Tag {}
  1817.         named @Title {}
  1818.         named @RunningTitle { dft }
  1819.         right @Body
  1820.     {
  1821.         def @SubAppendixTitle
  1822.         {
  1823.         @SubAppendixNumbers @Case {
  1824.             {Yes yes} @Yield { {@NumberOf @Tag}.  |2s  @Title }
  1825.             else      @Yield @Title
  1826.         }
  1827.         }
  1828.  
  1829.             @Heading @Protect @SubAppendixTitle
  1830.         //    @NumberMarker {
  1831.             {@AppendixList&&@Tag @Open { @Tag }}.{
  1832.              @SubAppendixList&&@Tag @Open { @Tag }}
  1833.         }
  1834.         //    @SubAppendixList&&preceding @Tagged @Tag
  1835.         //    @AppendixList&&preceding    @Tagged @Tag
  1836.         //    @NumberMarker&&preceding   @Tagged @Tag
  1837.         //    @PageMarker&&preceding     @Tagged @Tag
  1838.         //    @SubAppendixTitle @ContentsEntry {@PageOf @Tag}
  1839.         //  @Body
  1840.     }
  1841.  
  1842.     def @AppendixTitle
  1843.     {
  1844.         @AppendixNumbers @Case {
  1845.         {Yes yes} @Yield { @AppendixWord {@NumberOf @Tag}. |2s @Title }
  1846.         else      @Yield { @AppendixWord.  @Title }
  1847.         }
  1848.     }
  1849.  
  1850.     def @AppendixNum
  1851.     {
  1852.         @AppendixNumbers @Case {
  1853.         {Yes yes} @Yield { @NumberOf @Tag }
  1854.         else      @Yield @Null
  1855.         }
  1856.     }
  1857.  
  1858.         ragged @Break @BookTitleFormat @AppendixTitle
  1859.     //  @NumberMarker {
  1860.         @AppendixList&&@Tag @Open { @UCAlpha&&@Tag }
  1861.         }
  1862.     //  @AppendixList&&preceding @Tagged @Tag
  1863.     //  @NumberMarker&&preceding @Tagged @Tag
  1864.     //  @PageMarker&&preceding   @Tagged @Tag
  1865.     //  @AppendixTitle @MajorContentsEntry {@PageOf @Tag}
  1866.     //  @Runner
  1867.         @FootEven { |0.5rt 0.8f @Font @B @PageNum }
  1868.         @FootOdd  { |0.5rt 0.8f @Font @B @PageNum }
  1869.     //  @Body
  1870.     //@SectionGap @ChapRefSection
  1871.     //  @Runner
  1872.         @TopEven { @B @PageNum |1rt @I { @AppendixWord @AppendixNum } }
  1873.         @TopOdd  {
  1874.           @RunningTitles @Case {
  1875.             { Yes yes } @Yield @I {@RunningTitle @OrElse @Title}
  1876.             else        @Yield {}
  1877.           }
  1878.           |1rt @B @PageNum
  1879.         }
  1880.     }
  1881.  
  1882.  
  1883.     ###########################################################################
  1884.     #                                                                         #
  1885.     #  Index.                                                                 #
  1886.     #                                                                         #
  1887.     ###########################################################################
  1888.  
  1889.     def @IndexList { @Galley //1vx @IndexList }
  1890.  
  1891.     def @IndexSection
  1892.     named @Tag {}
  1893.     named @Title { @IndexWord }
  1894.     named @RunningTitle { dft }
  1895.     named headstyle right @Title { @Heading @Title //@DispGap }
  1896.     {
  1897.  
  1898.     def @IndexBody into { @IndexPlace&&following }
  1899.     { // @IndexList
  1900.       // @Runner
  1901.         @TopEven { @B @PageNum }
  1902.         @TopOdd  {
  1903.           @RunningTitles @Case {
  1904.             { Yes yes } @Yield @I {@RunningTitle @OrElse @Title}
  1905.             else        @Yield {}
  1906.           }
  1907.           |1rt @B @PageNum
  1908.         }
  1909.     }
  1910.  
  1911.         def indexsection
  1912.         {
  1913.         headstyle @Title
  1914.         //    @PageMarker&&preceding @Tagged @Tag
  1915.         //    @Title @MajorContentsEntry {@PageOf @Tag}
  1916.         //    @Runner
  1917.             @FootEven { |0.5rt 0.8f @Font @B @PageNum }
  1918.             @FootOdd  { |0.5rt 0.8f @Font @B @PageNum }
  1919.         //    @IndexBody
  1920.         }
  1921.  
  1922.     @MakeIndex @Case {
  1923.         {Yes yes} @Yield indexsection
  1924.         else      @Yield @Null
  1925.     }
  1926.     }
  1927.  
  1928.     def @SendIndex
  1929.     left key
  1930.     right @Body
  1931.     {
  1932.         def sendindex into { @IndexList&&following }
  1933.         left @Key
  1934.         right @Body
  1935.     {
  1936.         outdent @Break @Body
  1937.     }
  1938.  
  1939.     @MakeIndex @Case {
  1940.         {Yes yes} @Yield {key sendindex @Body}
  1941.         else      @Yield @Null
  1942.     }
  1943.     }
  1944.  
  1945.     def @RawIndex       left x right y { {@PageMark x} x @SendIndex { &0f y } }
  1946.     def @RawSubIndex    left x right y { {@PageMark x} x @SendIndex { &1f y } }
  1947.     def @RawSubSubIndex left x right y { {@PageMark x} x @SendIndex { &2f y } }
  1948.  
  1949.     def @Index       left x right y { x @RawIndex       { y, {@PageOf x} } }
  1950.     def @SubIndex    left x right y { x @RawSubIndex    { y, {@PageOf x} } }
  1951.     def @SubSubIndex left x right y { x @RawSubSubIndex { y, {@PageOf x} } }
  1952.  
  1953.     def @IndexBlanks
  1954.     {
  1955.     b @RawIndex {} c @RawIndex {} d @RawIndex {} e @RawIndex {}
  1956.     f @RawIndex {} g @RawIndex {} h @RawIndex {} i @RawIndex {}
  1957.     j @RawIndex {} k @RawIndex {} l @RawIndex {} m @RawIndex {}
  1958.     n @RawIndex {} o @RawIndex {} p @RawIndex {} q @RawIndex {}
  1959.     r @RawIndex {} s @RawIndex {} t @RawIndex {} u @RawIndex {}
  1960.     v @RawIndex {} w @RawIndex {} x @RawIndex {} y @RawIndex {}
  1961.     z @RawIndex {}
  1962.     }
  1963.  
  1964.  
  1965.     ###########################################################################
  1966.     #                                                                         #
  1967.     #  Document.                                                              #
  1968.     #                                                                         #
  1969.     ###########################################################################
  1970.  
  1971.     def @Document
  1972.     named @InitialFont { @InitialFont }
  1973.     named @InitialBreak { @InitialBreak }
  1974.     named @Hyphenate { @Hyphenate }
  1975.     named @PageNumbers { @PageNumbers }
  1976.     named @FirstPageNumber { @FirstPageNumber }
  1977.     named @Columns { @Columns }
  1978.     {
  1979.         { Times Base 12p } @Font @InitialFont @Font
  1980.     { {@Hyph @Hyphenate} adjust 1.20fx } @Break @InitialBreak @Break
  1981.     {
  1982.         //  @FigureGalley {}
  1983.         //  @TableGalley  {}
  1984.         //  @SimplePageList
  1985.             @Columns { @Columns }
  1986.             @PageNumbers { @PageNumbers }
  1987.             @FirstPageNumber
  1988.     }
  1989.     }
  1990.  
  1991.     macro @Doc { @Document // }
  1992.  
  1993.  
  1994.     ###########################################################################
  1995.     #                                                                         #
  1996.     #  Report.                                                                #
  1997.     #                                                                         #
  1998.     ###########################################################################
  1999.  
  2000.     def @Report
  2001.     named @Title {}
  2002.     named @Author {}
  2003.     named @Institution {}
  2004.     named @DateLine { @Date }
  2005.     named @InitialFont { @InitialFont }
  2006.     named @InitialBreak { @InitialBreak }
  2007.     named @Hyphenate { @Hyphenate }
  2008.     named @PageNumbers { @PageNumbers }
  2009.     named @Columns { @Columns }
  2010.     {
  2011.     def @TitleMaterial
  2012.     {
  2013.             |0.5rt @B {{clines 1.4vx} @Break @Title} |
  2014.         //0.25i |0.5rt @I {clines @Break @Author} |
  2015.         //0.25i |0.5rt clines @Break @Institution |
  2016.     }
  2017.  
  2018.     def @ReportContent force into { @ColPlace&&following }
  2019.     {
  2020.                     @SectionList 1
  2021.         //@AppendixGap  @AppendixList 1
  2022.         //@SectionGap   @ReferenceSection
  2023.     }
  2024.  
  2025.     { Times Base 12p } @Font @InitialFont @Font
  2026.     { {@Hyph @Hyphenate} adjust 1.20fx } @Break @InitialBreak @Break
  2027.     {
  2028.         # cover sheet
  2029.             //  @PageMarker 0
  2030.         //  @Page {
  2031.             //1i      @TitleMaterial
  2032.             //0.5i      |0.5rt @OneCol { |0.5i @AbstractPlace |0.5i }
  2033.             //1i      @DateLine
  2034.             //1rt      @OneRow { //@MidGap @FootSect }
  2035.         }
  2036.  
  2037.         //  @FigureGalley {}
  2038.         //  @TableGalley  {}
  2039.         //  @ReportContent
  2040.  
  2041.         # first page
  2042.             //  @PageMarker 1
  2043.         //  @Page
  2044.         {
  2045.           @PageNumbers @Case
  2046.           {
  2047.             {Yes yes} @Yield @PageOneTopFormat num
  2048.             else      @Yield @Null
  2049.           }
  2050.           //
  2051.           //0.5i    @TitleMaterial
  2052.           //@MidGap    @ColList @Columns
  2053.           //1rt @OneRow
  2054.           {
  2055.                 //@MidGap
  2056.                 @PageNumbers @Case
  2057.                 {
  2058.                     {Yes yes} @Yield @PageOneFootFormat num
  2059.                     else      @Yield @Null
  2060.                 }
  2061.           }
  2062.         }
  2063.  
  2064.         # subsequent pages
  2065.         //    @SimplePageList
  2066.           @Columns { @Columns }
  2067.           @PageNumbers { @PageNumbers }
  2068.           2
  2069.     }
  2070.     }
  2071.  
  2072.  
  2073.     ###########################################################################
  2074.     #                                                                         #
  2075.     #  Book.                                                                  #
  2076.     #                                                                         #
  2077.     ###########################################################################
  2078.  
  2079.     def @Book
  2080.     named @Title {}
  2081.     named @Author {}
  2082.     named @Edition {}
  2083.     named @Publisher {}
  2084.     named @InitialFont { @InitialFont }
  2085.     named @InitialBreak { @InitialBreak }
  2086.     named @Hyphenate { @Hyphenate }
  2087.     {
  2088.     def @BookIntro force into { @IntroColPlace&&preceding }
  2089.     {
  2090.       @BookCoverFont @Font
  2091.       { //1i    |0.5rt 2.5f @Font {1.2fx clines} @Break @Title |
  2092.         //2i    |0.5rt clines @Break @Author |
  2093.         //1i    |0.5rt clines @Break @Edition |
  2094.         //1rt   @OneRow @Publisher
  2095.       }
  2096.         //        @Runner
  2097.         //1.1b  @PrefacePlace
  2098.         //1.1b  @ContentsSection
  2099.     }
  2100.  
  2101.     def @BookBody force into { @ColPlace&&preceding }
  2102.     {
  2103.             @IntroductionPlace
  2104.         //@ChapterGap   @ChapterList 1
  2105.         //@AppendixGap  @AppendixList 1
  2106.         //1.1b  @ReferenceSection
  2107.             headstyle { ragged @Break @BookTitleFormat @Title }
  2108.         //1.1b  @IndexSection
  2109.             headstyle { ragged @Break @BookTitleFormat @Title }
  2110.     }
  2111.  
  2112.     { Times Base 12p } @Font @InitialFont @Font
  2113.     { {@Hyph @Hyphenate} adjust 1.20fx } @Break @InitialBreak @Break
  2114.     {
  2115.             @IntroOddPageList @Columns { Single } 1
  2116.         //        @Runner
  2117.                 @FootEven { @PageNum }
  2118.                 @FootOdd  { |1rt @PageNum }
  2119.         //        @OddPageList @Columns { Single } 1
  2120.         //        @BookIntro
  2121.         //        @BookBody
  2122.         //        @Runner
  2123.     }
  2124.     }
  2125.  
  2126. @End @DocumentLayout
  2127.