<#set? f1 ><#set? f2 ><#set? f3 ><#set? t1 ><#set? t2 ><#set? t3 ><#set? b1 ><#set? b2 ><#set? b3 ><#set? epsfdirdoc ><#set? epsfdirgen ><#set? p1 1>%!

% ansi stuff :
/ANSIFont {
12 dict begin /newfontname exch def /basefontname exch def FontDirectory
newfontname known not { /basefontdict basefontname findfont def /newfont basefontdict
maxlength dict def basefontdict { exch dup /FID ne {dup /Encoding eq {exch dup length
array copy newfont 3 1 roll put} {exch newfont 3 1 roll put} ifelse} {pop pop} ifelse }
forall newfont /FontName newfontname put 127 1 159 {newfont /Encoding get exch
/bullet put} for ANSIVec aload pop ANSIVec length 2 idiv {newfont /Encoding get 3 1 roll
put} repeat newfontname newfont definefont pop } if newfontname end pop
} bind def 

/ANSIVec [
16#10 /grave 16#11 /acute 16#12 /circumflex 16#13 /tilde 16#14 /macron
16#15 /brev 16#16 /dotaccent 16#17 /dieresis 16#18 /ring 16#19 /cedilla
16#1A /hungarumlaut 16#1B /ogonek 16#1C /caron 16#1D /dotlessi 16#27 /quotesingle
16#60 /grave 16#91 /quoteleft 16#92 /quoteright 16#9E /OE 16#9F /oe
16#A0 /space 16#A4 /currency 16#A6 /bar 16#A7 /section 16#A8 /dieresis
16#A9 /copyright 16#AA /ordfeminine 16#AB /guillemotleft 16#AC /trademark
16#AD /hyphen 16#AE /registered 16#AF /macron 16#B0 /ring 16#B1 /plusminus
16#B2 /bullet 16#B3 /bullet 16#B4 /acute 16#B5 /mu 16#B6 /paragraph
16#B7 /periodcentered 16#B8 /cedilla 16#B9 /bullet 16#BA /ordmasculine
16#BB /guillemotright 16#BC /fraction 16#BD /bullet 16#BE /bullet 16#BF /questiondown
16#C0 /Agrave 16#C1 /Aacute 16#C2 /Acircumflex 16#C3 /Atilde 16#C4 /Adieresis
16#C5 /Aring 16#C6 /AE 16#C7 /Ccedilla 16#C8 /Egrave 16#C9 /Eacute
16#CA /Ecircumflex 16#CB /Edieresis 16#CC /Igrave 16#CD /Iacute 16#CE /Icircumflex
16#CF /Idieresis 16#D0 /D 16#D1 /Ntilde 16#D2 /Ograve 16#D3 /Oacute
16#D4 /Ocircumflex 16#D5 /Otilde 16#D6 /Odieresis 16#D7 /multiply 16#D8 /Oslash
16#D9 /Ugrave 16#DA /Uacute 16#DB /Ucircumflex 16#DC /Udieresis
16#DD /Y 16#DE /P 16#DF /germandbls 16#E0 /agrave 16#E1 /aacute
16#E2 /acircumflex 16#E3 /atilde 16#E4 /adieresis 16#E5 /aring 16#E6 /ae
16#E7 /ccedilla 16#E8 /egrave 16#E9 /eacute 16#EA /ecircumflex 16#EB /edieresis
16#EC /igrave 16#ED /iacute 16#EE /icircumflex 16#EF /idieresis 16#F0 /bullet
16#F1 /ntilde 16#F2 /ograve 16#F3 /oacute 16#F4 /ocircumflex 16#F5 /otilde
16#F6 /odieresis 16#F7 /divide 16#F8 /oslash 16#F9 /ugrave 16#FA /uacute
16#FB /ucircumflex 16#FC /udieresis 16#FD /y 16#FE /p 16#FF /ydieresis
] def

/Times-Roman /FontNormal0 ANSIFont
/Times-Bold /FontNormal1 ANSIFont
/Times-Italic /FontNormal2 ANSIFont
/FontNormal [ /FontNormal0 /FontNormal1 /FontNormal2 ] def

/Courier /FontTty0 ANSIFont
/Courier-Bold /FontTty1 ANSIFont
/Courier-Oblique /FontTty2 ANSIFont
/FontTty [ /FontTty0 /FontTty1 /FontTty2 ] def

% misc. routines :
/fdef {bind def} bind def
/xdef {exch def} fdef

/inch {72 mul} fdef
/cm {2.54 div 72 mul} fdef
/fontsize 0 def /parbaselineskip 0 def
/fs {fontsize mul} fdef
/bs {parbaselineskip mul} fdef
/ws {fontcheck stringwidth pop} fdef

/currentx {currentpoint pop} fdef
/currenty {currentpoint exch pop} fdef
/isseparator {32 le} fdef

/cshow {dup stringwidth pop 2 div neg 0 rmoveto show} bind def
/rshow {dup stringwidth pop neg 0 rmoveto gsave show grestore} bind def

/cvsbuffer 10 string def

% page dimensions :
/pageleft 0 cm def
/pageright 21 cm def
/pagetop 29.7 cm def
/pagebottom 0 cm def

% text area :
/textleft pageleft 3.5 cm add def
/textright pageright 2.5 cm sub def
/texttop pagetop 3.5 cm sub def
/textbottom pagebottom 3.5 cm add def

/indentleft {textleft add /textleft xdef} fdef
/indentright {textright add /textright xdef} fdef

% paragraph default style :
/styledefault {
	/fontfamily FontNormal def
	/fontsize 10 def
	/fontstyle 0 def
	/parleft textleft def
	/parright textright def
	/partop texttop def
	/parbottom textbottom def
	/parindent 0.8 cm def
	/parbaselineskip 1.2 fs def
	/partabwidth 0.35 cm def
	/parskipbefore 0 cm def
	/parskipafter 0 cm def
	/partoptobaselineoffset 0.7 def
	/parminroom 3 bs def
	/parprocesscr false def
	/tocseparator /tocsepdots def
} fdef
styledefault

% font managing :
/fontfamily0 null def
/fontsize0 null def
/fontstyle0 null def

/fontcheck {
	fontfamily0 fontfamily ne
	fontsize0 fontsize ne or
	fontstyle0 fontstyle ne or {
		/fontfamily0 fontfamily def
		/fontsize0 fontsize def
		/fontstyle0 fontstyle def
		fontfamily fontstyle get findfont fontsize scalefont setfont
	} if
} fdef

%page decoration :
/initialpagenumber <p1> 1 sub def
/pagenumber initialpagenumber def
/pagedecorationtop pagetop 1 cm sub def
/pagedecorationbottom pagebottom 1 cm add def
/pagedecorationleft pageleft 2.5 cm add def
/pagedecorationright pageright 2.5 cm sub def
/pagedecoration {
	FontNormal 0 get findfont 10 scalefont setfont %select a font
	showpagedecorationtop {
		pagedecorationleft pagedecorationtop moveto (<t1>) show
		pagedecorationleft pagedecorationright add 2 div pagedecorationtop moveto (<t2>) cshow
		pagedecorationright pagedecorationtop moveto (<t3>) rshow
	} if
	showpagedecorationbottom {
		pagedecorationleft pagedecorationbottom moveto (<b1>) show
		pagedecorationleft pagedecorationright add 2 div pagedecorationbottom moveto (<b2>) cshow
		pagedecorationright pagedecorationbottom moveto pagenumber cvsbuffer cvs rshow -0.5 cm 0 rmoveto (<b3>) rshow
	} if
	/fontfamily0 null def fontcheck	%restore previous font
} bind def

% paragraph formating :
/hmove {currenty moveto} fdef
/hspace {0 rmoveto} fdef
/vmove {currentx exch moveto} fdef
/vspace {/$v xdef $v 0 exch neg rmoveto currenty parbottom lt {pageend pagebegin $v vspace} if} fdef

/parbegin {
	currenty parbottom sub parminroom lt {
		pageend
		pagebegin
	} if
	parleft parindent add hmove
	parskipbefore parbaselineskip partoptobaselineoffset mul add vspace
} fdef

/parend {
	parbaselineskip 1.0 partoptobaselineoffset sub mul parskipafter add vspace
} fdef

/pagebegin {
	/showpagedecorationtop true def
	/showpagedecorationbottom true def
	pagenumber initialpagenumber eq {
		/showpagedecorationtop false def
		/showpagedecorationbottom false def
	} if
	parleft partop moveto
} fdef

/pageend {
	pagedecoration
	showpage
	/pagenumber pagenumber 1 add def
} fdef

/parnl {
	/$parlastsep -1 def
	currenty parbaselineskip sub parbottom le {
		pageend
		pagebegin
		parbaselineskip partoptobaselineoffset mul vspace
	} {
		parleft hmove
		parbaselineskip vspace
	} ifelse
} fdef

/s {
	fontcheck
	/$par xdef
	/$parlastsep -1 def
	/$parn 0 def
	{
		pop pop
		/$parc $par $parn get def
		/$parn $parn 1 add def
		
		$parc isseparator {
			/$parlastsep $parn def currentpoint /$parlastsepY xdef /$parlastsepX xdef
			parprocesscr {$parc 10 eq {parnl} if} if
			$parc 9 eq {partabwidth hspace} if
		} {
			currentx parright gt
			{
				$parlastsep -1 eq {
					/$parsubstring $par $parn 1 sub 1 getinterval def
				} {
					/$parsubstring $par $parlastsep $parn $parlastsep sub getinterval def
				} ifelse
				gsave 1 setgray $parlastsepX hmove $parsubstring show grestore
				parnl 
				$parsubstring show
			} if
		} ifelse
		$parlastsep -1 eq {currentpoint /$parlastsepY xdef /$parlastsepX xdef} if
	} $par kshow
} fdef

/line {gsave parleft currenty moveto parright currenty lineto stroke grestore} fdef

% epsf inclusion :
/epsfbegin {
	/$boxy2 xdef /$boxx2 xdef
	/$boxy1 xdef /$boxx1 xdef
	/$epscaption xdef
	currenty parbottom sub $boxy2 $boxy1 sub 2 cm add lt {
		pageend
		pagebegin
	} if
	1 cm vspace
	parleft parright add 2 div currenty
	/$epssave save def
	translate
	0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit [] 0 setdash newpath
	/showpage {} def
	$boxx1 $boxx2 add 2 div neg $boxy2 neg translate
	mark
} fdef

/epsfend {
	cleartomark
	$epssave restore
	0 $boxy1 $boxy2 sub rmoveto
	0.5 cm vspace
	stylenormal /fontstyle 2 def
	parbegin
		fontcheck
		parleft parright add $epscaption stringwidth pop sub 2 div hmove
		$epscaption s
	parend
	1 cm vspace
} fdef

%table of contents :
/tocnmax 1000 def %to be increased if t. of c. too big
/tocn 0 def
/tocnames tocnmax array def
/tocpages tocnmax array def
/tocstyles tocnmax array def
/toc {
	/tocsty xdef /tocnam xdef
	tocnames tocn tocnam put
	tocpages tocn pagenumber put
	tocstyles tocn tocsty put
	/tocn tocn 1 add def
	tocnam
} def

/tocsepcomma {(, ) s} fdef
/dotdx 0.2 cm def
/tocsepdots {
	currentx dotdx div ceiling 1 add dotdx mul
	dotdx
	18 cm dotdx div floor dotdx mul
	{hmove (.) s} for
	dotdx hspace
} fdef


% styles :
/stylenormal {styledefault /parskipbefore 0.5 bs def /parskipafter 0.5 bs def} fdef
/styleverb {stylenormal /parindent 0 def} fdef
/styletitle {styledefault /fontstyle 1 def /parindent 0 cm def} fdef
/styletitle0 {styletitle /fontsize 18 def /parbaselineskip 1.2 fs def /parskipbefore 5 fs def /parskipafter 5 fs def /parminroom partop parbottom sub 1 sub def /parprocesscr true def} fdef
/styletitle1 {styletitle /fontsize 18 def /parbaselineskip 1.2 fs def /parskipbefore 2 fs def /parskipafter 1 fs def /parminroom partop parbottom sub 1 sub def /parprocesscr true def} fdef
/styletitle2 {styletitle /fontsize 12 def /parbaselineskip 1.2 fs def /parskipbefore 1.5 fs def /parskipafter 0.5 fs def /parminroom 7 fs def} fdef
/styletitle3 {styletitle /fontsize 10 def /parbaselineskip 1.2 fs def /parskipbefore 1 fs def /parskipafter 0.5 fs def /parminroom 6 fs def} fdef
/styletitle4 {styletitle /fontsize 10 def /parbaselineskip 1.2 fs def /parskipbefore 1 fs def /parskipafter 0.5 fs def /parminroom 5 fs def} fdef
/styletitle5 {styletitle /fontsize 10 def /parbaselineskip 1.2 fs def /parskipbefore 1 fs def /parskipafter 0.5 fs def /parminroom 5 fs def} fdef
/styletitle6 {styletitle /fontsize 10 def /parbaselineskip 1.2 fs def /parskipbefore 1 fs def /parskipafter 0.5 fs def /parminroom 5 fs def} fdef
/styletitle7 {styletitle /fontsize 10 def /parbaselineskip 1.2 fs def /parskipbefore 1 fs def /parskipafter 0.5 fs def /parminroom 5 fs def} fdef
/styletoc {styledefault /parindent 0 cm def /parskipbefore 0 def /parskipafter 0 def /tocseparator /tocsepdots def} fdef


% begin of document :
pagebegin

3 cm vspace
<#encoding 2>
styletitle2 /parindent 0 def parbegin (<f1>) s parend
styletitle3 /parindent 0 def parbegin (<f2>) s parend
styletitle3 /parindent 0 def /fontstyle 0 def parbegin (<f3>) s parend
<#encoding 1>
/ind 0.7 cm def
