use strict; set_from_init_file('SHOW_MENU', 0); my $NO_BULLET_LIST_CLASS = 'no-bullet'; sub use_section_sub_toc_convert_heading_command($$$$$) { my $self = shift; my $cmdname = shift; my $command = shift; my $args = shift; my $content = shift; my $result = ''; # not clear that it may really happen if ($self->in_string) { $result .= $self->command_string($command) ."\n" if ($cmdname ne 'node'); $result .= $content if (defined($content)); return $result; } my $element_id = $self->command_id($command); $result .= "\n" if (defined($element_id) and $element_id ne ''); print STDERR "Process $command " .Texinfo::Structuring::_print_root_command_texi($command)."\n" if ($self->get_conf('DEBUG')); my $element; if ($Texinfo::Common::root_commands{$command->{'cmdname'}} and $command->{'parent'} and $command->{'parent'}->{'type'} and $command->{'parent'}->{'type'} eq 'element') { $element = $command->{'parent'}; } if ($element) { $result .= &{$self->{'format_element_header'}}($self, $cmdname, $command, $element); } my $heading_level; # FIXME this is done as in texi2html: node is used as heading if there # is nothing else. Is it right? if ($cmdname eq 'node') { if (!$element or (!$element->{'extra'}->{'section'} and $element->{'extra'}->{'node'} and $element->{'extra'}->{'node'} eq $command # bogus node may not have been normalized and defined($command->{'extra'}->{'normalized'}))) { if ($command->{'extra'}->{'normalized'} eq 'Top') { $heading_level = 0; } else { $heading_level = 3; } } } else { $heading_level = $command->{'level'}; } my $heading = $self->command_text($command); # $heading not defined may happen if the command is a @node, for example # if there is an error in the node. if (defined($heading) and $heading ne '' and defined($heading_level)) { if ($self->get_conf('TOC_LINKS') and $Texinfo::Common::root_commands{$cmdname} and $Texinfo::Common::sectioning_commands{$cmdname}) { my $content_href = $self->command_contents_href($command, 'contents', $self->{'current_filename'}); if ($content_href) { $heading = "$heading"; } } if ($self->in_preformatted()) { $result .= ''.$heading.''."\n"; } else { # if the level was changed, set the command name right if ($cmdname ne 'node' and $heading_level ne $Texinfo::Common::command_structuring_level{$cmdname}) { $cmdname = $Texinfo::Common::level_to_structuring_command{$cmdname}->[$heading_level]; } $result .= &{$self->{'format_heading_text'}}($self, $cmdname, $heading, $heading_level, $command); } } if ($command->{'section_childs'} and @{$command->{'section_childs'}}) { # and $cmdname ne 'top') { $result .= $self->_attribute_class('ul', $NO_BULLET_LIST_CLASS).">\n"; foreach my $section_child (@{$command->{'section_childs'}}) { my $content_href = $self->command_href($section_child); my $heading = $self->command_text($section_child); if ($content_href) { $result .= "
  • "."$heading" . "
  • \n"; } } $result .= "\n"; } $result .= $content if (defined($content)); return $result; } foreach my $command (keys(%Texinfo::Common::sectioning_commands), 'node') { texinfo_register_command_formatting($command, \&use_section_sub_toc_convert_heading_command); } 1;