# Style sheet for Lout
# Copyright (c) 2000 Jean-Baptiste Nivoit
# Inspired by other a2ps style sheets, most notably the TeX one.
#
# This style sheet is meant to work with Basser Lout
# document formatting system files.
# Further information about Lout is available at
# 	  <URL:http://www.spbu.ru/~uwe/lout/>
#
# It should work for Lout version 3.17 and above.
#
# This steals some stuff from lout-mode.el, an Emacs
# major-mode for editing Lout source, which is GPL'ed and
# Copyright (C) 1997-1999 Eric Marsden <emarsden@mail.dotcom.fr>
# See <URL:http://www.chez.com/emarsden/lout/>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; see the file COPYING.  If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#

style Lout is

written by "Jean-Baptiste Nivoit <jbnivoit@multimania.com>"
version is 1.0
requires a2ps version 4.12

documentation is
    "This is the style for Lout files."
end documentation

alphabets are
   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_#%@"
case sensitive

keywords in Keyword are
	extend, export, def, named, left, right,
        force, into, horizontally, macro, body,
	precedence, import
end keywords

# this list of keywords comes as is from lout-mode.el
keywords in Keyword_strong are

    @Abstract, @AL, @AlignedDisplay, @AlphaList, @And, @Angle,
    @Appendix, @Arc, @Arrow, @B, @BaseOf, @Begin,
    @BeginAlignedDisplays, @BeginAppendices, @BeginSubSections,
    @BeginSubSubAppendices, @BeginSubSubSections, @BI, @BL, @Book,
    @BookLayout, @BoundaryMarks, @Box, @Break, @BulletList, @CC,
    @CD, @CDot, @Center, @CenteredDisplay, @CenteredList,
    @ChapCite, @ChapRef, @ChapRefListTitle
    @Chapter, @Char, @Circle, @Cite, @CL, @Claim, @CNP, @Color,
    @Colour, @ColumnGap, @ColumnNumber, ContentsGoesHere,
    @ContentsGap, @ContentsGapAbove, @ContentsGapBelow,
    @ContentsLeader, @ContentsLeaderGap, @ContentsRightWidth,
    @CoverSheet, @CP, @CPrint
    @Corollary, @CurveBox, @D, @DashList, @Data, @Database,
    @Date, @DefaultIndent, @Definition, @Diamond, @Display,
    @DisplayGap, @DisplayIndent, @Distance,
    @DL, @DLI, @Doc, @Document, @DocumentLayout, @DotJoin,
    @DotSep, @DP, @DropListItem
    @DropTagItem, @DTI, @El, @Ellipse, @End, @EndList,
    @EndAlignedDisplays,
    @EndAppendicies, @EndChapters, @EndNote, @EndOverheads,
    @EndProof, @EndSections, @EndSubAppendices, @EndSubSections,
    @EndSubSubAppendices, @EndSubSubSections, @Eq,
    @EvenLeftMargin, @EvenRightMargin, @Example,
    @Fig, @Figure, @FigureCaptionPos, @FigureLocation, @FigureNumbers,
    @FigurePageNumber, @FirstPageNumber, @Fmta, @Font,
    @FootMargin, @FootAboveGap, @FootGap, @FootLen, @FootNote,
    @FootNoteBreak, @FootNoteFont, @FootNoteLocation,
    @FootNoteNumbers, @FootNoteThrough, @Frame, @FullWidth
    @Graph, @GraphCircle, @GraphCross, @GraphDashed, @GraphDiamond,
    @GraphDotted, @GraphFilledCircle, @GraphFilledDiamond,
    @GraphFilledSquare, @GraphFilledTriangle, @GraphNoLine,
    @GraphPlus, @GraphSolid, @GraphSquare, @GraphTriangle,
    @HArrow, @Heading, @HeadingFont, @HLine,
    @I, @ID, @If, @IL, @Illustration,
    @Include, @IncludeGraphic, @IndentedDisplay, @IndentedList,
    @IndexBlanks, @IndexBreak, @IndexColumnGap, @IndexColumnNumber,
    @IndexFont, @InitialBreak, @InitialFont, @InitialLanguage,
    @InitialSpace, @IntroFirstPageNumber, @IntroPageNumbers,
    @Introduction, @JoinFigures, @L, @Label,
    @Language, @LD, @Lecture, @LeftDisplay, @LeftList, @LeftNote,
    @Lemma, @LI, @Line, @List, @ListItem, @LL, @LLP, @Location,
    @LP, @MajorNum, @MajorTitle, @MakeContents, @MakeIndex,
    @MakeReferences, @MarkOf, @MarkRow, @MinorNum, @MinorTitle,
    @Minute, @Multiply, @NL, @NoChapCite, @NoChapRef, @NoCite,
    @NoRef, @Not, @NP, @Null, @NumberedDisplay,
    @NumberedList, @NumberedOf, @OddLeftMargin, @OddRightMargin,
    @Or, @OrdinaryLayout, @OuterNote, @Over, @Overhead,
    @OverheadLayout, @OverheadTransparencies, @OverStrike,
    @PageBackground, @PageBoxType, @PageHeaders, @PageHeight,
    @PageNum, @PageNumbers, @PageOrientation, @PageType, @PageWidth,
    @PageMark, @PageOf, @PAL, @ParaGap, @ParaIndent,
    @ParenAlphaList, @ParenNumberedList, @ParenRomanList,
    @ParenUCAlphaList, @ParenUCRomanList, @ParSym,
    @ParNumber, @ParText, @ParTitle, @Pas, @Place, @PNL,
    @Polygon, @PP, @Preface,
    @Prev, @PRL, @Proof, @Proposition, @PUCAL, @PUCRL, @QD, @QL,
    @QuotedDisplay, @QuotedList,
    @R, @RawEndList, @RawList, @Ref, @RefPrint, @RefStyle,
    @RefCiteLabels, @RefCiteStyle, @Reference,
    @ReferencesBeforeAppendices, @RefListBreak, @RefListFont,
    @RefListFormat, @RefListGap, @RefListIndent, @RefListLabels,
    @RefListLabelWidth, @RefListRightIndent, @RefListSortKey,
    @RefListTitle, @RefNumbers, @Register, @Report, @ReportLayout,
    @Right, @RightDisplay, @RightNote, @RL, @RomanList, @Rotate,
    @Rowa, @RR, @RunningTitle, @S, @Scale, @Second, @Section,
    @SectSym, @SeparateIntoNumbering, @SetColour,
    @ShadowBox, @ShowLabels, @SL@Square, @Star, @StarList,
    @SubAppendix,
    @SubSection, @SubSubAppendix, @SubSubSection, @Sym,
    @SysDatabase, @SysInclude,
    @Tab, @Table, @TableCaptionPos,
    @TableLocation, @TableNumbers, @Tag, @TaggedList,
    @TagItem, @Theorem,
    @TI, @Time, @Title, @TitlePageFont, @TL, @TopMargin,
    @True, @Type, @UCAL,
    @UCAlphaList, @UCRL, @UCRomanList,
    @Underline, @Use, @VArrow, @Verbatim, @VeryWideTaggedList,
    @VLine, @VShift,
    @VWTL, @Wide,
    @WideTaggedList, @WTL,
    @XDistance, @YDistance,

    @Bullet, @ParSym, @Dagger, @CDot, @Yen, @Degree,
    @Second, @Multiply, @CopyRight, @TradeMark, @Start,
    @SectSym, @DaggerDbl, @Sterling, @Florin, @Minute,
    @Lozenge, @Divide, @Register,

    @B, @I, @BI, @R, @F, @S,

    @Chapter, @Section, @SubSection, @Abstract, @BeginSections,
    @EndSections, @BeginSubSections, @EndSubSections, @Appendix,
    @BeginSubAppendices, @EndSubAppendices, @SubAppendix, @Preface

end keywords

#(defconst lout-font-lock-keywords
#  (list
#
#     1 font-lock-function-name-face)
#   '("@\\(Begin\\)[ ]+\\([a-zA-Z]+\\)"
#     (1 font-lock-keyword-face) (2 font-lock-function-name-face))
#   '("@\\([a-zA-Z]+\\)" 1 font-lock-keyword-face)
#   '("{||?\\|//?}{[0-9]+[cipmfsvx]}?" . font-lock-type-face)
#   '("@B[ ]+{\\([^}]*\\)}" 1 'bold keep)
#   '("@B[ ]+\\(\\w+\\)" 1 'bold keep)
#   '("@I[ ]+{\\([^}]*\\)" 1 'italic keep)
#   '("@I[ ]+\\(\\w+\\)" 1 'italic keep)
#   '("@BI[ ]+{\\([^}]*\\)}" 1 'bold-italic keep)
#   '("@BI[ ]+\\(\\w+\\)" 1 'bold-italic keep)
#   '("@Title +{\\([^}]*\\)}" 1 'bold keep)
#   '("def\||macro" . font-lock-function-name-face))
#  "Additional expressions to highlight in Lout mode.")

operators are
#  (/def[\t ]*(\\@[a-zA-Z0-9_]+)/ \1 Keyword_strong)
  (/(\\@[a-zA-Z0-9_]+)/ \1 Keyword_strong),

	"//",
	"/",
	"^/",
	"&",
	"^|",
	"|"
end operators

sequences are
    "#"                     Comment,
    C-string
end sequences

end style
