# -*-perl-*- main::load_init_file('', 'noheaders.init'); $SHOW_MENU = 0; $SPLIT = 'node'; $DO_CONTENT = 1; $SPLIT_INDEX = undef; $IDX_SUMMARY = 1; $SMALL_RULE = ''; $DEFAULT_RULE = ''; $MIDDLE_RULE = ''; $BIG_RULE = ''; $DOCUMENT_DESCRIPTION = ''; $SEPARATED_FOOTNOTES = 0; $index_summary_file_entry = \&chm_index_summary_file_entry; $index_summary_file_begin = \&chm_index_summary_file_begin; $index_summary_file_end = \&chm_index_summary_file_end; $print_page_foot = \&chm_print_page_foot; my $default_toc_body = $toc_body; $toc_body = \&chm_toc_body; $finish_out = \&chm_finish_out; my $default_init_out = $init_out; $init_out = \&chm_init_out; my %chm_languages = ( 'en' => '0x409 English (United States)', 'sq' => '0x041c Albanian', # 'ar' => '0x1401 Arabic (ALGERIA)', # 'es' => '0x2c0a Spanish (ARGENTINA)', # 'en' => '0x0c09 English (AUSTRALIA)', # 'de' => '0x0c07 German (AUSTRIA)', # 'ar' => '0x3c01 Arabic (BAHRAIN)', 'be' => '0x0423 Byelorussian', # 'fr' => '0x080c French (BELGIUM)', # 'en' => '0x2809 English (BELIZE)', # 'es' => '0x400a Spanish (BOLIVIA)', # 'pt' => '0x0416 Portuguese (BRAZIL)', # 'ms' => '0x083e Malay (BRUNEI DARUSSALAM)', 'bg' => '0x0402 Bulgarian', # 'fr' => '0x0c0c French (CANADA)', # 'es' => '0x340a Spanish (CHILE)', 'zh' => '0x0804 Chinese (CHINA)', # 'es' => '0x240a Spanish (COLOMBIA)', # 'es' => '0x140a Spanish (COSTA RICA)', 'hr' => '0x041a Croatian', 'cs' => '0x0405 Czech', 'da' => '0x0406 Danish', # 'es' => '0x1c0a Spanish (DOMINICAN REPUBLIC)', # 'es' => '0x300a Spanish (ECUADOR)', # 'ar' => '0x0c01 Arabic (EGYPT)', # 'es' => '0x440a Spanish (EL SALVADOR)', 'et' => '0x0425 Estonian', 'fo' => '0x0438 Faeroese', 'fi' => '0x040b Finnish', 'fr' => '0x040c French (FRANCE)', 'de' => '0x0407 German (GERMANY)', 'el' => '0x0408 Greek', # 'es' => '0x100a Spanish (GUATEMALA)', # 'es' => '0x480a Spanish (HONDURAS)', # 'zh' => '0x0c04 Chinese (HONG KONG)', 'hu' => '0x040e Hungarian', 'is' => '0x040f Icelandic', 'hi' => '0x0439 Hindi', 'in' => '0x04', 'fa' => '0x0429 Farsi', # 'ar' => '0x0801 Arabic (IRAQ)', # 'en' => '0x1809 English (IRELAND)', 'iw' => '0x04', 'it' => '0x0410 Italian', # 'en' => '0x2009 English (JAMAICA)', 'ja' => '0x0411 Japanese', # 'ar' => '0x2c01 Arabic (JORDAN)', 'sw' => '0x0441 Swahili', 'ko' => '0x0412 Korean', # 'ar' => '0x3401 Arabic (KUWAIT)', 'al' => '0x0426 Latvian (Lettish)', # 'ar' => '0x3001 Arabic (LEBANON)', # 'ar' => '0x1001 Arabic (LIBYAN ARAB JAMAHIRIYA)', # 'de' => '0x1407 German (LIECHTENSTEIN)', 'lt' => '0x0427 Lithuanian', # 'de' => '0x1007 German (LUXEMBOURG)', # 'zh' => '0x1404 Chinese (MACAU)', 'mk' => '0x042f Macedonian', # 'ms' => '0x043e Malay (MALAYSIA)', # 'es' => '0x080a Spanish (MEXICO)', # 'fr' => '0x180c French (MONACO)', # 'ar' => '0x1801 Arabic (MOROCCO)', 'nl' => '0x0413 Dutch', # 'en' => '0x1409 English (NEW ZEALAND)', # 'es' => '0x4c0a Spanish (NICARAGUA)', 'no' => '0x0414 Norwegian', # 'ar' => '0x2001 Arabic (OMAN)', 'ur' => '0x0420 Urdu', # 'es' => '0x180a Spanish (PANAMA)', # 'es' => '0x3c0a Spanish (PARAGUAY)', # 'es' => '0x280a Spanish (PERU)', # 'en' => '0x3409 English (PHILIPPINES)', 'pl' => '0x0415 Polish', 'pt' => '0x0816 Portuguese (PORTUGAL)', # 'es' => '0x500a Spanish (PUERTO RICO)', # 'ar' => '0x4001 Arabic (QATAR)', 'ro' => '0x0418 Romanian', 'ru' => '0x0419 Russian', 'ar' => '0x0401 Arabic (SAUDI ARABIA)', # 'zh' => '0x1004 Chinese (SINGAPORE)', 'sk' => '0x041b Slovak', 'sl' => '0x0424 Slovenian', 'af' => '0x0436 Afrikaans', 'ca' => '0x0403 Catalan', 'sv' => '0x041d Swedish', # 'de' => '0x0807 German (SWITZERLAND)', # 'ar' => '0x2801 Arabic (SYRIAN ARAB REPUBLIC)', # 'zh' => '0x0404 Chinese (TAIWAN, PROVINCE OF CHINA)', 'th' => '0x041e Thai', # 'en' => '0x2c09 English (TRINIDAD AND TOBAGO)', # 'ar' => '0x1c01 Arabic (TUNISIA)', 'tr' => '0x041f Turkish', 'uk' => '0x0422 Ukrainian', # 'ar' => '0x3801 Arabic (UNITED ARAB EMIRATES)', # 'en' => '0x0809 English (UNITED KINGDOM)', # 'en' => '0x0409 English (UNITED STATES)', # 'es' => '0x380a Spanish (URUGUAY)', # 'es' => '0x200a Spanish (VENEZUELA)', 'vi' => '0x242a Vietnamese', # 'ar' => '0x2401 Arabic (YEMEN)', # 'en' => '0x3009 English (ZIMBABWE)', #'' => '', ); my %hhk_global_property = ( 'ImageType' => 'Folder', ); my %hhc_global_property = ( 'ImageType' => 'Folder', ); # We prepare a environment for conversion of texi to unicode (maybe this # could be in utf8.init ?) my %chm_texi_map = %texi_map; my %chm_simple_map_texi = %simple_map_texi; my %chm_style_map_texi = (); foreach my $command (keys(%style_map_texi)) { $chm_style_map_texi{$command} = {}; foreach my $key (keys (%{$style_map_texi{$command}})) { #print STDERR "$command, $key, $style_map_texi{$command}->{$key}\n"; $chm_style_map_texi{$command}->{$key} = $style_map_texi{$command}->{$key}; } } foreach my $key (keys(%unicode_accents)) { $chm_style_map_texi{$key}->{'function'} = \&t2h_utf8_accent; } foreach my $key (%things_map) { if (exists($unicode_map{$key}) and ($unicode_map{$key} ne '')) { $chm_texi_map{$key} = chr(hex($unicode_map{$key})); } } $chm_simple_map_texi{"\n"} = ' '; my $hhp_lines = ''; sub chm_init_out() { my $encoding = &$default_init_out(); $TOC_FILE = $Texi2HTML::THISDOC{'file_base_name'}.'.hhc'; my $hhk_file = "$Texi2HTML::THISDOC{'destination_directory'}$Texi2HTML::THISDOC{'file_base_name'}" . ".hhk"; open(IDXFILE, ">:encoding(utf8)", $hhk_file) || die "Can't open $file_name for writing: $!\n"; print "# writing HTML Help index in $hhk_file...\n" if $VERBOSE; print IDXFILE "\n\n"; print IDXFILE "\n\n"; print IDXFILE "\n\n\n"; print IDXFILE "\n"; foreach my $property (keys(%hhk_global_property)) { print IDXFILE "\n"; } print IDXFILE "\n"; my $hhp_file = "$Texi2HTML::THISDOC{'destination_directory'}$Texi2HTML::THISDOC{'file_base_name'}.hhp"; print "# writing HTML Help project in $hhp_file...\n" if $VERBOSE; open (HHPFILE, ">:encoding(utf8)", $hhp_file) or die "Can't open $hhp_file for writing: $!\n"; my $language = $chm_languages{'en'}; if (exists ($chm_languages{$LANG})) { $language = $chm_languages{$LANG}; } my $title = to_utf8($Texi2HTML::THISDOC{'title_texi'}); print HHPFILE < $PRE_BODY_CLOSE

EOT } # Convert texi to string with utf8 sub to_utf8($) { my $text = shift; $main::simple_map_texi_ref = \%chm_simple_map_texi; $main::style_map_texi_ref = \%chm_style_map_texi; $main::texi_map_ref = \%chm_texi_map; my $normal_text_kept = $normal_text; $Texi2HTML::Config::normal_text = \&t2h_utf8_normal_text; $text = main::remove_texi($text); $normal_text = $normal_text_kept; $main::simple_map_texi_ref = \%simple_map_texi; $style_map_texi_ref = \%style_map_texi; $main::texi_map_ref = \%texi_map; return $text; } my @hhc_lines; my %chm_files; sub chm_toc_body($) { my $elements_ref = shift; &$default_toc_body($elements_ref); my $level = 0; foreach my $element (@$elements_ref) { while ($level != $element->{'toc_level'}) { if ($level < $element->{'toc_level'}) { push (@hhc_lines, "\n"); $level--; } } my $text = ''; if ($NUMBER_SECTIONS) { $text .= $element->{'number'} . " "; } $text .= to_utf8($element->{'texi'}); $text =~ s/^\s*//; push (@hhc_lines, "
  • \n\n{'file'}#$element->{'id'}\">\n
  • \n"); if (!$chm_files{$element->{'file'}}) { $hhp_lines .= "$element->{'file'}\n"; $chm_files{$element->{'file'}} = 1; } } while ($level > 0) { push (@hhc_lines, "\n"); $level--; } } # key: # origin_href: # entry: # texi entry: # element_href: # element_text: sub chm_index_summary_file_entry ($$$$$$$$) { my $name = shift; my $key = shift; my $origin_href = shift; my $entry = shift; my $text = ''; #$entry = &$protect_text($key); my $texi_entry = shift; my $element_href = shift; my $element_text = shift; my $is_printed = shift; $entry = to_utf8($texi_entry); print IDXFILE "
  • \n\n\n
  • \n"; } sub chm_index_summary_file_begin($$) { my $name = shift; my $is_printed = shift; } # file is not closed here but in finish_out. sub chm_index_summary_file_end($$) { my $name = shift; my $is_printed = shift; } sub chm_finish_out() { print IDXFILE "\n\n"; close (IDXFILE); my $hhc_file = "$Texi2HTML::THISDOC{'destination_directory'}$Texi2HTML::THISDOC{'file_base_name'}.hhc"; open (HHCFILE, ">:encoding(utf8)", $hhc_file) or die "Can't open $hhc_file for writing: $!\n"; print HHCFILE "\n\n"; print HHCFILE "\n\n"; print HHCFILE "\n\n\n"; print HHCFILE "\n"; foreach my $property (keys(%hhc_global_property)) { print HHCFILE "\n"; } print HHCFILE "\n"; main::print_lines(\*HHCFILE, \@hhc_lines); print HHCFILE "\n\n"; print HHPFILE $hhp_lines; close (HHPFILE); } 1;