# This is based on the scriptbasic style
$DO_CONTENTS = 1;
@SECTION_BUTTONS =
(
'Back', 'Forward', ' ', 'Contents', 'Index', 'About'
);
@CHAPTER_BUTTONS =
(
'Back', 'Forward', ' ', 'Contents', 'Index', 'About'
);
@MISC_BUTTONS = ('Contents', 'Index', 'About');
@SECTION_FOOTER_BUTTONS = ('Contents', 'Index', 'About');
@NODE_FOOTER_BUTTONS = ('Back', 'Forward');
$WORDS_IN_PAGE = undef;
$SHOW_MENU = 0;
sub print_sub_toc($$);
sub print_sub_toc($$)
{
my $parent_element = shift;
my $element = shift;
my $result = &$anchor('', main::href($element, $parent_element->{'file'}), $element->{'text'}) . " <br>\n";
#print STDERR "SUB_TOC $element->{'text'}\n"; #sleep 1;
if (exists($element->{'child'}))
{
#print STDERR "SUB_TOC child $element->{'child'}->{'text'}\n";
$result .= "<ul>\n". print_sub_toc($parent_element, $element->{'child'}) ."</ul>\n";
}
if (exists($element->{'next'}))
{
#print STDERR "SUB_TOC next($element->{'text'}) $element->{'next'}->{'text'}\n";
$result .= print_sub_toc($parent_element, $element->{'next'});
}
return $result;
}
sub print_up_toc($$)
{
my $fh = shift;
my $element = shift;
my $current_element = $element;
my @elements;
while (defined($current_element->{'up'}) and ($current_element->{'up'} ne $current_element))
{
unshift (@elements, $current_element->{'up'});
$current_element = $current_element->{'up'};
}
print $fh "<ul>" . &$anchor('', $Texi2HTML::HREF{Contents}, '[' . $Texi2HTML::NAME{Contents} . ']') . " <br>\n";
foreach my $elem (@elements)
{
print $fh "<ul>" . &$anchor('', main::href($elem, $element->{'file'}), $elem->{'text'}) . " <br>\n";
}
foreach my $elem (@elements)
{
print $fh "</ul>\n";
}
print $fh "</ul>\n";
}
$print_section = \&book_print_section;
$print_Top = \&book_print_Top;
$print_Toc = \&book_print_Toc;
$element_file_name = \&book_element_file_name;
sub book_print_section($$$)
{
my $fh = shift;
my $first_in_page = shift;
my $previous_is_top = shift;
my $buttons = \@SECTION_BUTTONS;
if ($first_in_page and $SECTION_NAVIGATION)
{
print_up_toc($fh, $Texi2HTML::THIS_ELEMENT) if ($SPLIT eq 'node');
&$print_head_navigation($fh, $buttons);
}
else
{ # got to do this here, as it isn't done in print_head_navigation
main::print_lines($fh, $Texi2HTML::THIS_HEADER);
&$print_navigation($fh, $buttons) if ($SECTION_NAVIGATION);
}
my $nw = main::print_lines($fh);
if (defined $SPLIT
and (($SPLIT eq 'node') && $SECTION_NAVIGATION))
{
&$print_foot_navigation($fh);
print $fh "$SMALL_RULE\n";
&$print_navigation($fh, \@NODE_FOOTER_BUTTONS) if (!defined($WORDS_IN_PAGE) or (defined ($nw)
and $nw >= $WORDS_IN_PAGE));
}
}
sub book_print_Top($$)
{
my $fh = shift;
my $has_top_heading = shift;
my $buttons = \@MISC_BUTTONS;
&$print_head_navigation($fh, $buttons);
print $fh $Texi2HTML::TITLEPAGE;
print $fh "<h1 class=\"settitle\">$Texi2HTML::NAME{Top}</h1>\n"
unless ($has_top_heading);
main::print_lines($fh, $Texi2HTML::THIS_SECTION);
print $fh '<h2> ' . $Texi2HTML::NAME{'Contents'} . "</h2>\n" ;
main::print_lines($fh, $Texi2HTML::TOC_LINES);
}
sub book_print_Toc
{
my $fh = shift;
&$print_page_head($fh) if $SPLIT;
print $fh $Texi2HTML::TITLEPAGE;
print $fh '<h2> ' . $Texi2HTML::NAME{'Contents'} . "</h2>\n" ;
main::print_lines($fh);
&$print_misc_footer($fh, \@MISC_BUTTONS);
}
my $unumbered_nr = -1;
my $previous_nr;
my $previous_file_name;
sub book_element_file_name($$$)
{
my $element = shift;
my $is_top = shift;
my $prefix = shift;
if (defined($previous_nr) and ($element->{'doc_nr'} == $previous_nr))
{
return $previous_file_name;
}
if ($is_top)
{
$previous_file_name = "${prefix}_top.html";
}
elsif (defined($element->{'number'}) and ($element->{'number'} ne ''))
{
my $number = $element->{'number'};
$number .= '.' unless ($number =~ /\.$/);
$previous_file_name = "${prefix}_$number" . 'html';
}
else
{
$unumbered_nr++;
$previous_file_name = "${prefix}_U." . $unumbered_nr . '.html';
}
$previous_nr = $element->{'doc_nr'};
return $previous_file_name;
}
$heading = \&book_heading;
sub book_heading($)
{
my $element = shift;
my $level = 3;
if (!$element->{'node'})
{
$level = $element->{'level'};
}
$level = 1 if ($level == 0);
my $text = $element->{'text'};
if (!$element->{'node'} and (!$NUMBER_SECTIONS))
{
$text = $element->{'name'};
}
return '' if ($text !~ /\S/);
my $class = $element->{'tag_level'};
$class = 'unnumbered' if ($class eq 'top');
if (defined($element->{'tocid'}) and $TOC_LINKS)
{
$text = &$anchor ('', "$Texi2HTML::THISDOC{'toc_file'}#$element->{'tocid'}", $text);
}
$text = "<h$level class=\"$class\"> $text </h$level>\n";
if (defined($SPLIT) and ($SPLIT eq 'node')
and exists($element->{'child'})
and ($element->{'tag_level'} !~ /heading/))
{
$text .= "<ul>\n";
$text .= "" . print_sub_toc($element, $element->{'child'});
$text .= "</ul>\n";
}
return $text;
}
1;