# $Id: germanb.perl,v 1.13 1998/08/24 12:50:20 RRM Exp $ # GERMAN.PERL by Nikos Drakos 25-11-93 # Computer Based Learning Unit, University of Leeds. # # Extension to LaTeX2HTML to translate LaTeX german special # commands to equivalent HTML commands. # Based on a patch to LaTeX2HTML supplied by Franz Vojik # . # # The original german.sty file was put together by H.Partl # (TU Wien) 4 Nov 1988 # # Change Log: # =========== # $Log: germanb.perl,v $ # Revision 1.13 1998/08/24 12:50:20 RRM # -- updated for the new Babel capabilities # # Revision 1.11 1998/06/26 06:07:35 RRM # -- put \n before intro message # # Revision 1.10 1998/04/28 13:10:05 latex2html # # Revision 1.9 1998/04/28 13:10:04 latex2html # -- added new name: $foot_title # # Revision 1.8 1998/02/22 05:27:07 latex2html # revised &german|french_titles # # Revision 1.7 1998/02/20 23:27:24 latex2html # added $GENERIC_WORDS # # Revision 1.6 1997/06/13 13:54:50 RRM # Allow " to be translated back into \dq{} # # Revision 1.5 1997/06/06 12:49:09 RRM # - Fixed the handling of umlauts # - used ISO-Latin characters for `french quotes' # - changed version info # # Revision 1.4 1997/05/19 13:34:27 RRM # Fixed a problem with umlauts. # # Revision 1.3 1996/12/23 01:39:55 JCL # o added informative comments and CVS log history # o changed usage of to an OS independent construction, the # patch is from Piet van Oostrum. # # # 11-JAN-94 Nikos Drakos: Modified the german specials array to # deal with "` correctly # 25-JAN-94 Nikos Drakos: Replaced all the html special characters # with their ;tex2html_html_special_mark_ form # 13-Dec-94 Nikos Drakos Replaced ;tex2html_html_special_mark_; with # ;SPM; to be consistent with changes in the main script # 19-Dec-95 Herb Swan: Removed _ from SPM... definitions, consistent with # with new math code of Marcus Hennecke. Ignore '"|' and '"-'. # 23-May-97 Ross Moore: the " searches were out of order, so some cases # would never be found. # Treat "s "z and "S "Z differently; thanks to Marcus Harnisch. # Replace non-special ;SPMquot; by " package german; #JKR: print a message. print "\ngerman style interface for LaTeX2HTML, revised: 23 May 1997\n"; # Put german equivalents here for headings/dates/ etc when # latex2html start supporting them ... sub main'german_translation { local($_) = @_; s/;SPMquot;\s*(;SPMlt;|;SPMgt;|'|`|\\|-|=|;SPMquot;|\||~)/&get_german_specials($1)/geo; local($next_char_rx) = &make_next_char_rx("[aAeEiIoOuU]"); s/$next_char_rx/&main'iso_map(($2||$3),"uml")/geo; # $next_char_rx = &make_next_char_rx("[sSzZ]"); $next_char_rx = &make_next_char_rx("[sz]"); s/$next_char_rx/&main'iso_map("sz","lig")/geo; $next_char_rx = &make_next_char_rx("[SZ]"); s/$next_char_rx/S$2/go; s/;SPMquot;\s*([cflmnprt])/\1/go; # s/;SPMquot;\s*([cflmnpt])/\1/go; # s/;SPMquot;\s*(;SPMlt;|;SPMgt;|'|`|\\|-|;SPMquot;|\||~)/&get_german_specials($1)/geo; # s/;SPMquot;/''/go; s/;SPMquot;/"/go; $_; } sub main'do_cmd_3 { join('',&main'iso_map("sz", "lig"),@_[0]); } sub make_next_char_rx { local($chars) = @_; local($OP,$CP) = &main'brackets; ";SPMquot;\\s*(($chars)|$OP\\d+$CP\\s*($chars)\\s*$OP\\d+$CP)"; } sub get_german_specials { $german_specials{@_[0]} } %german_specials = ( '\'', "``", "\`", ",,", '\\', "", '-', "", '|', "", ';SPMquot;', "", '~', "-", '=', "-" ); if ($CHARSET =~ /iso_8859_2/) { if ($HTML_VERSION > 2.1) { %german_specials = ( ';SPMlt;', ';SPMlt;;SPMlt;' , ';SPMgt;', '>>' , %german_specials ); } else { %german_specials = ( ';SPMlt;', ';SPMlt;;SPMlt;' , ';SPMgt;', '>>' , %german_specials ); } } else { %german_specials = ( ';SPMlt;', '«' , ';SPMgt;', '»' , %german_specials ); } package main; if (defined &addto_languages) { &addto_languages('german') }; sub do_cmd_flqq { if ($CHARSET =~ /iso_8859_2/) { if ($HTML_VERSION > 2.1) { join('', ';SPMlt;;SPMlt;', @_[0]) } else { join('', ';SPMlt;;SPMlt;', @_[0]) } } else { join('', '«', @_[0]) } } sub do_cmd_frqq { if ($CHARSET =~ /iso_8859_2/) { if ($HTML_VERSION > 2.1) { join('', '>>', @_[0]) } else { join('', '>>', @_[0]) } } else { join('', '»', @_[0]) } } sub do_cmd_flq { if ($HTML_VERSION > 2.1) { join('', ';SPMlt;', @_[0]) } else { join('', ';SPMlt;', @_[0]) } } sub do_cmd_frq { if ($HTML_VERSION > 2.1) { join('', '>', @_[0]) } else { join('', '>', @_[0]) } } sub do_cmd_glqq { join('', ",,", @_[0]);}; sub do_cmd_grqq { join('', "``", @_[0]);}; sub do_cmd_glq { join('', ",", @_[0]);}; sub do_cmd_grq { join('', "`", @_[0]);}; sub do_cmd_dq { # join('', "''", @_[0]);}; join('', '"', @_[0]);}; sub do_cmd_germanTeX { # Just in case we pass things to LaTeX $default_language = 'german'; $latex_body .= "\\germanTeX\n"; @_[0]; } sub do_cmd_originalTeX { # Just in case we pass things to LaTeX $default_language = 'original'; $latex_body .= "\\originalTeX\n"; @_[0]; } #JKR: Prepare the german environment ... sub german_titles { $toc_title = "Inhalt"; $lof_title = "Abbildungsverzeichnis"; $lot_title = "Tabellenverzeichnis"; $idx_title = "Index"; $ref_title = "Literaturverzeichnis"; $bib_title = "Literatur"; $abs_title = "Zusammenfassung"; $app_title = "Anhang"; $pre_title = "Vorwort"; $foot_title = "Fußnoten"; $thm_title = "Satz"; $fig_name = "Abbildung"; $tab_name = "Tabelle"; $prf_name = "Beweis"; $date_name = "Datum"; $page_name = "Seite"; # Sectioning-level titles $part_name = "Teil"; $chapter_name = "Kapitel"; $section_name = "Abschnitt"; $subsection_name = "Unterabschnitt"; $subsubsection_name = "Unter Unterabschnitt"; $paragraph_name = "Absatz"; # Misc. strings $child_name = "Unterabschnitte"; $info_title = "Über dieses Dokument ..."; $also_name = "siehe auch"; $see_name = "siehe"; # names in navigation panels $next_name = "Nächste Seite"; $up_name = "Aufwärts"; $prev_name = "Vorherige Seite"; $group_name = "gruppe"; # mail fields $encl_name = "Anlage(n)"; $headto_name = "An"; $cc_name = "Verteiler"; @Month = ('', 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'); local($uuml,$Uuml) = (&iso_map('u','uml'),&iso_map('U','uml')); $GENERIC_WORDS = join('|',"aber","oder","und","doch","um","in","im","an","am","${uuml}ber", "${Uuml}ber","unter","auf","durch","der","die","das","des","dem","den", "ein","eine","eines","einem","einen","einer","vor","nach","f${uuml}r", "mit","zu","zur","zum","bei","beim","per","von","vom","aus"); } #JKR: Replace do_cmd_today (\today) with a nicer one, which is more # similar to the original. #JCL introduced &get_date sub german_today { local($today) = &get_date; $today =~ s|(\d+)/0?(\d+)/|$2. $Month[$1] |; join('',$today,$_[0]); } # ... and use it. &german_titles; $default_language = 'german'; $TITLES_LANGUAGE = "german"; $german_encoding = 'iso-8859-1'; # MEH: Make iso_latin1_character_map_inv use more appropriate code $iso_latin1_character_map_inv{'«'} ='\\flqq'; $iso_latin1_character_map_inv{'»'} ='\\frqq'; $iso_latin1_character_map_inv{'Ä'} ='"A'; $iso_latin1_character_map_inv{'Ö'} ='"O'; $iso_latin1_character_map_inv{'Ü'} ='"U'; $iso_latin1_character_map_inv{'ä'} ='"a'; $iso_latin1_character_map_inv{'ö'} ='"o'; $iso_latin1_character_map_inv{'ß'} ='"s'; $iso_latin1_character_map_inv{'ü'} ='"u'; $iso_latin1_character_map_inv{'"'} ='\\dq{}'; 1; # Not really necessary...