This should be enough from the SGMLtools distribution to make the
SGMLtools happy. The only symlink you need now is dist/birddoc -> dist/sgmltool. I'm convinced it could be avoided by renaming the directory instead, but I'd rather avoid it due to CVS pecularities.
This commit is contained in:
parent
1885aa8ce3
commit
1c1f1b6c0a
6 changed files with 852 additions and 0 deletions
1
doc/sbase/VERSION
Normal file
1
doc/sbase/VERSION
Normal file
|
@ -0,0 +1 @@
|
|||
1.0.9
|
159
doc/sbase/dist/fmt_html.pl
vendored
Normal file
159
doc/sbase/dist/fmt_html.pl
vendored
Normal file
|
@ -0,0 +1,159 @@
|
|||
#
|
||||
# fmt_html.pl
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# HTML-specific driver stuff
|
||||
#
|
||||
# © Copyright 1996, Cees de Groot
|
||||
#
|
||||
package SGMLTools::fmt_html;
|
||||
use strict;
|
||||
|
||||
use SGMLTools::CharEnts;
|
||||
use SGMLTools::Vars;
|
||||
|
||||
use SGMLTools::FixRef;
|
||||
my $fixref = $SGMLTools::FixRef::fixref;
|
||||
|
||||
use SGMLTools::Html2Html;
|
||||
my $html2html = $SGMLTools::Html2Html::html2html;
|
||||
|
||||
my $html = {};
|
||||
$html->{NAME} = "html";
|
||||
$html->{HELP} = "";
|
||||
$html->{OPTIONS} = [
|
||||
{ option => "split", type => "l",
|
||||
'values' => [ "0", "1", "2" ], short => "s" },
|
||||
{ option => "dosnames", type => "f", short => "h" },
|
||||
{ option => "imagebuttons", type => "f", short => "I"}
|
||||
];
|
||||
$html->{'split'} = 1;
|
||||
$html->{dosnames} = 0;
|
||||
$html->{imagebuttons} = 0;
|
||||
$html->{preNSGMLS} = sub {
|
||||
$global->{NsgmlsOpts} .= " -ifmthtml ";
|
||||
};
|
||||
|
||||
$Formats{$html->{NAME}} = $html;
|
||||
|
||||
# HTML escape sub. this is called-back by `parse_data' below in
|
||||
# `html_preASP' to properly escape `<' and `&' characters coming from
|
||||
# the SGML source.
|
||||
my %html_escapes;
|
||||
$html_escapes{'&'} = '&';
|
||||
$html_escapes{'<'} = '<';
|
||||
|
||||
my $html_escape = sub {
|
||||
my ($data) = @_;
|
||||
|
||||
# replace the char with it's HTML equivalent
|
||||
$data =~ s|([&<])|$html_escapes{$1}|ge;
|
||||
|
||||
return ($data);
|
||||
};
|
||||
|
||||
#
|
||||
# Translate character entities and escape HTML special chars.
|
||||
#
|
||||
$html->{preASP} = sub
|
||||
{
|
||||
my ($infile, $outfile) = @_;
|
||||
# note the conversion of `sdata_dirs' list to an anonymous array to
|
||||
# make a single argument
|
||||
my $char_maps = load_char_maps ('.2html', [ Text::EntityMap::sdata_dirs() ]);
|
||||
|
||||
while (<$infile>)
|
||||
{
|
||||
if (/^-/)
|
||||
{
|
||||
my ($str) = $';
|
||||
chop ($str);
|
||||
print $outfile "-" . parse_data ($str, $char_maps, $html_escape) . "\n";
|
||||
}
|
||||
elsif (/^A/)
|
||||
{
|
||||
/^A(\S+) (IMPLIED|CDATA|NOTATION|ENTITY|TOKEN)( (.*))?$/
|
||||
|| die "bad attribute data: $_\n";
|
||||
my ($name,$type,$value) = ($1,$2,$4);
|
||||
if ($type eq "CDATA")
|
||||
{
|
||||
# CDATA attributes get translated also
|
||||
$value = parse_data ($value, $char_maps, $html_escape);
|
||||
}
|
||||
print $outfile "A$name $type $value\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
print $outfile $_;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
|
||||
#
|
||||
# Take the sgmlsasp output, and make something
|
||||
# useful from it.
|
||||
#
|
||||
$html->{postASP} = sub
|
||||
{
|
||||
my $infile = shift;
|
||||
my $filename = $global->{filename};
|
||||
|
||||
#
|
||||
# Set various stuff as a result of option processing.
|
||||
#
|
||||
my $ext = "html";
|
||||
$ext = "htm" if $html->{dosnames};
|
||||
my $img = 0;
|
||||
$img = 1 if $html->{imagebuttons};
|
||||
|
||||
#
|
||||
# Bring in file
|
||||
#
|
||||
my @file = <$infile>;
|
||||
|
||||
#
|
||||
# Find references
|
||||
#
|
||||
&{$fixref->{init}}($html->{'split'});
|
||||
LINE: foreach (@file) {
|
||||
foreach my $pat (keys %{$fixref->{rules}}) {
|
||||
if (/$pat/) {
|
||||
# Call rule function then skip to next line
|
||||
&{$fixref->{rules}->{$pat}}; next LINE;
|
||||
}
|
||||
}
|
||||
&{$fixref->{defaultrule}};
|
||||
}
|
||||
&{$fixref->{finish}};
|
||||
|
||||
#
|
||||
# Run through html2html, preserving stdout
|
||||
# Also, handle prehtml.sed's tasks
|
||||
#
|
||||
open SAVEOUT, ">&STDOUT";
|
||||
open STDOUT, ">$filename.$ext" or die qq(Cannot open "$filename.$ext");
|
||||
|
||||
&{$html2html->{init}}($html->{'split'}, $ext, $img, $filename,
|
||||
$fixref->{filenum}, $fixref->{lrec});
|
||||
LINE: foreach (@file) {
|
||||
s,<P></P>,,g; # remove empty <P></P> containers
|
||||
foreach my $pat (keys %{$html2html->{rules}}) {
|
||||
if (/$pat/) {
|
||||
# Call rule function then skip to next line
|
||||
&{$html2html->{rules}->{$pat}}; next LINE;
|
||||
}
|
||||
}
|
||||
&{$html2html->{defaultrule}};
|
||||
}
|
||||
&{$html2html->{finish}};
|
||||
|
||||
close STDOUT;
|
||||
open STDOUT, ">&SAVEOUT";
|
||||
|
||||
return 0;
|
||||
};
|
||||
|
||||
1;
|
||||
|
244
doc/sbase/dist/fmt_latex2e.pl
vendored
Normal file
244
doc/sbase/dist/fmt_latex2e.pl
vendored
Normal file
|
@ -0,0 +1,244 @@
|
|||
#
|
||||
# fmt_latex2e.pl
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# LaTeX-specific driver stuff
|
||||
#
|
||||
# © Copyright 1996, Cees de Groot
|
||||
#
|
||||
package SGMLTools::fmt_latex2e;
|
||||
use strict;
|
||||
|
||||
use SGMLTools::CharEnts;
|
||||
use SGMLTools::Vars;
|
||||
use SGMLTools::Lang;
|
||||
|
||||
use File::Copy;
|
||||
|
||||
my $latex2e = {};
|
||||
$latex2e->{NAME} = "latex2e";
|
||||
$latex2e->{HELP} = <<EOF;
|
||||
Note that this output format requires LaTeX 2e.
|
||||
|
||||
EOF
|
||||
$latex2e->{OPTIONS} = [
|
||||
{ option => "output", type => "l",
|
||||
'values' => [ "dvi", "tex", "ps" ], short => "o" },
|
||||
{ option => "bibtex", type => "f", short => "b" },
|
||||
{ option => "makeindex", type => "f", short => "m" },
|
||||
{ option => "pagenumber", type => "i", short => "n" },
|
||||
{ option => "quick", type => "f", short => "q" }
|
||||
];
|
||||
$latex2e->{output} = "dvi";
|
||||
$latex2e->{pagenumber} = 1;
|
||||
$latex2e->{quick} = 0;
|
||||
$latex2e->{bibtex} = 0;
|
||||
$latex2e->{makeindex} = 0;
|
||||
$latex2e->{preNSGMLS} = sub {
|
||||
$global->{NsgmlsOpts} .= " -ifmttex ";
|
||||
};
|
||||
|
||||
$Formats{$latex2e->{NAME}} = $latex2e;
|
||||
|
||||
|
||||
# extra `\\' here for standard `nsgmls' output
|
||||
my %latex2e_escapes;
|
||||
$latex2e_escapes{'#'} = '\\\\#';
|
||||
$latex2e_escapes{'$'} = '\\\\$';
|
||||
$latex2e_escapes{'%'} = '\\\\%';
|
||||
$latex2e_escapes{'&'} = '\\\\&';
|
||||
$latex2e_escapes{'~'} = '\\\\~{}';
|
||||
$latex2e_escapes{'_'} = '\\\\_';
|
||||
$latex2e_escapes{'^'} = '\\\\^{}';
|
||||
$latex2e_escapes{'\\'} = '\\verb+\\+';
|
||||
$latex2e_escapes{'{'} = '\\\\{';
|
||||
$latex2e_escapes{'}'} = '\\\\}';
|
||||
$latex2e_escapes{'>'} = '{$>$}';
|
||||
$latex2e_escapes{'<'} = '{$<$}'; # wouldn't happen, but that's what'd be
|
||||
$latex2e_escapes{'|'} = '{$|$}';
|
||||
|
||||
my $in_verb;
|
||||
|
||||
# passed to `parse_data' below in latex2e_preASP
|
||||
my $latex2e_escape = sub {
|
||||
my ($data) = @_;
|
||||
|
||||
if (!$in_verb) {
|
||||
# escape special characters
|
||||
$data =~ s|([#\$%&~_^\\{}<>\|])|$latex2e_escapes{$1}|ge;
|
||||
}
|
||||
|
||||
return ($data);
|
||||
};
|
||||
|
||||
#
|
||||
# Translate character entities and escape LaTeX special chars.
|
||||
#
|
||||
$latex2e->{preASP} = sub
|
||||
{
|
||||
my ($infile, $outfile) = @_;
|
||||
|
||||
# note the conversion of `sdata_dirs' list to an anonymous array to
|
||||
# make a single argument
|
||||
my $tex_char_maps = load_char_maps ('.2tex', [ Text::EntityMap::sdata_dirs() ]);
|
||||
|
||||
# ASCII char maps are used in the verbatim environment because TeX
|
||||
# ignores all the escapes
|
||||
my $ascii_char_maps = load_char_maps ('.2ab', [ Text::EntityMap::sdata_dirs() ]);
|
||||
$ascii_char_maps = load_char_maps ('.2l1b', [ Text::EntityMap::sdata_dirs() ]) if $global->{charset} eq "latin";
|
||||
|
||||
my $char_maps = $tex_char_maps;
|
||||
|
||||
# used in `latex2e_escape' anonymous sub to switch between escaping
|
||||
# characters from SGML source or not, depending on whether we're in
|
||||
# a VERB or CODE environment or not
|
||||
$in_verb = 0;
|
||||
|
||||
while (<$infile>)
|
||||
{
|
||||
if (/^-/)
|
||||
{
|
||||
my ($str) = $';
|
||||
chop ($str);
|
||||
print $outfile "-" . parse_data ($str, $char_maps, $latex2e_escape) . "\n";
|
||||
}
|
||||
elsif (/^A/)
|
||||
{
|
||||
/^A(\S+) (IMPLIED|CDATA|NOTATION|ENTITY|TOKEN)( (.*))?$/
|
||||
|| die "bad attribute data: $_\n";
|
||||
my ($name,$type,$value) = ($1,$2,$4);
|
||||
if ($type eq "CDATA")
|
||||
{
|
||||
# CDATA attributes get translated also
|
||||
if ($name eq "URL" or $name eq "ID")
|
||||
{
|
||||
# URL for url.sty is a kind of verbatim...
|
||||
my $old_verb = $in_verb;
|
||||
$in_verb = 1;
|
||||
$value = parse_data ($value, $ascii_char_maps,
|
||||
$latex2e_escape);
|
||||
$in_verb = $old_verb;
|
||||
}
|
||||
else
|
||||
{
|
||||
$value = parse_data ($value, $char_maps, $latex2e_escape);
|
||||
}
|
||||
}
|
||||
print $outfile "A$name $type $value\n";
|
||||
}
|
||||
elsif (/^\((VERB|CODE)/)
|
||||
{
|
||||
print $outfile $_;
|
||||
# going into VERB/CODE section
|
||||
$in_verb = 1;
|
||||
$char_maps = $ascii_char_maps;
|
||||
}
|
||||
elsif (/^\)(VERB|CODE)/)
|
||||
{
|
||||
print $outfile $_;
|
||||
# leaving VERB/CODE section
|
||||
$in_verb = 0;
|
||||
$char_maps = $tex_char_maps;
|
||||
}
|
||||
else
|
||||
{
|
||||
print $outfile $_;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#
|
||||
# Take the sgmlsasp output, and make something
|
||||
# useful from it.
|
||||
#
|
||||
$latex2e->{postASP} = sub
|
||||
{
|
||||
my $infile = shift;
|
||||
my $filename = $global->{filename};
|
||||
$ENV{TEXINPUTS} .= ":$main::LibDir";
|
||||
|
||||
#
|
||||
# Set the correct \documentclass options. The if statement is just
|
||||
# a small optimization.
|
||||
#
|
||||
if ($global->{language} ne "en" ||
|
||||
$global->{papersize} ne "a4" ||
|
||||
$latex2e->{pagenumber} != 1 ||
|
||||
$global->{pass} ne "" ||
|
||||
$latex2e->{makeindex})
|
||||
{
|
||||
my $langlit = ISO2English ($global->{language});
|
||||
$langlit = ($langlit eq 'english') ? "" : ",$langlit";
|
||||
my $replace = $global->{papersize} . 'paper' . $langlit;
|
||||
open OUTFILE, ">$filename.tex";
|
||||
while (<$infile>)
|
||||
{
|
||||
if (/^\\documentclass/)
|
||||
{
|
||||
s/\\documentclass\[.*\]/\\documentclass\[$replace\]/;
|
||||
$_ = $_ . "\\makeindex\n" if ($latex2e->{makeindex});
|
||||
}
|
||||
if (/%end-preamble/)
|
||||
{
|
||||
if ($latex2e->{pagenumber})
|
||||
{
|
||||
$_ = $_ . '\setcounter{page}{'.
|
||||
$latex2e->{pagenumber} . "}\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$_ = $_ . "\\pagestyle{empty}\n";
|
||||
}
|
||||
$_ = $_ . $global->{pass} . "\n" if ($global->{pass});
|
||||
}
|
||||
print OUTFILE;
|
||||
}
|
||||
close OUTFILE;
|
||||
}
|
||||
else
|
||||
{
|
||||
copy ($infile, "$filename.tex");
|
||||
}
|
||||
|
||||
#
|
||||
# LaTeX, dvips, and assorted cleanups.
|
||||
#
|
||||
if ($latex2e->{output} eq "tex")
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#
|
||||
# Run LaTeX in nonstop mode so it won't prompt & hang on errors.
|
||||
# Suppress the output of LaTeX on all but the last pass, after
|
||||
# references have been resolved. This avoids large numbers of
|
||||
# spurious warnings.
|
||||
#
|
||||
my ($latexcommand) = "latex '\\nonstopmode\\input{$filename.tex}'";
|
||||
my ($suppress) = $latex2e->{quick} ? "" : ' >/dev/null';
|
||||
|
||||
system $latexcommand . $suppress || die "LaTeX problem\n";
|
||||
$latex2e->{bibtex} && system "bibtex $filename.tex";
|
||||
$latex2e->{quick} || system $latexcommand . ' >/dev/null';
|
||||
$latex2e->{quick} || system $latexcommand;
|
||||
if ($global->{debug} == 0)
|
||||
{
|
||||
my @suffixes = qw(log blg aux toc lof lot dlog bbl);
|
||||
for my $suf (@suffixes)
|
||||
{
|
||||
unlink "$filename.$suf";
|
||||
}
|
||||
}
|
||||
if ($latex2e->{output} eq "dvi")
|
||||
{
|
||||
$global->{debug} || unlink "$filename.tex";
|
||||
return 0;
|
||||
}
|
||||
`dvips -q -t $global->{papersize} -o $filename.ps $filename.dvi`;
|
||||
$global->{debug} || unlink ("$filename.dvi", "$filename.tex");
|
||||
|
||||
return 0;
|
||||
};
|
||||
|
||||
1;
|
287
doc/sbase/dist/fmt_txt.pl
vendored
Normal file
287
doc/sbase/dist/fmt_txt.pl
vendored
Normal file
|
@ -0,0 +1,287 @@
|
|||
#
|
||||
# fmt_txt.pl
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# TXT-specific driver stuff
|
||||
#
|
||||
# © Copyright 1996, Cees de Groot
|
||||
#
|
||||
package SGMLTools::fmt_txt;
|
||||
use strict;
|
||||
|
||||
use File::Copy;
|
||||
use Text::EntityMap;
|
||||
use SGMLTools::CharEnts;
|
||||
use SGMLTools::Lang;
|
||||
use SGMLTools::Vars;
|
||||
|
||||
my $txt = {};
|
||||
$txt->{NAME} = "txt";
|
||||
$txt->{HELP} = "";
|
||||
$txt->{OPTIONS} = [
|
||||
{ option => "manpage", type => "f", short => "m" },
|
||||
{ option => "filter", type => "f", short => "f" }
|
||||
];
|
||||
$txt->{manpage} = 0;
|
||||
$txt->{filter} = 0;
|
||||
|
||||
$Formats{$txt->{NAME}} = $txt;
|
||||
|
||||
#
|
||||
# Set correct NsgmlsOpts
|
||||
#
|
||||
$txt->{preNSGMLS} = sub
|
||||
{
|
||||
if ($txt->{manpage})
|
||||
{
|
||||
$global->{NsgmlsOpts} .= " -iman ";
|
||||
$global->{charset} = "man";
|
||||
}
|
||||
else
|
||||
{
|
||||
$global->{NsgmlsOpts} .= " -ifmttxt ";
|
||||
$global->{charset} = "latin1" if $global->{charset} eq "latin";
|
||||
}
|
||||
|
||||
#
|
||||
# Is there a cleaner solution than this? Can't do it earlier,
|
||||
# would show up in the help messages...
|
||||
#
|
||||
$global->{format} = $global->{charset};
|
||||
$global->{format} = "groff" if $global->{format} eq "ascii";
|
||||
$ENV{SGML_SEARCH_PATH} =~ s/txt/$global->{format}/;
|
||||
|
||||
$Formats{"groff"} = $txt;
|
||||
$Formats{"latin1"} = $txt;
|
||||
$Formats{"man"} = $txt;
|
||||
|
||||
return 0;
|
||||
};
|
||||
|
||||
|
||||
# Ascii escape sub. this is called-back by `parse_data' below in
|
||||
# `txt_preASP' to properly escape `\' characters coming from the SGML
|
||||
# source.
|
||||
my $txt_escape = sub {
|
||||
my ($data) = @_;
|
||||
|
||||
$data =~ s|"|\\\&\"|g; # Insert zero-width space in front of "
|
||||
$data =~ s|^\.|\\&.|; # ditto in front of . at start of line
|
||||
$data =~ s|\\|\\\\|g; # Escape backslashes
|
||||
|
||||
return ($data);
|
||||
};
|
||||
|
||||
#
|
||||
# Run the file through the genertoc utility before sgmlsasp. Not necessary
|
||||
# when producing a manpage. A lot of code from FJM, untested by me.
|
||||
#
|
||||
$txt->{preASP} = sub
|
||||
{
|
||||
my ($infile, $outfile) = @_;
|
||||
my (@toc, @lines);
|
||||
if ($txt->{manpage})
|
||||
{
|
||||
copy ($infile, $outfile);
|
||||
return;
|
||||
}
|
||||
|
||||
# note the conversion of `sdata_dirs' list to an anonymous array to
|
||||
# make a single argument
|
||||
my $char_maps = load_char_maps ('.2tr', [ Text::EntityMap::sdata_dirs() ]);
|
||||
$char_maps = load_char_maps ('.2l1tr', [ Text::EntityMap::sdata_dirs() ]) if $global->{charset} eq "latin1";
|
||||
|
||||
#
|
||||
# Build TOC. The file is read into @lines in the meantime, we need to
|
||||
# traverse it twice.
|
||||
#
|
||||
push (@toc, "(HLINE\n");
|
||||
push (@toc, ")HLINE\n");
|
||||
push (@toc, "(P\n");
|
||||
push (@toc, "-" . Xlat ("Table of Contents") . "\n");
|
||||
push (@toc, ")P\n");
|
||||
push (@toc, "(VERB\n");
|
||||
my (@prevheader, @header);
|
||||
while (<$infile>)
|
||||
{
|
||||
push (@lines, $_);
|
||||
|
||||
if (/^\(SECT(.*)/)
|
||||
{
|
||||
@prevheader = @header;
|
||||
@header = @header[0..$1];
|
||||
$header[$1]++;
|
||||
}
|
||||
if (/^\(HEADING/)
|
||||
{
|
||||
$_ = <$infile>;
|
||||
push (@lines, $_);
|
||||
chop;
|
||||
s/^-//;
|
||||
$_ = join(".",@header) . " " . $_;
|
||||
s/\\n/ /g;
|
||||
s/\(\\[0-9][0-9][0-9]\)/\\\1/g;
|
||||
|
||||
if (!$#header)
|
||||
{
|
||||
# put a newline before top-level sections unless previous was also
|
||||
# a top level section
|
||||
$_ = "\\n" . $_ unless (!$#prevheader);
|
||||
# put a . and a space after top level sections
|
||||
s/ /. /;
|
||||
$_ = "-" . $_ . "\\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
# subsections get indentation matching hierarchy
|
||||
$_ = "-" . " " x $#header . $_;
|
||||
}
|
||||
push(@toc, parse_data ($_, $char_maps, $txt_escape), "\\n\n");
|
||||
}
|
||||
}
|
||||
push (@toc, ")VERB\n");
|
||||
push (@toc, "(HLINE\n");
|
||||
push (@toc, ")HLINE\n");
|
||||
|
||||
my $inheading = 0;
|
||||
my $tipo = '';
|
||||
for (@lines)
|
||||
{
|
||||
if ($inheading)
|
||||
{
|
||||
next if (/^\)TT/ || /^\(TT/ || /^\)IT/ || /^\(IT/ ||
|
||||
/^\)EM/ || /^\(EM/ || /^\)BF/ || /^\(BF/);
|
||||
if (/^-/)
|
||||
{
|
||||
$tipo .= $' ;
|
||||
chop ($tipo);
|
||||
$tipo .= " " unless $tipo =~ / $/;
|
||||
}
|
||||
else
|
||||
{
|
||||
$tipo =~ s/ $//;
|
||||
if ($tipo)
|
||||
{
|
||||
print $outfile "-"
|
||||
. parse_data ($tipo, $char_maps, $txt_escape)
|
||||
. "\n";
|
||||
}
|
||||
print $outfile $_;
|
||||
$tipo = '';
|
||||
}
|
||||
if (/^\)HEADING/)
|
||||
{
|
||||
$inheading = 0;
|
||||
}
|
||||
next;
|
||||
}
|
||||
if (/^\(HEADING/)
|
||||
{
|
||||
#
|
||||
# Go into heading processing mode.
|
||||
#
|
||||
$tipo = '';
|
||||
$inheading = 1;
|
||||
}
|
||||
if (/^\(TOC/)
|
||||
{
|
||||
print $outfile @toc;
|
||||
next;
|
||||
}
|
||||
if (/^-/)
|
||||
{
|
||||
my ($str) = $';
|
||||
chop ($str);
|
||||
print $outfile "-" . parse_data ($str, $char_maps, $txt_escape) . "\n";
|
||||
next;
|
||||
}
|
||||
elsif (/^A/)
|
||||
{
|
||||
/^A(\S+) (IMPLIED|CDATA|NOTATION|ENTITY|TOKEN)( (.*))?$/
|
||||
|| die "bad attribute data: $_\n";
|
||||
my ($name,$type,$value) = ($1,$2,$4);
|
||||
if ($type eq "CDATA")
|
||||
{
|
||||
# CDATA attributes get translated also
|
||||
$value = parse_data ($value, $char_maps, $txt_escape);
|
||||
}
|
||||
print $outfile "A$name $type $value\n";
|
||||
next;
|
||||
}
|
||||
|
||||
#
|
||||
# Default action if not skipped over with next: copy in to out.
|
||||
#
|
||||
print $outfile $_;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
#
|
||||
# Take the sgmlsasp output, and make something
|
||||
# useful from it.
|
||||
#
|
||||
$txt->{postASP} = sub
|
||||
{
|
||||
my $infile = shift;
|
||||
my ($outfile, $groffout);
|
||||
|
||||
if ($txt->{manpage})
|
||||
{
|
||||
$outfile = new FileHandle ">$global->{filename}.man";
|
||||
}
|
||||
else
|
||||
{
|
||||
$outfile = new FileHandle
|
||||
"|$main::progs->{GROFF} -T $global->{pass} $global->{charset} -t $main::progs->{GROFFMACRO} >$global->{tmpbase}.txt.1";
|
||||
}
|
||||
|
||||
#
|
||||
# Feed $outfile with roff input.
|
||||
#
|
||||
while (<$infile>)
|
||||
{
|
||||
unless (/^\.DS/.../^\.DE/)
|
||||
{
|
||||
s/^[ \t]{1,}(.*)/$1/g;
|
||||
}
|
||||
s/^\.[ \t].*/\\\&$&/g;
|
||||
s/\\fC/\\fR/g;
|
||||
s/^.ft C/.ft R/g;
|
||||
print $outfile $_;
|
||||
}
|
||||
$outfile->close;
|
||||
|
||||
#
|
||||
# If we were making a manpage, we're done. Otherwise, a little bit
|
||||
# of work is left.
|
||||
#
|
||||
if ($txt->{manpage})
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
$outfile->open (">$global->{filename}.txt");
|
||||
$groffout = new FileHandle "<$global->{tmpbase}.txt.1";
|
||||
if ($txt->{filter})
|
||||
{
|
||||
while (<$groffout>)
|
||||
{
|
||||
s/.//g;
|
||||
print $outfile $_;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
copy ($groffout, $outfile);
|
||||
}
|
||||
}
|
||||
$groffout->close;
|
||||
$outfile->close;
|
||||
|
||||
return 0;
|
||||
};
|
||||
|
||||
1;
|
98
doc/sbase/dtd/common
Normal file
98
doc/sbase/dtd/common
Normal file
|
@ -0,0 +1,98 @@
|
|||
<!-- This is a DTD, but will be read as -*- sgml -*- -->
|
||||
<!-- ================================================= -->
|
||||
<!-- $Id$
|
||||
|
||||
This is COMMON ENTITY for SGML-Tools.
|
||||
|
||||
The definitions herein are used by both
|
||||
LINUXDOC97 Strict DTD and SGMLTOOL DTD.
|
||||
|
||||
Initial revision May 16, 1997, by B. Kreimeier
|
||||
|
||||
&Log:$
|
||||
|
||||
-->
|
||||
<!-- ================================================= -->
|
||||
<!-- Revision Comments -->
|
||||
|
||||
<!-- BK/97/05/16: created from linuxdoc97.dtd -->
|
||||
<!-- BK/97/07/17: Moved <descrip> to linuxdoc97.dtd. -->
|
||||
<!-- BK/97/05/18: removed quote and code back from
|
||||
"common", as I want to modify them (caption) -->
|
||||
<!-- ================================================= -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- TITLE, TITLEPAGE -->
|
||||
<!-- MDW: hacked, abstract now part of titlepag -->
|
||||
<!-- ================================================= -->
|
||||
|
||||
<!element titlepag o o (title, author, date?, abstract?)>
|
||||
<!element title - o (%inline) >
|
||||
|
||||
<!usemap oneline titlepag>
|
||||
|
||||
<!element author - o
|
||||
(name, (and, name )*)>
|
||||
|
||||
<!element name o o (%inline) >
|
||||
<!element and - o empty>
|
||||
<!element date - o (#pcdata) >
|
||||
|
||||
|
||||
<!element abstract - o (%inline)>
|
||||
<!usemap oneline abstract>
|
||||
|
||||
<!element toc - o empty>
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- SECTion - section hierarchy -->
|
||||
<!-- ================================================= -->
|
||||
|
||||
<!element header - - (lhead, rhead) >
|
||||
<!element lhead - o (%inline)>
|
||||
<!element rhead - o (%inline)>
|
||||
|
||||
<!entity % sect "heading, header?, p* " >
|
||||
|
||||
<!element heading o o (%inline)>
|
||||
<!element sect - o (%sect, sect1*)>
|
||||
<!element sect1 - o (%sect, sect2*)>
|
||||
<!element sect2 - o (%sect, sect3*)>
|
||||
<!element sect3 - o (%sect, sect4*)>
|
||||
<!element sect4 - o (%sect)>
|
||||
|
||||
<!usemap oneline (sect,sect1,sect2,sect3,sect4)>
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- LIST elements -->
|
||||
<!-- Group of all list elements, except descrip -->
|
||||
<!-- ================================================= -->
|
||||
|
||||
<!element itemize - - (item+)>
|
||||
<!element enum - - (item+)>
|
||||
<!element item o o ((%inline; | %sectpar;)*, p*) >
|
||||
|
||||
<!usemap global (itemize,enum)>
|
||||
|
||||
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- P - paragraph, smallest block of text -->
|
||||
<!-- ================================================= -->
|
||||
|
||||
<!element p o o (( %inline | %sectpar )+) >
|
||||
<!usemap pmap p>
|
||||
|
||||
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- end of COMMON ENTITY -->
|
||||
<!--
|
||||
Local Variables:
|
||||
mode: sgml
|
||||
End: -->
|
||||
<!-- ================================================= -->
|
63
doc/sbase/dtd/isoent
Normal file
63
doc/sbase/dtd/isoent
Normal file
|
@ -0,0 +1,63 @@
|
|||
<!-- This is a DTD, but will be read as -*- sgml -*- -->
|
||||
<!-- ================================================= -->
|
||||
<!-- $Id$
|
||||
|
||||
This is dtd/isoent for SGML-Tools.
|
||||
|
||||
Initial revision June 23st, 1997, by B. Kreimeier
|
||||
|
||||
$Log$
|
||||
Revision 1.1 2000-05-31 14:27:50 mj
|
||||
This should be enough from the SGMLtools distribution to make the
|
||||
SGMLtools happy.
|
||||
|
||||
The only symlink you need now is dist/birddoc -> dist/sgmltool. I'm
|
||||
convinced it could be avoided by renaming the directory instead, but I'd
|
||||
rather avoid it due to CVS pecularities.
|
||||
|
||||
Revision 1.1 1997/07/09 13:27:16 cg
|
||||
* Completely new DTD setup by Bernd (BK).
|
||||
|
||||
|
||||
-->
|
||||
<!-- ================================================= -->
|
||||
<!-- Revision Comments -->
|
||||
<!-- BK/97/06/22: installed 0.99.12, applied changes
|
||||
made for new entity mapping. -->
|
||||
<!-- ================================================= -->
|
||||
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- ISO entities -->
|
||||
<!-- ================================================= -->
|
||||
|
||||
|
||||
<!ENTITY % ISOdia PUBLIC
|
||||
"ISO 8879:1986//ENTITIES Diacritical Marks//EN">
|
||||
%ISOdia;
|
||||
|
||||
<!ENTITY % ISOgrk3 PUBLIC
|
||||
"ISO 8879:1986//ENTITIES Greek Symbols//EN">
|
||||
%ISOgrk3;
|
||||
|
||||
<!ENTITY % ISOlat1 PUBLIC
|
||||
"ISO 8879:1986//ENTITIES Added Latin 1//EN">
|
||||
%ISOlat1;
|
||||
|
||||
<!ENTITY % ISOnum PUBLIC
|
||||
"ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN">
|
||||
%ISOnum;
|
||||
|
||||
<!ENTITY % ISOpub PUBLIC
|
||||
"ISO 8879:1986//ENTITIES Publishing//EN">
|
||||
%ISOpub;
|
||||
|
||||
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- end of dtd/isoent -->
|
||||
<!--
|
||||
Local Variables:
|
||||
mode: sgml
|
||||
End: -->
|
||||
<!-- ================================================= -->
|
Loading…
Reference in a new issue