123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- {
- $Id$
- This file is part of the Free Component Library (FCL)
- Copyright (c) 1999-2000 by the Free Pascal development team
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- 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.
- **********************************************************************}
- unit wtex;
- interface
- {$ifdef fpc}
- {$mode objfpc}
- {$endif}
- uses wformat,classes,sysutils;
- Type
- TTexWriter=Class(TFormattingWriter)
- FCellCount : Integer;
- Protected
- Procedure IncCellCount;
- Property CellCount : Integer Read FCellCount Write FCellCount;
- Public
- Procedure ScopeStart;
- Procedure ScopeEnd;
- Procedure EnvironmentStart(Const Name,Opts : String);
- Procedure EnvironmentEnd(Const Name : String);
- Function EscapeText (AText : String) : String; override;
- Procedure DocumentStart(Const Title : String); override;
- Procedure DocumentEnd; override;
- Procedure HeaderStart(Alevel : Integer); override;
- Procedure HeaderEnd(Alevel : Integer); override;
- Procedure ParagraphEnd; override;
- Procedure LineBreak; override;
- Procedure Rule; override;
- Procedure BoldStart; override;
- Procedure BoldEnd;override;
- Procedure ItalicStart;override;
- Procedure ItalicEnd;override;
- Procedure UnderlineStart;override;
- Procedure UnderlineEnd;override;
- Procedure PreformatStart; override;
- Procedure PreformatEnd; override;
- Procedure TableStart( NoCols: Integer; Border : Boolean); override;
- Procedure TableEnd; override;
- Procedure RowStart; override;
- Procedure RowEnd; override;
- Procedure CellStart; override;
- Procedure HeaderCellStart; override;
- Procedure HeaderCellEnd; override;
- Procedure ListStart(ListType : TListType); override;
- Procedure ListEnd(ListType : TListType); override;
- Procedure ListItemStart; override;
- Procedure DefinitionItem(Const Aname,AText : String); override;
- end;
- Const
- ListNames : Array[TListType] of string
- = ('enumerate','itemize','definition');
- implementation
- { TTexWriter }
- procedure TTexWriter.BoldEnd;
- begin
- ScopeEnd;
- end;
- procedure TTexWriter.BoldStart;
- begin
- dump('\textbf');
- ScopeStart;
- end;
- procedure TTexWriter.CellStart;
- begin
- If CellCount<>0 then
- Dump('&');
- IncCellCount;
- end;
- procedure TTexWriter.DefinitionItem(const Aname, AText: String);
- begin
- dump('\item[');
- Write(AName);
- Dump(']');
- Write(Atext);
- end;
- procedure TTexWriter.DocumentEnd;
- begin
- dump('\end{document}')
- end;
- procedure TTexWriter.DocumentStart(const Title: String);
- begin
- dumpln('\documentclass{report}');
- dumpln('\usepackage{a4}');
- dumpln('\begin{document}');
- dump('\title');
- ScopeStart;
- Write(Title);
- ScopeEnd;
- end;
- procedure TTexWriter.EnvironmentStart(const Name,opts: String);
- begin
- Dump('\begin');
- If Opts<>'' then
- Dump(Opts);
- ScopeStart;
- Dump(Name);
- ScopeEnd;
- end;
- procedure TTexWriter.EnvironmentEnd(const Name: String);
- begin
- Dump('\end');
- ScopeStart;
- Dump(Name);
- ScopeEnd;
- end;
- function TTexWriter.EscapeText(AText: String): String;
- begin
- Result:=StringReplace(AText,'_','\_',[rfReplaceAll]);
- end;
- procedure TTexWriter.HeaderCellEnd;
- begin
- CellEnd;
- end;
- procedure TTexWriter.HeaderCellStart;
- begin
- CellStart;
- end;
- procedure TTexWriter.HeaderEnd(Alevel: Integer);
- begin
- ScopeEnd;
- Dumpln('');
- end;
- procedure TTexWriter.HeaderStart(Alevel: Integer);
- Const
- Headers : Array [0..4] of string =
- ('\part','\chapter','\section','\subsection','\subsubsection');
- begin
- dump(Headers[Alevel]);
- ScopeStart;
- end;
- procedure TTexWriter.IncCellCount;
- begin
- Inc(FCellCount);
- end;
- procedure TTexWriter.ItalicEnd;
- begin
- ScopeEnd;
- end;
- procedure TTexWriter.ItalicStart;
- begin
- dump('\textit');
- ScopeStart;
- end;
- procedure TTexWriter.LineBreak;
- begin
- Dump('\\');
- end;
- procedure TTexWriter.ListEnd(ListType: TListType);
- begin
- EnvironmentEnd(ListNames[ListType]);
- end;
- procedure TTexWriter.ListItemStart;
- begin
- dump('\item');
- end;
- procedure TTexWriter.ListStart(ListType: TListType);
- begin
- EnvironmentStart(ListNames[ListType],'');
- end;
- procedure TTexWriter.ParagraphEnd;
- begin
- DumpLn(LineFeed+LineFeed);
- end;
- procedure TTexWriter.PreformatEnd;
- begin
- EnvironmentEnd('verbatim')
- end;
- procedure TTexWriter.PreformatStart;
- begin
- EnvironmentStart('verbatim','')
- end;
- procedure TTexWriter.RowEnd;
- begin
- DumpLn('\\')
- end;
- procedure TTexWriter.RowStart;
- begin
- FCellCount:=0;
- end;
- procedure TTexWriter.Rule;
- begin
- dump('\hline');
- end;
- procedure TTexWriter.ScopeEnd;
- begin
- Dump('}');
- end;
- procedure TTexWriter.ScopeStart;
- begin
- Dump('{');
- end;
- procedure TTexWriter.TableStart(NoCols: Integer; Border: Boolean);
- begin
- // EnvironmentStart('table','');
- EnvironmentStart('tabular','');
- ScopeStart;
- Dump(StringOfChar('l',NoCols));
- ScopeEnd;
- DumpLn('');
- end;
- procedure TTexWriter.TableEnd;
- begin
- EnvironmentEnd('tabular');
- // EnvironmentEnd('table');
- end;
- procedure TTexWriter.UnderlineEnd;
- begin
- ScopeEnd;
- end;
- procedure TTexWriter.UnderlineStart;
- begin
- dump('\textul');
- ScopeStart;
- end;
- end.
- {
- $Log$
- Revision 1.1 2003-10-01 20:49:29 michael
- + Initial implementation
- }
|