cannam@95: ## Lout output cannam@95: # Copyright (C) 1993-1995 Ian Jackson. cannam@95: cannam@95: # This file is free software; you can redistribute it and/or modify cannam@95: # it under the terms of the GNU General Public License as published by cannam@95: # the Free Software Foundation; either version 2, or (at your option) cannam@95: # any later version. cannam@95: cannam@95: # It is distributed in the hope that it will be useful, cannam@95: # but WITHOUT ANY WARRANTY; without even the implied warranty of cannam@95: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the cannam@95: # GNU General Public License for more details. cannam@95: cannam@95: # You should have received a copy of the GNU General Public License cannam@95: # along with GNU Emacs; see the file COPYING. If not, write to cannam@95: # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, cannam@95: # Boston, MA 02111-1307, USA. cannam@95: cannam@95: # (Note: I do not consider works produced using these BFNN processing cannam@95: # tools to be derivative works of the tools, so they are NOT covered cannam@95: # by the GPL. However, I would appreciate it if you credited me if cannam@95: # appropriate in any documents you format using BFNN.) cannam@95: cannam@95: sub lout_init { cannam@95: open(LOUT,">$prefix.lout"); cannam@95: chop($dprint= `date '+%d %B %Y'`); cannam@95: $dprint =~ s/^0//; cannam@95: } cannam@95: cannam@95: sub lout_startup { cannam@95: local ($lbs) = &lout_sanitise($user_brieftitle); cannam@95: print LOUT <0)*40+5); cannam@95: $lout_plc= !$lout_plc; cannam@95: } cannam@95: cannam@95: sub lout_startlist { cannam@95: &lout_endpara; cannam@95: print LOUT "\@RawIndentedList style {\@Bullet} indent {0.5i} gap {1.1vx}\n"; cannam@95: $lout_styles .= 'l'; cannam@95: $lout_status= ''; cannam@95: } cannam@95: cannam@95: sub lout_endlist { cannam@95: &lout_endpara; cannam@95: print LOUT "\@EndList\n\n"; cannam@95: $lout_styles =~ s/.$//; cannam@95: } cannam@95: cannam@95: sub lout_item { cannam@95: &lout_endpara; cannam@95: print LOUT "\@ListItem{"; cannam@95: $lout_styles.= 'I'; cannam@95: } cannam@95: cannam@95: sub lout_startindex { cannam@95: print LOUT "//0.0fe\n"; cannam@95: } cannam@95: cannam@95: sub lout_endindex { cannam@95: $lout_status='p'; cannam@95: } cannam@95: cannam@95: sub lout_startindexmainitem { cannam@95: $lout_marker= $_[0]; cannam@95: $lout_status= ''; cannam@95: print LOUT "//0.3vx Bold \@Font \@HAdjust { \@HContract { { $_[1] } |3cx {"; cannam@95: $lout_iiendheight= '1.00'; cannam@95: $lout_styles .= 'X'; cannam@95: } cannam@95: cannam@95: sub lout_startindexitem { cannam@95: $lout_marker= $_[0]; cannam@95: print LOUT "\@HAdjust { \@HContract { { $_[1] } |3cx {"; cannam@95: $lout_iiendheight= '0.95'; cannam@95: $lout_styles .= 'X'; cannam@95: } cannam@95: cannam@95: sub lout_endindexitem { cannam@95: print LOUT "} } |0c \@PageOf { $lout_marker } } //${lout_iiendheight}vx\n"; cannam@95: $lout_styles =~ s/.$//; cannam@95: } cannam@95: cannam@95: sub lout_email { &lout_courier; &lout_text('<'); } cannam@95: sub lout_endemail { &lout_text('>'); &lout_endcourier; } cannam@95: cannam@95: sub lout_ftpon { &lout_courier; } sub lout_endftpon { &lout_endcourier; } cannam@95: sub lout_ftpin { &lout_courier; } sub lout_endftpin { &lout_endcourier; } cannam@95: sub lout_docref { } sub lout_enddocref { } cannam@95: sub lout_ftpsilent { $lout_ignore++; } cannam@95: sub lout_endftpsilent { $lout_ignore--; } cannam@95: cannam@95: sub lout_newsgroup { &lout_courier; } cannam@95: sub lout_endnewsgroup { &lout_endcourier; } cannam@95: cannam@95: sub lout_text { cannam@95: return if $lout_ignore; cannam@95: $lout_status= 'p'; cannam@95: $_= &lout_sanitise($_[0]); cannam@95: s/ $/\n/ unless $lout_styles =~ m/[fhX]/; cannam@95: print LOUT $_; cannam@95: } cannam@95: cannam@95: sub lout_tab { cannam@95: local ($size) = $_[0]*0.5; cannam@95: print LOUT " |${size}ft "; cannam@95: } cannam@95: cannam@95: sub lout_newline { cannam@95: print LOUT " //1.0vx\n"; cannam@95: } cannam@95: cannam@95: sub lout_sanitise { cannam@95: local ($in) = @_; cannam@95: local ($out); cannam@95: $in= ' '.$in.' '; cannam@95: $out=''; cannam@95: while ($in =~ m/(\s)(\S*[\@\/|\\\"\^\&\{\}\#]\S*)(\s)/) { cannam@95: $out .= $`.$1; cannam@95: $in = $3.$'; cannam@95: $_= $2; cannam@95: s/[\\\"]/\\$&/g; cannam@95: $out .= '"'.$_.'"'; cannam@95: } cannam@95: $out .= $in; cannam@95: $out =~ s/^ //; $out =~ s/ $//; cannam@95: $out; cannam@95: } cannam@95: cannam@95: sub lout_endpara { cannam@95: return if $lout_status eq ''; cannam@95: if ($lout_styles eq '') { cannam@95: print LOUT "\@LP\n\n"; cannam@95: } elsif ($lout_styles =~ s/I$//) { cannam@95: print LOUT "}\n"; cannam@95: } cannam@95: $lout_status= ''; cannam@95: } cannam@95: cannam@95: sub lout_startverbatim { cannam@95: print LOUT "//0.4f\n\@RawIndentedDisplay lines \@Break". cannam@95: " { {0.7 1.0} \@Scale {Courier Bold} \@Font {\n"; cannam@95: } cannam@95: cannam@95: sub lout_verbatim { cannam@95: $_= $_[0]; cannam@95: s/^\s*//; cannam@95: print LOUT &lout_sanitise($_),"\n"; cannam@95: } cannam@95: cannam@95: sub lout_endverbatim { print LOUT "}\n}\n//0.4f\n"; } cannam@95: cannam@95: 1;