PROCEDURE startlatex( var outfile : text; outputfont : integer ; outputstyle: pckstr );
const
minfont = 10;
maxfont = 12;
var
pt : integer;
begin
pt := outputfont;
if (pt < minfont) or (pt > maxfont) then
pt := minfont;
writeln(outfile,'%');
if pt = 10 then
writeln(outfile,'\documentstyle{',outputstyle,'}')
else
writeln(outfile,'\documentstyle[',pt:2,'pt]{',outputstyle,'}');
writeln(outfile,'%');
writeln(outfile,'% (put preamble statements here) ');
writeln(outfile,'%');
writeln(outfile,'\begin{document}');
writeln(outfile,'%')
end;
[GLOBAL] PROCEDURE closeanyopenbrackets( var outfile : text );
var
i : integer;
begin
if not fill then
writeln(outfile,'} % - end of obeylines and obeyspaces group');
if centering then
writeln(outfile,'\end{centering}');
if flushright then
writeln(outfile,'\end{flushright}');
if minipageactive then
writeln(outfile,'\end{minipage}');
if inmarginpar then
writeln(outfile,'} % - end of margin par ');
if infootnote then
writeln(outfile,'} % - end of footnote');
if inliteral then
writeln(outfile,'\end{verbatim}');
for i := 1 to listnestlevel do
writeln(outfile,'\end{itemize} % - RNOTOTEX forced list close');
stopunderline( outfile );
stopbold( outfile )
end;
[GLOBAL] PROCEDURE endlatex( var outfile : text );
begin
closeanyopenbrackets( outfile );
writeln(outfile,'%');
writeln(outfile,'% (put postamble statements here) ');
writeln(outfile,'%');
writeln(outfile,'\end{document}')
end;
[GLOBAL] PROCEDURE adjustpagestyle( var f : text; newstyle : pagestyletype);
begin
pagestyle := newstyle;
case pagestyle of
empty : writeln(f,'\pagestyle{empty}');
plain : writeln(f,'\pagestyle{plain}');
headings : writeln(f,'\pagestyle{headings}');
myheadings : begin
writeln(f,'\pagestyle{myheadings}');
write(f,'\markright{');
writeargarray(f, title);
writeargarray(f, subtitle);
write(f, datestring );
writeln(f,'}')
end
end;
case pagestyle of
empty : writeln(log,'\pagestyle{empty}');
plain : writeln(log,'\pagestyle{plain}');
headings : writeln(log,'\pagestyle{headings}');
myheadings : begin
writeln(log,'\pagestyle{myheadings}');
write(log,'\markright{');
writeargarray(log, title);
writeargarray(log, subtitle);
write(log, datestring );
writeln(log,'}')
end
end
end;
[GLOBAL] PROCEDURE writecharwidth( var f : text; nchars : integer);
const
widthofcharincm = 0.254; { 10 chars per inch, 2.54 cm per inch }
maxwidth = 20.0;
minwidth = -20.0;
var
cm : real;
begin
cm := nchars * widthofcharincm;
if cm > maxwidth then
begin
writeln(log,'[too many chars to skip, ',nchars,' = ',cm:10:2,'cm]');
cm := 1.0
end;
if cm < minwidth then
begin
writeln(log,'[too many chars to skip ',nchars,' = ',cm:10:2,'cm]');
cm := -1.0
end;
write(f, cm:6:2, 'cm ');
write(log, cm:6:2,'cm ')
end;
[GLOBAL] PROCEDURE writecharheight( var f : text; nlines : integer );
const
heightoftextincm = 0.425; { 6 lines per inch, 2.54 cm per inch }
maxheight = 25.0;
minheight = -25.0;
var
cm : real;
begin
cm := nlines * heightoftextincm;
if cm > maxheight then
begin
writeln(log,'[too many lines to skip, ',nlines,' = ',cm:10:2,'cm]');
cm := 1.0
end;
if cm < minheight then
begin
writeln(log,'[too many lines to skip ',nlines,' = ',cm:10:2,'cm]');
cm := -1.0
end;
write(f, cm:6:2,'cm ');
write(log, cm:6:2,'cm ')
end;
[GLOBAL] PROCEDURE adjustlength( var outfile : text; modified : parameterchangestates;
lengthvalue : integer; adjustmentvalue : integer; charwidth : boolean;
latexname : pckstr );
begin
case modified of
nochange : nullstatement;
altered : begin
write(outfile,'\addtolength{',latexname,'}{');
if charwidth then
writecharwidth(outfile, adjustmentvalue)
else
writecharheight(outfile, adjustmentvalue);
writeln(outfile,'}')
end;
assigned : begin
write(outfile,'\setlength{',latexname,'}{');
if charwidth then
writecharwidth(outfile, lengthvalue)
else
writecharheight(outfile, lengthvalue);
writeln(outfile,'}')
end
end;
case modified of
nochange : noconversion;
altered : begin
write(log,'\addtolength{',latexname,'}{');
if charwidth then
writecharwidth(log, adjustmentvalue)
else
writecharheight(log, adjustmentvalue);
writeln(log,'}')
end;
assigned : begin
write(log,'\setlength{',latexname,'}{');
if charwidth then
writecharwidth(log, lengthvalue)
else
writecharheight(log, lengthvalue);
writeln(log,'}')
end
end
end;
[GLOBAL] PROCEDURE adjustcounter( var outfile : text; modified : parameterchangestates;
countervalue : integer; adjustmentvalue : integer; latexname : pckstr );
begin
case modified of
nochange : nullstatement;
altered : writeln(outfile,'\addtocounter{',latexname,'}{',adjustmentvalue,'}');
assigned : writeln(outfile,'\setcounter{',latexname,'}{',countervalue,'}')
end;
case modified of
nochange : noconversion;
altered : writeln(log,'\addtocounter{',latexname,'}{',adjustmentvalue,'}');
assigned : writeln(log,'\setcounter{',latexname,'}{',countervalue,'}')
end
end;
[GLOBAL] PROCEDURE adjuststyle(var outfile : text; s : styletype;
latexname : pckstr );
begin
case s of
undetermined : nullstatement;
decimal : writeln(outfile,'\renewcommand{\the',latexname,'}{\arabic{',latexname,'}}');
octal : writeln(outfile,'\renewcommand{\the',latexname,'}{\arabic{',latexname,'}}');
hexidecimal : writeln(outfile,'\renewcommand{\the',latexname,'}{\arabic{',latexname,'}}');
romanupper : writeln(outfile,'\renewcommand{\the',latexname,'}{\Roman{',latexname,'}}');
romanlower : writeln(outfile,'\renewcommand{\the',latexname,'}{\roman{',latexname,'}}');
romanmixed : writeln(outfile,'\renewcommand{\the',latexname,'}{\roman{',latexname,'}}');
letterupper : writeln(outfile,'\renewcommand{\the',latexname,'}{\Alpha{',latexname,'}}');
letterlower : writeln(outfile,'\renewcommand{\the',latexname,'}{\alpha{',latexname,'}}');
lettermixed : writeln(outfile,'\renewcommand{\the',latexname,'}{\alpha{',latexname,'}}');
nostyle : nullstatement
end;
case s of
undetermined : noconversion;
decimal : writeln(log,'\renewcommand{\the',latexname,'}{\arabic{',latexname,'}}');
octal : writeln(log,'\renewcommand{\the',latexname,'}{\arabic{',latexname,'}}');
hexidecimal : writeln(log,'\renewcommand{\the',latexname,'}{\arabic{',latexname,'}}');
romanupper : writeln(log,'\renewcommand{\the',latexname,'}{\Roman{',latexname,'}}');
romanlower : writeln(log,'\renewcommand{\the',latexname,'}{\roman{',latexname,'}}');
romanmixed : writeln(log,'\renewcommand{\the',latexname,'}{\roman{',latexname,'}}');
letterupper : writeln(log,'\renewcommand{\the',latexname,'}{\Alpha{',latexname,'}}');
letterlower : writeln(log,'\renewcommand{\the',latexname,'}{\alpha{',latexname,'}}');
lettermixed : writeln(log,'\renewcommand{\the',latexname,'}{\alpha{',latexname,'}}');
nostyle : noconversion
end
end;