diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /web/fmweb |
Initial commit
Diffstat (limited to 'web/fmweb')
-rw-r--r-- | web/fmweb/fmweb.README | 32 | ||||
-rw-r--r-- | web/fmweb/fmweb.mif | 9878 | ||||
-rw-r--r-- | web/fmweb/fmweb.ps | 4073 |
3 files changed, 13983 insertions, 0 deletions
diff --git a/web/fmweb/fmweb.README b/web/fmweb/fmweb.README new file mode 100644 index 0000000000..746fe9dd8f --- /dev/null +++ b/web/fmweb/fmweb.README @@ -0,0 +1,32 @@ +fmweb is an attempt to do literate programming using FrameMaker. +(The term web does not indicate any connection to the World Wide Web - +please see the comp.programming.literate FAQ for details on "web" tools.) + +The fundamental problem I have with traditional web tools is that +the web text looks like a mess, because it has code as well as +documentation with formatting data all in the soup. I prefer WYSIWIG +documentation systems over TeX, where formatting meta-information does +not clutter up your thinking. + +fmweb allows you to write your code in a way that it looks exactly like +the WEB system's output from the outset. It supports output to multiple files, +is language independent, and doesn't care how many figures or fonts you +use. + +The three files in this distribution are - + fmweb.mif - a FrameMaker 4 document containing everything - including + a perl5 fmweb script. + fmweb.ps - a postscript print of this document for those who don't + have Frame, but want to have a look at the approach. + fmweb.README - this file. + + +Please send comments/ideas/flames to sriram@tcs.com. I am exploring usage +of such an approach for largish systems. I would like to know what +people who use the traditional WEB approach think of the workability of +this approach. + +Sriram Srinivasan +July 9, 1995 +(sriram@tcs.com) + diff --git a/web/fmweb/fmweb.mif b/web/fmweb/fmweb.mif new file mode 100644 index 0000000000..d29d0ae4f9 --- /dev/null +++ b/web/fmweb/fmweb.mif @@ -0,0 +1,9878 @@ +<MIFFile 4.00> # Generated by FrameMaker xm4.0.1P1m +# Options: +# Paragraph Text +# Paragraph Tags +# Paragraph Formats +# Font Information +# Markers +# Anchored Frames +# Tables +# Graphics and TextRect Layout +# Master Page Items +# Condition Catalog +# Table Catalogs +# Font Catalog +# Paragraph Catalog +# Document Template +# Document Dictionary +# Variables +# Element Definitions +# Elements +# +<Units Uin > +<ColorCatalog + <Color + <ColorTag `Black'> + <ColorCyan 0.000000> + <ColorMagenta 0.000000> + <ColorYellow 0.000000> + <ColorBlack 100.000000> + <ColorAttribute ColorIsBlack > + <ColorAttribute ColorIsReserved > + > # end of Color + <Color + <ColorTag `White'> + <ColorCyan 0.000000> + <ColorMagenta 0.000000> + <ColorYellow 0.000000> + <ColorBlack 0.000000> + <ColorAttribute ColorIsWhite > + <ColorAttribute ColorIsReserved > + > # end of Color + <Color + <ColorTag `Red'> + <ColorCyan 0.000000> + <ColorMagenta 100.000000> + <ColorYellow 100.000000> + <ColorBlack 0.000000> + <ColorAttribute ColorIsRed > + <ColorAttribute ColorIsReserved > + > # end of Color + <Color + <ColorTag `Green'> + <ColorCyan 100.000000> + <ColorMagenta 0.000000> + <ColorYellow 100.000000> + <ColorBlack 0.000000> + <ColorAttribute ColorIsGreen > + <ColorAttribute ColorIsReserved > + > # end of Color + <Color + <ColorTag `Blue'> + <ColorCyan 100.000000> + <ColorMagenta 100.000000> + <ColorYellow 0.000000> + <ColorBlack 0.000000> + <ColorAttribute ColorIsBlue > + <ColorAttribute ColorIsReserved > + > # end of Color + <Color + <ColorTag `Cyan'> + <ColorCyan 100.000000> + <ColorMagenta 0.000000> + <ColorYellow 0.000000> + <ColorBlack 0.000000> + <ColorAttribute ColorIsCyan > + <ColorAttribute ColorIsReserved > + > # end of Color + <Color + <ColorTag `Magenta'> + <ColorCyan 0.000000> + <ColorMagenta 100.000000> + <ColorYellow 0.000000> + <ColorBlack 0.000000> + <ColorAttribute ColorIsMagenta > + <ColorAttribute ColorIsReserved > + > # end of Color + <Color + <ColorTag `Yellow'> + <ColorCyan 0.000000> + <ColorMagenta 0.000000> + <ColorYellow 100.000000> + <ColorBlack 0.000000> + <ColorAttribute ColorIsYellow > + <ColorAttribute ColorIsReserved > + > # end of Color +> # end of ColorCatalog +<ConditionCatalog + <Condition + <CTag `Fluff'> + <CState CShown > + <CStyle CAsIs > + > # end of Condition +> # end of ConditionCatalog +<PgfCatalog + <Pgf + <PgfTag `Body'> + <PgfUseNextTag No > + <PgfNextTag `'> + <PgfAlignment LeftRight > + <PgfFIndent 0.0"> + <PgfLIndent 0.0"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 5.0 pt> + <PgfSpAfter 0.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Helvetica'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Helvetica'> + <FSize 10.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum No > + <PgfNumTabs 0> + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `Bulleted'> + <PgfUseNextTag No > + <PgfNextTag `'> + <PgfAlignment Left > + <PgfFIndent 0.0"> + <PgfLIndent 0.25"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 5.0 pt> + <PgfSpAfter 0.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Helvetica'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Helvetica'> + <FSize 10.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum Yes > + <PgfNumFormat `\xa5 \\t'> + <PgfNumberFont `'> + <PgfNumAtEnd No > + <PgfNumTabs 1> + <TabStop + <TSX 0.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `CellBody'> + <PgfUseNextTag No > + <PgfNextTag `'> + <PgfAlignment Left > + <PgfFIndent 0.0"> + <PgfLIndent 0.0"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 0.0 pt> + <PgfSpAfter 0.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Helvetica'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Helvetica'> + <FSize 10.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum No > + <PgfNumTabs 0> + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `CellHeading'> + <PgfUseNextTag No > + <PgfNextTag `'> + <PgfAlignment Center > + <PgfFIndent 0.0"> + <PgfLIndent 0.0"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 0.0 pt> + <PgfSpAfter 0.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Helvetica'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Helvetica'> + <FSize 10.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum No > + <PgfNumTabs 0> + <PgfHyphenate No > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Middle > + <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `chunk'> + <PgfUseNextTag Yes > + <PgfNextTag `code'> + <PgfAlignment Left > + <PgfFIndent 0.0"> + <PgfLIndent 0.0"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 10.0 pt> + <PgfSpAfter 5.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `AvantGarde'> + <FVar `Regular'> + <FWeight `DemiBold'> + <FAngle `Regular'> + <FPostScriptName `AvantGarde-Demi'> + <FSize 12.0 pt> + <FUnderlining FSingle > + <FUnderline Yes > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum Yes > + <PgfNumFormat `C:<n+\>:\\t'> + <PgfNumberFont `'> + <PgfNumAtEnd No > + <PgfNumTabs 1> + <TabStop + <TSX 0.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `chunkTOC'> + <PgfUseNextTag No > + <PgfNextTag `'> + <PgfAlignment LeftRight > + <PgfFIndent 0.0"> + <PgfLIndent 0.0"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 5.0 pt> + <PgfSpAfter 0.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Helvetica'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Helvetica'> + <FSize 10.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum No > + <PgfNumTabs 2> + <TabStop + <TSX 0.41667"> + <TSType Left > + <TSLeaderStr `.'> + > # end of TabStop + <TabStop + <TSX 5.80556"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `code'> + <PgfUseNextTag No > + <PgfNextTag `'> + <PgfAlignment Left > + <PgfFIndent 0.25"> + <PgfLIndent 0.25"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 2.0 pt> + <PgfSpAfter 0.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `AvantGarde'> + <FVar `Regular'> + <FWeight `Book'> + <FAngle `Regular'> + <FPostScriptName `AvantGarde-Book'> + <FSize 10.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum No > + <PgfNumTabs 25> + <TabStop + <TSX 0.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 0.75"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 1.0"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 1.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 1.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 1.75"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 2.0"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 2.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 2.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 2.75"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 3.0"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 3.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 3.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 3.75"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 4.0"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 4.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 4.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 4.75"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 5.0"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 5.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 5.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 5.75"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 6.0"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 6.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 6.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `exchunk'> + <PgfUseNextTag Yes > + <PgfNextTag `code'> + <PgfAlignment Left > + <PgfFIndent 0.0"> + <PgfLIndent 0.0"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 10.0 pt> + <PgfSpAfter 5.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `AvantGarde'> + <FVar `Regular'> + <FWeight `DemiBold'> + <FAngle `Regular'> + <FPostScriptName `AvantGarde-Demi'> + <FSize 12.0 pt> + <FUnderlining FSingle > + <FUnderline Yes > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum Yes > + <PgfNumFormat `C:<n+\>:\\t'> + <PgfNumberFont `'> + <PgfNumAtEnd No > + <PgfNumTabs 1> + <TabStop + <TSX 0.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `File'> + <PgfUseNextTag Yes > + <PgfNextTag `code'> + <PgfAlignment Left > + <PgfFIndent 0.0"> + <PgfLIndent 0.0"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 7.0 pt> + <PgfSpAfter 7.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Bold'> + <FAngle `Regular'> + <FPostScriptName `Times-Bold'> + <FSize 18.0 pt> + <FUnderlining FSingle > + <FUnderline Yes > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 2> + <FColor `Red'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 4.0 pt> + <PgfAutoNum Yes > + <PgfNumFormat `File: '> + <PgfNumberFont `'> + <PgfNumAtEnd No > + <PgfNumTabs 1> + <TabStop + <TSX 0.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `Footnote'> + <PgfUseNextTag No > + <PgfNextTag `'> + <PgfAlignment Left > + <PgfFIndent 0.25"> + <PgfLIndent 0.41667"> + <PgfRIndent 0.25"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 0.0 pt> + <PgfSpAfter 0.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 10.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum No > + <PgfNumTabs 1> + <TabStop + <TSX 0.41667"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `Heading1'> + <PgfUseNextTag Yes > + <PgfNextTag `Body'> + <PgfAlignment Left > + <PgfFIndent 0.0"> + <PgfLIndent 0.0"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `Single Line'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 14.0 pt> + <PgfSpAfter 6.0 pt> + <PgfWithPrev No > + <PgfWithNext Yes > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Helvetica'> + <FVar `Regular'> + <FWeight `Bold'> + <FAngle `Regular'> + <FPostScriptName `Helvetica-Bold'> + <FSize 14.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum No > + <PgfNumTabs 0> + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `Heading2'> + <PgfUseNextTag Yes > + <PgfNextTag `Body'> + <PgfAlignment Left > + <PgfFIndent 0.0"> + <PgfLIndent 0.0"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 14.0 pt> + <PgfSpAfter 4.0 pt> + <PgfWithPrev No > + <PgfWithNext Yes > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Helvetica'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Helvetica'> + <FSize 14.0 pt> + <FUnderlining FSingle > + <FUnderline Yes > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 3.0 pt> + <PgfAutoNum No > + <PgfNumTabs 0> + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `HeadingRunIn'> + <PgfUseNextTag Yes > + <PgfNextTag `Body'> + <PgfAlignment Left > + <PgfFIndent 0.0"> + <PgfLIndent 0.0"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle RunIn > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 6.0 pt> + <PgfSpAfter 0.0 pt> + <PgfWithPrev No > + <PgfWithNext Yes > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Bold'> + <FAngle `Regular'> + <FPostScriptName `Times-Bold'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum No > + <PgfNumTabs 0> + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `Indented'> + <PgfUseNextTag No > + <PgfNextTag `'> + <PgfAlignment Left > + <PgfFIndent 0.25"> + <PgfLIndent 0.25"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 0.0 pt> + <PgfSpAfter 0.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum No > + <PgfNumTabs 1> + <TabStop + <TSX 0.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `Numbered'> + <PgfUseNextTag No > + <PgfNextTag `'> + <PgfAlignment Left > + <PgfFIndent 0.0"> + <PgfLIndent 0.25"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 0.0 pt> + <PgfSpAfter 0.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum Yes > + <PgfNumFormat `<n+\>.\\t'> + <PgfNumberFont `'> + <PgfNumAtEnd No > + <PgfNumTabs 1> + <TabStop + <TSX 0.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `Numbered1'> + <PgfUseNextTag Yes > + <PgfNextTag `Numbered'> + <PgfAlignment Left > + <PgfFIndent 0.0"> + <PgfLIndent 0.25"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 0.0 pt> + <PgfSpAfter 0.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum Yes > + <PgfNumFormat `<n=1\>.\\t'> + <PgfNumberFont `'> + <PgfNumAtEnd No > + <PgfNumTabs 1> + <TabStop + <TSX 0.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `perlcode'> + <PgfUseNextTag No > + <PgfNextTag `'> + <PgfAlignment Left > + <PgfFIndent 0.25"> + <PgfLIndent 0.25"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 0.0 pt> + <PgfSpAfter 0.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `AvantGarde'> + <FVar `Regular'> + <FWeight `Book'> + <FAngle `Regular'> + <FPostScriptName `AvantGarde-Book'> + <FSize 10.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum No > + <PgfNumTabs 21> + <TabStop + <TSX 0.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 0.75"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 1.0"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 1.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 1.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 1.75"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 2.0"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 2.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 2.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 3.0"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 3.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 4.0"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 4.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 4.75"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 5.0"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 5.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 5.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 5.75"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 6.0"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 6.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 6.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `Ref'> + <PgfUseNextTag No > + <PgfNextTag `'> + <PgfAlignment LeftRight > + <PgfFIndent 0.0"> + <PgfLIndent 0.25"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 2.0 pt> + <PgfSpAfter 0.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Helvetica'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Helvetica'> + <FSize 10.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum Yes > + <PgfNumFormat `R:<n+\>.\\t'> + <PgfNumberFont `'> + <PgfNumAtEnd No > + <PgfNumTabs 1> + <TabStop + <TSX 0.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `refersTo'> + <PgfUseNextTag No > + <PgfNextTag `'> + <PgfAlignment Left > + <PgfFIndent 0.25"> + <PgfLIndent 0.25"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 2.0 pt> + <PgfSpAfter 0.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `AvantGarde'> + <FVar `Regular'> + <FWeight `Book'> + <FAngle `Regular'> + <FPostScriptName `AvantGarde-Book'> + <FSize 10.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum No > + <PgfNumTabs 25> + <TabStop + <TSX 0.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 0.75"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 1.0"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 1.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 1.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 1.75"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 2.0"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 2.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 2.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 2.75"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 3.0"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 3.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 3.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 3.75"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 4.0"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 4.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 4.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 4.75"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 5.0"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 5.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 5.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 5.75"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 6.0"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 6.25"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 6.5"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `refersToTOC'> + <PgfUseNextTag No > + <PgfNextTag `'> + <PgfAlignment LeftRight > + <PgfFIndent 0.0"> + <PgfLIndent 0.0"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 5.0 pt> + <PgfSpAfter 0.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Helvetica'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Helvetica'> + <FSize 10.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum No > + <PgfNumTabs 1> + <TabStop + <TSX 0.18056"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `TableFootnote'> + <PgfUseNextTag No > + <PgfNextTag `'> + <PgfAlignment Left > + <PgfFIndent 0.25"> + <PgfLIndent 0.41667"> + <PgfRIndent 0.25"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 0.0 pt> + <PgfSpAfter 0.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 10.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum No > + <PgfNumTabs 1> + <TabStop + <TSX 0.41667"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `TableTitle'> + <PgfUseNextTag No > + <PgfNextTag `'> + <PgfAlignment Center > + <PgfFIndent 0.0"> + <PgfLIndent 0.0"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 0.0 pt> + <PgfSpAfter 0.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Bold'> + <FAngle `Regular'> + <FPostScriptName `Times-Bold'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum Yes > + <PgfNumFormat `T:Table <n+\>: '> + <PgfNumberFont `'> + <PgfNumAtEnd No > + <PgfNumTabs 0> + <PgfHyphenate No > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <Pgf + <PgfTag `Title'> + <PgfUseNextTag Yes > + <PgfNextTag `Body'> + <PgfAlignment Center > + <PgfFIndent 0.0"> + <PgfLIndent 0.0"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 18.0 pt> + <PgfSpAfter 8.0 pt> + <PgfWithPrev No > + <PgfWithNext Yes > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Helvetica'> + <FVar `Regular'> + <FWeight `Bold'> + <FAngle `Regular'> + <FPostScriptName `Helvetica-Bold'> + <FSize 18.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 3.0 pt> + <PgfAutoNum No > + <PgfNumTabs 0> + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf +> # end of PgfCatalog +<ElementDefCatalog +> # end of ElementDefCatalog +<FontCatalog + <Font + <FTag `code'> + <FFamily `AvantGarde'> + <FVar `Regular'> + <FWeight `Book'> + <FAngle `Regular'> + <FPostScriptName `AvantGarde-Book'> + <FOverline No > + <FStrike No > + <FChangeBar No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of Font + <Font + <FTag `Emphasis'> + <FAngle `Italic'> + > # end of Font + <Font + <FTag `EquationVariables'> + <FAngle `Italic'> + > # end of Font + <Font + <FTag `Symbol'> + <FFamily `Symbol'> + <FDW 0.0 pt> + > # end of Font +> # end of FontCatalog +<RulingCatalog + <Ruling + <RulingTag `Thin'> + <RulingPenWidth 0.5 pt> + <RulingGap 0.0 pt> + <RulingSeparation 0> + <RulingColor `Black'> + <RulingPen 0> + <RulingLines 1> + > # end of Ruling + <Ruling + <RulingTag `Medium'> + <RulingPenWidth 2.0 pt> + <RulingGap 0.0 pt> + <RulingSeparation 0> + <RulingColor `Black'> + <RulingPen 0> + <RulingLines 1> + > # end of Ruling + <Ruling + <RulingTag `Double'> + <RulingPenWidth 0.5 pt> + <RulingGap 2.0 pt> + <RulingSeparation 0> + <RulingColor `Black'> + <RulingPen 0> + <RulingLines 2> + > # end of Ruling + <Ruling + <RulingTag `Thick'> + <RulingPenWidth 3.0 pt> + <RulingGap 0.0 pt> + <RulingSeparation 0> + <RulingColor `Black'> + <RulingPen 0> + <RulingLines 1> + > # end of Ruling + <Ruling + <RulingTag `Very Thin'> + <RulingPenWidth 0.25 pt> + <RulingGap 0.0 pt> + <RulingSeparation 0> + <RulingColor `Black'> + <RulingPen 0> + <RulingLines 1> + > # end of Ruling +> # end of RulingCatalog +<TblCatalog + <TblFormat + <TblTag `Format A'> + <TblColumn + <TblColumnNum 0> + <TblColumnWidth 1.0"> + <TblColumnH + <PgfTag `CellHeading'> + > # end of TblColumnH + <TblColumnBody + <PgfTag `CellBody'> + > # end of TblColumnBody + <TblColumnF + <Pgf + <PgfTag `CellFooting'> + <PgfAlignment Center > + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfHyphenate No > + <PgfCellAlignment Middle > + <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt> + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + <TblColumn + <TblColumnNum 1> + <TblColumnWidth 1.0"> + <TblColumnH + <PgfTag `CellHeading'> + > # end of TblColumnH + <TblColumnBody + <PgfTag `CellBody'> + > # end of TblColumnBody + <TblColumnF + <Pgf + <PgfTag `CellFooting'> + <PgfAlignment Center > + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfHyphenate No > + <PgfCellAlignment Middle > + <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt> + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + <TblColumn + <TblColumnNum 2> + <TblColumnWidth 1.0"> + <TblColumnH + <PgfTag `CellHeading'> + > # end of TblColumnH + <TblColumnBody + <PgfTag `CellBody'> + > # end of TblColumnBody + <TblColumnF + <Pgf + <PgfTag `CellFooting'> + <PgfAlignment Center > + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfHyphenate No > + <PgfCellAlignment Middle > + <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt> + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + <TblColumn + <TblColumnNum 3> + <TblColumnWidth 1.0"> + <TblColumnH + <PgfTag `CellHeading'> + > # end of TblColumnH + <TblColumnBody + <PgfTag `CellBody'> + > # end of TblColumnBody + <TblColumnF + <Pgf + <PgfTag `CellFooting'> + <PgfAlignment Center > + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfHyphenate No > + <PgfCellAlignment Middle > + <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt> + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + <TblColumn + <TblColumnNum 4> + <TblColumnWidth 1.0"> + <TblColumnH + <PgfTag `CellHeading'> + > # end of TblColumnH + <TblColumnBody + <PgfTag `CellBody'> + > # end of TblColumnBody + <TblColumnF + <Pgf + <PgfTag `CellFooting'> + <PgfAlignment Center > + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfHyphenate No > + <PgfCellAlignment Middle > + <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt> + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + <TblCellMargins 6.0 pt 6.0 pt 6.0 pt 4.0 pt> + <TblLIndent 0.0"> + <TblRIndent 0.0"> + <TblAlignment Left > + <TblPlacement Anywhere > + <TblSpBefore 12.0 pt> + <TblSpAfter 12.0 pt> + <TblBlockSize 1> + <TblHFFill 15> + <TblHFSeparation 0> + <TblHFColor `Black'> + <TblBodyFill 15> + <TblBodySeparation 0> + <TblBodyColor `Black'> + <TblShadeByColumn No > + <TblShadePeriod 2> + <TblXFill 15> + <TblXSeparation 0> + <TblXColor `Black'> + <TblAltShadePeriod 2> + <TblLRuling `Thin'> + <TblBRuling `Thin'> + <TblRRuling `Thin'> + <TblTRuling `Thin'> + <TblColumnRuling `Thin'> + <TblXColumnRuling `Thin'> + <TblBodyRowRuling `Thin'> + <TblXRowRuling `Thin'> + <TblHFRowRuling `Thin'> + <TblSeparatorRuling `Double'> + <TblXColumnNum 1> + <TblRulingPeriod 4> + <TblLastBRuling No > + <TblTitlePlacement InHeader > + <TblTitlePgf1 + <PgfTag `TableTitle'> + > # end of TblTitlePgf1 + <TblTitleGap 6.0 pt> + <TblInitNumColumns 5> + <TblInitNumHRows 1> + <TblInitNumBodyRows 8> + <TblInitNumFRows 0> + <TblNumByColumn No > + > # end of TblFormat + <TblFormat + <TblTag `Format B'> + <TblColumn + <TblColumnNum 0> + <TblColumnWidth 1.0"> + <TblColumnH + <PgfTag `CellHeading'> + > # end of TblColumnH + <TblColumnBody + <PgfTag `CellBody'> + > # end of TblColumnBody + <TblColumnF + <Pgf + <PgfTag `CellFooting'> + <PgfAlignment Center > + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfHyphenate No > + <PgfCellAlignment Middle > + <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt> + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + <TblColumn + <TblColumnNum 1> + <TblColumnWidth 1.0"> + <TblColumnH + <PgfTag `CellHeading'> + > # end of TblColumnH + <TblColumnBody + <PgfTag `CellBody'> + > # end of TblColumnBody + <TblColumnF + <Pgf + <PgfTag `CellFooting'> + <PgfAlignment Center > + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfHyphenate No > + <PgfCellAlignment Middle > + <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt> + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + <TblColumn + <TblColumnNum 2> + <TblColumnWidth 1.0"> + <TblColumnH + <PgfTag `CellHeading'> + > # end of TblColumnH + <TblColumnBody + <PgfTag `CellBody'> + > # end of TblColumnBody + <TblColumnF + <Pgf + <PgfTag `CellFooting'> + <PgfAlignment Center > + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfHyphenate No > + <PgfCellAlignment Middle > + <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt> + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + <TblColumn + <TblColumnNum 3> + <TblColumnWidth 1.0"> + <TblColumnH + <PgfTag `CellHeading'> + > # end of TblColumnH + <TblColumnBody + <PgfTag `CellBody'> + > # end of TblColumnBody + <TblColumnF + <Pgf + <PgfTag `CellFooting'> + <PgfAlignment Center > + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfHyphenate No > + <PgfCellAlignment Middle > + <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt> + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + <TblColumn + <TblColumnNum 4> + <TblColumnWidth 1.0"> + <TblColumnH + <PgfTag `CellHeading'> + > # end of TblColumnH + <TblColumnBody + <PgfTag `CellBody'> + > # end of TblColumnBody + <TblColumnF + <Pgf + <PgfTag `CellFooting'> + <PgfAlignment Center > + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfHyphenate No > + <PgfCellAlignment Middle > + <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt> + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + <TblCellMargins 6.0 pt 6.0 pt 6.0 pt 4.0 pt> + <TblLIndent 0.0"> + <TblRIndent 0.0"> + <TblAlignment Center > + <TblPlacement Anywhere > + <TblSpBefore 12.0 pt> + <TblSpAfter 12.0 pt> + <TblBlockSize 1> + <TblHFFill 15> + <TblHFSeparation 0> + <TblHFColor `Black'> + <TblBodyFill 15> + <TblBodySeparation 0> + <TblBodyColor `Black'> + <TblShadeByColumn No > + <TblShadePeriod 2> + <TblXFill 15> + <TblXSeparation 0> + <TblXColor `Black'> + <TblAltShadePeriod 2> + <TblLRuling `'> + <TblBRuling `Thin'> + <TblRRuling `'> + <TblTRuling `Medium'> + <TblColumnRuling `Thin'> + <TblXColumnRuling `Thin'> + <TblBodyRowRuling `Thin'> + <TblXRowRuling `Thin'> + <TblHFRowRuling `Thin'> + <TblSeparatorRuling `Medium'> + <TblXColumnNum 1> + <TblRulingPeriod 4> + <TblLastBRuling No > + <TblTitlePlacement InHeader > + <TblTitlePgf1 + <PgfTag `TableTitle'> + > # end of TblTitlePgf1 + <TblTitleGap 6.0 pt> + <TblInitNumColumns 5> + <TblInitNumHRows 1> + <TblInitNumBodyRows 8> + <TblInitNumFRows 0> + <TblNumByColumn No > + > # end of TblFormat +> # end of TblCatalog +<Views + <View + <ViewNumber 1> + <ViewCutout `White'> + > # end of View + <View + <ViewNumber 2> + <ViewCutout `White'> + <ViewInvisible `Red'> + <ViewInvisible `Green'> + <ViewInvisible `Blue'> + <ViewInvisible `Cyan'> + <ViewInvisible `Magenta'> + > # end of View + <View + <ViewNumber 3> + <ViewInvisible `Black'> + <ViewCutout `White'> + > # end of View + <View + <ViewNumber 4> + <ViewCutout `White'> + > # end of View + <View + <ViewNumber 5> + <ViewCutout `White'> + > # end of View + <View + <ViewNumber 6> + <ViewCutout `White'> + > # end of View +> # end of Views +<VariableFormats + <VariableFormat + <VariableName `Page Count'> + <VariableDef `<$lastpagenum\>'> + > # end of VariableFormat + <VariableFormat + <VariableName `Current Date (Long)'> + <VariableDef `<$monthname\> <$daynum\>, <$year\>'> + > # end of VariableFormat + <VariableFormat + <VariableName `Current Date (Short)'> + <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'> + > # end of VariableFormat + <VariableFormat + <VariableName `Modification Date (Long)'> + <VariableDef `<$monthname\> <$daynum\>, <$year\> <$hour\>:<$minute00\> <$ampm\>'> + > # end of VariableFormat + <VariableFormat + <VariableName `Modification Date (Short)'> + <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'> + > # end of VariableFormat + <VariableFormat + <VariableName `Creation Date (Long)'> + <VariableDef `<$monthname\> <$daynum\>, <$year\>'> + > # end of VariableFormat + <VariableFormat + <VariableName `Creation Date (Short)'> + <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'> + > # end of VariableFormat + <VariableFormat + <VariableName `Filename (Long)'> + <VariableDef `<$fullfilename\>'> + > # end of VariableFormat + <VariableFormat + <VariableName `Filename (Short)'> + <VariableDef `<$filename\>'> + > # end of VariableFormat + <VariableFormat + <VariableName `Running H/F 1'> + <VariableDef `<$paratext[Title]\>'> + > # end of VariableFormat + <VariableFormat + <VariableName `Running H/F 2'> + <VariableDef `<$paratext[Heading1]\>'> + > # end of VariableFormat + <VariableFormat + <VariableName `Current Page #'> + <VariableDef `<$curpagenum\>'> + > # end of VariableFormat + <VariableFormat + <VariableName `Running H/F 3'> + <VariableDef `<$marker1\>'> + > # end of VariableFormat + <VariableFormat + <VariableName `Running H/F 4'> + <VariableDef `<$marker2\>'> + > # end of VariableFormat + <VariableFormat + <VariableName `Table Continuation'> + <VariableDef ` (Continued)'> + > # end of VariableFormat + <VariableFormat + <VariableName `Table Sheet'> + <VariableDef ` (Sheet <$tblsheetnum\> of <$tblsheetcount\>)'> + > # end of VariableFormat +> # end of VariableFormats +<XRefFormats + <XRefFormat + <XRefName `Heading & Page'> + <XRefDef `\xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>'> + > # end of XRefFormat + <XRefFormat + <XRefName `Page'> + <XRefDef `page\x11 <$pagenum\>'> + > # end of XRefFormat + <XRefFormat + <XRefName `See Heading & Page'> + <XRefDef `See \xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>.'> + > # end of XRefFormat + <XRefFormat + <XRefName `Table All'> + <XRefDef `Table\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'> + > # end of XRefFormat + <XRefFormat + <XRefName `Table Number & Page'> + <XRefDef `Table\x11 <$paranumonly\> on page\x11 <$pagenum\>'> + > # end of XRefFormat + <XRefFormat + <XRefName `chunkref'> + <XRefDef `<Emphasis\>\\<<$paratext\>\\\> , (<$paranum\>, p. <$pagenum\>)'> + > # end of XRefFormat + <XRefFormat + <XRefName `Ref'> + <XRefDef `[<$paranumonly\>]'> + > # end of XRefFormat +> # end of XRefFormats +<Document + <DViewRect 52 27 671 777 > + <DWindowRect 28 1 715 855 > + <DViewScale 100.0%> + <DNextUnique 432950> + <DPageSize 8.5" 11.0"> + <DStartPage 1> + <DPageNumStyle Arabic > + <DPagePointStyle Arabic > + <DTwoSides No > + <DParity FirstRight > + <DFrozenPages No > + <DPageRounding DeleteEmptyPages > + <DMaxInterLine 2.0 pt> + <DMaxInterPgf 6.0 pt> + <DFNoteMaxH 4.0"> + <FNoteStartNum 1> + <DFNoteRestart PerPage > + <DFNoteTag `Footnote'> + <DFNoteLabels `*\xa0 \xe0 '> + <DFNoteNumStyle Arabic > + <DFNoteAnchorPos FNSuperscript > + <DFNoteNumberPos FNBaseline > + <DFNoteAnchorPrefix `'> + <DFNoteAnchorSuffix `'> + <DFNoteNumberPrefix `'> + <DFNoteNumberSuffix `.\\t'> + <DTblFNoteTag `TableFootnote'> + <DTblFNoteLabels `*\xa0 \xe0 '> + <DTblFNoteNumStyle LCAlpha > + <DTblFNoteAnchorPos FNSuperscript > + <DTblFNoteNumberPos FNBaseline > + <DTblFNoteAnchorPrefix `'> + <DTblFNoteAnchorSuffix `'> + <DTblFNoteNumberPrefix `'> + <DTblFNoteNumberSuffix `.\\t'> + <DLinebreakChars `/ - \xd0 \xd1 '> + <DPunctuationChars `:;,.\xc9 !?'> + <DChBarGap 0.25"> + <DChBarWidth 2.0 pt> + <DChBarPosition LeftOfCol > + <DChBarColor `Black'> + <DAutoChBars No > + <DShowAllConditions No > + <DDisplayOverrides No > + <DViewOnly No > + <DViewOnlyXRef GotoBehavior > + <DViewOnlySelect Yes > + <DViewOnlyWinBorders Yes > + <DViewOnlyWinMenubar Yes > + <DViewOnlyWinPopup Yes > + <DViewOnlyWinPalette No > + <DGridOn No > + <DPageGrid 0.5"> + <DSnapGrid 0.125"> + <DSnapRotation 0.25> + <DRulersOn Yes > + <DFullRulers No > + <DGraphicsOff No > + <DCurrentView 1> + <DBordersOn No > + <DSymbolsOn No > + <DElementBordersOn No > + <DSmartQuotesOn No > + <DSmartSpacesOn No > + <DLanguage USEnglish > + <DSuperscriptSize 80.0%> + <DSubscriptSize 80.0%> + <DSmallCapsSize 80.0%> + <DSuperscriptShift 40.0%> + <DSubscriptShift 25.0%> + <DMathAlphaCharFontFamily `Times'> + <DMathSmallIntegral 14.0 pt> + <DMathMediumIntegral 18.0 pt> + <DMathLargeIntegral 24.0 pt> + <DMathSmallSigma 14.0 pt> + <DMathMediumSigma 18.0 pt> + <DMathLargeSigma 24.0 pt> + <DMathSmallLevel1 9.0 pt> + <DMathMediumLevel1 12.0 pt> + <DMathLargeLevel1 14.0 pt> + <DMathSmallLevel2 7.0 pt> + <DMathMediumLevel2 9.0 pt> + <DMathLargeLevel2 12.0 pt> + <DMathSmallLevel3 5.0 pt> + <DMathMediumLevel3 6.0 pt> + <DMathLargeLevel3 8.0 pt> + <DMathSmallHoriz 0.0 pt> + <DMathMediumHoriz 0.0 pt> + <DMathLargeHoriz 0.0 pt> + <DMathSmallVert 0.0 pt> + <DMathMediumVert 0.0 pt> + <DMathLargeVert 0.0 pt> + <DMathShowCustom No > + <DMathFunctions `'> + <DMathNumbers `'> + <DMathVariables `EquationVariables'> + <DMathStrings `'> + <DMathGreek `'> + <DMathCatalog > + <DElementCatalogScope Strict > + <DPrintSkipBlankPages Yes > + <DPrintSeparations No > +> # end of Document +<BookComponent + <FileName `<c\>litTOC.doc'> + <FileNameSuffix `TOC'> + <DeriveLinks No > + <DeriveType TOC > + <DeriveTag `chunk'> + <DeriveTag `refersTo'> +> # end of BookComponent +<InitialAutoNums +> # end of InitialAutoNums +<Dictionary +<OKWord `ChunkMode'> +<OKWord `CodeMode'> +<OKWord `FileMode'> +<OKWord `Knuth'> +<OKWord `MText'> +<OKWord `ParaMode'> +<OKWord `TeX'> +<OKWord `WYSIWIGness'> +<OKWord `WasteMode'> +<OKWord `WinWordWEB'> +<OKWord `XrefSrcText'> +<OKWord `bythe'> +<OKWord `chunkHeadings'> +<OKWord `chunkReferred'> +<OKWord `chunkref'> +<OKWord `chunksByName'> +<OKWord `currChunkHeading'> +<OKWord `currMarkerText'> +<OKWord `currModeProc'> +<OKWord `diff'> +<OKWord `fmweb'> +<OKWord `initializations'> +<OKWord `lookFor'> +<OKWord `lookahead'> +<OKWord `markerReferred'> +<OKWord `markerToHeading'> +<OKWord `meta'> +<OKWord `mif'> +<OKWord `newline'> +<OKWord `noweb'> +<OKWord `stderr'> +<OKWord `stdout'> +<OKWord `wc'> +> # end of Dictionary +<AFrames + <Frame + <ID 1> + <Unique 432614> + <Pen 15> + <Fill 15> + <PenWidth 1.0 pt> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Angle 360.0> + <Overprint No > + <ShapeRect 1.51562" 1.44444" 5.46875" 2.80556"> + <BRect 1.51562" 1.44444" 5.46875" 2.80556"> + <FrameType Below > + <Float No > + <NSOffset 0.0"> + <BLOffset -2.48611"> + <AnchorAlign Center > + <Cropped Yes > + <Ellipse + <Unique 432615> + <GroupID 2> + <Pen 0> + <Fill 7> + <PenWidth 0.5 pt> + <Overprint No > + <ShapeRect 2.93653" 1.99538" 0.61111" 0.52778"> + <BRect 2.93653" 1.99538" 0.61111" 0.52778"> + > # end of Ellipse + <Rectangle + <Unique 432616> + <GroupID 2> + <Pen 7> + <Overprint No > + <ShapeRect 2.45042" 2.12038" 0.68056" 0.30556"> + <BRect 2.45042" 2.12038" 0.68056" 0.30556"> + > # end of Rectangle + <PolyLine + <Unique 432617> + <GroupID 2> + <Pen 0> + <HeadCap Square > + <HeadCap ArrowHead > + <TailCap Square > + <ArrowStyle + <TipAngle 16> + <BaseAngle 90> + <Length 12.0 pt> + <HeadType Filled > + <ScaleHead Yes > + <ScaleFactor 0.25 pt> + > # end of ArrowStyle + <Overprint No > + <NumPoints 2> + <Point 3.07546" 2.4738"> + <Point 3.01373" 2.41978"> + > # end of PolyLine + <Group + <ID 2> + <Unique 432618> + <Overprint No > + > # end of Group + <Ellipse + <Unique 432619> + <GroupID 3> + <Overprint No > + <ShapeRect 2.93653" 1.17748" 0.61111" 0.52778"> + <BRect 2.93653" 1.17748" 0.61111" 0.52778"> + > # end of Ellipse + <Rectangle + <Unique 432620> + <GroupID 3> + <Pen 7> + <Overprint No > + <ShapeRect 2.45042" 1.30248" 0.68056" 0.30556"> + <BRect 2.45042" 1.30248" 0.68056" 0.30556"> + > # end of Rectangle + <PolyLine + <Unique 432621> + <GroupID 3> + <Pen 0> + <Overprint No > + <NumPoints 2> + <Point 3.07546" 1.65589"> + <Point 3.01373" 1.60188"> + > # end of PolyLine + <Group + <ID 3> + <Unique 432622> + <Overprint No > + > # end of Group + <Ellipse + <Unique 432623> + <GroupID 4> + <Overprint No > + <ShapeRect 2.93653" 0.33642" 0.61111" 0.52778"> + <BRect 2.93653" 0.33642" 0.61111" 0.52778"> + > # end of Ellipse + <Rectangle + <Unique 432624> + <GroupID 4> + <Pen 7> + <Overprint No > + <ShapeRect 2.45042" 0.46142" 0.68056" 0.30556"> + <BRect 2.45042" 0.46142" 0.68056" 0.30556"> + > # end of Rectangle + <PolyLine + <Unique 432625> + <GroupID 4> + <Pen 0> + <Overprint No > + <NumPoints 2> + <Point 3.07546" 0.81484"> + <Point 3.01373" 0.76082"> + > # end of PolyLine + <Group + <ID 4> + <Unique 432626> + <Overprint No > + > # end of Group + <TextLine + <Unique 432627> + <Overprint No > + <TLOrigin 0.30358" 1.47986"> + <TLAlignment Left > + <TLLanguage USEnglish > + <Font + <FTag `'> + <FFamily `Helvetica'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Helvetica'> + <FSize 10.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of Font + <String `Waste'> + > # end of TextLine + <TextLine + <Unique 432628> + <Overprint No > + <TLOrigin 1.38096" 1.47986"> + <TLAlignment Left > + <TLLanguage USEnglish > + <String `Para'> + > # end of TextLine + <TextLine + <Unique 432629> + <Overprint No > + <TLOrigin 2.84861" 0.66403"> + <TLAlignment Left > + <TLLanguage USEnglish > + <String `File'> + > # end of TextLine + <TextLine + <Unique 432630> + <Overprint No > + <TLOrigin 2.84861" 1.47986"> + <TLAlignment Left > + <TLLanguage USEnglish > + <String `Code'> + > # end of TextLine + <TextLine + <Unique 432631> + <Overprint No > + <TLOrigin 2.84861" 2.29569"> + <TLAlignment Left > + <TLLanguage USEnglish > + <String `Chunk'> + > # end of TextLine + <PolyLine + <Unique 432632> + <Overprint No > + <NumPoints 2> + <Point 0.75" 1.44444"> + <Point 1.25" 1.44444"> + > # end of PolyLine + <TextLine + <Unique 432633> + <Overprint No > + <TLOrigin 0.84722" 1.375"> + <TLAlignment Left > + <TLLanguage USEnglish > + <Font + <FTag `'> + <FFamily `AvantGarde'> + <FWeight `Book'> + <FPostScriptName `AvantGarde-Book'> + <FSize 7.0 pt> + > # end of Font + <String `Para'> + > # end of TextLine + <PolyLine + <Unique 432634> + <Overprint No > + <NumPoints 2> + <Point 1.625" 1.31944"> + <Point 2.75" 0.69444"> + > # end of PolyLine + <PolyLine + <Unique 432635> + <HeadCap Square > + <TailCap Square > + <TailCap ArrowHead > + <Overprint No > + <NumPoints 2> + <Point 0.75" 1.56944"> + <Point 1.25" 1.56944"> + > # end of PolyLine + <TextLine + <Unique 432636> + <Overprint No > + <TLOrigin 0.61111" 1.70356"> + <TLAlignment Left > + <TLLanguage USEnglish > + <String `All other pgf tags'> + > # end of TextLine + <TextLine + <Unique 432637> + <Overprint No > + <TLOrigin 1.62713" 1.01629"> + <TLAlignment Left > + <TLLanguage USEnglish > + <String `PgfTag File'> + > # end of TextLine + <TextLine + <Unique 432638> + <Overprint No > + <TLOrigin 2.00213" 1.55796"> + <TLAlignment Left > + <TLLanguage USEnglish > + <String `PgfTag code'> + > # end of TextLine + <PolyLine + <Unique 432639> + <HeadCap Square > + <HeadCap ArrowHead > + <TailCap Square > + <Overprint No > + <NumPoints 2> + <Point 1.75" 1.44444"> + <Point 2.75" 1.44444"> + > # end of PolyLine + <PolyLine + <Unique 432640> + <Overprint No > + <NumPoints 2> + <Point 1.625" 1.61111"> + <Point 2.75" 2.23611"> + > # end of PolyLine + <TextLine + <Unique 432641> + <Overprint No > + <TLOrigin 1.62713" 2.05078"> + <TLAlignment Left > + <TLLanguage USEnglish > + <String `PgfTag chunk'> + > # end of TextLine + <TextLine + <Unique 432642> + <Overprint No > + <TLOrigin 3.12713" 0.26629"> + <TLAlignment Left > + <TLLanguage USEnglish > + <String `String'> + > # end of TextLine + <TextLine + <Unique 432643> + <Overprint No > + <TLOrigin 2.66879" 1.1274"> + <TLAlignment Left > + <TLLanguage USEnglish > + <String `Char Tab, String, XrefSrcText'> + > # end of TextLine + <TextLine + <Unique 432644> + <Overprint No > + <TLOrigin 2.91879" 1.96074"> + <TLAlignment Left > + <TLLanguage USEnglish > + <String `MText , String'> + > # end of TextLine + <PolyLine + <Unique 432645> + <Overprint No > + <NumPoints 2> + <Point 3.27604" 2.23611"> + <Point 4.60937" 1.56944"> + > # end of PolyLine + <PolyLine + <Unique 432646> + <Overprint No > + <NumPoints 2> + <Point 3.15104" 0.61111"> + <Point 4.59549" 1.29167"> + > # end of PolyLine + <PolyLine + <Unique 432647> + <Overprint No > + <NumPoints 2> + <Point 3.23437" 1.45833"> + <Point 4.56771" 1.45833"> + > # end of PolyLine + <TextLine + <Unique 432648> + <Overprint No > + <TLOrigin 3.83546" 1.40518"> + <TLAlignment Left > + <TLLanguage USEnglish > + <String `End of para'> + > # end of TextLine + <TextLine + <Unique 432649> + <Overprint No > + <TLOrigin 4.64526" 1.47986"> + <TLAlignment Left > + <TLLanguage USEnglish > + <Font + <FTag `'> + <FFamily `Helvetica'> + <FWeight `Regular'> + <FPostScriptName `Helvetica'> + <FSize 10.0 pt> + > # end of Font + <String `Waste'> + > # end of TextLine + > # end of Frame +> # end of AFrames +<Tbls + <Tbl + <TblID 5> + <TblTag `Format A'> + <TblFormat + <TblColumn + <TblColumnNum 0> + <TblColumnWidth 1.0"> + <TblColumnH + <PgfTag `CellHeading'> + <Pgf + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + > # end of Pgf + > # end of TblColumnH + <TblColumnBody + <PgfTag `CellBody'> + <Pgf + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + > # end of Pgf + > # end of TblColumnBody + <TblColumnF + <Pgf + <PgfTag `CellFooting'> + <PgfAlignment Center > + <PgfHyphenate No > + <PgfCellAlignment Middle > + <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt> + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + <TblColumn + <TblColumnNum 1> + <TblColumnWidth 1.0"> + <TblColumnH + <PgfTag `CellHeading'> + <Pgf + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + > # end of Pgf + > # end of TblColumnH + <TblColumnBody + <PgfTag `CellBody'> + <Pgf + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + > # end of Pgf + > # end of TblColumnBody + <TblColumnF + <Pgf + <PgfTag `CellFooting'> + <PgfAlignment Center > + <PgfHyphenate No > + <PgfCellAlignment Middle > + <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt> + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + <TblColumn + <TblColumnNum 2> + <TblColumnWidth 1.0"> + <TblColumnH + <PgfTag `CellHeading'> + <Pgf + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + > # end of Pgf + > # end of TblColumnH + <TblColumnBody + <PgfTag `CellBody'> + <Pgf + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + > # end of Pgf + > # end of TblColumnBody + <TblColumnF + <Pgf + <PgfTag `CellFooting'> + <PgfAlignment Center > + <PgfHyphenate No > + <PgfCellAlignment Middle > + <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt> + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + <TblColumn + <TblColumnNum 3> + <TblColumnWidth 1.0"> + <TblColumnH + <PgfTag `CellHeading'> + <Pgf + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + > # end of Pgf + > # end of TblColumnH + <TblColumnBody + <PgfTag `CellBody'> + <Pgf + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + > # end of Pgf + > # end of TblColumnBody + <TblColumnF + <Pgf + <PgfTag `CellFooting'> + <PgfAlignment Center > + <PgfHyphenate No > + <PgfCellAlignment Middle > + <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt> + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + <TblColumn + <TblColumnNum 4> + <TblColumnWidth 1.0"> + <TblColumnH + <PgfTag `CellHeading'> + <Pgf + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + > # end of Pgf + > # end of TblColumnH + <TblColumnBody + <PgfTag `CellBody'> + <Pgf + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + > # end of Pgf + > # end of TblColumnBody + <TblColumnF + <Pgf + <PgfTag `CellFooting'> + <PgfAlignment Center > + <PgfHyphenate No > + <PgfCellAlignment Middle > + <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt> + > # end of Pgf + > # end of TblColumnF + > # end of TblColumn + > # end of TblFormat + <TblNumColumns 2> + <Unique 432562> + <TblColumnWidth 1.875"> + <TblColumnWidth 4.625"> + <TblTitleContent + <Notes + > # end of Notes + <Para + <Unique 432564> + <PgfTag `TableTitle'> + <PgfNumString `Table 1: '> + <ParaLine + <String `Important variables in fmweb'> + > + > # end of Para + > # end of TblTitleContent + <TblH + <Row + <RowMaxHeight 14.0"> + <RowHeight 0.33333"> + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432568> + <PgfTag `CellHeading'> + <ParaLine + <String `name'> + > + > # end of Para + > # end of CellContent + > # end of Cell + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432570> + <PgfTag `CellHeading'> + <ParaLine + <String `Description'> + > + > # end of Para + > # end of CellContent + > # end of Cell + > # end of Row + > # end of TblH + <TblBody + <Row + <RowMaxHeight 14.0"> + <RowHeight 0.44444"> + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432572> + <PgfTag `CellBody'> + <ParaLine + <String `%chunksByName'> + > + > # end of Para + > # end of CellContent + > # end of Cell + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432574> + <PgfTag `CellBody'> + <ParaLine + <String `An array of chunks, whose key is the heading of the chunk, and it\xd5 s value '> + > + <ParaLine + <String `is the entire code in that section.'> + > + > # end of Para + > # end of CellContent + > # end of Cell + > # end of Row + <Row + <RowMaxHeight 14.0"> + <RowHeight 0.27778"> + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432576> + <PgfTag `CellBody'> + <ParaLine + <String `$currChunkHeading'> + > + > # end of Para + > # end of CellContent + > # end of Cell + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432578> + <PgfTag `CellBody'> + <ParaLine + <String `The current chunk heading'> + > + > # end of Para + > # end of CellContent + > # end of Cell + > # end of Row + <Row + <RowMaxHeight 14.0"> + <RowHeight 0.44444"> + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432580> + <PgfTag `CellBody'> + <ParaLine + <String `@chunkHeadings'> + > + > # end of Para + > # end of CellContent + > # end of Cell + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432582> + <PgfTag `CellBody'> + <ParaLine + <String `A list of all the chunk headings, in order of appearance. If a heading has '> + > + <ParaLine + <String `been encountered before, it is not appended to this array.'> + > + > # end of Para + > # end of CellContent + > # end of Cell + > # end of Row + <Row + <RowMaxHeight 14.0"> + <RowHeight 0.44444"> + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432584> + <PgfTag `CellBody'> + <ParaLine + <String `%markerReferred'> + > + > # end of Para + > # end of CellContent + > # end of Cell + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432586> + <PgfTag `CellBody'> + <ParaLine + <String `Keeps track of all those chunk headings that have been referred to (by a '> + > + <ParaLine + <String `Frame cross reference).'> + > + > # end of Para + > # end of CellContent + > # end of Cell + > # end of Row + <Row + <RowMaxHeight 14.0"> + <RowHeight 1.11111"> + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432588> + <PgfTag `CellBody'> + <ParaLine + <String `%markerToHeading'> + > + > # end of Para + > # end of CellContent + > # end of Cell + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432590> + <PgfTag `CellBody'> + <ParaLine + <String `A translation table - Each chunk heading has a text (the \xd2 heading\xd3 ) that is '> + > + <ParaLine + <String `visible, and a marker text that Frame inserts. Unfortunately, these two '> + > + <ParaLine + <String `are not necessarily identical. This translation is necessary since the '> + > + <ParaLine + <String `script allows more than one chunk to have the same name (which is then '> + > + <ParaLine + <String `concatenated), but a cross reference can be created to only of these '> + > + <ParaLine + <String `paragraphs. '> + > + > # end of Para + > # end of CellContent + > # end of Cell + > # end of Row + <Row + <RowMaxHeight 14.0"> + <RowHeight 0.27778"> + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432592> + <PgfTag `CellBody'> + <ParaLine + <String `$line'> + > + > # end of Para + > # end of CellContent + > # end of Cell + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432594> + <PgfTag `CellBody'> + <ParaLine + <String `Global var that contains the current line from the input MIF file.'> + > + > # end of Para + > # end of CellContent + > # end of Cell + > # end of Row + <Row + <RowMaxHeight 14.0"> + <RowHeight 0.61111"> + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432596> + <PgfTag `CellBody'> + <ParaLine + <String `$currMarkerText'> + > + > # end of Para + > # end of CellContent + > # end of Cell + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432598> + <PgfTag `CellBody'> + <ParaLine + <String `While evaluating a chunk paragraph, this keeps track of the current '> + > + <ParaLine + <String `marker text. Subsequently, the text of the paragraph and this marker text '> + > + <ParaLine + <String `are related by %markerToHeading'> + > + > # end of Para + > # end of CellContent + > # end of Cell + > # end of Row + <Row + <RowMaxHeight 14.0"> + <RowHeight 0.44444"> + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432600> + <PgfTag `CellBody'> + <ParaLine + <String `$currModeProc'> + > + > # end of Para + > # end of CellContent + > # end of Cell + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432602> + <PgfTag `CellBody'> + <ParaLine + <String `A reference to a mode subroutine. Each of these subroutines is part of a '> + > + <ParaLine + <String `state diagram (shown below).'> + > + > # end of Para + > # end of CellContent + > # end of Cell + > # end of Row + <Row + <RowMaxHeight 14.0"> + <RowHeight 0.27778"> + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432604> + <PgfTag `CellBody'> + <ParaLine + <String `@lookFor'> + > + > # end of Para + > # end of CellContent + > # end of Cell + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432606> + <PgfTag `CellBody'> + <ParaLine + <String `The set of tokens in which this state is interested.'> + > + > # end of Para + > # end of CellContent + > # end of Cell + > # end of Row + <Row + <RowMaxHeight 14.0"> + <RowHeight 0.61111"> + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432608> + <PgfTag `CellBody'> + <ParaLine + <String `%chunkReferred'> + > + > # end of Para + > # end of CellContent + > # end of Cell + <Cell + <CellContent + <Notes + > # end of Notes + <Para + <Unique 432610> + <PgfTag `CellBody'> + <ParaLine + <String `This array (keyed by chunk heading) tracks all chunks that have been '> + > + <ParaLine + <String `referred to, by other chunks. The chunks that don\xd5 t belong to this cate'> + <Char SoftHyphen > + > + <ParaLine + <String `gory are the top-level chunks. '> + > + > # end of Para + > # end of CellContent + > # end of Cell + > # end of Row + > # end of TblBody +> # end of Tbl +> # end of Tbls +<Page + <Unique 94657> + <PageType LeftMasterPage > + <PageTag `Left'> + <PageSize 8.5" 11.0"> + <PageOrientation Portrait > + <PageAngle 0.0> + <TextRect + <ID 6> + <Unique 427029> + <Pen 15> + <Fill 15> + <PenWidth 1.0 pt> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Overprint No > + <ShapeRect 1.0" 0.5" 6.5" 0.13889"> + <BRect 1.0" 0.5" 6.5" 0.13889"> + <TRNext 0> + > # end of TextRect + <TextRect + <ID 7> + <Unique 427027> + <Overprint No > + <ShapeRect 1.0" 10.40741" 6.5" 0.13889"> + <BRect 1.0" 10.40741" 6.5" 0.13889"> + <TRNext 0> + > # end of TextRect + <TextRect + <ID 8> + <Unique 427019> + <Overprint No > + <ShapeRect 1.0" 1.0" 6.5" 9.0"> + <BRect 1.0" 1.0" 6.5" 9.0"> + <TRNext 0> + > # end of TextRect +> # end of Page +<Page + <Unique 94658> + <PageType RightMasterPage > + <PageTag `Right'> + <PageSize 8.5" 11.0"> + <PageOrientation Portrait > + <PageAngle 0.0> + <TextRect + <ID 9> + <Unique 427025> + <Pen 15> + <Fill 15> + <PenWidth 1.0 pt> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Overprint No > + <ShapeRect 1.0" 0.5" 6.5" 0.13889"> + <BRect 1.0" 0.5" 6.5" 0.13889"> + <TRNext 0> + > # end of TextRect + <TextRect + <ID 10> + <Unique 427023> + <Overprint No > + <ShapeRect 1.0" 10.40741" 6.5" 0.13889"> + <BRect 1.0" 10.40741" 6.5" 0.13889"> + <TRNext 0> + > # end of TextRect + <TextRect + <ID 11> + <Unique 427021> + <Overprint No > + <ShapeRect 1.0" 1.0" 6.5" 9.0"> + <BRect 1.0" 1.0" 6.5" 9.0"> + <TRNext 0> + > # end of TextRect + <PolyLine + <Unique 432750> + <Pen 4> + <PenWidth 3.0 pt> + <HeadCap Square > + <TailCap Square > + <Overprint No > + <NumPoints 2> + <Point 0.45833" 10.25"> + <Point 8.29167" 10.25"> + > # end of PolyLine +> # end of Page +<Page + <Unique 94659> + <PageType ReferencePage > + <PageTag `Reference'> + <PageSize 8.5" 11.0"> + <PageOrientation Portrait > + <PageAngle 0.0> + <TextLine + <Unique 94660> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Overprint No > + <TLOrigin 1.0" 0.4489"> + <TLAlignment Left > + <TLLanguage USEnglish > + <Font + <FTag `'> + <FFamily `Helvetica'> + <FVar `Regular'> + <FWeight `Bold'> + <FAngle `Regular'> + <FPostScriptName `Helvetica-Bold'> + <FSize 12.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern No > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of Font + <String `Footnote'> + > # end of TextLine + <TextLine + <Unique 94661> + <Overprint No > + <TLOrigin 1.0" 1.70441"> + <TLAlignment Left > + <TLLanguage USEnglish > + <String `Single Line'> + > # end of TextLine + <Frame + <Unique 94662> + <Pen 15> + <Fill 15> + <PenWidth 1.0 pt> + <Angle 360.0> + <Overprint No > + <ShapeRect 1.0" 0.54167" 2.5" 0.20833"> + <BRect 1.0" 0.54167" 2.5" 0.20833"> + <FrameType NotAnchored > + <Tag `Footnote'> + <PolyLine + <Unique 427003> + <Pen 0> + <PenWidth 0.5 pt> + <HeadCap Square > + <TailCap Square > + <Overprint No > + <NumPoints 2> + <Point 0.125" 0.02778"> + <Point 2.125" 0.02778"> + > # end of PolyLine + > # end of Frame + <TextLine + <Unique 94664> + <Overprint No > + <TLOrigin 1.0" 2.45441"> + <TLAlignment Left > + <TLLanguage USEnglish > + <String `Double Line'> + > # end of TextLine + <Frame + <Unique 94665> + <Pen 15> + <PenWidth 1.0 pt> + <Angle 360.0> + <Overprint No > + <ShapeRect 1.0" 2.58333" 6.5" 0.16667"> + <BRect 1.0" 2.58333" 6.5" 0.16667"> + <FrameType NotAnchored > + <Tag `Double Line'> + <PolyLine + <Unique 427007> + <Pen 0> + <Overprint No > + <NumPoints 2> + <Point 0.0" 0.01389"> + <Point 6.5" 0.01389"> + > # end of PolyLine + <PolyLine + <Unique 427009> + <Overprint No > + <NumPoints 2> + <Point 0.0" 0.05556"> + <Point 6.5" 0.05556"> + > # end of PolyLine + > # end of Frame + <Frame + <Unique 94668> + <Pen 15> + <Angle 360.0> + <Overprint No > + <ShapeRect 1.0" 1.86111" 6.5" 0.13889"> + <BRect 1.0" 1.86111" 6.5" 0.13889"> + <FrameType NotAnchored > + <Tag `Single Line'> + <PolyLine + <Unique 427012> + <Pen 0> + <Overprint No > + <NumPoints 2> + <Point 0.0" 0.01389"> + <Point 6.5" 0.01389"> + > # end of PolyLine + > # end of Frame + <Frame + <Unique 94670> + <Pen 15> + <Angle 360.0> + <Overprint No > + <ShapeRect 1.0" 1.25" 2.5" 0.08333"> + <BRect 1.0" 1.25" 2.5" 0.08333"> + <FrameType NotAnchored > + <Tag `TableFootnote'> + > # end of Frame + <TextLine + <Unique 94671> + <Overprint No > + <TLOrigin 0.96836" 1.11233"> + <TLAlignment Left > + <TLLanguage USEnglish > + <String `TableFootnote'> + > # end of TextLine +> # end of Page +<Page + <Unique 432787> + <PageType ReferencePage > + <PageTag `TOC'> + <PageSize 8.5" 11.0"> + <PageOrientation Portrait > + <PageAngle 0.0> + <TextRect + <ID 12> + <Unique 432816> + <Pen 15> + <Fill 7> + <PenWidth 0.5 pt> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Overprint No > + <ShapeRect 0.59722" 1.01389" 7.38889" 1.33333"> + <BRect 0.59722" 1.01389" 7.38889" 1.33333"> + <TRNext 0> + > # end of TextRect +> # end of Page +<Page + <Unique 996720> + <PageType BodyPage > + <PageNum `1'> + <PageSize 8.5" 11.0"> + <PageOrientation Portrait > + <PageAngle 0.0> + <PageBackground `Default'> + <TextRect + <ID 13> + <Unique 427031> + <Pen 15> + <Fill 15> + <PenWidth 1.0 pt> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Overprint No > + <ShapeRect 1.0" 1.0" 6.5" 9.0"> + <BRect 1.0" 1.0" 6.5" 9.0"> + <TRNext 14> + > # end of TextRect +> # end of Page +<Page + <Unique 427187> + <PageType BodyPage > + <PageNum `2'> + <PageSize 8.5" 11.0"> + <PageOrientation Portrait > + <PageAngle 0.0> + <PageBackground `Default'> + <TextRect + <ID 14> + <Unique 427188> + <Pen 15> + <Fill 15> + <PenWidth 1.0 pt> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Overprint No > + <ShapeRect 1.0" 1.0" 6.5" 9.0"> + <BRect 1.0" 1.0" 6.5" 9.0"> + <TRNext 15> + > # end of TextRect +> # end of Page +<Page + <Unique 427260> + <PageType BodyPage > + <PageNum `3'> + <PageSize 8.5" 11.0"> + <PageOrientation Portrait > + <PageAngle 0.0> + <PageBackground `Default'> + <TextRect + <ID 15> + <Unique 427261> + <Pen 15> + <Fill 15> + <PenWidth 1.0 pt> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Overprint No > + <ShapeRect 1.0" 1.0" 6.5" 9.0"> + <BRect 1.0" 1.0" 6.5" 9.0"> + <TRNext 16> + > # end of TextRect +> # end of Page +<Page + <Unique 427334> + <PageType BodyPage > + <PageNum `4'> + <PageSize 8.5" 11.0"> + <PageOrientation Portrait > + <PageAngle 0.0> + <PageBackground `Default'> + <TextRect + <ID 16> + <Unique 427335> + <Pen 15> + <Fill 15> + <PenWidth 1.0 pt> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Overprint No > + <ShapeRect 1.0" 1.0" 6.5" 9.0"> + <BRect 1.0" 1.0" 6.5" 9.0"> + <TRNext 17> + > # end of TextRect +> # end of Page +<Page + <Unique 427586> + <PageType BodyPage > + <PageNum `5'> + <PageSize 8.5" 11.0"> + <PageOrientation Portrait > + <PageAngle 0.0> + <PageBackground `Default'> + <TextRect + <ID 17> + <Unique 427587> + <Pen 15> + <Fill 15> + <PenWidth 1.0 pt> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Overprint No > + <ShapeRect 1.0" 1.0" 6.5" 9.0"> + <BRect 1.0" 1.0" 6.5" 9.0"> + <TRNext 18> + > # end of TextRect +> # end of Page +<Page + <Unique 432656> + <PageType BodyPage > + <PageNum `6'> + <PageSize 8.5" 11.0"> + <PageOrientation Portrait > + <PageAngle 0.0> + <PageBackground `Default'> + <TextRect + <ID 18> + <Unique 432657> + <Pen 15> + <Fill 15> + <PenWidth 1.0 pt> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Overprint No > + <ShapeRect 1.0" 1.0" 6.5" 9.0"> + <BRect 1.0" 1.0" 6.5" 9.0"> + <TRNext 19> + > # end of TextRect +> # end of Page +<Page + <Unique 432659> + <PageType BodyPage > + <PageNum `7'> + <PageSize 8.5" 11.0"> + <PageOrientation Portrait > + <PageAngle 0.0> + <PageBackground `Default'> + <TextRect + <ID 19> + <Unique 432660> + <Pen 15> + <Fill 15> + <PenWidth 1.0 pt> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Overprint No > + <ShapeRect 1.0" 1.0" 6.5" 9.0"> + <BRect 1.0" 1.0" 6.5" 9.0"> + <TRNext 20> + > # end of TextRect +> # end of Page +<Page + <Unique 432662> + <PageType BodyPage > + <PageNum `8'> + <PageSize 8.5" 11.0"> + <PageOrientation Portrait > + <PageAngle 0.0> + <PageBackground `Default'> + <TextRect + <ID 20> + <Unique 432663> + <Pen 15> + <Fill 15> + <PenWidth 1.0 pt> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Overprint No > + <ShapeRect 1.0" 1.0" 6.5" 9.0"> + <BRect 1.0" 1.0" 6.5" 9.0"> + <TRNext 21> + > # end of TextRect +> # end of Page +<Page + <Unique 432665> + <PageType BodyPage > + <PageNum `9'> + <PageSize 8.5" 11.0"> + <PageOrientation Portrait > + <PageAngle 0.0> + <PageBackground `Default'> + <TextRect + <ID 21> + <Unique 432666> + <Pen 15> + <Fill 15> + <PenWidth 1.0 pt> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Overprint No > + <ShapeRect 1.0" 1.0" 6.5" 9.0"> + <BRect 1.0" 1.0" 6.5" 9.0"> + <TRNext 22> + > # end of TextRect +> # end of Page +<Page + <Unique 432668> + <PageType BodyPage > + <PageNum `10'> + <PageSize 8.5" 11.0"> + <PageOrientation Portrait > + <PageAngle 0.0> + <PageBackground `Default'> + <TextRect + <ID 22> + <Unique 432669> + <Pen 15> + <Fill 15> + <PenWidth 1.0 pt> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Overprint No > + <ShapeRect 1.0" 1.0" 6.5" 9.0"> + <BRect 1.0" 1.0" 6.5" 9.0"> + <TRNext 23> + > # end of TextRect +> # end of Page +<Page + <Unique 432671> + <PageType BodyPage > + <PageNum `11'> + <PageSize 8.5" 11.0"> + <PageOrientation Portrait > + <PageAngle 0.0> + <PageBackground `Default'> + <TextRect + <ID 23> + <Unique 432672> + <Pen 15> + <Fill 15> + <PenWidth 1.0 pt> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Overprint No > + <ShapeRect 1.0" 1.0" 6.5" 9.0"> + <BRect 1.0" 1.0" 6.5" 9.0"> + <TRNext 24> + > # end of TextRect +> # end of Page +<Page + <Unique 432674> + <PageType BodyPage > + <PageNum `12'> + <PageSize 8.5" 11.0"> + <PageOrientation Portrait > + <PageAngle 0.0> + <PageBackground `Default'> + <TextRect + <ID 24> + <Unique 432675> + <Pen 15> + <Fill 15> + <PenWidth 1.0 pt> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Overprint No > + <ShapeRect 1.0" 1.0" 6.5" 9.0"> + <BRect 1.0" 1.0" 6.5" 9.0"> + <TRNext 25> + > # end of TextRect +> # end of Page +<Page + <Unique 432677> + <PageType BodyPage > + <PageNum `13'> + <PageSize 8.5" 11.0"> + <PageOrientation Portrait > + <PageAngle 0.0> + <PageBackground `Default'> + <TextRect + <ID 25> + <Unique 432678> + <Pen 15> + <Fill 15> + <PenWidth 1.0 pt> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Overprint No > + <ShapeRect 1.0" 1.0" 6.5" 9.0"> + <BRect 1.0" 1.0" 6.5" 9.0"> + <TRNext 26> + > # end of TextRect +> # end of Page +<Page + <Unique 432680> + <PageType BodyPage > + <PageNum `14'> + <PageSize 8.5" 11.0"> + <PageOrientation Portrait > + <PageAngle 0.0> + <PageBackground `Default'> + <TextRect + <ID 26> + <Unique 432681> + <Pen 15> + <Fill 15> + <PenWidth 1.0 pt> + <Separation 0> + <ObColor `Black'> + <DashedPattern + <DashedStyle Solid > + > # end of DashedPattern + <Overprint No > + <ShapeRect 1.0" 1.0" 6.5" 9.0"> + <BRect 1.0" 1.0" 6.5" 9.0"> + <TRNext 0> + > # end of TextRect +> # end of Page +<TextFlow + <TFTag `A'> + <TFAutoConnect Yes > + <Notes + > # end of Notes + <Para + <Unique 427020> + <Pgf + <PgfTag `Body'> + <PgfUseNextTag No > + <PgfNextTag `'> + <PgfAlignment LeftRight > + <PgfFIndent 0.0"> + <PgfLIndent 0.0"> + <PgfRIndent 0.0"> + <PgfTopSeparator `'> + <PgfBotSeparator `'> + <PgfPlacement Anywhere > + <PgfPlacementStyle Normal > + <PgfRunInDefaultPunct `. '> + <PgfSpBefore 5.0 pt> + <PgfSpAfter 0.0 pt> + <PgfWithPrev No > + <PgfWithNext No > + <PgfBlockSize 1> + <PgfFont + <FTag `'> + <FFamily `Helvetica'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Helvetica'> + <FSize 10.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern Yes > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Proportional > + <PgfLeading 2.0 pt> + <PgfAutoNum No > + <PgfNumTabs 0> + <PgfHyphenate Yes > + <HyphenMaxLines 2> + <HyphenMinPrefix 3> + <HyphenMinSuffix 3> + <HyphenMinWord 5> + <PgfLetterSpace No > + <PgfMinWordSpace 90> + <PgfOptWordSpace 100> + <PgfMaxWordSpace 110> + <PgfLanguage USEnglish > + <PgfCellAlignment Top > + <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt> + <PgfCellLMarginFixed No > + <PgfCellTMarginFixed No > + <PgfCellRMarginFixed No > + <PgfCellBMarginFixed No > + > # end of Pgf + <ParaLine + <TextRectID 8> + > + > # end of Para +> # end of TextFlow +<TextFlow + <TFTag `A'> + <TFAutoConnect Yes > + <Notes + > # end of Notes + <Para + <Unique 427022> + <PgfTag `Body'> + <ParaLine + <TextRectID 11> + > + > # end of Para +> # end of TextFlow +<TextFlow + <Notes + > # end of Notes + <Para + <Unique 427024> + <Pgf + <PgfTag `Footer'> + <PgfSpBefore 0.0 pt> + <PgfFont + <FTag `'> + <FFamily `Times'> + <FVar `Regular'> + <FWeight `Regular'> + <FAngle `Regular'> + <FPostScriptName `Times-Roman'> + <FSize 10.0 pt> + <FUnderlining FNoUnderlining > + <FUnderline No > + <FDoubleUnderline No > + <FNumericUnderline No > + <FOverline No > + <FStrike No > + <FChangeBar No > + <FOutline No > + <FShadow No > + <FPairKern No > + <FCase FAsTyped > + <FPosition FNormal > + <FSupScript No > + <FSubScript No > + <FDX 0.0 pt> + <FDY 0.0 pt> + <FDW 0.0 pt> + <FSeparation 0> + <FColor `Black'> + > # end of PgfFont + <PgfLineSpacing Fixed > + <PgfNumTabs 2> + <TabStop + <TSX 3.25"> + <TSType Center > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 6.5"> + <TSType Right > + <TSLeaderStr ` '> + > # end of TabStop + <HyphenMinPrefix 2> + <HyphenMinSuffix 2> + <PgfMinWordSpace 75> + <PgfMaxWordSpace 125> + > # end of Pgf + <ParaLine + <TextRectID 10> + <Char Tab > + <Char Tab > + <String `.. '> + <Variable + <VariableName `Current Page #'> + <Unique 432753> + > # end of Variable + > + > # end of Para +> # end of TextFlow +<TextFlow + <Notes + > # end of Notes + <Para + <Unique 427026> + <Pgf + <PgfTag `Header'> + > # end of Pgf + <ParaLine + <TextRectID 9> + > + > # end of Para +> # end of TextFlow +<TextFlow + <Notes + > # end of Notes + <Para + <Unique 427028> + <Pgf + <PgfTag `Footer'> + > # end of Pgf + <ParaLine + <TextRectID 7> + > + > # end of Para +> # end of TextFlow +<TextFlow + <Notes + > # end of Notes + <Para + <Unique 427030> + <Pgf + <PgfTag `Header'> + > # end of Pgf + <ParaLine + <TextRectID 6> + > + > # end of Para +> # end of TextFlow +<TextFlow + <TFTag `A'> + <TFAutoConnect Yes > + <Notes + > # end of Notes + <Para + <Unique 432250> + <PgfTag `Title'> + <Pgf + <PgfBotSeparator `Double Line'> + > # end of Pgf + <ParaLine + <TextRectID 13> + <Font + <FTag `'> + <FFamily `AvantGarde'> + <FWeight `DemiBold'> + <FPostScriptName `AvantGarde-Demi'> + > # end of Font + <Conditional + <InCondition `Fluff'> + > # end of Conditional + <String `fmweb'> + <Font + <FTag `'> + > # end of Font + <String `: Literate Programming using FrameMaker'> + > + > # end of Para + <Para + <Unique 432251> + <PgfTag `Body'> + <Pgf + <PgfAlignment Center > + <PgfNumTabs 1> + <TabStop + <TSX 6.5"> + <TSType Right > + <TSLeaderStr ` '> + > # end of TabStop + > # end of Pgf + <ParaLine + <String `Version 1.0'> + <Char HardReturn > + > + <ParaLine + <Char Tab > + <String `Sriram Srinivasan'> + <Char HardReturn > + > + <ParaLine + <Char Tab > + <String `('> + <Font + <FTag `'> + <FAngle `Oblique'> + <FPostScriptName `Helvetica-Oblique'> + > # end of Font + <String `sriram@tcs.com'> + <Font + <FTag `'> + > # end of Font + <String `)'> + > + > # end of Para + <Para + <Unique 432252> + <PgfTag `Heading1'> + <ParaLine + <String `Introduction'> + > + > # end of Para + <Para + <Unique 432253> + <PgfTag `Body'> + <ParaLine + <String `This document explains a simple approach for doing literate programming using FrameMaker, a word pro'> + <Char SoftHyphen > + > + <ParaLine + <String `cessing system. It is almost identical to the approach taken by WinWordWEB '> + <XRef + <XRefName `Ref'> + <XRefSrcText `32486: Ref: 1. WEB: http://info.desy.de/user/projects/LitProg/HTML.html'> + <XRefSrcFile `'> + <Unique 432255> + > # end of XRef + <String `[2]'> + <XRefEnd > + <String `, except that it can addi'> + <Char SoftHyphen > + > + <ParaLine + <String `tionally be used in batch mode.'> + > + > # end of Para + <Para + <Unique 432257> + <PgfTag `Body'> + <ParaLine + <String `All implementations of literate programming provide facilities to break a piece of code into digestible '> + > + <ParaLine + <String `chunks which can be documented individually, and explained in any order. The only difference is in the way '> + > + <ParaLine + <String `the document should be written so that a tool can separate the code from the rest of the documentation. '> + > + <ParaLine + <String `WEB and such other tools provide a way of doing \xd2 in-band signalling\xd3 , to borrow a term from communica'> + <Char SoftHyphen > + > + <ParaLine + <String `tions. The programmer annotates different parts of a document by keywords, and a program such as '> + > + <ParaLine + <String `weave or tangle recognizes these keywords. In addition, these programs provide features such as section '> + > + <ParaLine + <String `numbering, indexing etc. and language specific features such as pretty-printing, macro expansion etc.'> + > + > # end of Para + <Para + <Unique 432258> + <PgfTag `Body'> + <ParaLine + <String `The other approach is to do \xd2 out-of-band signalling\xd3 , where the formatting information is essentially kept '> + > + <ParaLine + <String `out of the documentation. This is the approach taken by fmweb and WinWordWEB. '> + > + > # end of Para + <Para + <Unique 432259> + <PgfTag `Body'> + <ParaLine + <String `There are a couple of reasons why I don\xd5 t use WEB based tools.'> + > + > # end of Para + <Para + <Unique 432260> + <PgfTag `Bulleted'> + <PgfNumString `\xa5 \t'> + <ParaLine + <String `It is always nice to see the output of a literate programming effort, but the input is rather messy. I dis'> + <Char SoftHyphen > + > + <ParaLine + <String `like seeing a lot of meta characters (like @, <<, \\, [[ ) etc. The sections are not immediately visible - '> + > + <ParaLine + <String `one goes around looking for \xd2 \\section\xd3 , for example. I do a fair amount of coding in '> + <Font + <FTag `code'> + > # end of Font + <String `perl'> + <Font + <FTag `'> + > # end of Font + <String `, and the two '> + > + <ParaLine + <String `notational structures put together make my head swim, esp. when I need to alter the code a few '> + > + <ParaLine + <String `months later. Having access to a WYSIWIG word processor such as FrameMaker means that I don\xd5 t '> + > + <ParaLine + <String `use TeX, and it is too much of an effort to learn the intricacies of LaTex or TeX to be able to use the '> + > + <ParaLine + <String `WEB based tools.'> + > + > # end of Para + <Para + <Unique 432261> + <PgfTag `Bulleted'> + <PgfNumString `\xa5 \t'> + <ParaLine + <String `A number of these tools are language specific. '> + <Font + <FTag `code'> + > # end of Font + <String `noweb'> + <Font + <FTag `'> + > # end of Font + <String ` is one exception to this rule, and I rather like '> + > + <ParaLine + <String `the simplicity of noweb. I don\xd5 t use noweb because of the reason explained above. '> + > + > # end of Para + <Para + <Unique 432262> + <PgfTag `Body'> + <ParaLine + <String `FrameMaker, like other good word processors, has excellent document formatting capabilities, cross refer'> + <Char SoftHyphen > + > + <ParaLine + <String `encing and indexing, table of contents, graphics, tables etc. What I see on the screen is the final output, '> + > + <ParaLine + <String `uncluttered by meta-information. '> + > + > # end of Para + <Para + <Unique 432263> + <PgfTag `Body'> + <ParaLine + <String `One problem that I have with this approach is that I am used to a Unix like development environment and '> + > + <ParaLine + <String `extensively use text based tools such as emacs/vi, perl, diff, sccs etc. For this reason, I have not tried this '> + > + <ParaLine + <String `approach on medium or larger sized implementations, though I hope to do that in the near future. '> + > + > # end of Para + <Para + <Unique 432264> + <PgfTag `Body'> + <ParaLine + <String `In general, I am somewhat unclear on how the literate programming paradigm helps a developer to think. '> + > + <ParaLine + <String `The prevailing wisdom is that this approach forces a lot more disciplined thinking on the part of the pro'> + <Char SoftHyphen > + > + <ParaLine + <String `grammer, since (s)he is in a teaching mode. I find that this helps in structuring the program well, once one '> + > + <ParaLine + <String `knows what one should be doing, but if I don\xd5 t have a top-down (step-wise refinement) solution in my mind, '> + > + <ParaLine + <String `I am not entirely sure how to start from a blank page. I tend to do small sections of the code using my reg'> + <Char SoftHyphen > + > + <ParaLine + <String `ular development environment, and once I have a reasonable top-down solution in mind, copy it all over to '> + > + <ParaLine + <String `a FrameMaker file and start refining it. '> + > + > # end of Para + <Para + <Unique 432265> + <PgfTag `Heading1'> + <ParaLine + <String `The fmweb approach'> + > + > # end of Para + <Para + <Unique 432266> + <PgfTag `Body'> + <ParaLine + <String `To separate the code from the rest of the stuff, the developer uses three paragraph formats.'> + > + > # end of Para + <Para + <Unique 432267> + <PgfTag `Bulleted'> + <PgfNumString `\xa5 \t'> + <ParaLine + <TextRectID 14> + <String `\xd2 File\xd3 : The file name is mentioned in this paragraph, and all subsequent lines will eventually be '> + > + <ParaLine + <String `dumped into this file. '> + > + > # end of Para + <Para + <Unique 432268> + <PgfTag `Bulleted'> + <PgfNumString `\xa5 \t'> + <ParaLine + <String `\xd2 chunk\xd3 : A chunk (or section) is a heading followed by a set of \xd2 code\xd3 paragraphs. The \xd2 chunk\xd3 para'> + <Char SoftHyphen > + > + <ParaLine + <String `graph tag identifies the heading for that section. It is possible to have more than one chunk with the '> + > + <ParaLine + <String `same name. '> + > + > # end of Para + <Para + <Unique 432269> + <PgfTag `Bulleted'> + <PgfNumString `\xa5 \t'> + <ParaLine + <String `\xd2 code\xd3 : The developer writes code (in any language) using this paragraph tag. The Frame Maker cross '> + > + <ParaLine + <String `reference facility has to be used to refer to chunks. '> + > + > # end of Para + <Para + <Unique 432270> + <PgfTag `Body'> + <ParaLine + <Font + <FTag `code'> + > # end of Font + <String `fmweb'> + <Font + <FTag `'> + > # end of Font + <String ` is a perl script that needs the FrameMaker document in a MIF format - it extracts chunks and code '> + > + <ParaLine + <String `paragraphs out, and does the requisite tangling (restoring the order of chunks). All chunks with the same '> + > + <ParaLine + <String `name are concatenated in the order they appear in the document. '> + <Font + <FTag `code'> + > # end of Font + <String `fmweb'> + <Font + <FTag `'> + > # end of Font + <String ` ignores all formatting informa'> + <Char SoftHyphen > + > + <ParaLine + <String `tion. Source line number information can be optionally output, in a format accepted by '> + <Font + <FTag `code'> + > # end of Font + <String `cc'> + <Font + <FTag `'> + > # end of Font + <String ` (#line).'> + > + > # end of Para + <Para + <Unique 432271> + <PgfTag `Heading1'> + <ParaLine + <String `References'> + > + > # end of Para + <Para + <Unique 432272> + <PgfTag `Ref'> + <PgfNumString `1.\t'> + <ParaLine + <String `\xd2 Literate Programming\xd3 , Donald Knuth, Center for the Study of Language and Information, Stanford '> + > + <ParaLine + <String `University, ISBN 0-937073-80-6 '> + > + > # end of Para + <Para + <Unique 432274> + <PgfTag `Ref'> + <PgfNumString `2.\t'> + <ParaLine + <Marker + <MType 9> + <MText `32486: Ref: 1. WEB: http://info.desy.de/user/projects/LitProg/HTML.html'> + <MCurrPage 1> + <Unique 432273> + > # end of Marker + <Char Tab > + <String `WEB: http://info.desy.de/user/projects/LitProg/HTML.html - A pointer to all the other good stuff avail'> + <Char SoftHyphen > + > + <ParaLine + <String `able on the net.'> + > + > # end of Para + <Para + <Unique 432695> + <PgfTag `Heading1'> + <ParaLine + <Unconditional > + <String `Unpacking the distribution'> + > + > # end of Para + <Para + <Unique 432692> + <PgfTag `Body'> + <ParaLine + <String `This document contains an example program (wc.c) written in the format explained above, and the fmweb '> + > + <ParaLine + <String `script, along with some internal documentation.'> + > + > # end of Para + <Para + <Unique 432713> + <PgfTag `Body'> + <ParaLine + <String `Save this file as wc.mif. This file will be used to test out the fmweb script.'> + > + > # end of Para + <Para + <Unique 432726> + <PgfTag `Body'> + <ParaLine + <String `To extract fmweb (a perl5 script), go to Special-\>Conditional Text -\> Show/Hide..., and hide the conditional '> + > + <ParaLine + <String `tag called \xd2 Fluff\xd3 . Only the perl script should be remaining. Save this file as text only, and call it fmweb.'> + > + > # end of Para + <Para + <Unique 432729> + <PgfTag `Body'> + <ParaLine + <String `Run fmweb - \xd2 perl5 fmweb < wc.mif\xd3 . This should produce a file called wc.c in the local directory. Compile '> + > + <ParaLine + <String `and execute wc, and compare against the system provided \xd2 wc\xd3 , if on a Unix system.'> + > + > # end of Para + <Para + <Unique 432935> + <PgfTag `Heading1'> + <ParaLine + <String `ToDo'> + > + > # end of Para + <Para + <Unique 432936> + <PgfTag `Bulleted'> + <PgfNumString `\xa5 \t'> + <ParaLine + <String `Support multiple files'> + > + > # end of Para + <Para + <Unique 432937> + <PgfTag `Bulleted'> + <PgfNumString `\xa5 \t'> + <ParaLine + <String `Largish example - map library'> + > + > # end of Para + <Para + <Unique 432938> + <PgfTag `Bulleted'> + <PgfNumString `\xa5 \t'> + <ParaLine + <String `Speed up '> + > + > # end of Para + <Para + <Unique 432939> + <PgfTag `Bulleted'> + <PgfNumString `\xa5 \t'> + <ParaLine + <String `Look at mml '> + > + > # end of Para + <Para + <Unique 432940> + <PgfTag `Bulleted'> + <PgfNumString `\xa5 \t'> + <ParaLine + <String `Accept filenames as arguments'> + > + > # end of Para + <Para + <Unique 432721> + <PgfTag `Body'> + <ParaLine + > + > # end of Para + <Para + <Unique 432696> + <PgfTag `Body'> + <ParaLine + > + > # end of Para + <Para + <Unique 432275> + <PgfTag `Heading1'> + <Pgf + <PgfPlacement PageTop > + > # end of Pgf + <ParaLine + <TextRectID 15> + <Conditional + <InCondition `Fluff'> + > # end of Conditional + <String `Appendix A: \xd4 wc\xd5 : A word count program'> + > + > # end of Para + <Para + <Unique 432276> + <PgfTag `Body'> + <ParaLine + > + > # end of Para + <Para + <Unique 432277> + <PgfTag `Body'> + <ParaLine + <String `This section demonstrates how one can do Literate Programming with FrameMaker. There are only three '> + > + <ParaLine + <String `paragraph tags of interest - File (see \xd2 File:\xd3 below), \xd2 chunk\xd3 (all the numbered paragraphs) and \xd2 code\xd3 . Any '> + > + <ParaLine + <String `cross reference format can be used - \xd2 chunkref\xd3 is the name of the format used in the example below. '> + > + <ParaLine + <String `Apologies if the example looks like a ransom note - one does tend to get carried away by the availability of '> + > + <ParaLine + <String `fonts, and the WYSIWIGness of it all.'> + > + > # end of Para + <Para + <Unique 432278> + <PgfTag `Body'> + <ParaLine + <String `The implementation and comments have been shamelessly lifted from Norman Ramsey\xd5 s noweb distribu'> + <Char SoftHyphen > + > + <ParaLine + <String `tion (ftp://bellcore.com/pub/norman/www/noweb/intro.html). This is just to provide a comparison of the two '> + > + <ParaLine + <String `approaches. I have modified some of the comments that do not apply to this approach.'> + > + > # end of Para + <Para + <Unique 432279> + <PgfTag `Body'> + <ParaLine + <String `Thanks, Norman.'> + > + > # end of Para + <Para + <Unique 432280> + <PgfTag `Body'> + <ParaLine + > + > # end of Para + <Para + <Unique 432281> + <PgfTag `File'> + <PgfNumString `File: '> + <ParaLine + <String `wc.c'> + > + > # end of Para + <Para + <Unique 432282> + <PgfTag `Body'> + <ParaLine + <String `The purpose of '> + <Font + <FTag `'> + <FFamily `Courier'> + <FPostScriptName `Courier'> + > # end of Font + <String `wc'> + <Font + <FTag `'> + > # end of Font + <String ` is to count lines, words, and/or characters in a list of files. The number of lines in a file '> + > + <ParaLine + <String `is the number of newline characters it contains. The number of characters is the file length in bytes.'> + > + > # end of Para + <Para + <Unique 432283> + <PgfTag `Body'> + <ParaLine + <String `A \Q\Qword\xd5 \xd5 is a maximal sequence of consecutive characters other than newline, space, or tab, containing '> + > + <ParaLine + <String `at least one visible ASCII code.'> + > + > # end of Para + <Para + <Unique 432284> + <PgfTag `Body'> + <ParaLine + <String `(We assume that the standard ASCII code is in use.)'> + > + > # end of Para + <Para + <Unique 432285> + <PgfTag `Body'> + <ParaLine + <String `Most literate C programs share a common structure.'> + > + > # end of Para + <Para + <Unique 432286> + <PgfTag `Body'> + <ParaLine + <String `It\xd5 s probably a good idea to state the overall structure explicitly at the outset. Here, then, is an overview of '> + > + <ParaLine + <String `the file '> + <Font + <FTag `code'> + <FSize 12.0 pt> + > # end of Font + <String `wc.c'> + <Font + <FTag `'> + > # end of Font + <String ` that is defined by the '> + <Font + <FTag `code'> + <FSize 12.0 pt> + > # end of Font + <String `noweb'> + <Font + <FTag `'> + > # end of Font + <String ` program '> + <Font + <FTag `code'> + <FSize 12.0 pt> + > # end of Font + <String `wc.fm'> + > + > # end of Para + <Para + <Unique 432760> + <PgfTag `chunk'> + <PgfNumString `1:\t'> + <ParaLine + <String `Outline'> + > + > # end of Para + <Para + <Unique 432764> + <PgfTag `refersTo'> + <ParaLine + <XRef + <XRefName `chunkref'> + <XRefSrcText `81375: chunk: Header files to include'> + <XRefSrcFile `'> + <Unique 432762> + > # end of XRef + <Font + <FTag `Emphasis'> + > # end of Font + <String `<Header files to include\> , (2:, p. 3)'> + <Font + <FTag `'> + > # end of Font + <XRefEnd > + > + > # end of Para + <Para + <Unique 432768> + <PgfTag `refersTo'> + <ParaLine + <XRef + <XRefName `chunkref'> + <XRefSrcText `52409: chunk: Definitions'> + <XRefSrcFile `'> + <Unique 432766> + > # end of XRef + <Font + <FTag `Emphasis'> + > # end of Font + <String `<Definitions\> , (3:, p. 3)'> + <Font + <FTag `'> + > # end of Font + <XRefEnd > + > + > # end of Para + <Para + <Unique 432299> + <PgfTag `refersTo'> + <ParaLine + <XRef + <XRefName `chunkref'> + <XRefSrcText `67133: chunk: Global variables'> + <XRefSrcFile `'> + <Unique 432297> + > # end of XRef + <Font + <FTag `Emphasis'> + > # end of Font + <String `<Global variables\> , (4:, p. 4)'> + <Font + <FTag `'> + > # end of Font + <XRefEnd > + > + > # end of Para + <Para + <Unique 432303> + <PgfTag `refersTo'> + <ParaLine + <XRef + <XRefName `chunkref'> + <XRefSrcText `56554: chunk: Functions'> + <XRefSrcFile `'> + <Unique 432301> + > # end of XRef + <Font + <FTag `Emphasis'> + > # end of Font + <String `<Functions\> , (23:, p. 8)'> + <Font + <FTag `'> + > # end of Font + <XRefEnd > + > + > # end of Para + <Para + <Unique 432307> + <PgfTag `refersTo'> + <ParaLine + <XRef + <XRefName `chunkref'> + <XRefSrcText `19525: chunk: Main Program'> + <XRefSrcFile `'> + <Unique 432305> + > # end of XRef + <Font + <FTag `Emphasis'> + > # end of Font + <String `<Main Program\> , (5:, p. 4)'> + <Font + <FTag `'> + > # end of Font + <XRefEnd > + > + > # end of Para + <Para + <Unique 432308> + <PgfTag `Body'> + <ParaLine + <String `We must include the standard I/O definitions, since we want to send formatted output to '> + <Font + <FTag `code'> + > # end of Font + <String `stdout'> + <Font + <FTag `'> + > # end of Font + <String ` and '> + <Font + <FTag `code'> + > # end of Font + <String `stderr'> + > + > # end of Para + <Para + <Unique 432309> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432311> + <PgfTag `chunk'> + <PgfNumString `2:\t'> + <ParaLine + <Marker + <MType 9> + <MText `81375: chunk: Header files to include'> + <MCurrPage 2> + <Unique 432310> + > # end of Marker + <String `Header files to include'> + > + > # end of Para + <Para + <Unique 432312> + <PgfTag `code'> + <ParaLine + <String `#include <stdio.h\>'> + > + > # end of Para + <Para + <Unique 432313> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432315> + <PgfTag `chunk'> + <PgfNumString `3:\t'> + <ParaLine + <Marker + <MType 9> + <MText `52409: chunk: Definitions'> + <MCurrPage 2> + <Unique 432314> + > # end of Marker + <String `Definitions'> + > + > # end of Para + <Para + <Unique 432316> + <PgfTag `code'> + <ParaLine + <String `#define OK 0'> + > + > # end of Para + <Para + <Unique 432317> + <PgfTag `code'> + <ParaLine + <String ` /* status code for successful run */'> + > + > # end of Para + <Para + <Unique 432318> + <PgfTag `code'> + <ParaLine + <String `#define usage_error 1'> + > + > # end of Para + <Para + <Unique 432319> + <PgfTag `code'> + <ParaLine + <String ` /* status code for improper syntax */'> + > + > # end of Para + <Para + <Unique 432320> + <PgfTag `code'> + <ParaLine + <String `#define cannot_open_file 2'> + > + > # end of Para + <Para + <Unique 432321> + <PgfTag `code'> + <ParaLine + <String ` /* status code for file access error */'> + > + > # end of Para + <Para + <Unique 432322> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432324> + <PgfTag `chunk'> + <PgfNumString `4:\t'> + <ParaLine + <TextRectID 16> + <Marker + <MType 9> + <MText `67133: chunk: Global variables'> + <MCurrPage 3> + <Unique 432323> + > # end of Marker + <String `Global variables'> + > + > # end of Para + <Para + <Unique 432325> + <PgfTag `Body'> + <ParaLine + <String `The '> + <Font + <FTag `code'> + > # end of Font + <String `status'> + <Font + <FTag `'> + > # end of Font + <String ` variable will tell the operating system if the run was successful or not, and '> + <Font + <FTag `code'> + > # end of Font + <String `prog_name'> + <Font + <FTag `'> + > # end of Font + <String ` is used '> + > + <ParaLine + <String `in case there\xd5 s an error message to be printed.'> + > + > # end of Para + <Para + <Unique 432326> + <PgfTag `Body'> + <ParaLine + > + > # end of Para + <Para + <Unique 432327> + <PgfTag `code'> + <ParaLine + <String `int status = OK;'> + > + > # end of Para + <Para + <Unique 432328> + <PgfTag `code'> + <ParaLine + <String ` /* exit status of command, initially OK */'> + > + > # end of Para + <Para + <Unique 432329> + <PgfTag `code'> + <ParaLine + <String `char *prog_name;'> + > + > # end of Para + <Para + <Unique 432330> + <PgfTag `code'> + <ParaLine + <String ` /* who we are */'> + > + > # end of Para + <Para + <Unique 432331> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432332> + <PgfTag `Body'> + <ParaLine + <String `Now we come to the general layout of the '> + <Font + <FTag `code'> + > # end of Font + <String `main'> + <Font + <FTag `'> + > # end of Font + <String ` function.'> + > + > # end of Para + <Para + <Unique 432333> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432335> + <PgfTag `chunk'> + <PgfNumString `5:\t'> + <ParaLine + <Marker + <MType 9> + <MText `19525: chunk: Main Program'> + <MCurrPage 3> + <Unique 432334> + > # end of Marker + <String `Main Program'> + > + > # end of Para + <Para + <Unique 432336> + <PgfTag `code'> + <ParaLine + <String `main(argc, argv)'> + > + > # end of Para + <Para + <Unique 432337> + <PgfTag `code'> + <ParaLine + <String ` '> + <Char Tab > + <String `int argc;'> + > + > # end of Para + <Para + <Unique 432338> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `/* number of arguments on UNIX command line */'> + > + > # end of Para + <Para + <Unique 432339> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String ` char **argv;'> + > + > # end of Para + <Para + <Unique 432340> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String ` /* the arguments, an array of strings */'> + > + > # end of Para + <Para + <Unique 432341> + <PgfTag `code'> + <ParaLine + <String `{'> + > + > # end of Para + <Para + <Unique 432345> + <PgfTag `refersTo'> + <ParaLine + <Char Tab > + <String ` '> + <XRef + <XRefName `chunkref'> + <XRefSrcText `40463: chunk: Variables local to main'> + <XRefSrcFile `'> + <Unique 432343> + > # end of XRef + <Font + <FTag `Emphasis'> + > # end of Font + <String `<Variables local to main\> , (6:, p. 4)'> + <Font + <FTag `'> + > # end of Font + <XRefEnd > + > + > # end of Para + <Para + <Unique 432346> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String ` prog_name = argv[0];'> + > + > # end of Para + <Para + <Unique 432350> + <PgfTag `refersTo'> + <ParaLine + <Char Tab > + <String ` '> + <XRef + <XRefName `chunkref'> + <XRefSrcText `33923: chunk: Set up option selection'> + <XRefSrcFile `'> + <Unique 432348> + > # end of XRef + <Font + <FTag `Emphasis'> + > # end of Font + <String `<Set up option selection\> , (7:, p. 4)'> + <Font + <FTag `'> + > # end of Font + <XRefEnd > + > + > # end of Para + <Para + <Unique 432354> + <PgfTag `refersTo'> + <ParaLine + <Char Tab > + <String ` '> + <XRef + <XRefName `chunkref'> + <XRefSrcText `34861: chunk: Process all the files'> + <XRefSrcFile `'> + <Unique 432352> + > # end of XRef + <Font + <FTag `Emphasis'> + > # end of Font + <String `<Process all the files\> , (8:, p. 5)'> + <Font + <FTag `'> + > # end of Font + <XRefEnd > + > + > # end of Para + <Para + <Unique 432358> + <PgfTag `refersTo'> + <ParaLine + <Char Tab > + <String ` '> + <XRef + <XRefName `chunkref'> + <XRefSrcText `69252: chunk: Print the grand totals if there were multiple files'> + <XRefSrcFile `'> + <Unique 432356> + > # end of XRef + <Font + <FTag `Emphasis'> + > # end of Font + <String `<Print the grand totals if there were multiple files\> , (21:, p. 8)'> + <Font + <FTag `'> + > # end of Font + <XRefEnd > + > + > # end of Para + <Para + <Unique 432359> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String ` exit(status);'> + > + > # end of Para + <Para + <Unique 432360> + <PgfTag `code'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 432361> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432362> + <PgfTag `Body'> + <ParaLine + <String `If the first argument begins with a \xd4 -\xd5 , the user is choosing the desired counts and specifying the order in '> + > + <ParaLine + <String `which they should be displayed. Each selection is given by the initial character (lines, words, or charac'> + <Char SoftHyphen > + > + <ParaLine + <String `ters). For example, \Q-cl\xd5 would cause just the number of characters and the number of lines to be printed, in '> + > + <ParaLine + <String `that order. '> + > + > # end of Para + <Para + <Unique 432363> + <PgfTag `Body'> + <ParaLine + <String `We do not process this string now; we simply remember where it is. It will be used to control the formatting '> + > + <ParaLine + <String `at output time.'> + > + > # end of Para + <Para + <Unique 432365> + <PgfTag `chunk'> + <PgfNumString `6:\t'> + <ParaLine + <Marker + <MType 9> + <MText `40463: chunk: Variables local to main'> + <MCurrPage 3> + <Unique 432364> + > # end of Marker + <String `Variables local to '> + <Font + <FTag `code'> + > # end of Font + <String `main'> + <Font + <FTag `'> + > # end of Font + <Char Tab > + > + > # end of Para + <Para + <Unique 432366> + <PgfTag `code'> + <ParaLine + <String `int file_count;'> + > + > # end of Para + <Para + <Unique 432367> + <PgfTag `code'> + <ParaLine + <String ` /* how many files there are */'> + > + > # end of Para + <Para + <Unique 432368> + <PgfTag `code'> + <ParaLine + <String `char *which;'> + > + > # end of Para + <Para + <Unique 432369> + <PgfTag `code'> + <ParaLine + <String ` /* which counts to print */'> + > + > # end of Para + <Para + <Unique 432370> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432372> + <PgfTag `chunk'> + <PgfNumString `7:\t'> + <ParaLine + <Marker + <MType 9> + <MText `33923: chunk: Set up option selection'> + <MCurrPage 3> + <Unique 432371> + > # end of Marker + <String `Set up option selection'> + > + > # end of Para + <Para + <Unique 432373> + <PgfTag `code'> + <ParaLine + <String `which = \xd2 lwc\xd3 ;'> + > + > # end of Para + <Para + <Unique 432374> + <PgfTag `code'> + <ParaLine + <String ` /* if no option is given, print 3 values */'> + > + > # end of Para + <Para + <Unique 432375> + <PgfTag `code'> + <ParaLine + <String `if (argc \> 1 && *argv[1] == \xd4 -\xd5 ) {'> + > + > # end of Para + <Para + <Unique 432376> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `which = argv[1] + 1;'> + > + > # end of Para + <Para + <Unique 432377> + <PgfTag `code'> + <ParaLine + <TextRectID 17> + <Char Tab > + <String `argc--;'> + > + > # end of Para + <Para + <Unique 432378> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `argv++;'> + > + > # end of Para + <Para + <Unique 432379> + <PgfTag `code'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 432380> + <PgfTag `code'> + <ParaLine + <String `file_count = argc - 1;'> + > + > # end of Para + <Para + <Unique 432381> + <PgfTag `Body'> + <ParaLine + > + > # end of Para + <Para + <Unique 432382> + <PgfTag `Body'> + <ParaLine + <String `Now we scan the remaining arguments and try to open a file, if possible. The file is processed and its sta'> + <Char SoftHyphen > + > + <ParaLine + <String `tistics are given.'> + > + > # end of Para + <Para + <Unique 432383> + <PgfTag `Body'> + <ParaLine + <String `We use a do ... while loop because we should read from the standard input if no file name is given.'> + > + > # end of Para + <Para + <Unique 432384> + <PgfTag `Body'> + <ParaLine + > + > # end of Para + <Para + <Unique 432386> + <PgfTag `chunk'> + <PgfNumString `8:\t'> + <ParaLine + <Marker + <MType 9> + <MText `34861: chunk: Process all the files'> + <MCurrPage 4> + <Unique 432385> + > # end of Marker + <String `Process all the files'> + > + > # end of Para + <Para + <Unique 432387> + <PgfTag `code'> + <ParaLine + <String `argc--;'> + > + > # end of Para + <Para + <Unique 432388> + <PgfTag `code'> + <ParaLine + <String `do {'> + > + > # end of Para + <Para + <Unique 432392> + <PgfTag `refersTo'> + <ParaLine + <String ` '> + <Char Tab > + <String ` '> + <XRef + <XRefName `chunkref'> + <XRefSrcText `41015: chunk: If a file is given, try to open *(++argv); continue if unsuccessful'> + <XRefSrcFile `'> + <Unique 432390> + > # end of XRef + <Font + <FTag `Emphasis'> + > # end of Font + <String `<If a file is given, try to open *(++argv); continue if unsuccessful\> , (11:, p. 5)'> + <Font + <FTag `'> + > # end of Font + <XRefEnd > + > + > # end of Para + <Para + <Unique 432396> + <PgfTag `refersTo'> + <ParaLine + <Char Tab > + <String ` '> + <XRef + <XRefName `chunkref'> + <XRefSrcText `60827: chunk: Initialize pointers and counters'> + <XRefSrcFile `'> + <Unique 432394> + > # end of XRef + <Font + <FTag `Emphasis'> + > # end of Font + <String `<Initialize pointers and counters\> , (15:, p. 6)'> + <Font + <FTag `'> + > # end of Font + <XRefEnd > + > + > # end of Para + <Para + <Unique 432400> + <PgfTag `refersTo'> + <ParaLine + <Char Tab > + <String ` '> + <XRef + <XRefName `chunkref'> + <XRefSrcText `29900: chunk: Scan file'> + <XRefSrcFile `'> + <Unique 432398> + > # end of XRef + <Font + <FTag `Emphasis'> + > # end of Font + <String `<Scan file\> , (17:, p. 6)'> + <Font + <FTag `'> + > # end of Font + <XRefEnd > + > + > # end of Para + <Para + <Unique 432404> + <PgfTag `refersTo'> + <ParaLine + <Char Tab > + <String ` '> + <XRef + <XRefName `chunkref'> + <XRefSrcText `53529: chunk: Write statistics for file'> + <XRefSrcFile `'> + <Unique 432402> + > # end of XRef + <Font + <FTag `Emphasis'> + > # end of Font + <String `<Write statistics for file\> , (19:, p. 7)'> + <Font + <FTag `'> + > # end of Font + <XRefEnd > + > + > # end of Para + <Para + <Unique 432408> + <PgfTag `refersTo'> + <ParaLine + <String ` '> + <Char Tab > + <String ` '> + <XRef + <XRefName `chunkref'> + <XRefSrcText `35599: chunk: Close file'> + <XRefSrcFile `'> + <Unique 432406> + > # end of XRef + <Font + <FTag `Emphasis'> + > # end of Font + <String `<Close file\> , (12:, p. 6)'> + <Font + <FTag `'> + > # end of Font + <XRefEnd > + > + > # end of Para + <Para + <Unique 432412> + <PgfTag `refersTo'> + <ParaLine + <Char Tab > + <String ` '> + <XRef + <XRefName `chunkref'> + <XRefSrcText `14885: chunk: Update grand totals'> + <XRefSrcFile `'> + <Unique 432410> + > # end of XRef + <Font + <FTag `Emphasis'> + > # end of Font + <String `<Update grand totals\> , (20:, p. 7)'> + <Font + <FTag `'> + > # end of Font + <XRefEnd > + > + > # end of Para + <Para + <Unique 432413> + <PgfTag `code'> + <ParaLine + <String ` '> + <Char Tab > + <String ` /* even if there is only one file */'> + > + > # end of Para + <Para + <Unique 432414> + <PgfTag `code'> + <ParaLine + <String `} while (--argc \> 0);'> + > + > # end of Para + <Para + <Unique 432415> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432416> + <PgfTag `Body'> + <ParaLine + <String `Here\xd5 s the code to open the file. A special trick allows us to handle input from '> + <Font + <FTag `code'> + > # end of Font + <String `stdin'> + <Font + <FTag `'> + > # end of Font + <String ` when no name is '> + > + <ParaLine + <String `given.'> + > + > # end of Para + <Para + <Unique 432417> + <PgfTag `Body'> + <ParaLine + <String `Recall that the file descriptor to '> + <Font + <FTag `code'> + > # end of Font + <String `stdin'> + <Font + <FTag `'> + > # end of Font + <String ` is 0; that\xd5 s what we use as the default initial value.'> + > + > # end of Para + <Para + <Unique 432418> + <PgfTag `Body'> + <ParaLine + > + > # end of Para + <Para + <Unique 432419> + <PgfTag `chunk'> + <PgfNumString `9:\t'> + <ParaLine + <String `Variables local to main'> + > + > # end of Para + <Para + <Unique 432420> + <PgfTag `code'> + <ParaLine + <String `int fd = 0;'> + > + > # end of Para + <Para + <Unique 432421> + <PgfTag `code'> + <ParaLine + <String ` /* file descriptor, initialized to stdin */'> + > + > # end of Para + <Para + <Unique 432422> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432423> + <PgfTag `chunk'> + <PgfNumString `10:\t'> + <ParaLine + <String `Definitions'> + > + > # end of Para + <Para + <Unique 432424> + <PgfTag `code'> + <ParaLine + <String `#define READ_ONLY 0'> + > + > # end of Para + <Para + <Unique 432425> + <PgfTag `code'> + <ParaLine + <String ` /* read access code for system open */'> + > + > # end of Para + <Para + <Unique 432426> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432428> + <PgfTag `chunk'> + <PgfNumString `11:\t'> + <ParaLine + <Marker + <MType 9> + <MText `41015: chunk: If a file is given, try to open *(++argv); continue if unsuccessful'> + <MCurrPage 4> + <Unique 432427> + > # end of Marker + <String `If a file is given, try to open '> + <Font + <FTag `code'> + > # end of Font + <String `*(++argv)'> + <Font + <FTag `'> + > # end of Font + <String `; '> + <Font + <FTag `code'> + > # end of Font + <String `continue'> + <Font + <FTag `'> + > # end of Font + <String ` if unsuccessful'> + > + > # end of Para + <Para + <Unique 432429> + <PgfTag `code'> + <ParaLine + <String `if (file_count \> 0 '> + <Char Tab > + <Char Tab > + <String `&& (fd = open(*(++argv), READ_ONLY)) < 0) {'> + > + > # end of Para + <Para + <Unique 432430> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `fprintf(stderr, \xd2 %s: cannot open file %s\\n\xd3 , prog_name, *argv);'> + > + > # end of Para + <Para + <Unique 432431> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String ` status |= cannot_open_file;'> + > + > # end of Para + <Para + <Unique 432432> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `file_count--;'> + > + > # end of Para + <Para + <Unique 432433> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `continue;'> + > + > # end of Para + <Para + <Unique 432434> + <PgfTag `code'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 432435> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432437> + <PgfTag `chunk'> + <PgfNumString `12:\t'> + <ParaLine + <TextRectID 18> + <Marker + <MType 9> + <MText `35599: chunk: Close file'> + <MCurrPage 5> + <Unique 432436> + > # end of Marker + <String `Close file'> + > + > # end of Para + <Para + <Unique 432438> + <PgfTag `code'> + <ParaLine + <String `close(fd);'> + > + > # end of Para + <Para + <Unique 432439> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432440> + <PgfTag `Body'> + <ParaLine + <String `We will do some homemade buffering in order to speed things up: Characters will be read into the buffer '> + > + <ParaLine + <String `array before we process them. To do this we set up appropriate pointers and counters.'> + > + > # end of Para + <Para + <Unique 432441> + <PgfTag `Body'> + <ParaLine + > + > # end of Para + <Para + <Unique 432442> + <PgfTag `chunk'> + <PgfNumString `13:\t'> + <ParaLine + <String `Definitions'> + > + > # end of Para + <Para + <Unique 432443> + <PgfTag `code'> + <ParaLine + <String `#define buf_size BUFSIZ'> + > + > # end of Para + <Para + <Unique 432444> + <PgfTag `code'> + <ParaLine + <String ` /* stdio.h BUFSIZ chosen for efficiency */'> + > + > # end of Para + <Para + <Unique 432445> + <PgfTag `chunk'> + <PgfNumString `14:\t'> + <ParaLine + <String `Variables local to '> + <Font + <FTag `code'> + > # end of Font + <String `main'> + > + > # end of Para + <Para + <Unique 432446> + <PgfTag `code'> + <ParaLine + <String `char buffer[buf_size];'> + > + > # end of Para + <Para + <Unique 432447> + <PgfTag `code'> + <ParaLine + <String ` /* we read the input into this array */'> + > + > # end of Para + <Para + <Unique 432448> + <PgfTag `code'> + <ParaLine + <String `register char *ptr;'> + > + > # end of Para + <Para + <Unique 432449> + <PgfTag `code'> + <ParaLine + <String ` /* first unprocessed character in buffer */'> + > + > # end of Para + <Para + <Unique 432450> + <PgfTag `code'> + <ParaLine + <String `register char *buf_end;'> + > + > # end of Para + <Para + <Unique 432451> + <PgfTag `code'> + <ParaLine + <String ` /* the first unused position in buffer */'> + > + > # end of Para + <Para + <Unique 432452> + <PgfTag `code'> + <ParaLine + <String `register int c;'> + > + > # end of Para + <Para + <Unique 432453> + <PgfTag `code'> + <ParaLine + <String ` /* current char, or # of chars just read */'> + > + > # end of Para + <Para + <Unique 432454> + <PgfTag `code'> + <ParaLine + <String `int in_word;'> + > + > # end of Para + <Para + <Unique 432455> + <PgfTag `code'> + <ParaLine + <String ` /* are we within a word? */'> + > + > # end of Para + <Para + <Unique 432456> + <PgfTag `code'> + <ParaLine + <String `long word_count, line_count, char_count;'> + > + > # end of Para + <Para + <Unique 432457> + <PgfTag `code'> + <ParaLine + <String ` /* # of words, lines, and chars so far */'> + > + > # end of Para + <Para + <Unique 432458> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432460> + <PgfTag `chunk'> + <PgfNumString `15:\t'> + <ParaLine + <Marker + <MType 9> + <MText `60827: chunk: Initialize pointers and counters'> + <MCurrPage 5> + <Unique 432459> + > # end of Marker + <String `Initialize pointers and counters'> + > + > # end of Para + <Para + <Unique 432461> + <PgfTag `code'> + <ParaLine + <String `ptr = buf_end = buffer;'> + > + > # end of Para + <Para + <Unique 432462> + <PgfTag `code'> + <ParaLine + <String `line_count = word_count = char_count = 0;'> + > + > # end of Para + <Para + <Unique 432463> + <PgfTag `code'> + <ParaLine + <String `in_word = 0;'> + > + > # end of Para + <Para + <Unique 432464> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432465> + <PgfTag `Body'> + <ParaLine + <String `The grand totals must be initialized to zero at the beginning of the program. If we made these variables '> + > + <ParaLine + <String `local to '> + <Font + <FTag `code'> + > # end of Font + <String `main'> + <Font + <FTag `'> + > # end of Font + <String `, we would have to do this initialization explicitly; however, C\xd5 s globals are automatically '> + > + <ParaLine + <String `zeroed. (Or rather, \Q\Qstatically zeroed.\xd5 \xd5 ) (Get it?)'> + > + > # end of Para + <Para + <Unique 432466> + <PgfTag `chunk'> + <PgfNumString `16:\t'> + <ParaLine + <String `Global variables'> + > + > # end of Para + <Para + <Unique 432467> + <PgfTag `code'> + <ParaLine + <String `long tot_word_count, tot_line_count, '> + > + > # end of Para + <Para + <Unique 432468> + <PgfTag `code'> + <ParaLine + <String ` tot_char_count;'> + > + > # end of Para + <Para + <Unique 432469> + <PgfTag `code'> + <ParaLine + <String ` /* total number of words, lines, chars */'> + > + > # end of Para + <Para + <Unique 432471> + <PgfTag `chunk'> + <PgfNumString `17:\t'> + <ParaLine + <Marker + <MType 9> + <MText `29900: chunk: Scan file'> + <MCurrPage 5> + <Unique 432470> + > # end of Marker + <String `Scan file'> + > + > # end of Para + <Para + <Unique 432472> + <PgfTag `Body'> + <ParaLine + <String `This chunk, which does the counting, that is '> + <Font + <FTag `code'> + > # end of Font + <String `wc'> + <Font + <FTag `'> + > # end of Font + <String `\xd5 s '> + <Font + <FTag `'> + <FAngle `Oblique'> + <FPostScriptName `Helvetica-Oblique'> + > # end of Font + <String `raison d\xd5 etre'> + <Font + <FTag `'> + > # end of Font + <String `, was actually one of the simplest to write. '> + > + <ParaLine + <String `We look at each character and change state if it begins or ends a word.'> + > + > # end of Para + <Para + <Unique 432473> + <PgfTag `Body'> + <ParaLine + > + > # end of Para + <Para + <Unique 432474> + <PgfTag `code'> + <ParaLine + <String `while (1) {'> + > + > # end of Para + <Para + <Unique 432478> + <PgfTag `refersTo'> + <ParaLine + <Char Tab > + <String ` '> + <XRef + <XRefName `chunkref'> + <XRefSrcText `51742: chunk: Fill buffer if it is empty; break at end of file'> + <XRefSrcFile `'> + <Unique 432476> + > # end of XRef + <Font + <FTag `Emphasis'> + > # end of Font + <String `<Fill buffer if it is empty; break at end of file\> , (18:, p. 7)'> + <Font + <FTag `'> + > # end of Font + <XRefEnd > + > + > # end of Para + <Para + <Unique 432479> + <PgfTag `code'> + <ParaLine + <TextRectID 19> + <Char Tab > + <String ` c = *ptr++;'> + > + > # end of Para + <Para + <Unique 432480> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String ` if (c \> \xd4 \xd4 && c < 0177) {'> + > + > # end of Para + <Para + <Unique 432481> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String ` '> + <Char Tab > + <String `/* visible ASCII codes */'> + > + > # end of Para + <Para + <Unique 432482> + <PgfTag `code'> + <ParaLine + <Char Tab > + <Char Tab > + <String ` if (!in_word) {'> + > + > # end of Para + <Para + <Unique 432483> + <PgfTag `code'> + <ParaLine + <Char Tab > + <Char Tab > + <Char Tab > + <String ` word_count++;'> + > + > # end of Para + <Para + <Unique 432484> + <PgfTag `code'> + <ParaLine + <Char Tab > + <Char Tab > + <Char Tab > + <String `in_word = 1;'> + > + > # end of Para + <Para + <Unique 432485> + <PgfTag `code'> + <ParaLine + <Char Tab > + <Char Tab > + <String `}'> + > + > # end of Para + <Para + <Unique 432486> + <PgfTag `code'> + <ParaLine + <Char Tab > + <Char Tab > + <String `continue;'> + > + > # end of Para + <Para + <Unique 432487> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `}'> + > + > # end of Para + <Para + <Unique 432488> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `if (c == \xd4 \\n\xd5 ) line_count++;'> + > + > # end of Para + <Para + <Unique 432489> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String ` else if (c != \xd4 \xd4 && c != \xd4 \\t\xd5 ) continue;'> + > + > # end of Para + <Para + <Unique 432490> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String ` in_word = 0;'> + > + > # end of Para + <Para + <Unique 432491> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `/* c is newline, space, or tab */'> + > + > # end of Para + <Para + <Unique 432492> + <PgfTag `code'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 432493> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432494> + <PgfTag `Body'> + <ParaLine + <String `Buffered I/O allows us to count the number of characters almost for free.'> + > + > # end of Para + <Para + <Unique 432496> + <PgfTag `chunk'> + <PgfNumString `18:\t'> + <ParaLine + <Marker + <MType 9> + <MText `51742: chunk: Fill buffer if it is empty; break at end of file'> + <MCurrPage 6> + <Unique 432495> + > # end of Marker + <String `Fill '> + <Font + <FTag `code'> + > # end of Font + <String `buffer'> + <Font + <FTag `'> + > # end of Font + <String ` if it is empty; '> + <Font + <FTag `code'> + > # end of Font + <String `break'> + <Font + <FTag `'> + > # end of Font + <String ` at end of file'> + > + > # end of Para + <Para + <Unique 432497> + <PgfTag `code'> + <ParaLine + <String `if (ptr \>= buf_end) {'> + > + > # end of Para + <Para + <Unique 432498> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `ptr = buffer;'> + > + > # end of Para + <Para + <Unique 432499> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `c = read(fd, ptr, buf_size);'> + > + > # end of Para + <Para + <Unique 432500> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `if (c <= 0) break;'> + > + > # end of Para + <Para + <Unique 432501> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `char_count += c;'> + > + > # end of Para + <Para + <Unique 432502> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `buf_end = buffer + c;'> + > + > # end of Para + <Para + <Unique 432503> + <PgfTag `code'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 432504> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432505> + <PgfTag `Body'> + <ParaLine + <String `It\xd5 s convenient to output the statistics by defining a new function '> + <Font + <FTag `code'> + > # end of Font + <String `wc_print'> + <Font + <FTag `'> + > # end of Font + <String `; then the same function can be '> + > + <ParaLine + <String `used for the totals. Additionally we must decide here if we know the name of the file we have processed or '> + > + <ParaLine + <String `if it was just stdin.'> + > + > # end of Para + <Para + <Unique 432507> + <PgfTag `chunk'> + <PgfNumString `19:\t'> + <ParaLine + <Marker + <MType 9> + <MText `53529: chunk: Write statistics for file'> + <MCurrPage 6> + <Unique 432506> + > # end of Marker + <String `Write statistics for file'> + > + > # end of Para + <Para + <Unique 432508> + <PgfTag `code'> + <ParaLine + <String `wc_print(which, char_count, word_count, '> + > + > # end of Para + <Para + <Unique 432509> + <PgfTag `code'> + <ParaLine + <String ` line_count);'> + > + > # end of Para + <Para + <Unique 432510> + <PgfTag `code'> + <ParaLine + <String `if (file_count)'> + > + > # end of Para + <Para + <Unique 432511> + <PgfTag `code'> + <ParaLine + <String ` printf(\xd2 %s\\n\xd3 , *argv); /* not stdin */'> + > + > # end of Para + <Para + <Unique 432512> + <PgfTag `code'> + <ParaLine + <String `else '> + > + > # end of Para + <Para + <Unique 432513> + <PgfTag `code'> + <ParaLine + <String ` printf(\xd2 \\n\xd3 ); /* stdin */'> + > + > # end of Para + <Para + <Unique 432514> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432516> + <PgfTag `chunk'> + <PgfNumString `20:\t'> + <ParaLine + <Marker + <MType 9> + <MText `14885: chunk: Update grand totals'> + <MCurrPage 6> + <Unique 432515> + > # end of Marker + <String `Update grand totals'> + > + > # end of Para + <Para + <Unique 432517> + <PgfTag `code'> + <ParaLine + <String `tot_line_count += line_count;'> + > + > # end of Para + <Para + <Unique 432518> + <PgfTag `code'> + <ParaLine + <String `tot_word_count += word_count;'> + > + > # end of Para + <Para + <Unique 432519> + <PgfTag `code'> + <ParaLine + <String `tot_char_count += char_count;'> + > + > # end of Para + <Para + <Unique 432520> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432521> + <PgfTag `Body'> + <ParaLine + > + > # end of Para + <Para + <Unique 432522> + <PgfTag `Body'> + <ParaLine + <String `We might as well improve a bit on '> + <Font + <FTag `code'> + > # end of Font + <String `Unix'> + <Font + <FTag `'> + > # end of Font + <String `\xd5 s '> + <Font + <FTag `code'> + > # end of Font + <String `wc'> + <Font + <FTag `'> + > # end of Font + <String ` by displaying the number of files too.'> + > + > # end of Para + <Para + <Unique 432524> + <PgfTag `chunk'> + <PgfNumString `21:\t'> + <ParaLine + <TextRectID 20> + <Marker + <MType 9> + <MText `69252: chunk: Print the grand totals if there were multiple files'> + <MCurrPage 7> + <Unique 432523> + > # end of Marker + <String `Print the grand totals if there were multiple files'> + > + > # end of Para + <Para + <Unique 432525> + <PgfTag `code'> + <ParaLine + <String `if (file_count \> 1) {'> + > + > # end of Para + <Para + <Unique 432526> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `wc_print(which, tot_char_count, tot_word_count, tot_line_count);'> + > + > # end of Para + <Para + <Unique 432527> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `printf (\xd2 total in %d files\\n\xd3 , file_count);'> + > + > # end of Para + <Para + <Unique 432528> + <PgfTag `code'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 432529> + <PgfTag `code'> + <ParaLine + > + > # end of Para + <Para + <Unique 432530> + <PgfTag `Body'> + <ParaLine + <String `Here now is the function that prints the values according to the specified options. The calling routine is sup'> + <Char SoftHyphen > + > + <ParaLine + <String `posed to supply a newline. If an invalid option character is found we inform the user about proper usage of '> + > + <ParaLine + <String `the command. Counts are printed in 8-digit fields so that they will line up in columns.'> + > + > # end of Para + <Para + <Unique 432531> + <PgfTag `chunk'> + <PgfNumString `22:\t'> + <ParaLine + <String `Definitions'> + > + > # end of Para + <Para + <Unique 432532> + <PgfTag `code'> + <ParaLine + <String `#define print_count(n) printf(\xd2 %8ld\xd3 , n)'> + > + > # end of Para + <Para + <Unique 432534> + <PgfTag `chunk'> + <PgfNumString `23:\t'> + <ParaLine + <Marker + <MType 9> + <MText `56554: chunk: Functions'> + <MCurrPage 7> + <Unique 432533> + > # end of Marker + <String `Functions'> + > + > # end of Para + <Para + <Unique 432535> + <PgfTag `code'> + <ParaLine + <String `wc_print (which, char_count, word_count, line_count)'> + > + > # end of Para + <Para + <Unique 432536> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `char *which; /* which counts to print */'> + > + > # end of Para + <Para + <Unique 432537> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `long char_count, word_count, line_count;'> + > + > # end of Para + <Para + <Unique 432538> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String ` /* given totals */'> + > + > # end of Para + <Para + <Unique 432539> + <PgfTag `code'> + <ParaLine + <String `{'> + > + > # end of Para + <Para + <Unique 432540> + <PgfTag `code'> + <ParaLine + <Char Tab > + <String `while (*which)'> + > + > # end of Para + <Para + <Unique 432541> + <PgfTag `code'> + <ParaLine + <Char Tab > + <Char Tab > + <String `switch (*which++) {'> + > + > # end of Para + <Para + <Unique 432542> + <PgfTag `code'> + <ParaLine + <Char Tab > + <Char Tab > + <Char Tab > + <String `case \xd4 l\xd5 : print_count(line_count);'> + > + > # end of Para + <Para + <Unique 432543> + <PgfTag `code'> + <ParaLine + <Char Tab > + <Char Tab > + <Char Tab > + <Char Tab > + <String `break;'> + > + > # end of Para + <Para + <Unique 432544> + <PgfTag `code'> + <ParaLine + <Char Tab > + <Char Tab > + <Char Tab > + <String `case \xd4 w\xd5 : print_count(word_count);'> + > + > # end of Para + <Para + <Unique 432545> + <PgfTag `code'> + <ParaLine + <Char Tab > + <Char Tab > + <Char Tab > + <Char Tab > + <String `break;'> + <Char Tab > + > + > # end of Para + <Para + <Unique 432546> + <PgfTag `code'> + <ParaLine + <Char Tab > + <Char Tab > + <Char Tab > + <String `case \xd4 c\xd5 : print_count(char_count);'> + > + > # end of Para + <Para + <Unique 432547> + <PgfTag `code'> + <ParaLine + <Char Tab > + <Char Tab > + <Char Tab > + <Char Tab > + <String `break;'> + > + > # end of Para + <Para + <Unique 432548> + <PgfTag `code'> + <ParaLine + <Char Tab > + <Char Tab > + <Char Tab > + <String `default:'> + > + > # end of Para + <Para + <Unique 432549> + <PgfTag `code'> + <ParaLine + <Char Tab > + <Char Tab > + <Char Tab > + <Char Tab > + <String `if ((status & usage_error) == 0) {'> + > + > # end of Para + <Para + <Unique 432550> + <PgfTag `code'> + <ParaLine + <Char Tab > + <Char Tab > + <Char Tab > + <Char Tab > + <Char Tab > + <String `fprintf(stderr,'> + > + > # end of Para + <Para + <Unique 432551> + <PgfTag `code'> + <ParaLine + <Char Tab > + <Char Tab > + <Char Tab > + <Char Tab > + <Char Tab > + <Char Tab > + <String `\xd2 Usage: %s [-lwc] [filename ...]\\n\xd3 , '> + <Char Tab > + <Char Tab > + <Char Tab > + <Char Tab > + <Char Tab > + <Char Tab > + <String `prog_name);'> + > + > # end of Para + <Para + <Unique 432552> + <PgfTag `code'> + <ParaLine + <Char Tab > + <Char Tab > + <Char Tab > + <Char Tab > + <Char Tab > + <String `usage_error;'> + > + > # end of Para + <Para + <Unique 432553> + <PgfTag `code'> + <ParaLine + <Char Tab > + <Char Tab > + <Char Tab > + <Char Tab > + <String `}'> + > + > # end of Para + <Para + <Unique 432554> + <PgfTag `code'> + <ParaLine + <String ` '> + <Char Tab > + <Char Tab > + <String `}'> + > + > # end of Para + <Para + <Unique 432555> + <PgfTag `code'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 432556> + <PgfTag `Body'> + <ParaLine + > + > # end of Para + <Para + <Unique 432557> + <PgfTag `Body'> + <ParaLine + <String `Incidentally, a test of this program against the system '> + <Font + <FTag `code'> + > # end of Font + <String `wc'> + <Font + <FTag `'> + > # end of Font + <String ` command on a SPARCstation showed that the '> + > + <ParaLine + <String `\Q\Qofficial\xd5 \xd5 '> + <Font + <FTag `code'> + > # end of Font + <String `wc'> + <Font + <FTag `'> + > # end of Font + <String ` was slightly slower. Furthermore, although that '> + <Font + <FTag `code'> + > # end of Font + <String `wc'> + <Font + <FTag `'> + > # end of Font + <String ` gave an appropriate error message for '> + > + <ParaLine + <String `the options \Q'> + <Font + <FTag `code'> + > # end of Font + <String `abc'> + <Font + <FTag `'> + > # end of Font + <String `\xd5 , it made no complaints about the options \Qabc\xd5 ! '> + > + > # end of Para + <Para + <Unique 432558> + <PgfTag `Body'> + <ParaLine + <String `Dare we suggest that the system routine might have been better if its programmer had used a more literate '> + > + <ParaLine + <String `approach?'> + > + > # end of Para + <Para + <Unique 432559> + <PgfTag `Body'> + <ParaLine + > + > # end of Para + <Para + <Unique 432560> + <PgfTag `Heading1'> + <ParaLine + <TextRectID 21> + <String `Appendix B: '> + <Font + <FTag `code'> + > # end of Font + <String `fmweb'> + <Font + <FTag `'> + > # end of Font + <String ` source'> + > + > # end of Para + <Para + <Unique 432561> + <PgfTag `Body'> + <ParaLine + <String `To extract this source, go to special -\> conditional text, and hide the conditional tag named \xd2 Fluff\xd3 . Save the '> + > + <ParaLine + <String `file as a text file called fmweb. The first line of this file may need changing. '> + <ATbl 5> + > + > # end of Para + <Para + <Unique 432611> + <PgfTag `Body'> + <ParaLine + > + > # end of Para + <Para + <Unique 432612> + <PgfTag `Heading2'> + <ParaLine + <TextRectID 22> + <String `Description'> + > + > # end of Para + <Para + <Unique 432650> + <PgfTag `Body'> + <ParaLine + <String `fmweb is implemented as a simple state machine, whose state diagram is shown below.'> + <AFrame 1> + > + > # end of Para + <Para + <Unique 432651> + <PgfTag `Body'> + <ParaLine + <String `Each of the events in the state diagram are mif statements. The subroutines ParaMode, FileMode, Code'> + <Char SoftHyphen > + > + <ParaLine + <String `Mode, ChunkMode and WasteMode implement the states. If these subs are called without any parame'> + <Char SoftHyphen > + > + <ParaLine + <String `ters, they do the necessary initializations required for that state, such as initializing @lookFor, which is the '> + > + <ParaLine + <String `set of lookahead patterns in which the current state is interested. The main loop calls these subs with $line '> + > + <ParaLine + <String `as the parameter - $line contains some event deemed interesting to the current state.'> + > + > # end of Para + <Para + <Unique 432652> + <PgfTag `Body'> + <ParaLine + <String `The script first reads in all the chunks and stores them in chunksByName, keyed by the chunk heading. '> + > + <ParaLine + <String `Each chunk may contain embedded cross references to other chunks. In MIF, an XrefSrcText statement is '> + > + <ParaLine + <String `the pointer to the source paragraph - more precisely, the chunk heading that this XrefSrcText points to, will '> + > + <ParaLine + <String `have a corresponding \xd2 MText\xd3 statement with exactly the same string. Since a chunk is simply all the '> + > + <ParaLine + <String `\xd2 code\xd3 paragraph strings concatenated together, cross references are simply embedded into this stream, '> + > + <ParaLine + <String `with a "\\200" character on either end, to identify it later.'> + > + > # end of Para + <Para + <Unique 432653> + <PgfTag `Body'> + <PgfEndCond Yes > + <PgfCondFullPgf Yes > + <ParaLine + <String `Finally, each of the top level chunks are taken in order (top level chunks are those that haven\xd5 t been '> + > + <ParaLine + <String `referred to by any other chunk), and expanded. The expansion process consists of substituting each '> + > + <ParaLine + <String `embedded reference by the appropriate chunk - this is a recursive process, since the chunk referred to '> + > + <ParaLine + <String `may itself contain other embedded references.'> + > + > # end of Para + <Para + <Unique 430847> + <PgfTag `Body'> + <ParaLine + <Font + <FTag `'> + <FFamily `AvantGarde'> + <FWeight `DemiBold'> + <FPostScriptName `AvantGarde-Demi'> + <FSize 18.0 pt> + > # end of Font + <Unconditional > + > + > # end of Para + <Para + <Unique 430772> + <PgfTag `perlcode'> + <ParaLine + <String `#/usr/local/bin/perl5'> + > + > # end of Para + <Para + <Unique 430031> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430032> + <PgfTag `perlcode'> + <ParaLine + <String `#forward declarations.'> + > + > # end of Para + <Para + <Unique 430204> + <PgfTag `perlcode'> + <ParaLine + <String `sub ParaMode'> + <String `;'> + > + > # end of Para + <Para + <Unique 430628> + <PgfTag `perlcode'> + <ParaLine + <String `sub FileMode;'> + > + > # end of Para + <Para + <Unique 430630> + <PgfTag `perlcode'> + <ParaLine + <String `sub CodeMode;'> + > + > # end of Para + <Para + <Unique 430632> + <PgfTag `perlcode'> + <ParaLine + <String `sub ChunkMode;'> + > + > # end of Para + <Para + <Unique 430634> + <PgfTag `perlcode'> + <ParaLine + <String `sub WasteMode;'> + > + > # end of Para + <Para + <Unique 430037> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430613> + <PgfTag `perlcode'> + <ParaLine + <String `Initialize();'> + > + > # end of Para + <Para + <Unique 430844> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430853> + <PgfTag `perlcode'> + <ParaLine + <String `# Start with the Waste State.'> + > + > # end of Para + <Para + <Unique 430038> + <PgfTag `perlcode'> + <ParaLine + <String `WasteMode();'> + > + > # end of Para + <Para + <Unique 430039> + <PgfTag `perlcode'> + <ParaLine + <String `# Main loop'> + > + > # end of Para + <Para + <Unique 430040> + <PgfTag `perlcode'> + <ParaLine + <String `while ($line = <STDIN\>) {'> + > + > # end of Para + <Para + <Unique 430041> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `if (InterestingLine()) {'> + > + > # end of Para + <Para + <Unique 430856> + <PgfTag `perlcode'> + <ParaLine + <TextRectID 23> + <Char Tab > + <Char Tab > + <String `# Call the current mode proc (one of ParaMode,FileMode, CodeMode, ChunkMode;'> + > + > # end of Para + <Para + <Unique 430876> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `# WasteMode, or WasteOneStringMode)'> + > + > # end of Para + <Para + <Unique 430854> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `&{$currModeProc}($line);'> + > + > # end of Para + <Para + <Unique 430043> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String ` }'> + > + > # end of Para + <Para + <Unique 430044> + <PgfTag `perlcode'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 430045> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430046> + <PgfTag `perlcode'> + <ParaLine + <String `#All chunks have been slurped in. '> + > + > # end of Para + <Para + <Unique 430048> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430883> + <PgfTag `perlcode'> + <ParaLine + <String `# Find out which chunks have been referred to by othe r chunks. '> + > + > # end of Para + <Para + <Unique 430882> + <PgfTag `perlcode'> + <ParaLine + <String `foreach $k (keys %markerReferred) {'> + > + > # end of Para + <Para + <Unique 430049> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String `$chunkReferred {$markerToHeading{$k}} = 1;'> + > + > # end of Para + <Para + <Unique 430050> + <PgfTag `perlcode'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 430051> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430889> + <PgfTag `perlcode'> + <ParaLine + <String `# Can currently open only one file.'> + > + > # end of Para + <Para + <Unique 430052> + <PgfTag `perlcode'> + <ParaLine + <String `open (F, '> + <String `"'> + <String `\> $currFile'> + <String `"'> + <String `) || die '> + <String `"'> + <String `Could not open $currFile for writing'> + <String `"'> + <String `;'> + > + > # end of Para + <Para + <Unique 430053> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430054> + <PgfTag `perlcode'> + <ParaLine + <String `# The "tangle" process. Expand each top level chunk'> + > + > # end of Para + <Para + <Unique 430892> + <PgfTag `perlcode'> + <ParaLine + <String `foreach $c (@chunkHeadings) {'> + > + > # end of Para + <Para + <Unique 430055> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String `if (! $chunkReferred{$c}) {'> + > + > # end of Para + <Para + <Unique 430056> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `ChunkExpand ($c);'> + > + > # end of Para + <Para + <Unique 430057> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$chunksByName{$c} =~ s/\\\\xd([2345]) /$xlat[$1]/g;'> + <String ` #Translate smart quotes'> + > + > # end of Para + <Para + <Unique 430058> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$chunksByName{$c} =~ s/\\\\\\\\/\\\\/g;'> + <String ` #Convert \\\\ to \\'> + > + > # end of Para + <Para + <Unique 430059> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$chunksByName{$c} =~ s/\\\\\>/\>/g;'> + <String ` # convert \\\> to \>'> + > + > # end of Para + <Para + <Unique 430061> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `print F $chunksByName{$c}, '> + <String `"'> + <String `\\n'> + <String `"'> + <String `;'> + <String ` '> + > + > # end of Para + <Para + <Unique 430062> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String `}'> + > + > # end of Para + <Para + <Unique 430063> + <PgfTag `perlcode'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 430064> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430065> + <PgfTag `perlcode'> + <ParaLine + <String `close (F);'> + > + > # end of Para + <Para + <Unique 430066> + <PgfTag `perlcode'> + <ParaLine + <String `exit (0);'> + > + > # end of Para + <Para + <Unique 430903> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430067> + <PgfTag `perlcode'> + <ParaLine + <String `#------------------------------------------------------------'> + <String `--------------------------------------------------'> + > + > # end of Para + <Para + <Unique 430068> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430069> + <PgfTag `perlcode'> + <ParaLine + <String `sub '> + <Font + <FTag `'> + <FWeight `DemiBold'> + <FPostScriptName `AvantGarde-Demi'> + > # end of Font + <String `ChunkExpand'> + <Font + <FTag `'> + > # end of Font + <String ` {'> + > + > # end of Para + <Para + <Unique 430070> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` local ($heading) = @_;'> + > + > # end of Para + <Para + <Unique 430071> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + > + > # end of Para + <Para + <Unique 430072> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` print '> + <String `"'> + <String `ChunkExpand : $heading \\n'> + <String `"'> + <String ` if $debugging;'> + > + > # end of Para + <Para + <Unique 430073> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430074> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` if (defined ($chunksByName{$heading})) {'> + > + > # end of Para + <Para + <Unique 430904> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `# For each embedded marker found, call CHunkExpand recursively.'> + > + > # end of Para + <Para + <Unique 430907> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `# Note the /e option below.'> + > + > # end of Para + <Para + <Unique 430075> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `1 while '> + > + > # end of Para + <Para + <Unique 430076> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String ` '> + <Char Tab > + <String ` ($chunksByName{$heading} =~ '> + > + > # end of Para + <Para + <Unique 430077> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <Char Tab > + <String `s/\\200([^\\200]*)\\200/ChunkExpand($markerToHeading{$1})/e);'> + > + > # end of Para + <Para + <Unique 430078> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `return $chunksByName{$heading};'> + > + > # end of Para + <Para + <Unique 430079> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` } else {'> + > + > # end of Para + <Para + <Unique 430080> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `return '> + <String `"'> + <String `??$heading??'> + <String `"'> + <String `;'> + <String ` # To indicate an unresolved cross reference.'> + > + > # end of Para + <Para + <Unique 430081> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` }'> + > + > # end of Para + <Para + <Unique 430082> + <PgfTag `perlcode'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 430083> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430084> + <PgfTag `perlcode'> + <ParaLine + <String `sub '> + <Font + <FTag `'> + <FWeight `DemiBold'> + <FPostScriptName `AvantGarde-Demi'> + > # end of Font + <String `WasteMode'> + <Font + <FTag `'> + > # end of Font + <String ` {'> + > + > # end of Para + <Para + <Unique 430085> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String ` local ($ev) = @_;'> + > + > # end of Para + <Para + <Unique 430086> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` if (! defined $ev) {'> + > + > # end of Para + <Para + <Unique 430087> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `@lookFor = ($PARA);'> + > + > # end of Para + <Para + <Unique 430088> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$currModeProc = \\&WasteMode;'> + > + > # end of Para + <Para + <Unique 430089> + <PgfTag `perlcode'> + <ParaLine + <TextRectID 24> + <Char Tab > + <Char Tab > + <String `return;'> + > + > # end of Para + <Para + <Unique 430090> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` }'> + > + > # end of Para + <Para + <Unique 430091> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430092> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String `ParaMode();'> + > + > # end of Para + <Para + <Unique 430093> + <PgfTag `perlcode'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 430094> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430095> + <PgfTag `perlcode'> + <ParaLine + <String `sub '> + <Font + <FTag `'> + <FWeight `DemiBold'> + <FPostScriptName `AvantGarde-Demi'> + > # end of Font + <String `ParaMode'> + <Font + <FTag `'> + > # end of Font + <String ` {'> + > + > # end of Para + <Para + <Unique 430096> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String `local ($ev) = @_;'> + > + > # end of Para + <Para + <Unique 430097> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String `if (! defined $ev) {'> + > + > # end of Para + <Para + <Unique 430098> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `@lookFor = ('> + <String `"'> + <String `^ *<PgfTag \Qcode\xd5 '> + <String `"'> + <String `, '> + <String `"'> + <String `^ *<PgfTag \Qchunk\xd5 '> + <String `"'> + <String `, '> + <String `"'> + <String `^ *<PgfTag \QFile\xd5 '> + <String `"'> + <String `);'> + > + > # end of Para + <Para + <Unique 430099> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$currModeProc = \\&ParaMode;'> + > + > # end of Para + <Para + <Unique 430100> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `return;'> + > + > # end of Para + <Para + <Unique 430101> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` }'> + > + > # end of Para + <Para + <Unique 430102> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` print '> + <String `"'> + <String `ParaMode : $ev \\n'> + <String `"'> + <String ` if $debugging;'> + > + > # end of Para + <Para + <Unique 430103> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` if ($ev =~ /code/ ) {'> + > + > # end of Para + <Para + <Unique 430104> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `CodeMode();'> + > + > # end of Para + <Para + <Unique 430105> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` } elsif ($ev =~ /chunk/ ) {'> + > + > # end of Para + <Para + <Unique 430106> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `ChunkMode();'> + > + > # end of Para + <Para + <Unique 430107> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` } elsif ($ev =~ /File/ ) {'> + > + > # end of Para + <Para + <Unique 430108> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `FileMode();'> + > + > # end of Para + <Para + <Unique 430109> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` } else {'> + > + > # end of Para + <Para + <Unique 430110> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `WasteMode();'> + > + > # end of Para + <Para + <Unique 430111> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String `}'> + > + > # end of Para + <Para + <Unique 430112> + <PgfTag `perlcode'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 430113> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430114> + <PgfTag `perlcode'> + <ParaLine + <String `sub '> + <Font + <FTag `'> + <FWeight `DemiBold'> + <FPostScriptName `AvantGarde-Demi'> + > # end of Font + <String `FileMode'> + <Font + <FTag `'> + > # end of Font + <String ` {'> + > + > # end of Para + <Para + <Unique 430115> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` local ($ev) = @_;'> + > + > # end of Para + <Para + <Unique 430116> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` if (! defined $ev) {'> + > + > # end of Para + <Para + <Unique 430117> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `@lookFor = ('> + <String `"'> + <String `^ *<String'> + <String `"'> + <String `, $ENDOFPARA);'> + > + > # end of Para + <Para + <Unique 430118> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$currModeProc = \\&FileMode;'> + > + > # end of Para + <Para + <Unique 430119> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$currFile = '> + <String `""'> + <String `;'> + > + > # end of Para + <Para + <Unique 430120> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `return;'> + > + > # end of Para + <Para + <Unique 430121> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` }'> + > + > # end of Para + <Para + <Unique 430122> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` print '> + <String `"'> + <String `FileMode : $ev \\n'> + <String `"'> + <String ` if $debugging;'> + > + > # end of Para + <Para + <Unique 430123> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` if ($ev =~ /^ *<String.*\\\Q(.+)\\\xd5 \>$/ ) {'> + > + > # end of Para + <Para + <Unique 430124> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$currFile = $1;'> + > + > # end of Para + <Para + <Unique 430125> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` } else {'> + <String ` # End of para'> + > + > # end of Para + <Para + <Unique 430126> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `WasteMode();'> + > + > # end of Para + <Para + <Unique 430127> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String `}'> + > + > # end of Para + <Para + <Unique 430128> + <PgfTag `perlcode'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 430129> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430130> + <PgfTag `perlcode'> + <ParaLine + <String `sub '> + <Font + <FTag `'> + <FWeight `DemiBold'> + <FPostScriptName `AvantGarde-Demi'> + > # end of Font + <String `CodeMode'> + <Font + <FTag `'> + > # end of Font + <String ` {'> + > + > # end of Para + <Para + <Unique 430131> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` local ($ev, $h) = @_;'> + > + > # end of Para + <Para + <Unique 430132> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String `if (! defined $ev) {'> + > + > # end of Para + <Para + <Unique 430133> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `@lookFor = ('> + <String `"'> + <String `^ *<Char Tab'> + <String `"'> + <String `, '> + <String `"'> + <String `^ *<String'> + <String `"'> + <String `, '> + <String `"'> + <String `^ *<XRefSrcText'> + <String `"'> + <String `, $ENDOFPARA);'> + > + > # end of Para + <Para + <Unique 430134> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$currModeProc = \\&CodeMode;'> + > + > # end of Para + <Para + <Unique 430135> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `return;'> + > + > # end of Para + <Para + <Unique 430136> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String `}'> + > + > # end of Para + <Para + <Unique 430137> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` print '> + <String `"'> + <String `CodeMode : $ev \\n'> + <String `"'> + <String ` if $debugging;'> + > + > # end of Para + <Para + <Unique 430138> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` if ($ev =~ /^ *<Char Tab/) {'> + > + > # end of Para + <Para + <Unique 430139> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$chunksByName{$currChunkHeading} .= '> + <String `"'> + <String `\\t'> + <String `"'> + <String `;'> + <String ` '> + > + > # end of Para + <Para + <Unique 430140> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` } elsif ($ev =~ /String \\\Q(.*)\\\xd5 \>$/) {'> + > + > # end of Para + <Para + <Unique 430141> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$chunksByName{$currChunkHeading} .= '> + <String `"'> + <String `$1'> + <String `"'> + <String `;'> + <String ` # Concatenate code to current chunk'> + > + > # end of Para + <Para + <Unique 430142> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String `} elsif (($h) = ($ev =~ /^ *<XRefSrcText (.*)\>$/)) {'> + > + > # end of Para + <Para + <Unique 430143> + <PgfTag `perlcode'> + <ParaLine + <TextRectID 25> + <Char Tab > + <Char Tab > + <String `$markerReferred{$h} = 1;'> + <String ` # Mark this chunk reference as "referred to"'> + > + > # end of Para + <Para + <Unique 430144> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `# Put the text in as an embedded reference'> + > + > # end of Para + <Para + <Unique 430916> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$chunksByName{$currChunkHeading} .= '> + <String `"'> + <String `\\200$h\\200\\n'> + <String `"'> + <String `;'> + <String ` '> + > + > # end of Para + <Para + <Unique 430145> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `# The next string is the string of the cross reference itself - having embedded the'> + > + > # end of Para + <Para + <Unique 430924> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `# cross reference itself, we are not interested in this string.'> + > + > # end of Para + <Para + <Unique 430921> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `WasteOneStringMode();'> + > + > # end of Para + <Para + <Unique 430146> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` } elsif ($ev =~ /$ENDOFPARA/o) {'> + > + > # end of Para + <Para + <Unique 430147> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `# Assuming that each line of the code is in one "code" para . Time to append a '> + > + > # end of Para + <Para + <Unique 430926> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `# newline'> + > + > # end of Para + <Para + <Unique 430925> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$chunksByName{$currChunkHeading} .= '> + <String `"'> + <String `\\n'> + <String `"'> + <String `;'> + > + > # end of Para + <Para + <Unique 430148> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `WasteMode();'> + > + > # end of Para + <Para + <Unique 430149> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` }'> + > + > # end of Para + <Para + <Unique 430150> + <PgfTag `perlcode'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 430151> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430152> + <PgfTag `perlcode'> + <ParaLine + <String `sub '> + <Font + <FTag `'> + <FWeight `DemiBold'> + <FPostScriptName `AvantGarde-Demi'> + > # end of Font + <String `WasteOneStringMode'> + <Font + <FTag `'> + > # end of Font + <String ` {'> + > + > # end of Para + <Para + <Unique 430153> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `# Called from CodeMode above.'> + > + > # end of Para + <Para + <Unique 430927> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String ` local ($ev) = @_;'> + > + > # end of Para + <Para + <Unique 430154> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` if (! defined $ev) {'> + > + > # end of Para + <Para + <Unique 430155> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `@lookFor = ('> + <String `"'> + <String `^ *<String'> + <String `"'> + <String `);'> + > + > # end of Para + <Para + <Unique 430156> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$currModeProc = \\&WasteOneStringMode;'> + > + > # end of Para + <Para + <Unique 430157> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `return;'> + > + > # end of Para + <Para + <Unique 430158> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` }'> + > + > # end of Para + <Para + <Unique 430159> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` CodeMode();'> + > + > # end of Para + <Para + <Unique 430160> + <PgfTag `perlcode'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 430161> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430162> + <PgfTag `perlcode'> + <ParaLine + <String `sub '> + <Font + <FTag `'> + <FWeight `DemiBold'> + <FPostScriptName `AvantGarde-Demi'> + > # end of Font + <String `ChunkMode'> + <Font + <FTag `'> + > # end of Font + <String ` {'> + > + > # end of Para + <Para + <Unique 430163> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String `local ($ev) = @_;'> + > + > # end of Para + <Para + <Unique 430164> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` if (! defined $ev) {'> + > + > # end of Para + <Para + <Unique 430165> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `@lookFor = ('> + <String `"'> + <String `^ *<MText'> + <String `"'> + <String `, '> + <String `"'> + <String `^ *<String'> + <String `"'> + <String `, $ENDOFPARA);'> + > + > # end of Para + <Para + <Unique 430166> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$currChunkHeading = '> + <String `""'> + <String `;'> + > + > # end of Para + <Para + <Unique 430167> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$currMarkerText = '> + <String `""'> + <String `;'> + > + > # end of Para + <Para + <Unique 430168> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$currModeProc = \\&ChunkMode;'> + > + > # end of Para + <Para + <Unique 430169> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `return;'> + > + > # end of Para + <Para + <Unique 430170> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` }'> + > + > # end of Para + <Para + <Unique 430171> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` if ($ev =~ /^ *<MText (.*)\>$/) {'> + > + > # end of Para + <Para + <Unique 430932> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$currMarkerText = $1;'> + > + > # end of Para + <Para + <Unique 430173> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` } elsif ($ev =~ /^ *<String.*\\\Q(.+)\\\xd5 \>$/ ) {'> + > + > # end of Para + <Para + <Unique 430174> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `$currChunkHeading .= $1;'> + > + > # end of Para + <Para + <Unique 430175> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` } else {'> + > + > # end of Para + <Para + <Unique 430176> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `# End of chunk para. '> + > + > # end of Para + <Para + <Unique 430935> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `print '> + <String `"'> + <String `ChunkMode : $1 \\n'> + <String `"'> + <String ` if $debugging;'> + > + > # end of Para + <Para + <Unique 430177> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `if (! defined $chunksByName{$currChunkHeading}) {'> + > + > # end of Para + <Para + <Unique 430178> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <Char Tab > + <String `# Init the current chunk with blank code.'> + > + > # end of Para + <Para + <Unique 430936> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String ` '> + <Char Tab > + <Char Tab > + <String `$chunksByName{$currChunkHeading} = '> + <String `""'> + <String `;'> + > + > # end of Para + <Para + <Unique 430179> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `}'> + > + > # end of Para + <Para + <Unique 430180> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `if (! defined $headingSeenBefore{$currChunkHeading}) {'> + > + > # end of Para + <Para + <Unique 430937> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <Char Tab > + <String `# New chunk heading name seen.'> + > + > # end of Para + <Para + <Unique 430181> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String ` '> + <Char Tab > + <Char Tab > + <String ` push (@chunkHeadings, $currChunkHeading);'> + > + > # end of Para + <Para + <Unique 430182> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String ` '> + <Char Tab > + <Char Tab > + <String ` $headingSeenBefore{$currChunkHeading} = 1;'> + > + > # end of Para + <Para + <Unique 430183> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `}'> + > + > # end of Para + <Para + <Unique 430184> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `if ($currMarkerText ne '> + <String `""'> + <String `)'> + <String ` {'> + > + > # end of Para + <Para + <Unique 430938> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <Char Tab > + <String `# cross reference between marker text and the actual heading'> + > + > # end of Para + <Para + <Unique 430185> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String ` '> + <Char Tab > + <Char Tab > + <String `$markerToHeading{$currMarkerText} = $currChunkHeading;'> + > + > # end of Para + <Para + <Unique 430186> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `}'> + > + > # end of Para + <Para + <Unique 430187> + <PgfTag `perlcode'> + <ParaLine + <TextRectID 26> + <Char Tab > + <Char Tab > + <String `WasteMode();'> + > + > # end of Para + <Para + <Unique 430188> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String `}'> + > + > # end of Para + <Para + <Unique 430189> + <PgfTag `perlcode'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 430190> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430191> + <PgfTag `perlcode'> + <ParaLine + <String `sub '> + <Font + <FTag `'> + <FWeight `DemiBold'> + <FPostScriptName `AvantGarde-Demi'> + > # end of Font + <String `InterestingLine'> + <Font + <FTag `'> + > # end of Font + <String ` {'> + > + > # end of Para + <Para + <Unique 430192> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `# Does the line belong to any of the lookahead tokens? '> + > + > # end of Para + <Para + <Unique 430939> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `foreach $l (@lookFor) {'> + > + > # end of Para + <Para + <Unique 430193> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `if ($line =~ /$l/) {'> + > + > # end of Para + <Para + <Unique 430194> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String ` '> + <Char Tab > + <String ` '> + <Char Tab > + <String `return $l;'> + > + > # end of Para + <Para + <Unique 430195> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <Char Tab > + <String `}'> + > + > # end of Para + <Para + <Unique 430196> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String ` }'> + > + > # end of Para + <Para + <Unique 430197> + <PgfTag `perlcode'> + <ParaLine + <String ` '> + <Char Tab > + <String `return undef;'> + > + > # end of Para + <Para + <Unique 430198> + <PgfTag `perlcode'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 430585> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430586> + <PgfTag `perlcode'> + <ParaLine + <String `sub '> + <Font + <FTag `'> + <FWeight `DemiBold'> + <FPostScriptName `AvantGarde-Demi'> + > # end of Font + <String `Initialize'> + <Font + <FTag `'> + > # end of Font + <String ` {'> + > + > # end of Para + <Para + <Unique 430590> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `$debugging = 0;'> + <String ` # Change to 1 to get a trace.'> + > + > # end of Para + <Para + <Unique 430591> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `$currFile = "-";'> + <Char Tab > + <Char Tab > + <String `# Output to stdout'> + > + > # end of Para + <Para + <Unique 430592> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `$PARA = \xd5 ^ *<Para\xd5 ;'> + > + > # end of Para + <Para + <Unique 430593> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `$ENDOFPARA = \xd5 ^ *\> # end of Para\xd5 ;'> + > + > # end of Para + <Para + <Unique 430594> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430595> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `#Translation table for smart quotes. '> + > + > # end of Para + <Para + <Unique 430596> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `$xlat[2] = "\\"";'> + > + > # end of Para + <Para + <Unique 430597> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `$xlat[3] = "\\"";'> + > + > # end of Para + <Para + <Unique 430598> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `$xlat[4] = "\\\xd5 ";'> + > + > # end of Para + <Para + <Unique 430599> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `$xlat[5] = "\\\xd5 ";'> + > + > # end of Para + <Para + <Unique 430600> + <PgfTag `perlcode'> + <ParaLine + > + > # end of Para + <Para + <Unique 430601> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `# Start off with a default chunk heading, in case the programmer starts off code without '> + > + > # end of Para + <Para + <Unique 430953> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `# a chunk heading'> + > + > # end of Para + <Para + <Unique 430946> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `$currChunkHeading = " DEFAULT ";'> + > + > # end of Para + <Para + <Unique 430602> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `$chunksByName {$currChunkHeading} = "";'> + > + > # end of Para + <Para + <Unique 430603> + <PgfTag `perlcode'> + <ParaLine + <Char Tab > + <String `push (@chunkHeadings, $currChunkHeading);'> + > + > # end of Para + <Para + <Unique 430587> + <PgfTag `perlcode'> + <ParaLine + <String `}'> + > + > # end of Para + <Para + <Unique 430199> + <PgfTag `Body'> + <ParaLine + > + > # end of Para + <Para + <Unique 430200> + <PgfTag `Body'> + <PgfEndCond Yes > + <PgfCondFullPgf Yes > + <ParaLine + > + > # end of Para + <Para + <Unique 427886> + <PgfTag `Body'> + <ParaLine + > + > # end of Para +> # end of TextFlow +<TextFlow + <TFTag `TOC'> + <Notes + > # end of Notes + <Para + <Unique 432829> + <PgfTag `chunkTOC'> + <ParaLine + <TextRectID 12> + <String `<$paranum\>'> + <Char Tab > + <String `<$paratext\>'> + > + > # end of Para + <Para + <Unique 432830> + <PgfTag `refersToTOC'> + <ParaLine + <String `<normalfont\>'> + <Char Tab > + <String `<$paratext\>'> + > + > # end of Para + <Para + <Unique 432825> + <Pgf + <PgfTag `HeadingTOC'> + <PgfAlignment Left > + <PgfFIndent 0.13883"> + <PgfLIndent 0.13883"> + <PgfRIndent 0.33333"> + <PgfSpBefore 2.0 pt> + <PgfSpAfter 2.0 pt> + <PgfBlockSize 2> + <PgfLineSpacing Fixed > + <PgfNumTabs 2> + <TabStop + <TSX 0.48611"> + <TSType Left > + <TSLeaderStr ` '> + > # end of TabStop + <TabStop + <TSX 4.0"> + <TSType Right > + <TSLeaderStr `.'> + > # end of TabStop + <PgfHyphenate No > + > # end of Pgf + <ParaLine + > + > # end of Para +> # end of TextFlow +# End of MIFFile diff --git a/web/fmweb/fmweb.ps b/web/fmweb/fmweb.ps new file mode 100644 index 0000000000..c4647c4ed2 --- /dev/null +++ b/web/fmweb/fmweb.ps @@ -0,0 +1,4073 @@ +%!PS-Adobe-3.0 +%%BoundingBox: (atend) +%%Pages: (atend) +%%PageOrder: (atend) +%%DocumentFonts: (atend) +%%Creator: Frame 4.0 +%%DocumentData: Clean7Bit +%%EndComments +%%BeginProlog +% +% Frame ps_prolog 4.0, for use with Frame 4.0 products +% This ps_prolog file is Copyright (c) 1986-1993 Frame Technology +% Corporation. All rights reserved. This ps_prolog file may be +% freely copied and distributed in conjunction with documents created +% using FrameMaker, FrameBuilder and FrameViewer as long as this +% copyright notice is preserved. +% +% Frame products normally print colors as their true color on a color printer +% or as shades of gray, based on luminance, on a black-and white printer. The +% following flag, if set to True, forces all non-white colors to print as pure +% black. This has no effect on bitmap images. +/FMPrintAllColorsAsBlack false def +% +% Frame products can either set their own line screens or use a printer's +% default settings. Three flags below control this separately for no +% separations, spot separations and process separations. If a flag +% is true, then the default printer settings will not be changed. If it is +% false, Frame products will use their own settings from a table based on +% the printer's resolution. +/FMUseDefaultNoSeparationScreen true def +/FMUseDefaultSpotSeparationScreen true def +/FMUseDefaultProcessSeparationScreen false def +% +% For any given PostScript printer resolution, Frame products have two sets of +% screen angles and frequencies for printing process separations, which are +% recomended by Adobe. The following variable chooses the higher frequencies +% when set to true or the lower frequencies when set to false. This is only +% effective if the appropriate FMUseDefault...SeparationScreen flag is false. +/FMUseHighFrequencyScreens true def +% +% PostScript Level 2 printers contain an "Accurate Screens" feature which can +% improve process separation rendering at the expense of compute time. This +% flag is ignored by PostScript Level 1 printers. +/FMUseAcccurateScreens true def +% +% The following PostScript procedure defines the spot function that Frame +% products will use for process separations. You may un-comment-out one of +% the alternative functions below, or use your own. +% +% Dot function +/FMSpotFunction {abs exch abs 2 copy add 1 gt + {1 sub dup mul exch 1 sub dup mul add 1 sub } + {dup mul exch dup mul add 1 exch sub }ifelse } def +% +% Line function +% /FMSpotFunction { pop } def +% +% Elipse function +% /FMSpotFunction { dup 5 mul 8 div mul exch dup mul exch add +% sqrt 1 exch sub } def +% +% +/FMversion (4.0) def +/FMLevel1 /languagelevel where {pop languagelevel} {1} ifelse 2 lt def +/FMPColor + FMLevel1 { + false + /colorimage where {pop pop true} if + } { + true + } ifelse +def +/FrameDict 400 dict def +systemdict /errordict known not {/errordict 10 dict def + errordict /rangecheck {stop} put} if +% The readline in PS 23.0 doesn't recognize cr's as nl's on AppleTalk +FrameDict /tmprangecheck errordict /rangecheck get put +errordict /rangecheck {FrameDict /bug true put} put +FrameDict /bug false put +mark +% Some PS machines read past the CR, so keep the following 3 lines together! +currentfile 5 string readline +00 +0000000000 +cleartomark +errordict /rangecheck FrameDict /tmprangecheck get put +FrameDict /bug get { + /readline { + /gstring exch def + /gfile exch def + /gindex 0 def + { + gfile read pop + dup 10 eq {exit} if + dup 13 eq {exit} if + gstring exch gindex exch put + /gindex gindex 1 add def + } loop + pop + gstring 0 gindex getinterval true + } bind def + } if +/FMshowpage /showpage load def +/FMquit /quit load def +/FMFAILURE { + dup = flush + FMshowpage + /Helvetica findfont 12 scalefont setfont + 72 200 moveto + show FMshowpage + FMquit + } def +/FMVERSION { + FMversion ne { + (Frame product version does not match ps_prolog!) FMFAILURE + } if + } def +/FMBADEPSF { + (PostScript Lang. Ref. Man., 2nd Ed., H.2.4 says EPS must not call X ) + dup dup (X) search pop exch pop exch pop length + 4 -1 roll + putinterval + FMFAILURE + } def +/FMLOCAL { + FrameDict begin + 0 def + end + } def +/concatprocs + { + /proc2 exch cvlit def/proc1 exch cvlit def/newproc proc1 length proc2 length add array def + newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx +}def +FrameDict begin +/FMnone 0 def +/FMcyan 1 def +/FMmagenta 2 def +/FMyellow 3 def +/FMblack 4 def +/FMcustom 5 def +/FrameNegative false def +/FrameSepIs FMnone def +/FrameSepBlack 0 def +/FrameSepYellow 0 def +/FrameSepMagenta 0 def +/FrameSepCyan 0 def +/FrameSepRed 1 def +/FrameSepGreen 1 def +/FrameSepBlue 1 def +/FrameCurGray 1 def +/FrameCurPat null def +/FrameCurColors [ 0 0 0 1 0 0 0 ] def +/FrameColorEpsilon .001 def +/eqepsilon { + sub dup 0 lt {neg} if + FrameColorEpsilon le +} bind def +/FrameCmpColorsCMYK { + 2 copy 0 get exch 0 get eqepsilon { + 2 copy 1 get exch 1 get eqepsilon { + 2 copy 2 get exch 2 get eqepsilon { + 3 get exch 3 get eqepsilon + } {pop pop false} ifelse + }{pop pop false} ifelse + } {pop pop false} ifelse +} bind def +/FrameCmpColorsRGB { + 2 copy 4 get exch 0 get eqepsilon { + 2 copy 5 get exch 1 get eqepsilon { + 6 get exch 2 get eqepsilon + }{pop pop false} ifelse + } {pop pop false} ifelse +} bind def +/RGBtoCMYK { + 1 exch sub + 3 1 roll + 1 exch sub + 3 1 roll + 1 exch sub + 3 1 roll + 3 copy + 2 copy + le { pop } { exch pop } ifelse + 2 copy + le { pop } { exch pop } ifelse + dup dup dup + 6 1 roll + 4 1 roll + 7 1 roll + sub + 6 1 roll + sub + 5 1 roll + sub + 4 1 roll +} bind def +/CMYKtoRGB { + dup dup 4 -1 roll add + 5 1 roll 3 -1 roll add + 4 1 roll add + 1 exch sub dup 0 lt {pop 0} if 3 1 roll + 1 exch sub dup 0 lt {pop 0} if exch + 1 exch sub dup 0 lt {pop 0} if exch +} bind def +/FrameSepInit { + 1.0 RealSetgray +} bind def +/FrameSetSepColor { + /FrameSepBlue exch def + /FrameSepGreen exch def + /FrameSepRed exch def + /FrameSepBlack exch def + /FrameSepYellow exch def + /FrameSepMagenta exch def + /FrameSepCyan exch def + /FrameSepIs FMcustom def + setCurrentScreen +} bind def +/FrameSetCyan { + /FrameSepBlue 1.0 def + /FrameSepGreen 1.0 def + /FrameSepRed 0.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 1.0 def + /FrameSepIs FMcyan def + setCurrentScreen +} bind def + +/FrameSetMagenta { + /FrameSepBlue 1.0 def + /FrameSepGreen 0.0 def + /FrameSepRed 1.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 1.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMmagenta def + setCurrentScreen +} bind def + +/FrameSetYellow { + /FrameSepBlue 0.0 def + /FrameSepGreen 1.0 def + /FrameSepRed 1.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 1.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMyellow def + setCurrentScreen +} bind def + +/FrameSetBlack { + /FrameSepBlue 0.0 def + /FrameSepGreen 0.0 def + /FrameSepRed 0.0 def + /FrameSepBlack 1.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMblack def + setCurrentScreen +} bind def + +/FrameNoSep { + /FrameSepIs FMnone def + setCurrentScreen +} bind def +/FrameSetSepColors { + FrameDict begin + [ exch 1 add 1 roll ] + /FrameSepColors + exch def end + } bind def +/FrameColorInSepListCMYK { + FrameSepColors { + exch dup 3 -1 roll + FrameCmpColorsCMYK + { pop true exit } if + } forall + dup true ne {pop false} if + } bind def +/FrameColorInSepListRGB { + FrameSepColors { + exch dup 3 -1 roll + FrameCmpColorsRGB + { pop true exit } if + } forall + dup true ne {pop false} if + } bind def +/RealSetgray /setgray load def +/RealSetrgbcolor /setrgbcolor load def +/RealSethsbcolor /sethsbcolor load def +end +/setgray { + FrameDict begin + FrameSepIs FMnone eq + { RealSetgray } + { + FrameSepIs FMblack eq + { RealSetgray } + { FrameSepIs FMcustom eq + FrameSepRed 0 eq and + FrameSepGreen 0 eq and + FrameSepBlue 0 eq and { + RealSetgray + } { + 1 RealSetgray pop + } ifelse + } ifelse + } ifelse + end +} bind def +/setrgbcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSetrgbcolor } + { + 3 copy [ 4 1 roll ] + FrameColorInSepListRGB + { + FrameSepBlue eq exch + FrameSepGreen eq and exch + FrameSepRed eq and + { 0 } { 1 } ifelse + } + { + FMPColor { + RealSetrgbcolor + currentcmykcolor + } { + RGBtoCMYK + } ifelse + FrameSepIs FMblack eq + {1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + RealSetgray + } + ifelse + end +} bind def +/sethsbcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSethsbcolor } + { + RealSethsbcolor + currentrgbcolor + setrgbcolor + } + ifelse + end +} bind def +FrameDict begin +/setcmykcolor where { + pop /RealSetcmykcolor /setcmykcolor load def +} { + /RealSetcmykcolor { + 4 1 roll + 3 { 3 index add 0 max 1 min 1 exch sub 3 1 roll} repeat + setrgbcolor pop + } bind def +} ifelse +userdict /setcmykcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSetcmykcolor } + { + 4 copy [ 5 1 roll ] + FrameColorInSepListCMYK + { + FrameSepBlack eq exch + FrameSepYellow eq and exch + FrameSepMagenta eq and exch + FrameSepCyan eq and + { 0 } { 1 } ifelse + } + { + FrameSepIs FMblack eq + {1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + RealSetgray + } + ifelse + end + } bind put +FMLevel1 not { + + /patProcDict 5 dict dup begin + <0f1e3c78f0e1c387> { 3 setlinewidth -1 -1 moveto 9 9 lineto stroke + 4 -4 moveto 12 4 lineto stroke + -4 4 moveto 4 12 lineto stroke} bind def + <0f87c3e1f0783c1e> { 3 setlinewidth -1 9 moveto 9 -1 lineto stroke + -4 4 moveto 4 -4 lineto stroke + 4 12 moveto 12 4 lineto stroke} bind def + <8142241818244281> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke + -1 -1 moveto 9 9 lineto stroke } bind def + <03060c183060c081> { 1 setlinewidth -1 -1 moveto 9 9 lineto stroke + 4 -4 moveto 12 4 lineto stroke + -4 4 moveto 4 12 lineto stroke} bind def + <8040201008040201> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke + -4 4 moveto 4 -4 lineto stroke + 4 12 moveto 12 4 lineto stroke} bind def + end def + /patDict 15 dict dup begin + /PatternType 1 def + /PaintType 2 def + /TilingType 3 def + /BBox [ 0 0 8 8 ] def + /XStep 8 def + /YStep 8 def + /PaintProc { + begin + patProcDict bstring known { + patProcDict bstring get exec + } { + 8 8 true [1 0 0 -1 0 8] bstring imagemask + } ifelse + end + } bind def + end def +} if +/combineColor { + FrameSepIs FMnone eq + { + graymode FMLevel1 or not { + + [/Pattern [/DeviceCMYK]] setcolorspace + FrameCurColors 0 4 getinterval aload pop FrameCurPat setcolor + } { + FrameCurColors 3 get 1.0 ge { + FrameCurGray RealSetgray + } { + FMPColor graymode and { + 0 1 3 { + FrameCurColors exch get + 1 FrameCurGray sub mul + } for + RealSetcmykcolor + } { + 4 1 6 { + FrameCurColors exch get + graymode { + 1 exch sub 1 FrameCurGray sub mul 1 exch sub + } { + 1.0 lt {FrameCurGray} {1} ifelse + } ifelse + } for + RealSetrgbcolor + } ifelse + } ifelse + } ifelse + } { + FrameCurColors 0 4 getinterval aload + FrameColorInSepListCMYK { + FrameSepBlack eq exch + FrameSepYellow eq and exch + FrameSepMagenta eq and exch + FrameSepCyan eq and + FrameSepIs FMcustom eq and + { FrameCurGray } { 1 } ifelse + } { + FrameSepIs FMblack eq + {FrameCurGray 1.0 exch sub mul 1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop FrameCurGray 1.0 exch sub mul 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + graymode FMLevel1 or not { + + [/Pattern [/DeviceGray]] setcolorspace + FrameCurPat setcolor + } { + graymode not FMLevel1 and { + + dup 1 lt {pop FrameCurGray} if + } if + RealSetgray + } ifelse + } ifelse +} bind def +/savematrix { + orgmatrix currentmatrix pop + } bind def +/restorematrix { + orgmatrix setmatrix + } bind def +/dmatrix matrix def +/dpi 72 0 dmatrix defaultmatrix dtransform + dup mul exch dup mul add sqrt def + +/freq dpi dup 72 div round dup 0 eq {pop 1} if 8 mul div def +/sangle 1 0 dmatrix defaultmatrix dtransform exch atan def +/dpiranges [ 2540 2400 1693 1270 1200 635 600 0 ] def +/CMLowFreqs [ 100.402 94.8683 89.2289 100.402 94.8683 66.9349 63.2456 47.4342 ] def +/YLowFreqs [ 95.25 90.0 84.65 95.25 90.0 70.5556 66.6667 50.0 ] def +/KLowFreqs [ 89.8026 84.8528 79.8088 89.8026 84.8528 74.8355 70.7107 53.033 ] def +/CLowAngles [ 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 ] def +/MLowAngles [ 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 ] def +/YLowTDot [ true true false true true false false false ] def +/CMHighFreqs [ 133.87 126.491 133.843 108.503 102.523 100.402 94.8683 63.2456 ] def +/YHighFreqs [ 127.0 120.0 126.975 115.455 109.091 95.25 90.0 60.0 ] def +/KHighFreqs [ 119.737 113.137 119.713 128.289 121.218 89.8026 84.8528 63.6395 ] def +/CHighAngles [ 71.5651 71.5651 71.5651 70.0169 70.0169 71.5651 71.5651 71.5651 ] def +/MHighAngles [ 18.4349 18.4349 18.4349 19.9831 19.9831 18.4349 18.4349 18.4349 ] def +/YHighTDot [ false false true false false true true false ] def +/PatFreq [ 10.5833 10.0 9.4055 10.5833 10.0 10.5833 10.0 9.375 ] def +/screenIndex { + 0 1 dpiranges length 1 sub { dup dpiranges exch get 1 sub dpi le {exit} {pop} ifelse } for +} bind def +/getCyanScreen { + FMUseHighFrequencyScreens { CHighAngles CMHighFreqs} {CLowAngles CMLowFreqs} ifelse + screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load +} bind def +/getMagentaScreen { + FMUseHighFrequencyScreens { MHighAngles CMHighFreqs } {MLowAngles CMLowFreqs} ifelse + screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load +} bind def +/getYellowScreen { + FMUseHighFrequencyScreens { YHighTDot YHighFreqs} { YLowTDot YLowFreqs } ifelse + screenIndex dup 3 1 roll get 3 1 roll get { 3 div + {2 { 1 add 2 div 3 mul dup floor sub 2 mul 1 sub exch} repeat + FMSpotFunction } } {/FMSpotFunction load } ifelse + 0.0 exch +} bind def +/getBlackScreen { + FMUseHighFrequencyScreens { KHighFreqs } { KLowFreqs } ifelse + screenIndex get 45.0 /FMSpotFunction load +} bind def +/getSpotScreen { + getBlackScreen +} bind def +/getCompositeScreen { + getBlackScreen +} bind def +/FMSetScreen + FMLevel1 { /setscreen load + }{ { + 8 dict begin + /HalftoneType 1 def + /SpotFunction exch def + /Angle exch def + /Frequency exch def + /AccurateScreens FMUseAcccurateScreens def + currentdict end sethalftone + } bind } ifelse +def +/setDefaultScreen { + FMPColor { + orgrxfer cvx orggxfer cvx orgbxfer cvx orgxfer cvx setcolortransfer + } + { + orgxfer cvx settransfer + } ifelse + orgfreq organgle orgproc cvx setscreen +} bind def +/setCurrentScreen { + FrameSepIs FMnone eq { + FMUseDefaultNoSeparationScreen { + setDefaultScreen + } { + getCompositeScreen FMSetScreen + } ifelse + } { + FrameSepIs FMcustom eq { + FMUseDefaultSpotSeparationScreen { + setDefaultScreen + } { + getSpotScreen FMSetScreen + } ifelse + } { + FMUseDefaultProcessSeparationScreen { + setDefaultScreen + } { + FrameSepIs FMcyan eq { + getCyanScreen FMSetScreen + } { + FrameSepIs FMmagenta eq { + getMagentaScreen FMSetScreen + } { + FrameSepIs FMyellow eq { + getYellowScreen FMSetScreen + } { + getBlackScreen FMSetScreen + } ifelse + } ifelse + } ifelse + } ifelse + } ifelse + } ifelse +} bind def +end + /gstring FMLOCAL + /gfile FMLOCAL + /gindex FMLOCAL + /orgrxfer FMLOCAL + /orggxfer FMLOCAL + /orgbxfer FMLOCAL + /orgxfer FMLOCAL + /orgproc FMLOCAL + /orgrproc FMLOCAL + /orggproc FMLOCAL + /orgbproc FMLOCAL + /organgle FMLOCAL + /orgrangle FMLOCAL + /orggangle FMLOCAL + /orgbangle FMLOCAL + /orgfreq FMLOCAL + /orgrfreq FMLOCAL + /orggfreq FMLOCAL + /orgbfreq FMLOCAL + /yscale FMLOCAL + /xscale FMLOCAL + /edown FMLOCAL + /manualfeed FMLOCAL + /paperheight FMLOCAL + /paperwidth FMLOCAL +/FMDOCUMENT { + array /FMfonts exch def + /#copies exch def + FrameDict begin + 0 ne /manualfeed exch def + /paperheight exch def + /paperwidth exch def + 0 ne /FrameNegative exch def + 0 ne /edown exch def + /yscale exch def + /xscale exch def + FMLevel1 { + manualfeed {setmanualfeed} if + /FMdicttop countdictstack 1 add def + /FMoptop count def + setpapername + manualfeed {true} {papersize} ifelse + {manualpapersize} {false} ifelse + {desperatepapersize} {false} ifelse + { (Can't select requested paper size for Frame print job!) FMFAILURE } if + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + } + {{1 dict dup /PageSize [paperwidth paperheight]put pop}stopped + { (Can't select requested paper size for Frame print job!) FMFAILURE } if + {1 dict dup /ManualFeed manualfeed put setpagedevice } stopped pop } + ifelse + + FMPColor { + currentcolorscreen + cvlit /orgproc exch def + /organgle exch def + /orgfreq exch def + cvlit /orgbproc exch def + /orgbangle exch def + /orgbfreq exch def + cvlit /orggproc exch def + /orggangle exch def + /orggfreq exch def + cvlit /orgrproc exch def + /orgrangle exch def + /orgrfreq exch def + currentcolortransfer + FrameNegative { + 1 1 4 { + pop { 1 exch sub } concatprocs 4 1 roll + } for + 4 copy + setcolortransfer + } if + cvlit /orgxfer exch def + cvlit /orgbxfer exch def + cvlit /orggxfer exch def + cvlit /orgrxfer exch def + } { + currentscreen + cvlit /orgproc exch def + /organgle exch def + /orgfreq exch def + + currenttransfer + FrameNegative { + { 1 exch sub } concatprocs + dup settransfer + } if + cvlit /orgxfer exch def + } ifelse + end +} def +/pagesave FMLOCAL +/orgmatrix FMLOCAL +/landscape FMLOCAL +/pwid FMLOCAL +/FMBEGINPAGE { + FrameDict begin + /pagesave save def + 3.86 setmiterlimit + /landscape exch 0 ne def + landscape { + 90 rotate 0 exch dup /pwid exch def neg translate pop + }{ + pop /pwid exch def + } ifelse + edown { [-1 0 0 1 pwid 0] concat } if + 0 0 moveto paperwidth 0 lineto paperwidth paperheight lineto + 0 paperheight lineto 0 0 lineto 1 setgray fill + xscale yscale scale + /orgmatrix matrix def + gsave +} def +/FMENDPAGE { + grestore + pagesave restore + end + showpage + } def +/FMFONTDEFINE { + FrameDict begin + findfont + ReEncode + 1 index exch + definefont + FMfonts 3 1 roll + put + end + } def +/FMFILLS { + FrameDict begin dup + array /fillvals exch def + dict /patCache exch def + end + } def +/FMFILL { + FrameDict begin + fillvals 3 1 roll put + end + } def +/FMNORMALIZEGRAPHICS { + newpath + 0.0 0.0 moveto + 1 setlinewidth + 0 setlinecap + 0 0 0 sethsbcolor + 0 setgray + } bind def + /fx FMLOCAL + /fy FMLOCAL + /fh FMLOCAL + /fw FMLOCAL + /llx FMLOCAL + /lly FMLOCAL + /urx FMLOCAL + /ury FMLOCAL +/FMBEGINEPSF { + end + /FMEPSF save def + /showpage {} def +% See Adobe's "PostScript Language Reference Manual, 2nd Edition", page 714. +% "...the following operators MUST NOT be used in an EPS file:" (emphasis ours) + /banddevice {(banddevice) FMBADEPSF} def + /clear {(clear) FMBADEPSF} def + /cleardictstack {(cleardictstack) FMBADEPSF} def + /copypage {(copypage) FMBADEPSF} def + /erasepage {(erasepage) FMBADEPSF} def + /exitserver {(exitserver) FMBADEPSF} def + /framedevice {(framedevice) FMBADEPSF} def + /grestoreall {(grestoreall) FMBADEPSF} def + /initclip {(initclip) FMBADEPSF} def + /initgraphics {(initgraphics) FMBADEPSF} def + /initmatrix {(initmatrix) FMBADEPSF} def + /quit {(quit) FMBADEPSF} def + /renderbands {(renderbands) FMBADEPSF} def + /setglobal {(setglobal) FMBADEPSF} def + /setpagedevice {(setpagedevice) FMBADEPSF} def + /setshared {(setshared) FMBADEPSF} def + /startjob {(startjob) FMBADEPSF} def + /lettertray {(lettertray) FMBADEPSF} def + /letter {(letter) FMBADEPSF} def + /lettersmall {(lettersmall) FMBADEPSF} def + /11x17tray {(11x17tray) FMBADEPSF} def + /11x17 {(11x17) FMBADEPSF} def + /ledgertray {(ledgertray) FMBADEPSF} def + /ledger {(ledger) FMBADEPSF} def + /legaltray {(legaltray) FMBADEPSF} def + /legal {(legal) FMBADEPSF} def + /statementtray {(statementtray) FMBADEPSF} def + /statement {(statement) FMBADEPSF} def + /executivetray {(executivetray) FMBADEPSF} def + /executive {(executive) FMBADEPSF} def + /a3tray {(a3tray) FMBADEPSF} def + /a3 {(a3) FMBADEPSF} def + /a4tray {(a4tray) FMBADEPSF} def + /a4 {(a4) FMBADEPSF} def + /a4small {(a4small) FMBADEPSF} def + /b4tray {(b4tray) FMBADEPSF} def + /b4 {(b4) FMBADEPSF} def + /b5tray {(b5tray) FMBADEPSF} def + /b5 {(b5) FMBADEPSF} def + FMNORMALIZEGRAPHICS + [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall + fx fw 2 div add fy fh 2 div add translate + rotate + fw 2 div neg fh 2 div neg translate + fw urx llx sub div fh ury lly sub div scale + llx neg lly neg translate + /FMdicttop countdictstack 1 add def + /FMoptop count def + } bind def +/FMENDEPSF { + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + FMEPSF restore + FrameDict begin + } bind def +FrameDict begin +/setmanualfeed { +%%BeginFeature *ManualFeed True + statusdict /manualfeed true put +%%EndFeature + } bind def +/max {2 copy lt {exch} if pop} bind def +/min {2 copy gt {exch} if pop} bind def +/inch {72 mul} def +/pagedimen { + paperheight sub abs 16 lt exch + paperwidth sub abs 16 lt and + {/papername exch def} {pop} ifelse + } bind def + /papersizedict FMLOCAL +/setpapername { + /papersizedict 14 dict def + papersizedict begin + /papername /unknown def + /Letter 8.5 inch 11.0 inch pagedimen + /LetterSmall 7.68 inch 10.16 inch pagedimen + /Tabloid 11.0 inch 17.0 inch pagedimen + /Ledger 17.0 inch 11.0 inch pagedimen + /Legal 8.5 inch 14.0 inch pagedimen + /Statement 5.5 inch 8.5 inch pagedimen + /Executive 7.5 inch 10.0 inch pagedimen + /A3 11.69 inch 16.5 inch pagedimen + /A4 8.26 inch 11.69 inch pagedimen + /A4Small 7.47 inch 10.85 inch pagedimen + /B4 10.125 inch 14.33 inch pagedimen + /B5 7.16 inch 10.125 inch pagedimen + end + } bind def +/papersize { + papersizedict begin + /Letter {lettertray letter} def + /LetterSmall {lettertray lettersmall} def + /Tabloid {11x17tray 11x17} def + /Ledger {ledgertray ledger} def + /Legal {legaltray legal} def + /Statement {statementtray statement} def + /Executive {executivetray executive} def + /A3 {a3tray a3} def + /A4 {a4tray a4} def + /A4Small {a4tray a4small} def + /B4 {b4tray b4} def + /B5 {b5tray b5} def + /unknown {unknown} def + papersizedict dup papername known {papername} {/unknown} ifelse get + end + statusdict begin stopped end + } bind def +/manualpapersize { + papersizedict begin + /Letter {letter} def + /LetterSmall {lettersmall} def + /Tabloid {11x17} def + /Ledger {ledger} def + /Legal {legal} def + /Statement {statement} def + /Executive {executive} def + /A3 {a3} def + /A4 {a4} def + /A4Small {a4small} def + /B4 {b4} def + /B5 {b5} def + /unknown {unknown} def + papersizedict dup papername known {papername} {/unknown} ifelse get + end + stopped + } bind def +/desperatepapersize { + statusdict /setpageparams known + { + paperwidth paperheight 0 1 + statusdict begin + {setpageparams} stopped + end + } {true} ifelse + } bind def +/DiacriticEncoding [ +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl +/numbersign /dollar /percent /ampersand /quotesingle /parenleft +/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon +/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K +/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash +/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h +/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar +/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute +/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis +/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis +/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve +/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex +/udieresis /dagger /.notdef /cent /sterling /section /bullet +/paragraph /germandbls /registered /copyright /trademark /acute +/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef +/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown +/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef +/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde +/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright +/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis +/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl +/periodcentered /quotesinglbase /quotedblbase /perthousand +/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute +/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve +/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron +/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron +] def +/ReEncode { + dup + length + dict begin + { + 1 index /FID ne + {def} + {pop pop} ifelse + } forall + 0 eq {/Encoding DiacriticEncoding def} if + currentdict + end + } bind def +FMPColor + + { + /BEGINBITMAPCOLOR { + BITMAPCOLOR} def + /BEGINBITMAPCOLORc { + BITMAPCOLORc} def + /BEGINBITMAPTRUECOLOR { + BITMAPTRUECOLOR } def + /BEGINBITMAPTRUECOLORc { + BITMAPTRUECOLORc } def + } + + { + /BEGINBITMAPCOLOR { + BITMAPGRAY} def + /BEGINBITMAPCOLORc { + BITMAPGRAYc} def + /BEGINBITMAPTRUECOLOR { + BITMAPTRUEGRAY } def + /BEGINBITMAPTRUECOLORc { + BITMAPTRUEGRAYc } def + } +ifelse +/K { + FMPrintAllColorsAsBlack { + dup 1 eq 2 index 1 eq and 3 index 1 eq and not + {7 {pop} repeat 0 0 0 1 0 0 0} if + } if + FrameCurColors astore + pop combineColor +} bind def +/graymode true def + /bwidth FMLOCAL + /bpside FMLOCAL + /bstring FMLOCAL + /onbits FMLOCAL + /offbits FMLOCAL + /xindex FMLOCAL + /yindex FMLOCAL + /x FMLOCAL + /y FMLOCAL +/setPatternMode { + FMLevel1 { + /bwidth exch def + /bpside exch def + /bstring exch def + /onbits 0 def /offbits 0 def + freq sangle landscape {90 add} if + {/y exch def + /x exch def + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + bstring yindex bwidth mul xindex 8 idiv add get + 1 7 xindex 8 mod sub bitshift and 0 ne FrameNegative {not} if + {/onbits onbits 1 add def 1} + {/offbits offbits 1 add def 0} + ifelse + } + setscreen + offbits offbits onbits add div FrameNegative {1.0 exch sub} if + /FrameCurGray exch def + } { + pop pop + dup patCache exch known { + patCache exch get + } { + dup + patDict /bstring 3 -1 roll put + patDict + 9 PatFreq screenIndex get div dup matrix scale + makepattern + dup + patCache 4 -1 roll 3 -1 roll put + } ifelse + /FrameCurGray 0 def + /FrameCurPat exch def + } ifelse + /graymode false def + combineColor +} bind def +/setGrayScaleMode { + graymode not { + /graymode true def + FMLevel1 { + setCurrentScreen + } if + } if + /FrameCurGray exch def + combineColor +} bind def +/normalize { + transform round exch round exch itransform + } bind def +/dnormalize { + dtransform round exch round exch idtransform + } bind def +/lnormalize { + 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop + } bind def +/H { + lnormalize setlinewidth + } bind def +/Z { + setlinecap + } bind def + +/PFill { + graymode FMLevel1 or not { + gsave 1 setgray eofill grestore + } if +} bind def +/PStroke { + graymode FMLevel1 or not { + gsave 1 setgray stroke grestore + } if + stroke +} bind def + /fillvals FMLOCAL +/X { + fillvals exch get + dup type /stringtype eq + {8 1 setPatternMode} + {setGrayScaleMode} + ifelse + } bind def +/V { + PFill gsave eofill grestore + } bind def +/Vclip { + clip + } bind def +/Vstrk { + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/N { + PStroke + } bind def +/Nclip { + strokepath clip newpath + } bind def +/Nstrk { + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/M {newpath moveto} bind def +/E {lineto} bind def +/D {curveto} bind def +/O {closepath} bind def + /n FMLOCAL +/L { + /n exch def + newpath + normalize + moveto + 2 1 n {pop normalize lineto} for + } bind def +/Y { + L + closepath + } bind def + /x1 FMLOCAL + /x2 FMLOCAL + /y1 FMLOCAL + /y2 FMLOCAL +/R { + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + x1 y1 + x2 y1 + x2 y2 + x1 y2 + 4 Y + } bind def + /rad FMLOCAL +/rarc + {rad + arcto + } bind def +/RR { + /rad exch def + normalize + /y2 exch def + /x2 exch def + normalize + /y1 exch def + /x1 exch def + mark + newpath + { + x1 y1 rad add moveto + x1 y2 x2 y2 rarc + x2 y2 x2 y1 rarc + x2 y1 x1 y1 rarc + x1 y1 x1 y2 rarc + closepath + } stopped {x1 y1 x2 y2 R} if + cleartomark + } bind def +/RRR { + /rad exch def + normalize /y4 exch def /x4 exch def + normalize /y3 exch def /x3 exch def + normalize /y2 exch def /x2 exch def + normalize /y1 exch def /x1 exch def + newpath + normalize moveto + mark + { + x2 y2 x3 y3 rarc + x3 y3 x4 y4 rarc + x4 y4 x1 y1 rarc + x1 y1 x2 y2 rarc + closepath + } stopped + {x1 y1 x2 y2 x3 y3 x4 y4 newpath moveto lineto lineto lineto closepath} if + cleartomark + } bind def +/C { + grestore + gsave + R + clip + setCurrentScreen +} bind def +/CP { + grestore + gsave + Y + clip + setCurrentScreen +} bind def + /FMpointsize FMLOCAL +/F { + FMfonts exch get + FMpointsize scalefont + setfont + } bind def +/Q { + /FMpointsize exch def + F + } bind def +/T { + moveto show + } bind def +/RF { + rotate + 0 ne {-1 1 scale} if + } bind def +/TF { + gsave + moveto + RF + show + grestore + } bind def +/P { + moveto + 0 32 3 2 roll widthshow + } bind def +/PF { + gsave + moveto + RF + 0 32 3 2 roll widthshow + grestore + } bind def +/S { + moveto + 0 exch ashow + } bind def +/SF { + gsave + moveto + RF + 0 exch ashow + grestore + } bind def +/B { + moveto + 0 32 4 2 roll 0 exch awidthshow + } bind def +/BF { + gsave + moveto + RF + 0 32 4 2 roll 0 exch awidthshow + grestore + } bind def +/G { + gsave + newpath + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + PFill fill + grestore + } bind def +/Gstrk { + savematrix + newpath + 2 index 2 div add exch 3 index 2 div sub exch + normalize 2 index 2 div sub exch 3 index 2 div add exch + translate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/Gclip { + newpath + savematrix + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + clip newpath + restorematrix + } bind def +/GG { + gsave + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + PFill + fill + grestore + } bind def +/GGclip { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + clip newpath + restorematrix + } bind def +/GGstrk { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + restorematrix + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/A { + gsave + savematrix + newpath + 2 index 2 div add exch 3 index 2 div sub exch + normalize 2 index 2 div sub exch 3 index 2 div add exch + translate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + PStroke + grestore + } bind def +/Aclip { + newpath + savematrix + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + strokepath clip newpath + restorematrix +} bind def +/Astrk { + Gstrk +} bind def +/AA { + gsave + savematrix + newpath + + 3 index 2 div add exch 4 index 2 div sub exch + + normalize 3 index 2 div sub exch 4 index 2 div add exch + translate + rotate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + PStroke + grestore + } bind def +/AAclip { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + strokepath clip newpath + restorematrix +} bind def +/AAstrk { + GGstrk +} bind def + /x FMLOCAL + /y FMLOCAL + /w FMLOCAL + /h FMLOCAL + /xx FMLOCAL + /yy FMLOCAL + /ww FMLOCAL + /hh FMLOCAL + /FMsaveobject FMLOCAL + /FMoptop FMLOCAL + /FMdicttop FMLOCAL +/BEGINPRINTCODE { + /FMdicttop countdictstack 1 add def + /FMoptop count 7 sub def + /FMsaveobject save def + userdict begin + /showpage {} def + FMNORMALIZEGRAPHICS + 3 index neg 3 index neg translate + } bind def +/ENDPRINTCODE { + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + FMsaveobject restore + } bind def +/gn { + 0 + { 46 mul + cf read pop + 32 sub + dup 46 lt {exit} if + 46 sub add + } loop + add + } bind def + /str FMLOCAL +/cfs { + /str sl string def + 0 1 sl 1 sub {str exch val put} for + str def + } bind def +/ic [ + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 + 0 + {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx} + {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx} + {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} + {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh} + {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh} + {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl} + {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl} + {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl} + {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl} + ] def + /sl FMLOCAL + /val FMLOCAL + /ws FMLOCAL + /im FMLOCAL + /bs FMLOCAL + /cs FMLOCAL + /len FMLOCAL + /pos FMLOCAL +/ms { + /sl exch def + /val 255 def + /ws cfs + /im cfs + /val 0 def + /bs cfs + /cs cfs + } bind def +400 ms +/ip { + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/rip { + + + bis ris copy pop + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + ris gis copy pop + dup is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + gis bis copy pop + dup add is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/wh { + /len exch def + /pos exch def + ws 0 len getinterval im pos len getinterval copy pop + pos len + } bind def +/bl { + /len exch def + /pos exch def + bs 0 len getinterval im pos len getinterval copy pop + pos len + } bind def +/s1 1 string def +/fl { + /len exch def + /pos exch def + /val cf s1 readhexstring pop 0 get def + pos 1 pos len add 1 sub {im exch val put} for + pos len + } bind def +/hx { + 3 copy getinterval + cf exch readhexstring pop pop + } bind def + /h FMLOCAL + /w FMLOCAL + /d FMLOCAL + /lb FMLOCAL + /bitmapsave FMLOCAL + /is FMLOCAL + /cf FMLOCAL +/wbytes { + dup dup + 24 eq { pop pop 3 mul } + { 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse } ifelse + } bind def +/BEGINBITMAPBWc { + 1 {} COMMONBITMAPc + } bind def +/BEGINBITMAPGRAYc { + 8 {} COMMONBITMAPc + } bind def +/BEGINBITMAP2BITc { + 2 {} COMMONBITMAPc + } bind def +/COMMONBITMAPc { + + /r exch def + /d exch def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /lb w d wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + r + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + w h d [w 0 0 h neg 0 h] + {ip} image + bitmapsave restore + grestore + } bind def +/BEGINBITMAPBW { + 1 {} COMMONBITMAP + } bind def +/BEGINBITMAPGRAY { + 8 {} COMMONBITMAP + } bind def +/BEGINBITMAP2BIT { + 2 {} COMMONBITMAP + } bind def +/COMMONBITMAP { + /r exch def + /d exch def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /bitmapsave save def + r + /is w d wbytes string def + /cf currentfile def + w h d [w 0 0 h neg 0 h] + {cf is readhexstring pop} image + bitmapsave restore + grestore + } bind def +/ngrayt 256 array def +/nredt 256 array def +/nbluet 256 array def +/ngreent 256 array def + /gryt FMLOCAL + /blut FMLOCAL + /grnt FMLOCAL + /redt FMLOCAL + /indx FMLOCAL + /cynu FMLOCAL + /magu FMLOCAL + /yelu FMLOCAL + /k FMLOCAL + /u FMLOCAL +FMLevel1 { +/colorsetup { + currentcolortransfer + /gryt exch def + /blut exch def + /grnt exch def + /redt exch def + 0 1 255 { + /indx exch def + /cynu 1 red indx get 255 div sub def + /magu 1 green indx get 255 div sub def + /yelu 1 blue indx get 255 div sub def + /k cynu magu min yelu min def + /u k currentundercolorremoval exec def +% /u 0 def + nredt indx 1 0 cynu u sub max sub redt exec put + ngreent indx 1 0 magu u sub max sub grnt exec put + nbluet indx 1 0 yelu u sub max sub blut exec put + ngrayt indx 1 k currentblackgeneration exec sub gryt exec put + } for + {255 mul cvi nredt exch get} + {255 mul cvi ngreent exch get} + {255 mul cvi nbluet exch get} + {255 mul cvi ngrayt exch get} + setcolortransfer + {pop 0} setundercolorremoval + {} setblackgeneration + } bind def +} +{ +/colorSetup2 { + [ /Indexed /DeviceRGB 255 + {dup red exch get 255 div + exch dup green exch get 255 div + exch blue exch get 255 div} + ] setcolorspace +} bind def +} ifelse + /tran FMLOCAL +/fakecolorsetup { + /tran 256 string def + 0 1 255 {/indx exch def + tran indx + red indx get 77 mul + green indx get 151 mul + blue indx get 28 mul + add add 256 idiv put} for + currenttransfer + {255 mul cvi tran exch get 255.0 div} + exch concatprocs settransfer +} bind def +/BITMAPCOLOR { + /d 8 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /bitmapsave save def + FMLevel1 { + colorsetup + /is w d wbytes string def + /cf currentfile def + w h d [w 0 0 h neg 0 h] + {cf is readhexstring pop} {is} {is} true 3 colorimage + } { + colorSetup2 + /is w d wbytes string def + /cf currentfile def + 7 dict dup begin + /ImageType 1 def + /Width w def + /Height h def + /ImageMatrix [w 0 0 h neg 0 h] def + /DataSource {cf is readhexstring pop} bind def + /BitsPerComponent d def + /Decode [0 255] def + end image + } ifelse + bitmapsave restore + grestore + } bind def +/BITMAPCOLORc { + /d 8 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /lb w d wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + FMLevel1 { + colorsetup + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + w h d [w 0 0 h neg 0 h] + {ip} {is} {is} true 3 colorimage + } { + colorSetup2 + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + 7 dict dup begin + /ImageType 1 def + /Width w def + /Height h def + /ImageMatrix [w 0 0 h neg 0 h] def + /DataSource {ip} bind def + /BitsPerComponent d def + /Decode [0 255] def + end image + } ifelse + bitmapsave restore + grestore + } bind def +/BITMAPTRUECOLORc { + /d 24 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /lb w d wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /ris im 0 w getinterval def + /gis im w w getinterval def + /bis im w 2 mul w getinterval def + + ws 0 lb getinterval is copy pop + /cf currentfile def + w h 8 [w 0 0 h neg 0 h] + {w rip pop ris} {gis} {bis} true 3 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPTRUECOLOR { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /bitmapsave save def + /is w string def + /gis w string def + /bis w string def + /cf currentfile def + w h 8 [w 0 0 h neg 0 h] + { cf is readhexstring pop } + { cf gis readhexstring pop } + { cf bis readhexstring pop } + true 3 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPTRUEGRAYc { + /d 24 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /lb w d wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /ris im 0 w getinterval def + /gis im w w getinterval def + /bis im w 2 mul w getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + w h 8 [w 0 0 h neg 0 h] + {w rip pop ris gis bis w gray} image + bitmapsave restore + grestore + } bind def +/ww FMLOCAL +/r FMLOCAL +/g FMLOCAL +/b FMLOCAL +/i FMLOCAL +/gray { + /ww exch def + /b exch def + /g exch def + /r exch def + 0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul + b i get .114 mul add add r i 3 -1 roll floor cvi put } for + r + } bind def +/BITMAPTRUEGRAY { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /h exch def /w exch def + /bitmapsave save def + /is w string def + /gis w string def + /bis w string def + /cf currentfile def + w h 8 [w 0 0 h neg 0 h] + { cf is readhexstring pop + cf gis readhexstring pop + cf bis readhexstring pop w gray} image + bitmapsave restore + grestore + } bind def +/BITMAPGRAY { + 8 {fakecolorsetup} COMMONBITMAP + } bind def +/BITMAPGRAYc { + 8 {fakecolorsetup} COMMONBITMAPc + } bind def +/ENDBITMAP { + } bind def +end + /ALDsave FMLOCAL + /ALDmatrix matrix def ALDmatrix currentmatrix pop +/StartALD { + /ALDsave save def + savematrix + ALDmatrix setmatrix + } bind def +/InALD { + restorematrix + } bind def +/DoneALD { + ALDsave restore + } bind def +/I { setdash } bind def +/J { [] 0 setdash } bind def +%%EndProlog +%%BeginSetup +(4.0) FMVERSION +1 1 0 0 612 792 0 1 17 FMDOCUMENT +0 0 /Times-Roman FMFONTDEFINE +1 0 /AvantGarde-Demi FMFONTDEFINE +2 0 /Helvetica-Bold FMFONTDEFINE +3 0 /Helvetica FMFONTDEFINE +4 0 /Helvetica-Oblique FMFONTDEFINE +5 0 /AvantGarde-Book FMFONTDEFINE +6 0 /Times-Bold FMFONTDEFINE +7 0 /Courier FMFONTDEFINE +8 0 /AvantGarde-BookOblique FMFONTDEFINE +32 FMFILLS +0 0 FMFILL +1 0.1 FMFILL +2 0.3 FMFILL +3 0.5 FMFILL +4 0.7 FMFILL +5 0.9 FMFILL +6 0.97 FMFILL +7 1 FMFILL +8 <0f1e3c78f0e1c387> FMFILL +9 <0f87c3e1f0783c1e> FMFILL +10 <cccccccccccccccc> FMFILL +11 <ffff0000ffff0000> FMFILL +12 <8142241818244281> FMFILL +13 <03060c183060c081> FMFILL +14 <8040201008040201> FMFILL +16 1 FMFILL +17 0.9 FMFILL +18 0.7 FMFILL +19 0.5 FMFILL +20 0.3 FMFILL +21 0.1 FMFILL +22 0.03 FMFILL +23 0 FMFILL +24 <f0e1c3870f1e3c78> FMFILL +25 <f0783c1e0f87c3e1> FMFILL +26 <3333333333333333> FMFILL +27 <0000ffff0000ffff> FMFILL +28 <7ebddbe7e7dbbd7e> FMFILL +29 <fcf9f3e7cf9f3f7e> FMFILL +30 <7fbfdfeff7fbfdfe> FMFILL +%%EndSetup +%%Page: "1" 1 +%%BeginPaperSize: Letter +%%EndPaperSize +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 0 0 0 1 1 1] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 8 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +J +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 10 Q +0 X +0 0 0 1 0 0 0 K +(.. 1) 527.5 36 T +0 0 0 1 0 0 0 K +33 54 597 54 2 L +3 H +2 Z +4 X +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +72 690 540 702 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +72 701 540 701 2 L +1 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +72 698 540 698 2 L +N +0 -208 1000 792 C +1 18 Q +0 X +0 0 0 1 0 0 0 K +(fmweb) 95.08 708 T +2 F +(: Literate Programming using FrameMaker) 154.84 708 T +3 10 Q +(V) 280.98 672.33 T +(ersion 1.0) 287.11 672.33 T +(Sriram Srinivasan) 266.55 660.33 T +(\050) 266.48 648.33 T +4 F +(sriram@tcs.com) 269.82 648.33 T +3 F +(\051) 342.18 648.33 T +72 605 540 615 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +72 614 540 614 2 L +1 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +0 -208 1000 792 C +2 14 Q +0 X +0 0 0 1 0 0 0 K +(Introduction) 72 619.67 T +3 10 Q +0.04 (This document explains a simple approach for doing literate programming using FrameMaker) 72 590.33 P +0.04 (, a word pro-) 483.74 590.33 P +0.44 (cessing system. It is almost identical to the approach taken by WinW) 72 577.71 P +0.44 (ordWEB [2], except that it can addi-) 380.08 577.71 P +(tionally be used in batch mode.) 72 565.71 T +2.03 (All implementations of literate programming provide facilities to break a piece of code into digestible) 72 548.71 P +-0.27 (chunks which can be documented individually) 72 536.71 P +-0.27 (, and explained in any order) 272.2 536.71 P +-0.27 (. The only dif) 393.69 536.71 P +-0.27 (ference is in the way) 449.94 536.71 P +0.52 (the document should be written so that a tool can separate the code from the rest of the documentation.) 72 524.71 P +0.23 (WEB and such other tools provide a way of doing \322in-band signalling\323, to borrow a term from communica-) 72 512.71 P +1.61 (tions. The programmer annotates dif) 72 500.71 P +1.61 (ferent parts of a document by keywords, and a program such as) 239.42 500.71 P +0.08 (weave or tangle recognizes these keywords. In addition, these programs provide features such as section) 72 488.71 P +(numbering, indexing etc. and language speci\336c features such as pretty-printing, macro expansion etc.) 72 476.71 T +0.76 (The other approach is to do \322out-of-band signalling\323, where the formatting information is essentially kept) 72 459.71 P +(out of the documentation. This is the approach taken by fmweb and WinW) 72 447.71 T +(ordWEB.) 399.2 447.71 T +(There are a couple of reasons why I don\325t use WEB based tools.) 72 430.71 T +(\245) 72 413.71 T +(It is always nice to see the output of a literate programming ef) 90 413.71 T +(fort, but the input is rather messy) 362.17 413.71 T +(. I dis-) 507.05 413.71 T +(like seeing a lot of meta characters \050like @, <<, \134, [[ \051 etc. The sections are not immediately visible -) 90 401.71 T +(one goes around looking for \322\134section\323, for example. I do a fair amount of coding in) 90 389.71 T +5 F +(perl) 455.74 389.71 T +3 F +(, and the two) 474.07 389.71 T +(notational structures put together make my head swim, esp. when I need to alter the code a few) 90 377.71 T +(months later) 90 365.71 T +(. Having access to a WYSIWIG word processor such as FrameMaker means that I don\325t) 144.47 365.71 T +(use T) 90 353.71 T +(eX, and it is too much of an ef) 113.9 353.71 T +(fort to learn the intricacies of LaT) 246.02 353.71 T +(ex or T) 390.53 353.71 T +(eX to be able to use the) 420.54 353.71 T +(WEB based tools.) 90 341.71 T +(\245) 72 324.71 T +(A number of these tools are language speci\336c.) 90 324.71 T +5 F +(noweb) 298.44 324.71 T +3 F +( is one exception to this rule, and I rather like) 332.72 324.71 T +(the simplicity of noweb. I don\325t use noweb because of the reason explained above.) 90 312.71 T +-0.13 (FrameMaker) 72 295.71 P +-0.13 (, like other good word processors, has excellent document formatting capabilities, cross refer-) 128.12 295.71 P +0.58 (encing and indexing, table of contents, graphics, tables etc. What I see on the screen is the \336nal output,) 72 283.71 P +(uncluttered by meta-information.) 72 271.71 T +0.2 (One problem that I have with this approach is that I am used to a Unix like development environment and) 72 254.71 P +0.13 (extensively use text based tools such as emacs/vi, perl, dif) 72 242.71 P +0.13 (f, sccs etc. For this reason, I have not tried this) 331.97 242.71 P +(approach on medium or larger sized implementations, though I hope to do that in the near future.) 72 230.71 T +0.28 (In general, I am somewhat unclear on how the literate programming paradigm helps a developer to think.) 72 213.71 P +0.74 (The prevailing wisdom is that this approach forces a lot more disciplined thinking on the part of the pro-) 72 201.71 P +0.09 (grammer) 72 189.71 P +0.09 (, since \050s\051he is in a teaching mode. I \336nd that this helps in structuring the program well, once one) 111.45 189.71 P +-0.22 (knows what one should be doing, but if I don\325t have a top-down \050step-wise re\336nement\051 solution in my mind,) 72 177.71 P +0.02 (I am not entirely sure how to start from a blank page. I tend to do small sections of the code using my reg-) 72 165.71 P +-0.03 (ular development environment, and once I have a reasonable top-down solution in mind, copy it all over to) 72 153.71 P +(a FrameMaker \336le and start re\336ning it.) 72 141.71 T +72 98.38 540 108.38 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +72 107.38 540 107.38 2 L +1 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +0 -208 1000 792 C +2 14 Q +0 X +0 0 0 1 0 0 0 K +(The fmweb approach) 72 113.04 T +3 10 Q +(T) 72 83.71 T +(o separate the code from the rest of the stuf) 77 83.71 T +(f, the developer uses three paragraph formats.) 270.82 83.71 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "1" 1 +%%Page: "2" 2 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 0 0 0 1 1 1] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 8 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 10 Q +0 X +0 0 0 1 0 0 0 K +(.. 2) 527.5 36 T +0 0 0 1 0 0 0 K +33 54 597 54 2 L +3 H +2 Z +4 X +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +3 F +0 X +(\245) 72 713.33 T +(\322File\323: The \336le name is mentioned in this paragraph, and all subsequent lines will eventually be) 90 713.33 T +(dumped into this \336le.) 90 701.33 T +(\245) 72 684.33 T +(\322chunk\323: A chunk \050or section\051 is a heading followed by a set of \322code\323 paragraphs. The \322chunk\323 para-) 90 684.33 T +(graph tag identi\336es the heading for that section. It is possible to have more than one chunk with the) 90 672.33 T +(same name.) 90 660.33 T +(\245) 72 643.33 T +-0.36 (\322code\323: The developer writes code \050in any language\051 using this paragraph tag. The Frame Maker cross) 90 643.33 P +(reference facility has to be used to refer to chunks.) 90 631.33 T +5 F +-0.16 (fmweb) 72 614.33 P +3 F +-0.16 ( is a perl script that needs the FrameMaker document in a MIF format - it extracts chunks and code) 106.15 614.33 P +0.42 (paragraphs out, and does the requisite tangling \050restoring the order of chunks\051. All chunks with the same) 72 602.33 P +0.35 (name are concatenated in the order they appear in the document.) 72 590.33 P +5 F +0.35 (fmweb) 369.39 590.33 P +3 F +0.35 ( ignores all formatting informa-) 403.54 590.33 P +(tion. Source line number information can be optionally output, in a format accepted by) 72 578.33 T +5 F +(cc) 453.3 578.33 T +3 F +( \050#line\051.) 466.24 578.33 T +72 535 540 545 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +72 544 540 544 2 L +1 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +0 0 612 792 C +2 14 Q +0 X +0 0 0 1 0 0 0 K +(References) 72 549.67 T +3 10 Q +(1.) 72 520.33 T +1 (\322Literate Programming\323, Donald Knuth, Center for the Study of Language and Information, Stanford) 90 520.33 P +(University) 90 508.33 T +(, ISBN 0-937073-80-6) 133.15 508.33 T +(2.) 72 494.33 T +0.82 (WEB: http://info.desy) 90 494.33 P +0.82 (.de/user/projects/LitProg/HTML.html - A pointer to all the other good stuf) 183.46 494.33 P +0.82 (f avail-) 509.73 494.33 P +(able on the net.) 90 482.33 T +72 439 540 449 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +72 448 540 448 2 L +1 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +0 0 612 792 C +2 14 Q +0 X +0 0 0 1 0 0 0 K +(Unpacking the distribution) 72 453.67 T +3 10 Q +0.08 (This document contains an example program \050wc.c\051 written in the format explained above, and the fmweb) 72 424.33 P +(script, along with some internal documentation.) 72 412.33 T +(Save this \336le as wc.mif. This \336le will be used to test out the fmweb script.) 72 395.33 T +-0.04 (T) 72 378.33 P +-0.04 (o extract fmweb \050a perl5 script\051, go to Special->Conditional T) 77 378.33 P +-0.04 (ext -> Show/Hide..., and hide the conditional) 344.28 378.33 P +(tag called \322Fluf) 72 366.33 T +(f\323. Only the perl script should be remaining. Save this \336le as text only) 137.4 366.33 T +(, and call it fmweb.) 440.12 366.33 T +0.18 (Run fmweb - \322perl5 fmweb < wc.mif\323. This should produce a \336le called wc.c in the local directory) 72 349.33 P +0.18 (. Compile) 497.58 349.33 P +(and execute wc, and compare against the system provided \322wc\323, if on a Unix system.) 72 337.33 T +72 294 540 304 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +72 303 540 303 2 L +1 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +0 0 612 792 C +2 14 Q +0 X +0 0 0 1 0 0 0 K +(T) 72 308.67 T +(oDo) 79.52 308.67 T +3 10 Q +(\245) 72 279.33 T +(Support multiple \336les) 90 279.33 T +(\245) 72 262.33 T +(Largish example - map library) 90 262.33 T +(\245) 72 245.33 T +(Speed up) 90 245.33 T +(\245) 72 228.33 T +(Look at mml) 90 228.33 T +(\245) 72 211.33 T +(Accept \336lenames as arguments) 90 211.33 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "2" 2 +%%Page: "3" 3 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 0 0 0 1 1 1] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 8 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 10 Q +0 X +0 0 0 1 0 0 0 K +(.. 3) 527.5 36 T +0 0 0 1 0 0 0 K +33 54 597 54 2 L +3 H +2 Z +4 X +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +72 696 540 706 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +72 705 540 705 2 L +1 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +0 0 612 792 C +2 14 Q +0 X +0 0 0 1 0 0 0 K +(Appendix A: \324wc\325: A word count program) 72 710.67 T +3 10 Q +0.28 (This section demonstrates how one can do Literate Programming with FrameMaker) 72 664.33 P +0.28 (. There are only three) 443.28 664.33 P +-0.21 (paragraph tags of interest - File \050see \322File:\323 below\051, \322chunk\323 \050all the numbered paragraphs\051 and \322code\323. Any) 72 652.33 P +1.11 (cross reference format can be used - \322chunkref\323 is the name of the format used in the example below) 72 640.33 P +1.11 (.) 537.22 640.33 P +-0.05 (Apologies if the example looks like a ransom note - one does tend to get carried away by the availability of) 72 628.33 P +(fonts, and the WYSIWIGness of it all.) 72 616.33 T +0.21 (The implementation and comments have been shamelessly lifted from Norman Ramsey\325) 72 599.33 P +0.21 (s noweb distribu-) 464.01 599.33 P +0.1 (tion \050ftp://bellcore.com/pub/norman/www/noweb/intro.html\051. This is just to provide a comparison of the two) 72 587.33 P +(approaches. I have modi\336ed some of the comments that do not apply to this approach.) 72 575.33 T +(Thanks, Norman.) 72 558.33 T +0 1 1 0 1 0 0 K +0 1 1 0 1 0 0 K +144.97 515.22 72 515.22 2 L +0 1 1 0 1 0 0 K +V +1.71 H +0 Z +N +0 0 0 1 0 0 0 K +0 1 1 0 1 0 0 K +6 18 Q +(File: wc.c) 72 517 T +0 0 0 1 0 0 0 K +3 10 Q +0 0 0 1 0 0 0 K +0.21 (The purpose of) 72 493.33 P +7 F +0.46 (wc) 142.68 493.33 P +3 F +0.21 ( is to count lines, words, and/or characters in a list of \336les. The number of lines in a \336le) 154.68 493.33 P +(is the number of newline characters it contains. The number of characters is the \336le length in bytes.) 72 481.33 T +0.42 (A ``word\325) 72 464.33 P +0.42 (\325 is a maximal sequence of consecutive characters other than newline, space, or tab, containing) 112.24 464.33 P +(at least one visible ASCII code.) 72 452.33 T +(\050W) 72 435.33 T +(e assume that the standard ASCII code is in use.\051) 84.59 435.33 T +(Most literate C programs share a common structure.) 72 418.33 T +0.13 (It\325) 72 401.33 P +0.13 (s probably a good idea to state the overall structure explicitly at the outset. Here, then, is an overview of) 79.6 401.33 P +(the \336le) 72 388 T +5 12 Q +(wc.c) 104.24 388 T +3 10 Q +( that is de\336ned by the) 133.06 388 T +5 12 Q +(noweb) 230.9 388 T +3 10 Q +( program) 272.04 388 T +5 12 Q +(wc.fm) 314.83 388 T +82.08 362.9 72 362.9 2 L +V +1.08 H +N +1 F +(1:) 72 364 T +131.52 362.9 90 362.9 2 L +V +N +(Outline) 90 364 T +8 10 Q +(<Header \336les to include> , \0502:, p. 3\051) 90 345.61 T +(<De\336nitions> , \0503:, p. 3\051) 90 330.89 T +(<Global variables> , \0504:, p. 4\051) 90 316.16 T +(<Functions> , \05023:, p. 8\051) 90 301.44 T +(<Main Pr) 90 286.72 T +(ogram> , \0505:, p. 4\051) 131.84 286.72 T +3 F +-0.03 (W) 72 269.72 P +-0.03 (e must include the standard I/O de\336nitions, since we want to send formatted output to) 81.26 269.72 P +5 F +-0.03 (stdout) 461.04 269.72 P +3 F +-0.03 ( and) 491.18 269.72 P +5 F +-0.03 (stderr) 513.36 269.72 P +82.08 231.28 72 231.28 2 L +V +N +1 12 Q +(2:) 72 232.38 T +220.08 231.28 90 231.28 2 L +V +N +(Header \336les to include) 90 232.38 T +5 10 Q +(#include <stdio.h>) 90 214.72 T +82.08 176.28 72 176.28 2 L +V +N +1 12 Q +(3:) 72 177.38 T +149.04 176.28 90 176.28 2 L +V +N +(De\336nitions) 90 177.38 T +5 10 Q +(#de\336ne OK 0) 90 159.72 T +( /* status code for successful run */) 90 145.72 T +(#de\336ne usage_err) 90 131.72 T +(or 1) 176.63 131.72 T +( /* status code for impr) 90 117.72 T +(oper syntax */) 202.93 117.72 T +(#de\336ne cannot_open_\336le 2) 90 103.72 T +( /* status code for \336le access err) 90 89.72 T +(or */) 247.18 89.72 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "3" 3 +%%Page: "4" 4 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 0 0 0 1 1 1] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 8 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 10 Q +0 X +0 0 0 1 0 0 0 K +(.. 4) 527.5 36 T +0 0 0 1 0 0 0 K +33 54 597 54 2 L +3 H +2 Z +4 X +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +82.08 710.9 72 710.9 2 L +0 X +V +1.08 H +0 Z +N +1 12 Q +(4:) 72 712 T +185.76 710.9 90 710.9 2 L +V +N +(Global variables) 90 712 T +3 10 Q +-0.08 (The) 72 694.33 P +5 F +-0.08 (status) 91.93 694.33 P +3 F +-0.08 ( variable will tell the operating system if the run was successful or not, and) 119.38 694.33 P +5 F +-0.08 (pr) 448.83 694.33 P +-0.08 (og_name) 458.61 694.33 P +3 F +-0.08 ( is used) 505.7 694.33 P +(in case there\325) 72 682.33 T +(s an error message to be printed.) 131.29 682.33 T +5 F +(int status = OK;) 90 651.33 T +( /* exit status of command, initially OK */) 90 637.33 T +(char *pr) 90 623.33 T +(og_name;) 129.22 623.33 T +( /* who we ar) 90 609.33 T +(e */) 158.04 609.33 T +3 F +(Now we come to the general layout of the) 72 578.33 T +5 F +(main) 258.76 578.33 T +3 F +( function.) 283.07 578.33 T +82.08 539.9 72 539.9 2 L +V +N +1 12 Q +(5:) 72 541 T +132.72 539.9 90 539.9 2 L +V +N +(Main Pr) 90 541 T +171.14 539.9 132.5 539.9 2 L +V +N +(ogram) 132.5 541 T +5 10 Q +(main\050ar) 90 523.33 T +(gc, ar) 127.85 523.33 T +(gv\051) 156.44 523.33 T +(int ar) 108 509.33 T +(gc;) 132.11 509.33 T +(/* number of ar) 108 495.33 T +(guments on UNIX command line */) 182.36 495.33 T +( char **ar) 108 481.33 T +(gv;) 157.07 481.33 T +( /* the ar) 108 467.33 T +(guments, an array of strings */) 150.77 467.33 T +({) 90 453.33 T +8 F +(<V) 110.77 438.61 T +(ariables local to main> , \0506:, p. 4\051) 123.05 438.61 T +5 F +( pr) 108 424.61 T +(og_name = ar) 120.56 424.61 T +(gv[0];) 189.1 424.61 T +8 F +(<Set up option selection> , \0507:, p. 4\051) 110.77 409.89 T +(<Pr) 110.77 395.16 T +(ocess all the \336les> , \0508:, p. 5\051) 125.72 395.16 T +(<Print the grand totals if ther) 110.77 380.44 T +(e wer) 246.75 380.44 T +(e multiple \336les> , \05021:, p. 8\051) 273.8 380.44 T +5 F +( exit\050status\051;) 108 366.44 T +(}) 90 352.44 T +3 F +0.58 (If the \336rst argument begins with a \324-\325, the user is choosing the desired counts and specifying the order in) 72 321.44 P +0.8 (which they should be displayed. Each selection is given by the initial character \050lines, words, or charac-) 72 309.44 P +-0.23 (ters\051. For example, `-cl\325 would cause just the number of characters and the number of lines to be printed, in) 72 297.44 P +(that order) 72 285.44 T +(.) 114.25 285.44 T +-0.07 (W) 72 268.44 P +-0.07 (e do not process this string now; we simply remember where it is. It will be used to control the formatting) 81.26 268.44 P +(at output time.) 72 256.44 T +82.08 232 72 232 2 L +V +N +1 12 Q +(6:) 72 233.11 T +98.4 232 90 232 2 L +V +N +(V) 90 233.11 T +194.16 232 97.44 232 2 L +V +N +(ariables local to) 97.44 233.11 T +223.33 231.96 194.16 231.96 2 L +V +0.7 H +N +5 F +(main) 194.16 233.11 T +5 10 Q +(int \336le_count;) 90 215.44 T +( /* how many \336les ther) 90 201.44 T +(e ar) 200.08 201.44 T +(e */) 219.15 201.44 T +(char *which;) 90 187.44 T +( /* which counts to print */) 90 173.44 T +82.08 135 72 135 2 L +V +1.08 H +N +1 12 Q +(7:) 72 136.11 T +222.24 135 90 135 2 L +V +N +(Set up option selection) 90 136.11 T +5 10 Q +(which = \322lwc\323;) 90 118.44 T +( /* if no option is given, print 3 values */) 90 104.44 T +(if \050ar) 90 90.44 T +(gc > 1 && *ar) 111.45 90.44 T +(gv[1] == \324-\325\051 {) 176.57 90.44 T +(which = ar) 108 76.44 T +(gv[1] + 1;) 158.43 76.44 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "4" 4 +%%Page: "5" 5 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 0 0 0 1 1 1] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 8 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 10 Q +0 X +0 0 0 1 0 0 0 K +(.. 5) 527.5 36 T +0 0 0 1 0 0 0 K +33 54 597 54 2 L +3 H +2 Z +4 X +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +5 F +0 X +(ar) 108 713.33 T +(gc--;) 117.85 713.33 T +(ar) 108 699.33 T +(gv++;) 117.85 699.33 T +(}) 90 685.33 T +(\336le_count = ar) 90 671.33 T +(gc - 1;) 158.41 671.33 T +3 F +0.14 (Now we scan the remaining arguments and try to open a \336le, if possible. The \336le is processed and its sta-) 72 637.33 P +(tistics are given.) 72 625.33 T +(W) 72 608.33 T +(e use a do ... while loop because we should read from the standard input if no \336le name is given.) 81.26 608.33 T +82.08 566.9 72 566.9 2 L +V +1.08 H +0 Z +N +1 12 Q +(8:) 72 568 T +100.56 566.9 90 566.9 2 L +V +N +(Pr) 90 568 T +198.26 566.9 100.34 566.9 2 L +V +N +(ocess all the \336les) 100.34 568 T +5 10 Q +(ar) 90 550.33 T +(gc--;) 99.85 550.33 T +(do {) 90 536.33 T +8 F +(<If a \336le is given, try to open *\050++ar) 110.77 521.61 T +(gv\051; continue if unsuccessful> , \05011:, p. 5\051) 277.69 521.61 T +(<Initialize pointers and counters> , \05015:, p. 6\051) 113.54 506.89 T +(<Scan \336le> , \05017:, p. 6\051) 113.54 492.16 T +(<W) 113.54 477.44 T +(rite statistics for \336le> , \05019:, p. 7\051) 128.91 477.44 T +(<Close \336le> , \05012:, p. 6\051) 110.77 462.72 T +(<Update grand totals> , \05020:, p. 7\051) 113.54 447.99 T +5 F +( /* even if ther) 108 433.99 T +(e is only one \336le */) 176.44 433.99 T +(} while \050--ar) 90 419.99 T +(gc > 0\051;) 144.14 419.99 T +3 F +1.01 (Here\325) 72 388.99 P +1.01 (s the code to open the \336le. A special trick allows us to handle input from) 95.71 388.99 P +5 F +1.01 (stdin) 435.35 388.99 P +3 F +1.01 ( when no name is) 457.57 388.99 P +(given.) 72 376.99 T +(Recall that the \336le descriptor to) 72 359.99 T +5 F +(stdin) 212.06 359.99 T +3 F +( is 0; that\325) 234.28 359.99 T +(s what we use as the default initial value.) 276.9 359.99 T +82.08 318.56 72 318.56 2 L +V +N +1 12 Q +(9:) 72 319.66 T +98.4 318.56 90 318.56 2 L +V +N +(V) 90 319.66 T +223.44 318.56 97.44 318.56 2 L +V +N +(ariables local to main) 97.44 319.66 T +5 10 Q +(int fd = 0;) 90 301.99 T +( /* \336le descriptor) 90 287.99 T +(, initialized to stdin */) 170.5 287.99 T +88.8 249.56 72 249.56 2 L +V +N +1 12 Q +(10:) 72 250.66 T +149.04 249.56 90 249.56 2 L +V +N +(De\336nitions) 90 250.66 T +5 10 Q +(#de\336ne READ_ONL) 90 232.99 T +(Y 0) 180.2 232.99 T +( /* r) 90 218.99 T +(ead access code for system open */) 109.9 218.99 T +88.8 180.56 72 180.56 2 L +V +N +1 12 Q +(11:) 72 181.66 T +248.4 180.56 90 180.56 2 L +V +N +(If a \336le is given, try to open) 90 181.66 T +284.28 180.51 248.4 180.51 2 L +V +0.7 H +N +5 F +(*\050++ar) 248.4 181.66 T +303.44 180.51 284.29 180.51 2 L +V +N +(gv\051) 284.29 181.66 T +310.16 180.56 303.44 180.56 2 L +V +1.08 H +N +1 F +(;) 303.44 181.66 T +361.99 180.51 310.16 180.51 2 L +V +0.7 H +N +5 F +(continue) 310.16 181.66 T +448.87 180.56 361.99 180.56 2 L +V +1.08 H +N +1 F +( if unsuccessful) 361.99 181.66 T +5 10 Q +(if \050\336le_count > 0) 90 163.99 T +(&& \050fd = open\050*\050++ar) 168.47 163.99 T +(gv\051, READ_ONL) 271.23 163.99 T +(Y\051\051 < 0\051 {) 343.8 163.99 T +(fprintf\050stderr) 108 149.99 T +(, \322%s: cannot open \336le %s\134n\323, pr) 164.88 149.99 T +(og_name, *ar) 330.73 149.99 T +(gv\051;) 397.46 149.99 T +( status |= cannot_open_\336le;) 108 135.99 T +(\336le_count--;) 108 121.99 T +(continue;) 108 107.99 T +(}) 90 93.99 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "5" 5 +%%Page: "6" 6 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 0 0 0 1 1 1] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 8 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 10 Q +0 X +0 0 0 1 0 0 0 K +(.. 6) 527.5 36 T +0 0 0 1 0 0 0 K +33 54 597 54 2 L +3 H +2 Z +4 X +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +88.8 710.9 72 710.9 2 L +0 X +V +1.08 H +0 Z +N +1 12 Q +(12:) 72 712 T +143.04 710.9 90 710.9 2 L +V +N +(Close \336le) 90 712 T +5 10 Q +(close\050fd\051;) 90 694.33 T +3 F +0.46 (W) 72 663.33 P +0.46 (e will do some homemade buf) 81.26 663.33 P +0.46 (fering in order to speed things up: Characters will be read into the buf) 216.23 663.33 P +0.46 (fer) 528.33 663.33 P +(array before we process them. T) 72 651.33 T +(o do this we set up appropriate pointers and counters.) 214.83 651.33 T +88.8 609.9 72 609.9 2 L +V +N +1 12 Q +(13:) 72 611 T +149.04 609.9 90 609.9 2 L +V +N +(De\336nitions) 90 611 T +5 10 Q +(#de\336ne buf_size BUFSIZ) 90 593.33 T +( /* stdio.h BUFSIZ chosen for ef) 90 579.33 T +(\336ciency */) 236.7 579.33 T +88.8 554.9 72 554.9 2 L +V +N +1 12 Q +(14:) 72 556 T +98.4 554.9 90 554.9 2 L +V +N +(V) 90 556 T +194.16 554.9 97.44 554.9 2 L +V +N +(ariables local to) 97.44 556 T +223.33 554.85 194.16 554.85 2 L +V +0.7 H +N +5 F +(main) 194.16 556 T +5 10 Q +(char buf) 90 538.33 T +(fer[buf_size];) 131.25 538.33 T +( /* we r) 90 524.33 T +(ead the input into this array */) 127.48 524.33 T +(r) 90 510.33 T +(egister char *ptr;) 92.97 510.33 T +( /* \336rst unpr) 90 496.33 T +(ocessed character in buf) 146.82 496.33 T +(fer */) 268.54 496.33 T +(r) 90 482.33 T +(egister char *buf_end;) 92.97 482.33 T +( /* the \336rst unused position in buf) 90 468.33 T +(fer */) 248.87 468.33 T +(r) 90 454.33 T +(egister int c;) 92.97 454.33 T +( /* curr) 90 440.33 T +(ent char) 125.46 440.33 T +(, or # of chars just r) 165.58 440.33 T +(ead */) 254.4 440.33 T +(int in_wor) 90 426.33 T +(d;) 135.17 426.33 T +( /* ar) 90 412.33 T +(e we within a wor) 116.73 412.33 T +(d? */) 201.66 412.33 T +(long wor) 90 398.33 T +(d_count, line_count, char_count;) 131.96 398.33 T +( /* # of wor) 90 384.33 T +(ds, lines, and chars so far */) 145.51 384.33 T +88.8 345.9 72 345.9 2 L +V +1.08 H +N +1 12 Q +(15:) 72 347 T +266.16 345.9 90 345.9 2 L +V +N +(Initialize pointers and counters) 90 347 T +5 10 Q +(ptr = buf_end = buf) 90 329.33 T +(fer;) 182.98 329.33 T +(line_count = wor) 90 315.33 T +(d_count = char_count = 0;) 169.6 315.33 T +(in_wor) 90 301.33 T +(d = 0;) 120.91 301.33 T +3 F +0.77 (The grand totals must be initialized to zero at the beginning of the program. If we made these variables) 72 270.33 P +1.58 (local to) 72 258.33 P +5 F +1.58 (main) 109.62 258.33 P +3 F +1.58 (, we would have to do this initialization explicitly; however) 133.93 258.33 P +1.58 (, C\325) 401.04 258.33 P +1.58 (s globals are automatically) 417.44 258.33 P +(zeroed. \050Or rather) 72 246.33 T +(, ``statically zeroed.\325) 150.92 246.33 T +(\325\051 \050Get it?\051) 239.65 246.33 T +88.8 221.9 72 221.9 2 L +V +N +1 12 Q +(16:) 72 223 T +185.76 221.9 90 221.9 2 L +V +N +(Global variables) 90 223 T +5 10 Q +(long tot_wor) 90 205.33 T +(d_count, tot_line_count,) 150.29 205.33 T +( tot_char_count;) 90 191.33 T +( /* total number of wor) 90 177.33 T +(ds, lines, chars */) 202.79 177.33 T +88.8 152.9 72 152.9 2 L +V +N +1 12 Q +(17:) 72 154 T +139.2 152.9 90 152.9 2 L +V +N +(Scan \336le) 90 154 T +3 10 Q +0.43 (This chunk, which does the counting, that is) 72 136.33 P +5 F +0.42 (wc) 271.61 136.33 P +3 F +0.43 (\325) 286.39 136.33 P +0.43 (s) 288.43 136.33 P +4 F +0.43 (raison d\325etre) 296.64 136.33 P +3 F +0.43 (, was actually one of the simplest to write.) 352.08 136.33 P +(W) 72 124.33 T +(e look at each character and change state if it begins or ends a word.) 81.26 124.33 T +5 F +(while \0501\051 {) 90 93.33 T +8 F +(<Fill buf) 110.77 78.61 T +(fer if it is empty; br) 146.52 78.61 T +(eak at end of \336le> , \05018:, p. 7\051) 233.44 78.61 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "6" 6 +%%Page: "7" 7 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 0 0 0 1 1 1] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 8 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 10 Q +0 X +0 0 0 1 0 0 0 K +(.. 7) 527.5 36 T +0 0 0 1 0 0 0 K +33 54 597 54 2 L +3 H +2 Z +4 X +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +5 F +0 X +( c = *ptr++;) 108 713.33 T +( if \050c > \324 \324 && c < 0177\051 {) 108 699.33 T +(/* visible ASCII codes */) 126 685.33 T +( if \050!in_wor) 126 671.33 T +(d\051 {) 174.23 671.33 T +( wor) 144 657.33 T +(d_count++;) 164.58 657.33 T +(in_wor) 144 643.33 T +(d = 1;) 174.91 643.33 T +(}) 126 629.33 T +(continue;) 126 615.33 T +(}) 108 601.33 T +(if \050c == \324\134n\325\051 line_count++;) 108 587.33 T +( else if \050c != \324 \324 && c != \324\134t\325\051 continue;) 108 573.33 T +( in_wor) 108 559.33 T +(d = 0;) 141.68 559.33 T +(/* c is newline, space, or tab */) 108 545.33 T +(}) 90 531.33 T +3 F +(Buf) 72 500.33 T +(fered I/O allows us to count the number of characters almost for free.) 86.83 500.33 T +88.8 475.9 72 475.9 2 L +V +1.08 H +0 Z +N +1 12 Q +(18:) 72 477 T +107.76 475.9 90 475.9 2 L +V +N +(Fill) 90 477 T +127.01 475.85 107.76 475.85 2 L +V +0.7 H +N +5 F +(buf) 107.76 477 T +142.22 475.85 127.04 475.85 2 L +V +N +(fer) 127.04 477 T +220.7 475.9 142.22 475.9 2 L +V +1.08 H +N +1 F +( if it is empty;) 142.22 477 T +232.5 475.85 220.7 475.85 2 L +V +0.7 H +N +5 F +(br) 220.7 477 T +254.47 475.85 232.45 475.85 2 L +V +N +(eak) 232.45 477 T +330.07 475.9 254.47 475.9 2 L +V +1.08 H +N +1 F +( at end of \336le) 254.47 477 T +5 10 Q +(if \050ptr >= buf_end\051 {) 90 459.33 T +(ptr = buf) 108 445.33 T +(fer;) 148.89 445.33 T +(c = r) 108 431.33 T +(ead\050fd, ptr) 129.04 431.33 T +(, buf_size\051;) 180.61 431.33 T +(if \050c <= 0\051 br) 108 417.33 T +(eak;) 165.52 417.33 T +(char_count += c;) 108 403.33 T +(buf_end = buf) 108 389.33 T +(fer + c;) 176.16 389.33 T +(}) 90 375.33 T +3 F +0.17 (It\325) 72 344.33 P +0.17 (s convenient to output the statistics by de\336ning a new function) 79.6 344.33 P +5 F +0.17 (wc_print) 358.33 344.33 P +3 F +0.17 (; then the same function can be) 399.43 344.33 P +-0.05 (used for the totals. Additionally we must decide here if we know the name of the \336le we have processed or) 72 332.33 P +(if it was just stdin.) 72 320.33 T +88.8 295.9 72 295.9 2 L +V +N +1 12 Q +(19:) 72 297 T +100.8 295.9 90 295.9 2 L +V +N +(W) 90 297 T +208.09 295.9 100.33 295.9 2 L +V +N +(rite statistics for \336le) 100.33 297 T +5 10 Q +(wc_print\050which, char_count, wor) 90 279.33 T +(d_count,) 248.66 279.33 T +( line_count\051;) 90 265.33 T +(if \050\336le_count\051) 90 251.33 T +( printf\050\322 %s\134n\323, *ar) 90 237.33 T +(gv\051; /* not stdin */) 179.74 237.33 T +(else) 90 223.33 T +( printf\050\322\134n\323\051; /* stdin */) 90 209.33 T +88.8 170.9 72 170.9 2 L +V +N +1 12 Q +(20:) 72 172 T +205.2 170.9 90 170.9 2 L +V +N +(Update grand totals) 90 172 T +5 10 Q +(tot_line_count += line_count;) 90 154.33 T +(tot_wor) 90 140.33 T +(d_count += wor) 126.14 140.33 T +(d_count;) 202.05 140.33 T +(tot_char_count += char_count;) 90 126.33 T +3 F +(W) 72 78.33 T +(e might as well improve a bit on) 81.26 78.33 T +5 F +(Unix) 224.09 78.33 T +3 F +(\325) 243.54 78.33 T +(s) 245.58 78.33 T +5 F +(wc) 253.36 78.33 T +3 F +( by displaying the number of \336les too.) 268.14 78.33 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "7" 7 +%%Page: "8" 8 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 0 0 0 1 1 1] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 8 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 10 Q +0 X +0 0 0 1 0 0 0 K +(.. 8) 527.5 36 T +0 0 0 1 0 0 0 K +33 54 597 54 2 L +3 H +2 Z +4 X +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +88.8 710.9 72 710.9 2 L +0 X +V +1.08 H +0 Z +N +1 12 Q +(21:) 72 712 T +243.84 710.9 90 710.9 2 L +V +N +(Print the grand totals if ther) 90 712 T +275.9 710.9 243.74 710.9 2 L +V +N +(e wer) 243.74 712 T +358.61 710.9 275.81 710.9 2 L +V +N +(e multiple \336les) 275.81 712 T +5 10 Q +(if \050\336le_count > 1\051 {) 90 694.33 T +(wc_print\050which, tot_char_count, tot_wor) 108 680.33 T +(d_count, tot_line_count\051;) 306.09 680.33 T +(printf \050\322 total in %d \336les\134n\323, \336le_count\051;) 108 666.33 T +(}) 90 652.33 T +3 F +-0.28 (Here now is the function that prints the values according to the speci\336ed options. The calling routine is sup-) 72 621.33 P +-0.06 (posed to supply a newline. If an invalid option character is found we inform the user about proper usage of) 72 609.33 P +(the command. Counts are printed in 8-digit \336elds so that they will line up in columns.) 72 597.33 T +88.8 572.9 72 572.9 2 L +V +N +1 12 Q +(22:) 72 574 T +149.04 572.9 90 572.9 2 L +V +N +(De\336nitions) 90 574 T +5 10 Q +(#de\336ne print_count\050n\051 printf\050\322%8ld\323, n\051) 90 556.33 T +88.8 531.9 72 531.9 2 L +V +N +1 12 Q +(23:) 72 533 T +144.48 531.9 90 531.9 2 L +V +N +(Functions) 90 533 T +5 10 Q +(wc_print \050which, char_count, wor) 90 515.33 T +(d_count, line_count\051) 251.43 515.33 T +(char *which; /* which counts to print */) 108 501.33 T +(long char_count, wor) 108 487.33 T +(d_count, line_count;) 211.5 487.33 T +( /* given totals */) 108 473.33 T +({) 90 459.33 T +(while \050*which\051) 108 445.33 T +(switch \050*which++\051 {) 126 431.33 T +(case \324l\325: print_count\050line_count\051;) 144 417.33 T +(br) 162 403.33 T +(eak;) 171.79 403.33 T +(case \324w\325: print_count\050wor) 144 389.33 T +(d_count\051;) 267.73 389.33 T +(br) 162 375.33 T +(eak;) 171.79 375.33 T +(case \324c\325: print_count\050char_count\051;) 144 361.33 T +(br) 162 347.33 T +(eak;) 171.79 347.33 T +(default:) 144 333.33 T +(if \050\050status & usage_err) 162 319.33 T +(or\051 == 0\051 {) 265.35 319.33 T +(fprintf\050stderr) 180 305.33 T +(,) 236.88 305.33 T +(\322Usage: %s [-lwc] [\336lename ...]\134n\323,) 198 291.33 T +(pr) 366.15 291.33 T +(og_name\051;) 375.94 291.33 T +(usage_err) 180 277.33 T +(or;) 227.5 277.33 T +(}) 162 263.33 T +(}) 126 249.33 T +(}) 90 235.33 T +3 F +0.45 (Incidentally) 72 201.33 P +0.45 (, a test of this program against the system) 121.28 201.33 P +5 F +0.45 (wc) 313.79 201.33 P +3 F +0.45 ( command on a SP) 328.57 201.33 P +0.45 (ARCstation showed that the) 414.69 201.33 P +0.82 (``of) 72 189.33 P +0.82 (\336cial\325) 86.82 189.33 P +0.82 (\325) 108.86 189.33 P +5 F +0.81 (wc) 114.68 189.33 P +3 F +0.82 ( was slightly slower) 129.46 189.33 P +0.82 (. Furthermore, although that) 216.92 189.33 P +5 F +0.81 (wc) 346.92 189.33 P +3 F +0.82 ( gave an appropriate error message for) 361.7 189.33 P +(the options `) 72 177.33 T +5 F +(abc) 127.03 177.33 T +3 F +(\325, it made no complaints about the options `abc\325!) 147.15 177.33 T +-0.25 (Dare we suggest that the system routine might have been better if its programmer had used a more literate) 72 160.33 P +(approach?) 72 148.33 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "8" 8 +%%Page: "9" 9 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 0 0 0 1 1 1] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 8 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 10 Q +0 X +0 0 0 1 0 0 0 K +(.. 9) 527.5 36 T +0 0 0 1 0 0 0 K +33 54 597 54 2 L +3 H +2 Z +4 X +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +72 696 540 706 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +72 705 540 705 2 L +1 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +0 0 612 792 C +2 14 Q +0 X +0 0 0 1 0 0 0 K +(Appendix B:) 72 710.67 T +5 F +(fmweb) 158.34 710.67 T +2 F +( source) 206.15 710.67 T +3 10 Q +-0.25 (T) 72 681.33 P +-0.25 (o extract this source, go to special -> conditional text, and hide the conditional tag named \322Fluf) 77 681.33 P +-0.25 (f\323. Save the) 489.37 681.33 P +(\336le as a text \336le called fmweb. The \336rst line of this \336le may need changing.) 72 669.33 T +6 12 Q +(T) 207.05 646 T +(able 1: Important variables in fmweb) 213.95 646 T +3 10 Q +(name) 127 621.33 T +(Description) 348.49 621.33 T +(%chunksByName) 78 599.33 T +-0.27 (An array of chunks, whose key is the heading of the chunk, and it\325) 213 599.33 P +-0.27 (s value) 500.07 599.33 P +(is the entire code in that section.) 213 587.33 T +($currChunkHeading) 78 567.33 T +(The current chunk heading) 213 567.33 T +(@chunkHeadings) 78 547.33 T +(A list of all the chunk headings, in order of appearance. If a heading has) 213 547.33 T +(been encountered before, it is not appended to this array) 213 535.33 T +(.) 463.52 535.33 T +(%markerReferred) 78 515.33 T +-0.1 (Keeps track of all those chunk headings that have been referred to \050by a) 213 515.33 P +(Frame cross reference\051.) 213 503.33 T +(%markerT) 78 483.33 T +(oHeading) 123 483.33 T +-0.38 (A translation table - Each chunk heading has a text \050the \322heading\323\051 that is) 213 483.33 P +(visible, and a marker text that Frame inserts. Unfortunately) 213 471.33 T +(, these two) 471.8 471.33 T +(are not necessarily identical. This translation is necessary since the) 213 459.33 T +-0.3 (script allows more than one chunk to have the same name \050which is then) 213 447.33 P +(concatenated\051, but a cross reference can be created to only of these) 213 435.33 T +(paragraphs.) 213 423.33 T +($line) 78 403.33 T +(Global var that contains the current line from the input MIF \336le.) 213 403.33 T +($currMarkerT) 78 383.33 T +(ext) 136.89 383.33 T +(While evaluating a chunk paragraph, this keeps track of the current) 213 383.33 T +-0.19 (marker text. Subsequently) 213 371.33 P +-0.19 (, the text of the paragraph and this marker text) 328.04 371.33 P +(are related by %markerT) 213 359.33 T +(oHeading) 321.92 359.33 T +($currModeProc) 78 339.33 T +-0.06 (A reference to a mode subroutine. Each of these subroutines is part of a) 213 339.33 P +(state diagram \050shown below\051.) 213 327.33 T +(@lookFor) 78 307.33 T +(The set of tokens in which this state is interested.) 213 307.33 T +(%chunkReferred) 78 287.33 T +(This array \050keyed by chunk heading\051 tracks all chunks that have been) 213 287.33 T +(referred to, by other chunks. The chunks that don\325t belong to this cate-) 213 275.33 T +(gory are the top-level chunks.) 213 263.33 T +72 635.75 72 256.25 2 L +V +0.5 H +0 Z +N +207 636.25 207 255.75 2 L +V +N +540 635.75 540 256.25 2 L +V +N +71.75 636 540.25 636 2 L +V +N +72.25 613.25 539.75 613.25 2 L +V +N +72.25 610.75 539.75 610.75 2 L +V +N +71.75 580 540.25 580 2 L +V +N +71.75 560 540.25 560 2 L +V +N +71.75 528 540.25 528 2 L +V +N +71.75 496 540.25 496 2 L +V +N +71.75 416 540.25 416 2 L +V +N +71.75 396 540.25 396 2 L +V +N +71.75 352 540.25 352 2 L +V +N +71.75 320 540.25 320 2 L +V +N +71.75 300 540.25 300 2 L +V +N +71.75 256 540.25 256 2 L +V +N +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "9" 9 +%%Page: "10" 10 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 0 0 0 1 1 1] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 8 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 10 Q +0 X +0 0 0 1 0 0 0 K +(.. 10) 522.5 36 T +0 0 0 1 0 0 0 K +33 54 597 54 2 L +3 H +2 Z +4 X +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +142.01 709.31 72 709.31 2 L +0 X +V +1.02 H +0 Z +N +3 14 Q +(Description) 72 710.67 T +3 10 Q +(fmweb is implemented as a simple state machine, whose state diagram is shown below) 72 691.33 T +(.) 457.7 691.33 T +0.26 (Each of the events in the state diagram are mif statements. The subroutines ParaMode, FileMode, Code-) 72 472.33 P +0.82 (Mode, ChunkMode and W) 72 460.33 P +0.82 (asteMode implement the states. If these subs are called without any parame-) 190.25 460.33 P +0.06 (ters, they do the necessary initializations required for that state, such as initializing @lookFor) 72 448.33 P +0.06 (, which is the) 482.01 448.33 P +-0.12 (set of lookahead patterns in which the current state is interested. The main loop calls these subs with $line) 72 436.33 P +(as the parameter - $line contains some event deemed interesting to the current state.) 72 424.33 T +0.72 (The script \336rst reads in all the chunks and stores them in chunksByName, keyed by the chunk heading.) 72 407.33 P +0.04 (Each chunk may contain embedded cross references to other chunks. In MIF) 72 395.33 P +0.04 (, an XrefSrcT) 412.02 395.33 P +0.04 (ext statement is) 469.89 395.33 P +-0.05 (the pointer to the source paragraph - more precisely) 72 383.33 P +-0.05 (, the chunk heading that this XrefSrcT) 300.93 383.33 P +-0.05 (ext points to, will) 466.8 383.33 P +1.53 (have a corresponding \322MT) 72 371.33 P +1.53 (ext\323 statement with exactly the same string. Since a chunk is simply all the) 192.19 371.33 P +0.51 (\322code\323 paragraph strings concatenated together) 72 359.33 P +0.51 (, cross references are simply embedded into this stream,) 284.71 359.33 P +(with a "\134200" character on either end, to identify it later) 72 347.33 T +(.) 310.89 347.33 T +1.52 (Finally) 72 330.33 P +1.52 (, each of the top level chunks are taken in order \050top level chunks are those that haven\325t been) 100.15 330.33 P +1.83 (referred to by any other chunk\051, and expanded. The expansion process consists of substituting each) 72 318.33 P +0.94 (embedded reference by the appropriate chunk - this is a recursive process, since the chunk referred to) 72 306.33 P +(may itself contain other embedded references.) 72 294.33 T +5 F +(#/usr/local/bin/perl5) 90 257.33 T +(#forwar) 90 233.33 T +(d declarations.) 126.33 233.33 T +(sub ParaMode;) 90 221.33 T +(sub FileMode;) 90 209.33 T +(sub CodeMode;) 90 197.33 T +(sub ChunkMode;) 90 185.33 T +(sub W) 90 173.33 T +(asteMode;) 118.65 173.33 T +(Initialize\050\051;) 90 149.33 T +(# Start with the W) 90 125.33 T +(aste State.) 173.11 125.33 T +(W) 90 113.33 T +(asteMode\050\051;) 99.1 113.33 T +(# Main loop) 90 101.33 T +(while \050$line = <STDIN>\051 {) 90 89.33 T +(if \050Inter) 108 77.33 T +(estingLine\050\051\051 {) 140.82 77.33 T +72 72 540 720 C +109.12 486 502.88 688 C +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +7 X +0 0 0 1 0 0 0 K +90 450 22 19 342.55 525.33 G +0.5 H +2 Z +0 X +90 450 22 19 342.55 525.33 A +285.55 513.33 334.55 535.33 R +7 X +V +N +329.43 508.62 326.11 513.78 331.67 511.17 330.55 509.89 4 Y +0 X +V +330.56 509.89 330.56 509.89 2 L +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +7 X +90 450 22 19 342.55 584.22 G +0 X +90 450 22 19 342.55 584.22 A +285.55 572.22 334.55 594.22 R +7 X +V +N +329.43 567.51 326.11 572.67 331.67 570.05 330.55 568.78 4 Y +0 X +V +330.56 568.78 330.56 568.78 2 L +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +7 X +90 450 22 19 342.55 644.78 G +0 X +90 450 22 19 342.55 644.78 A +285.55 632.78 334.55 654.78 R +7 X +V +N +329.43 628.06 326.11 633.22 331.67 630.61 330.55 629.33 4 Y +0 X +V +330.56 629.33 330.56 629.33 2 L +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +3 10 Q +(W) 130.98 581.45 T +(aste) 140.05 581.45 T +(Para) 208.55 581.45 T +(File) 314.23 640.19 T +(Code) 314.23 581.45 T +(Chunk) 314.23 522.71 T +187.59 587.31 199.12 584 187.59 580.69 187.59 584 4 Y +V +163.12 584 187.59 584 2 L +N +5 7 Q +(Para) 170.12 589 T +295.43 635.29 307.12 638 298.64 629.51 297.04 632.4 4 Y +V +226.12 593 297.04 632.4 2 L +N +174.66 571.69 163.12 575 174.66 578.31 174.66 575 4 Y +V +174.66 575 199.12 575 2 L +N +(All other pgf tags) 153.12 565.34 T +(PgfT) 226.28 614.83 T +(ag File) 239.95 614.83 T +(PgfT) 253.28 575.83 T +(ag code) 266.95 575.83 T +295.59 587.31 307.12 584 295.59 580.69 295.59 584 4 Y +V +235.12 584 295.59 584 2 L +N +298.64 535.5 307.12 527 295.43 529.71 297.04 532.61 4 Y +V +226.12 572 297.04 532.6 2 L +N +(PgfT) 226.28 540.34 T +(ag chunk) 239.95 540.34 T +(String) 334.28 668.83 T +(Char T) 301.28 606.83 T +(ab, String, Xr) 322.68 606.83 T +(efSr) 364.68 606.83 T +(cT) 376.98 606.83 T +(ext) 384.14 606.83 T +(MT) 319.28 546.83 T +(ext , String) 328.35 546.83 T +429.2 572.8 441 575 432.16 566.89 430.68 569.84 4 Y +V +345 527 430.68 569.84 2 L +N +430.97 602.91 439.99 595 428.15 596.93 429.56 599.92 4 Y +V +336 644 429.57 599.92 2 L +N +426.46 586.31 438 583 426.46 579.69 426.46 583 4 Y +V +342 583 426.46 583 2 L +N +(End of para) 385.28 586.83 T +3 10 Q +(W) 443.58 581.45 T +(aste) 452.65 581.45 T +72 72 540 720 C +0 0 612 792 C +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "10" 10 +%%Page: "11" 11 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 0 0 0 1 1 1] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 8 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 10 Q +0 X +0 0 0 1 0 0 0 K +(.. 11) 522.5 36 T +0 0 0 1 0 0 0 K +33 54 597 54 2 L +3 H +2 Z +4 X +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +5 F +0 X +(# Call the curr) 126 713.33 T +(ent mode pr) 193.33 713.33 T +(oc \050one of ParaMode,FileMode, CodeMode, ChunkMode;) 253.93 713.33 T +(# W) 126 701.33 T +(asteMode, or W) 143.41 701.33 T +(asteOneStringMode\051) 220.07 701.33 T +(&{$currModePr) 126 689.33 T +(oc}\050$line\051;) 199.17 689.33 T +( }) 108 677.33 T +(}) 90 665.33 T +(#All chunks have been slurped in.) 90 641.33 T +(# Find out which chunks have been r) 90 617.33 T +(eferr) 267.24 617.33 T +(ed to by othe r chunks.) 289.36 617.33 T +(for) 90 605.33 T +(each $k \050keys %markerReferr) 102.66 605.33 T +(ed\051 {) 241.57 605.33 T +($chunkReferr) 108 593.33 T +(ed {$markerT) 171.5 593.33 T +(oHeading{$k}} = 1;) 234.19 593.33 T +(}) 90 581.33 T +(# Can curr) 90 557.33 T +(ently open only one \336le.) 140.67 557.33 T +(open \050F) 90 545.33 T +(, "> $currFile"\051 || die "Could not open $currFile for writing";) 126.06 545.33 T +(# The "tangle" pr) 90 521.33 T +(ocess. Expand each top level chunk) 168.23 521.33 T +(for) 90 509.33 T +(each $c \050@chunkHeadings\051 {) 102.66 509.33 T +(if \050! $chunkReferr) 108 497.33 T +(ed{$c}\051 {) 188.82 497.33 T +(ChunkExpand \050$c\051;) 126 485.33 T +($chunksByName{$c} =~ s/\134\134xd\050[2345]\051 /$xlat[$1]/g; #T) 126 473.33 T +(ranslate smart quotes) 385.59 473.33 T +($chunksByName{$c} =~ s/\134\134\134\134/\134\134/g; #Convert \134\134 to \134) 126 461.33 T +($chunksByName{$c} =~ s/\134\134>/>/g; # convert \134> to >) 126 449.33 T +(print F $chunksByName{$c}, "\134n";) 126 437.33 T +(}) 108 425.33 T +(}) 90 413.33 T +(close \050F\051;) 90 389.33 T +(exit \0500\051;) 90 377.33 T +(#--------------------------------------------------------------------------------------------------------------) 90 353.33 T +(sub) 90 329.33 T +1 F +(ChunkExpand) 109.55 329.33 T +5 F +( {) 177.75 329.33 T +( local \050$heading\051 = @_;) 108 317.33 T +( print "ChunkExpand : $heading \134n" if $debugging;) 108 293.33 T +( if \050de\336ned \050$chunksByName{$heading}\051\051 {) 108 269.33 T +(# For each embedded marker found, call CHunkExpand r) 126 257.33 T +(ecursively.) 404.69 257.33 T +(# Note the /e option below.) 126 245.33 T +(1 while) 126 233.33 T +( \050$chunksByName{$heading} =~) 126 221.33 T +(s/\134200\050[^\134200]*\051\134200/ChunkExpand\050$markerT) 144 209.33 T +(oHeading{$1}\051/e\051;) 364.28 209.33 T +(r) 126 197.33 T +(etur) 128.97 197.33 T +(n $chunksByName{$heading};) 148.16 197.33 T +( } else {) 108 185.33 T +(r) 126 173.33 T +(etur) 128.97 173.33 T +(n "??$heading??"; # T) 148.16 173.33 T +(o indicate an unr) 251.12 173.33 T +(esolved cr) 334.2 173.33 T +(oss r) 384.23 173.33 T +(efer) 404.28 173.33 T +(ence.) 423.39 173.33 T +( }) 108 161.33 T +(}) 90 149.33 T +(sub) 90 125.33 T +1 F +(W) 109.55 125.33 T +(asteMode) 118.05 125.33 T +5 F +( {) 166.85 125.33 T +( local \050$ev\051 = @_;) 108 113.33 T +( if \050! de\336ned $ev\051 {) 108 101.33 T +(@lookFor = \050$P) 126 89.33 T +(ARA\051;) 195.21 89.33 T +($currModePr) 126 77.33 T +(oc = \134&W) 188.09 77.33 T +(asteMode;) 235.43 77.33 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "11" 11 +%%Page: "12" 12 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 0 0 0 1 1 1] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 8 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 10 Q +0 X +0 0 0 1 0 0 0 K +(.. 12) 522.5 36 T +0 0 0 1 0 0 0 K +33 54 597 54 2 L +3 H +2 Z +4 X +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +5 F +0 X +(r) 126 713.33 T +(etur) 128.97 713.33 T +(n;) 148.16 713.33 T +( }) 108 701.33 T +(ParaMode\050\051;) 108 677.33 T +(}) 90 665.33 T +(sub) 90 641.33 T +1 F +(ParaMode) 109.55 641.33 T +5 F +( {) 159.95 641.33 T +(local \050$ev\051 = @_;) 108 629.33 T +(if \050! de\336ned $ev\051 {) 108 617.33 T +(@lookFor = \050"^ *<PgfT) 126 605.33 T +(ag `code\325", "^ *<PgfT) 226.25 605.33 T +(ag `chunk\325", "^ *<PgfT) 326.63 605.33 T +(ag `File\325"\051;) 430.41 605.33 T +($currModePr) 126 593.33 T +(oc = \134&ParaMode;) 188.09 593.33 T +(r) 126 581.33 T +(etur) 128.97 581.33 T +(n;) 148.16 581.33 T +( }) 108 569.33 T +( print "ParaMode : $ev \134n" if $debugging;) 108 557.33 T +( if \050$ev =~ /code/ \051 {) 108 545.33 T +(CodeMode\050\051;) 126 533.33 T +( } elsif \050$ev =~ /chunk/ \051 {) 108 521.33 T +(ChunkMode\050\051;) 126 509.33 T +( } elsif \050$ev =~ /File/ \051 {) 108 497.33 T +(FileMode\050\051;) 126 485.33 T +( } else {) 108 473.33 T +(W) 126 461.33 T +(asteMode\050\051;) 135.1 461.33 T +(}) 108 449.33 T +(}) 90 437.33 T +(sub) 90 413.33 T +1 F +(FileMode) 109.55 413.33 T +5 F +( {) 153.95 413.33 T +( local \050$ev\051 = @_;) 108 401.33 T +( if \050! de\336ned $ev\051 {) 108 389.33 T +(@lookFor = \050"^ *<String", $ENDOFP) 126 377.33 T +(ARA\051;) 286.02 377.33 T +($currModePr) 126 365.33 T +(oc = \134&FileMode;) 188.09 365.33 T +($currFile = "";) 126 353.33 T +(r) 126 341.33 T +(etur) 128.97 341.33 T +(n;) 148.16 341.33 T +( }) 108 329.33 T +( print "FileMode : $ev \134n" if $debugging;) 108 317.33 T +( if \050$ev =~ /^ *<String.*\134`\050.+\051\134\325>$/ \051 {) 108 305.33 T +($currFile = $1;) 126 293.33 T +( } else { # End of para) 108 281.33 T +(W) 126 269.33 T +(asteMode\050\051;) 135.1 269.33 T +(}) 108 257.33 T +(}) 90 245.33 T +(sub) 90 221.33 T +1 F +(CodeMode) 109.55 221.33 T +5 F +( {) 165.15 221.33 T +( local \050$ev, $h\051 = @_;) 108 209.33 T +(if \050! de\336ned $ev\051 {) 108 197.33 T +(@lookFor = \050"^ *<Char T) 126 185.33 T +(ab", "^ *<String", "^ *<XRefSr) 237.3 185.33 T +(cT) 368.6 185.33 T +(ext", $ENDOFP) 378.84 185.33 T +(ARA\051;) 446.62 185.33 T +($currModePr) 126 173.33 T +(oc = \134&CodeMode;) 188.09 173.33 T +(r) 108 161.33 T +(etur) 110.97 161.33 T +(n;) 130.16 161.33 T +(}) 108 149.33 T +( print "CodeMode : $ev \134n" if $debugging;) 108 137.33 T +( if \050$ev =~ /^ *<Char T) 108 125.33 T +(ab/\051 {) 211.7 125.33 T +($chunksByName{$currChunkHeading} .= "\134t";) 126 113.33 T +( } elsif \050$ev =~ /String \134`\050.*\051\134\325>$/\051 {) 108 101.33 T +($chunksByName{$currChunkHeading} .= "$1"; # Concatenate code to curr) 126 89.33 T +(ent chunk) 486.22 89.33 T +(} elsif \050\050$h\051 = \050$ev =~ /^ *<XRefSr) 108 77.33 T +(cT) 263.81 77.33 T +(ext \050.*\051>$/\051\051 {) 274.05 77.33 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "12" 12 +%%Page: "13" 13 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 0 0 0 1 1 1] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 8 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 10 Q +0 X +0 0 0 1 0 0 0 K +(.. 13) 522.5 36 T +0 0 0 1 0 0 0 K +33 54 597 54 2 L +3 H +2 Z +4 X +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +5 F +0 X +($markerReferr) 126 713.33 T +(ed{$h} = 1; # Mark this chunk r) 193.48 713.33 T +(efer) 336.95 713.33 T +(ence as "r) 356.06 713.33 T +(eferr) 403.94 713.33 T +(ed to") 426.06 713.33 T +(# Put the text in as an embedded r) 126 701.33 T +(efer) 294.12 701.33 T +(ence) 313.23 701.33 T +($chunksByName{$currChunkHeading} .= "\134200$h\134200\134n";) 126 689.33 T +(# The next string is the string of the cr) 126 677.33 T +(oss r) 301.33 677.33 T +(efer) 321.38 677.33 T +(ence itself - having embedded the) 340.49 677.33 T +(# cr) 126 665.33 T +(oss r) 143.75 665.33 T +(efer) 163.8 665.33 T +(ence itself, we ar) 182.91 665.33 T +(e not inter) 265.08 665.33 T +(ested in this string.) 314.12 665.33 T +(W) 126 653.33 T +(asteOneStringMode\050\051;) 135.1 653.33 T +( } elsif \050$ev =~ /$ENDOFP) 108 641.33 T +(ARA/o\051 {) 225.1 641.33 T +(# Assuming that each line of the code is in one "code" para . T) 126 629.33 T +(ime to append a) 426.54 629.33 T +(# newline) 126 617.33 T +($chunksByName{$currChunkHeading} .= "\134n";) 126 605.33 T +(W) 126 593.33 T +(asteMode\050\051;) 135.1 593.33 T +( }) 108 581.33 T +(}) 90 569.33 T +(sub) 90 545.33 T +1 F +(W) 109.55 545.33 T +(asteOneStringMode) 118.05 545.33 T +5 F +( {) 214.05 545.33 T +(# Called fr) 108 533.33 T +(om CodeMode above.) 157.5 533.33 T +( local \050$ev\051 = @_;) 108 521.33 T +( if \050! de\336ned $ev\051 {) 108 509.33 T +(@lookFor = \050"^ *<String"\051;) 126 497.33 T +($currModePr) 126 485.33 T +(oc = \134&W) 188.09 485.33 T +(asteOneStringMode;) 235.43 485.33 T +(r) 126 473.33 T +(etur) 128.97 473.33 T +(n;) 148.16 473.33 T +( }) 108 461.33 T +( CodeMode\050\051;) 108 449.33 T +(}) 90 437.33 T +(sub) 90 413.33 T +1 F +(ChunkMode) 109.55 413.33 T +5 F +( {) 169.55 413.33 T +(local \050$ev\051 = @_;) 108 401.33 T +( if \050! de\336ned $ev\051 {) 108 389.33 T +(@lookFor = \050"^ *<MT) 126 377.33 T +(ext", "^ *<String", $ENDOFP) 219.68 377.33 T +(ARA\051;) 344.53 377.33 T +($currChunkHeading = "";) 126 365.33 T +($currMarkerT) 126 353.33 T +(ext = "";) 187.44 353.33 T +($currModePr) 126 341.33 T +(oc = \134&ChunkMode;) 188.09 341.33 T +(r) 126 329.33 T +(etur) 128.97 329.33 T +(n;) 148.16 329.33 T +( }) 108 317.33 T +( if \050$ev =~ /^ *<MT) 108 305.33 T +(ext \050.*\051>$/\051 {) 194.08 305.33 T +($currMarkerT) 126 293.33 T +(ext = $1;) 187.44 293.33 T +( } elsif \050$ev =~ /^ *<String.*\134`\050.+\051\134\325>$/ \051 {) 108 281.33 T +($currChunkHeading .= $1;) 126 269.33 T +( } else {) 108 257.33 T +(# End of chunk para.) 126 245.33 T +(print "ChunkMode : $1 \134n" if $debugging;) 126 233.33 T +(if \050! de\336ned $chunksByName{$currChunkHeading}\051 {) 126 221.33 T +(# Init the curr) 144 209.33 T +(ent chunk with blank code.) 206.12 209.33 T +($chunksByName{$currChunkHeading} = "";) 144 197.33 T +(}) 126 185.33 T +(if \050! de\336ned $headingSeenBefor) 126 173.33 T +(e{$currChunkHeading}\051 {) 279.39 173.33 T +(# New chunk heading name seen.) 144 161.33 T +( push \050@chunkHeadings, $currChunkHeading\051;) 144 149.33 T +( $headingSeenBefor) 144 137.33 T +(e{$currChunkHeading} = 1;) 242.4 137.33 T +(}) 126 125.33 T +(if \050$currMarkerT) 126 113.33 T +(ext ne ""\051 {) 199.04 113.33 T +(# cr) 144 101.33 T +(oss r) 161.75 101.33 T +(efer) 181.8 101.33 T +(ence between marker text and the actual heading) 200.91 101.33 T +($markerT) 144 89.33 T +(oHeading{$currMarkerT) 187.06 89.33 T +(ext} = $currChunkHeading;) 300.4 89.33 T +(}) 126 77.33 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "13" 13 +%%Page: "14" 14 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 0 0 0 1 1 1] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 8 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 10 Q +0 X +0 0 0 1 0 0 0 K +(.. 14) 522.5 36 T +0 0 0 1 0 0 0 K +33 54 597 54 2 L +3 H +2 Z +4 X +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +5 F +0 X +(W) 126 713.33 T +(asteMode\050\051;) 135.1 713.33 T +(}) 108 701.33 T +(}) 90 689.33 T +(sub) 90 665.33 T +1 F +(Inter) 109.55 665.33 T +(estingLine) 130.87 665.33 T +5 F +( {) 178.87 665.33 T +(# Does the line belong to any of the lookahead tokens?) 108 653.33 T +(for) 108 641.33 T +(each $l \050@lookFor\051 {) 120.66 641.33 T +(if \050$line =~ /$l/\051 {) 126 629.33 T +(r) 144 617.33 T +(etur) 146.97 617.33 T +(n $l;) 166.16 617.33 T +(}) 126 605.33 T +( }) 108 593.33 T +(r) 108 581.33 T +(etur) 110.97 581.33 T +(n undef;) 130.16 581.33 T +(}) 90 569.33 T +(sub) 90 545.33 T +1 F +(Initialize) 109.55 545.33 T +5 F +( {) 148.55 545.33 T +($debugging = 0; # Change to 1 to get a trace.) 108 533.33 T +($currFile = "-";) 108 521.33 T +(# Output to stdout) 171.33 521.33 T +($P) 108 509.33 T +(ARA = \325^ *<Para\325;) 118.72 509.33 T +($ENDOFP) 108 497.33 T +(ARA = \325^ *> # end of Para\325;) 152.46 497.33 T +(#T) 108 473.33 T +(ranslation table for smart quotes.) 117.5 473.33 T +($xlat[2] = "\134"";) 108 461.33 T +($xlat[3] = "\134"";) 108 449.33 T +($xlat[4] = "\134\325";) 108 437.33 T +($xlat[5] = "\134\325";) 108 425.33 T +(# Start of) 108 401.33 T +(f with a default chunk heading, in case the pr) 150.4 401.33 T +(ogrammer starts of) 371.1 401.33 T +(f code without) 462.13 401.33 T +(# a chunk heading) 108 389.33 T +($currChunkHeading = " DEF) 108 377.33 T +(AUL) 264.82 377.33 T +(T ";) 282.93 377.33 T +($chunksByName {$currChunkHeading} = "";) 108 365.33 T +(push \050@chunkHeadings, $currChunkHeading\051;) 108 353.33 T +(}) 90 341.33 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "14" 14 +%%Trailer +%%BoundingBox: 0 0 612 792 +%%PageOrder: Ascend +%%Pages: 14 +%%DocumentFonts: Times-Roman +%%+ AvantGarde-Demi +%%+ Helvetica-Bold +%%+ Helvetica +%%+ Helvetica-Oblique +%%+ AvantGarde-Book +%%+ Times-Bold +%%+ Courier +%%+ AvantGarde-BookOblique +%%EOF |