# -*-perl-*- ###################################################################### # # File: t2h_singular.init init file for singular t2h # use strict; my $T2H_BLUE_BUTTONS = 0; # we only redefine things which ar of relevance to singular # all the others we simply "include" # Set the output file prefix, prepended to all .html, .png and .pl files. texinfo_set_from_init_file('setfilename', 'sing'); # add html and tex to expanded formats. html should be redundant. texinfo_add_to_option_list('EXPANDED_FORMATS', ['html', 'tex']); # if set, creates one html file per node texinfo_set_from_init_file('SPLIT', 'node'); # we use .htm, but not for external references, both as target and # source. my $external_extension = 'html'; texinfo_set_from_init_file('EXTERNAL_CROSSREF_EXTENSION', $external_extension); #if set cross-references use the xref node name argument texinfo_set_from_init_file('XREF_USE_NODE_NAME_ARG', 1); # if set, chatter about what we are doing texinfo_set_from_init_file('VERBOSE', 1); my $T2H_SING_base_images = '../singular_images/'; # inside texinfo_set_from_init_file('BODYTEXT','lang="en" background="'.${T2H_SING_base_images}.'Mybg.png"'); # after texinfo_set_from_init_file('AFTER_BODY_OPEN', "\n"); # before texinfo_set_from_init_file('PRE_BODY_CLOSE', "\n"); # there is a redefinition of about special element body formatting # function to replace the text at the same place as PROGRAM_NAME_IN_ABOUT. texinfo_set_from_init_file('PROGRAM_NAME_IN_ABOUT', 0); # if using tex4ht, must be in latex mode due to \textbf $Texinfo::TeX4HT::STYLE='latex'; # title is already in the manual #$print_title = \&T2H_DEFAULT_print_title; texinfo_set_from_init_file('SHOW_TITLE', 0); # footer texinfo_register_formatting_function('format_element_footer' , \&singular_format_footer); sub singular_format_footer($$$$) { my $self = shift; my $type = shift; my $element = shift; my $content = shift; my $end_page = (!$element->{'structure'}->{'unit_next'} or (defined($element->{'structure'}->{'unit_filename'}) and $element->{'structure'}->{'unit_filename'} ne $element->{'structure'}->{'unit_next'}->{'structure'}->{'unit_filename'} and $self->count_elements_in_filename('current', $element->{'structure'}->{'unit_filename'}) == 1)); if ($self->element_is_tree_unit_top($element)) { my $buttons = $self->get_conf('TOP_BUTTONS'); my $content_href = $self->from_element_direction('Contents', 'href', $element); my $about_href = $self->from_element_direction('About', 'href', $element); my $result = ''; if ($content_href or $about_href) { $result .= "
\n"; $result .= "Table of Contents\n
\n" if ($content_href); $result .= "About this document" if ($about_href); $result .= "
"; } $result .= " " if ($self->get_conf('VERTICAL_HEAD_NAVIGATION')); $result .= $self->get_conf('DEFAULT_RULE')."\n" if (defined($self->get_conf('DEFAULT_RULE'))); if ($end_page) { $result .= join('', $self->close_registered_sections_level(0)); $result .= &{$self->formatting_function('format_navigation_panel')}($self, $buttons, undef, $element); } return $result; } return &{$self->default_formatting_function('format_element_footer')}($self, $type, $element, $content); } texinfo_register_formatting_function('format_end_file' , \&singular_format_end_file); # footer of page sub singular_format_end_file($$$) { my $self = shift; my $pre_body_close = $self->get_conf('PRE_BODY_CLOSE'); my $program_homepage = $self->get_conf('PACKAGE_URL'); my $program_and_version = $self->get_conf('PACKAGE_AND_VERSION'); my $version = $self->get_value('VERSION'); my $version_date = $self->get_value('VERSION_DATE'); $version = 'NO VERSION' if (!defined($version)); $version_date = 'NO VERSION DATE' if (!defined($version_date)); my $result = '             User manual for Singular version '."$version, $version_date, generated by $program_and_version. $pre_body_close "; } sub singular_banner { my $result = ''; $result .= <Top EOT return ($result, 0); } # always use bottom navigation texinfo_set_from_init_file('WORDS_IN_PAGE', 0); texinfo_set_from_init_file('VERTICAL_HEAD_NAVIGATION', 1); my @SECTION_BUTTONS = ( \&singular_banner, 'Back', 'Forward', 'FastBack', 'FastForward', 'Up', 'Top', 'Contents', 'Index', 'About' ); texinfo_set_from_init_file ('SECTION_BUTTONS', \@SECTION_BUTTONS); my @NODE_FOOTER_BUTTONS = @SECTION_BUTTONS; texinfo_set_from_init_file ('NODE_FOOTER_BUTTONS', \@SECTION_BUTTONS); # buttons for misc stuff my @MISC_BUTTONS = (\&singular_banner, 'Top', 'Contents', 'Index', 'About'); my @TOP_BUTTONS = (\&singular_banner, 'Top', 'Contents', 'Index', 'About'); texinfo_set_from_init_file ('MISC_BUTTONS', \@MISC_BUTTONS); texinfo_set_from_init_file ('TOP_BUTTONS', \@TOP_BUTTONS); texinfo_set_from_init_file('ICONS', 1); my %ACTIVE_ICONS; my %PASSIVE_ICONS; if ($T2H_BLUE_BUTTONS) { %ACTIVE_ICONS = ( 'Top', 'blue_top.png', 'Contents', 'blue_dir.png', 'Overview', '', 'Index', 'blue_readme.png', 'Back', 'blue_prev.png', 'FastBack', 'blue_pprev.png', 'Prev', 'blue_pprev.png', 'Up', 'blue_up.png', 'Next', 'blue_nnext.png', 'Forward', 'blue_next.png', 'FastForward', 'blue_nnext.png', 'About' , 'blue_help.png', ' ', '' ); %PASSIVE_ICONS = ( 'Top', 'blue_top.png', 'Contents', 'blue_dir.png', 'Overview', '', 'Index', 'blue_readme.png', 'Back', 'blue_prev.png', 'FastBack', 'blue_pprev.png', 'Prev', 'blue_pprev.png', 'Up', 'blue_up.png', 'Next', 'blue_nnext.png', 'Forward', 'blue_next.png', 'FastForward', 'blue_nnext.png', 'About' , 'blue_help.png', ); } else { %ACTIVE_ICONS = ( 'Top', 'a_top.png', 'Contents', 'a_tableofcon.png', 'Overview', '', 'Index', 'a_index.png', 'Back', 'a_left.png', 'FastBack', 'a_leftdouble.png', 'Prev', 'a_leftdouble.png', 'Up', 'a_up.png', 'Next', 'a_rightdouble.png', 'Forward', 'a_right.png', 'FastForward', 'a_rightdouble.png', 'About' , 'a_help.png', ' ', 'a_empty.png' ); %PASSIVE_ICONS = ( 'Top', 'a_top_na.png', 'Contents', 'a_tableofcon_na.png', 'Overview', '', 'Index', 'a_index_na.png', 'Back', 'a_left_na.png', 'FastBack', 'a_leftdouble_na.png', 'Prev', 'a_leftdouble_na.png', 'Up', 'a_up_na.png', 'Next', 'a_rightdouble_na.png', 'Forward', 'a_right_na.png', 'FastForward', 'a_rightdouble_na.png', 'About' , 'a_help_na.png', ); } foreach my $hash_ref((\%ACTIVE_ICONS, \%PASSIVE_ICONS)) { foreach my $key (keys(%$hash_ref)) { next if ($hash_ref->{$key} eq ''); $hash_ref->{$key} = $T2H_SING_base_images.$hash_ref->{$key}; } } texinfo_set_from_init_file ('ACTIVE_ICONS', \%ACTIVE_ICONS); texinfo_set_from_init_file ('PASSIVE_ICONS', \%PASSIVE_ICONS); sub singular_format_special_body_about($$$) { my $self = shift; my $special_type = shift; my $element = shift; my $version = $self->get_value('VERSION'); my $version_date = $self->get_value('VERSION_DATE'); $version = 'NO VERSION' if (!defined($version)); $version_date = 'NO VERSION DATE' if (!defined($version_date)); my $program_homepage = $self->get_conf('PACKAGE_URL'); my $program_and_version = $self->get_conf('PACKAGE_AND_VERSION'); my $result = ''; $result .= < This document is the user manual for Singular version $version, $version_date.
For questions and comments about Singular, send email to singular\@mathematik.uni-kl.de.

This document was generated by $program_and_version and LaTeX2HTML and is best viewed with a 16 or 18 point screen font.

EOT $result .= &{$self->defaults_special_element_body_formatting($special_type)}( $self, $special_type, $element); return $result; } texinfo_register_formatting_special_element_body ('about', \&singular_format_special_body_about); # a whole menu texinfo_register_command_formatting('menu', \&t2h_sing_menu); sub t2h_sing_menu($$$$$) { my $self = shift; my $cmdname = shift; my $command = shift; my $args = shift; my $content = shift; if ($content =~ /\S/) { return "
\n" . $content. "
\n"; } return ''; } # We want to use EXTENSION for non node files only sub t2h_node_file_name($$$) { my $self = shift; my $element = shift; my $filename = shift; my $external_file_extension = '.' . $external_extension; my $orig_filename = $filename; my $extension = ''; $extension = '.'.$self->get_conf('EXTENSION') if (defined($self->get_conf('EXTENSION')) and $self->get_conf('EXTENSION') ne ''); if ($extension eq '') { $filename .= $external_file_extension; } else { my $quoted_extension = quotemeta($extension); $filename =~ s/${quoted_extension}$/${external_file_extension}/; } return $filename; } texinfo_register_file_id_setting_function('node_file_name', \&t2h_node_file_name); 1; # This must be the last line