home *** CD-ROM | disk | FTP | other *** search
- ## Lout output
- # Copyright (C) 1993-1995 Ian Jackson.
-
- # This file 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.
-
- # It 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 GNU Emacs; see the file COPYING. If not, write to
- # the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- # Boston, MA 02111-1307, USA.
-
- # (Note: I do not consider works produced using these BFNN processing
- # tools to be derivative works of the tools, so they are NOT covered
- # by the GPL. However, I would appreciate it if you credited me if
- # appropriate in any documents you format using BFNN.)
-
- sub lout_init {
- open(LOUT,">$prefix.lout");
- chop($dprint= `date '+%d %B %Y'`);
- $dprint =~ s/^0//;
- }
-
- sub lout_startup {
- local ($lbs) = &lout_sanitise($user_brieftitle);
- print LOUT <<END;
- \@SysInclude{ fontdefs }
- \@SysInclude{ langdefs }
- \@SysInclude{ dl }
- \@SysInclude{ docf }
- \@Use { \@DocumentLayout
- \@OddTop { \@Null }
- \@EvenTop { \@Null }
- \@StartOddTop { \@Null }
- \@StartEvenTop { \@Null }
- \@OddFoot { { $lbs } \@Centre{ - \@PageNum - } \@Right{ $dprint } }
- \@EvenFoot { { $lbs } \@Centre{ - \@PageNum - } \@Right{ $dprint } }
- \@StartOddFoot { { $lbs } \@Centre{ - \@PageNum - } \@Right{ $dprint } }
- \@StartEvenFoot { { $lbs } \@Centre{ - \@PageNum - } \@Right{ $dprint } }
- \@ParaGap { 1.70vx }
- \@InitialBreak { 1.0fx ragged hyphen }
- }
- \@Use { \@OrdinaryLayout }
- END
- $lout_textstatus= 'p';
- }
-
- sub lout_pageref {
- print LOUT "Q$_[1] (page {\@PageOf{$_[0]}}) ";
- &lout_text("\`");
- }
-
- sub lout_endpageref {
- &lout_text("'");
- }
-
- sub lout_finish {
- print LOUT "\@End \@Text\n";
- close(L);
- }
-
- sub lout_startmajorheading {
- $lout_styles .= 'h';
- print LOUT <<END
- \@CNP
- {
- newpath 0 ysize 0.3 ft sub moveto
- xsize 0 rlineto
- 0 0.2 ft rlineto
- xsize neg 0 rlineto
- closepath fill
- } \@Graphic { //1.6f \@HAdjust \@Heading{
- END
- ;
- $endh= "}\n{\@PageMark s_$_[0]}\n/1.0fo\n";
- &lout_text($_[0] ? "Section $_[0]. " : '');
- }
-
- sub lout_startminorheading {
- $lout_styles .= 'h';
- print LOUT "//0.2f \@CNP {\@PageMark $_[0]} \@Heading{\n";
- $endh= '';
- }
-
- sub lout_endheading {
- $lout_styles =~ s/.$//; print LOUT "}\n$endh";
- $lout_status= 'p';
- }
-
- sub lout_endmajorheading { &lout_endheading(@_); }
- sub lout_endminorheading { &lout_endheading(@_); }
-
- sub lout_courier {
- $lout_styles .= 'f';
- print LOUT "{{0.7 1.0} \@Scale {Courier Bold} \@Font {";
- }
-
- sub lout_endcourier {
- $lout_styles =~ s/.$//; print LOUT "}}";
- }
-
- sub lout_italic { $lout_styles .= 'f'; print LOUT "{Slope \@Font {"; }
- sub lout_enditalic { $lout_styles =~ s/.$//; print LOUT "}}"; }
-
- sub lout_startindent { $lout_styles .= 'i'; print LOUT "\@IndentedDisplay {\n"; }
-
- sub lout_endindent {
- &lout_endpara;
- $lout_styles =~ s/.$//; print LOUT "}\n\@LP\n";
- }
-
- sub lout_startpackedlist { $lout_plc=-1; }
- sub lout_endpackedlist { &lout_newline if !$lout_plc; }
- sub lout_packeditem {
- &lout_newline if !$lout_plc;
- &lout_tab(($lout_plc>0)*40+5);
- $lout_plc= !$lout_plc;
- }
-
- sub lout_startlist {
- &lout_endpara;
- print LOUT "\@RawIndentedList style {\@Bullet} indent {0.5i} gap {1.1vx}\n";
- $lout_styles .= 'l';
- $lout_status= '';
- }
-
- sub lout_endlist {
- &lout_endpara;
- print LOUT "\@EndList\n\n";
- $lout_styles =~ s/.$//;
- }
-
- sub lout_item {
- &lout_endpara;
- print LOUT "\@ListItem{";
- $lout_styles.= 'I';
- }
-
- sub lout_startindex {
- print LOUT "//0.0fe\n";
- }
-
- sub lout_endindex {
- $lout_status='p';
- }
-
- sub lout_startindexmainitem {
- $lout_marker= $_[0];
- $lout_status= '';
- print LOUT "//0.3vx Bold \@Font \@HAdjust { \@HContract { { $_[1] } |3cx {";
- $lout_iiendheight= '1.00';
- $lout_styles .= 'X';
- }
-
- sub lout_startindexitem {
- $lout_marker= $_[0];
- print LOUT "\@HAdjust { \@HContract { { $_[1] } |3cx {";
- $lout_iiendheight= '0.95';
- $lout_styles .= 'X';
- }
-
- sub lout_endindexitem {
- print LOUT "} } |0c \@PageOf { $lout_marker } } //${lout_iiendheight}vx\n";
- $lout_styles =~ s/.$//;
- }
-
- sub lout_email { &lout_courier; &lout_text('<'); }
- sub lout_endemail { &lout_text('>'); &lout_endcourier; }
-
- sub lout_ftpon { &lout_courier; } sub lout_endftpon { &lout_endcourier; }
- sub lout_ftpin { &lout_courier; } sub lout_endftpin { &lout_endcourier; }
- sub lout_docref { } sub lout_enddocref { }
- sub lout_ftpsilent { $lout_ignore++; }
- sub lout_endftpsilent { $lout_ignore--; }
-
- sub lout_newsgroup { &lout_courier; }
- sub lout_endnewsgroup { &lout_endcourier; }
-
- sub lout_text {
- return if $lout_ignore;
- $lout_status= 'p';
- $_= &lout_sanitise($_[0]);
- s/ $/\n/ unless $lout_styles =~ m/[fhX]/;
- print LOUT $_;
- }
-
- sub lout_tab {
- local ($size) = $_[0]*0.5;
- print LOUT " |${size}ft ";
- }
-
- sub lout_newline {
- print LOUT " //1.0vx\n";
- }
-
- sub lout_sanitise {
- local ($in) = @_;
- local ($out);
- $in= ' '.$in.' ';
- $out='';
- while ($in =~ m/(\s)(\S*[\@\/|\\\"\^\&\{\}\#]\S*)(\s)/) {
- $out .= $`.$1;
- $in = $3.$';
- $_= $2;
- s/[\\\"]/\\$&/g;
- $out .= '"'.$_.'"';
- }
- $out .= $in;
- $out =~ s/^ //; $out =~ s/ $//;
- $out;
- }
-
- sub lout_endpara {
- return if $lout_status eq '';
- if ($lout_styles eq '') {
- print LOUT "\@LP\n\n";
- } elsif ($lout_styles =~ s/I$//) {
- print LOUT "}\n";
- }
- $lout_status= '';
- }
-
- sub lout_startverbatim {
- print LOUT "//0.4f\n\@RawIndentedDisplay lines \@Break".
- " { {0.7 1.0} \@Scale {Courier Bold} \@Font {\n";
- }
-
- sub lout_verbatim {
- $_= $_[0];
- s/^\s*//;
- print LOUT &lout_sanitise($_),"\n";
- }
-
- sub lout_endverbatim { print LOUT "}\n}\n//0.4f\n"; }
-
- 1;
-