Sophie

Sophie

distrib > Mandriva > 2009.1 > i586 > by-pkgid > 3c83bbb1176e313dd084f0338245b0ec > files > 60

tetex-3.0-48mdv2009.1.src.rpm

--- tetex-src-3.0/utils/texi2html/translations.pl.texi176	2005-02-04 01:21:00.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/translations.pl	2007-06-03 02:26:37.000000000 +0200
@@ -15,15 +15,28 @@
                        '%{style}: %{shortcaption_first_line}' => '',
                        '@b{%{quotation_arg}:} ' => '',
                        '@cite{%{book}}' => '',
+                       'About' => '',
+                       'About (help)' => '',
                        'About This Document' => '@"Uber dieses Dokument',
                        'April' => 'April',
                        'August' => 'August',
+                       'Back' => '',
+                       'Beginning of this chapter or previous chapter' => '',
                        'Button' => '',
                        'Contents' => '',
+                       'Cover (top) of document' => '',
                        'Current Position' => '',
+                       'Current section' => '',
                        'December' => 'Dezember',
+                       'FastBack' => '',
+                       'FastForward' => '',
                        'February' => 'Februar',
+                       'First' => '',
+                       'First section in reading order' => '',
+                       'Following' => '',
+                       'Following node' => '',
                        'Footnotes' => 'Fu@ss{}noten',
+                       'Forward' => '',
                        'From 1.2.3 go to' => '',
                        'Go to' => '',
                        'Index' => 'Index',
@@ -32,16 +45,30 @@
                        'July' => 'Juli',
                        'Jump to' => '',
                        'June' => 'Juni',
+                       'Last' => '',
+                       'Last section in reading order' => '',
                        'March' => 'M@"arz',
                        'May' => 'Mai',
                        'Menu:' => '',
                        'Name' => '',
                        'Next' => '',
+                       'Next chapter' => '',
+                       'Next node' => '',
+                       'Next section in reading order' => '',
+                       'Next section on same level' => '',
+                       'Node following in node reading order' => '',
+                       'Node up' => '',
+                       'NodeNext' => '',
+                       'NodePrev' => '',
+                       'NodeUp' => '',
                        'November' => 'November',
                        'October' => 'Oktober',
                        'Overview' => '',
                        'Overview:' => '',
                        'Prev' => '',
+                       'Previous node' => '',
+                       'Previous section in reading order' => '',
+                       'Previous section on same level' => '',
                        'Section' => '',
                        'Section One' => '',
                        'See %{node_file_href}' => '',
@@ -53,6 +80,7 @@
                        'See section `%{section}\' in @cite{%{book}}' => '',
                        'September' => 'September',
                        'Short Table of Contents' => 'Kurzes Inhaltsverzeichniss',
+                       'Short table of contents' => '',
                        'Subsection One-Four' => '',
                        'Subsection One-One' => '',
                        'Subsection One-Three' => '',
@@ -63,33 +91,22 @@
                        'Subsubsection One-Two-Two' => '',
                        'T2H_today' => '',
                        'Table of Contents' => 'Inhaltsverzeichniss',
+                       'Table of contents' => '',
+                       'The node you are looking for is at %{href}.' => '',
+                       'This' => '',
                        'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
                        'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
                        'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => '',
                        'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
                        'Top' => '',
                        'Untitled Document' => '',
-                       'about (help)' => '',
-                       'beginning of this chapter or previous chapter' => '',
+                       'Up' => '',
+                       'Up node' => '',
+                       'Up section' => '',
                        'by @emph{%{user}}' => '',
                        'by @emph{%{user}} on @emph{%{date}}' => '',
-                       'cover (top) of document' => '',
                        'current' => '',
-                       'current section' => '',
-                       'first section in reading order' => '',
-                       'following node' => '',
-                       'index' => '',
-                       'last section in reading order' => '',
-                       'next chapter' => '',
-                       'next node' => '',
-                       'next section in reading order' => '',
-                       'next section on same level' => '',
-                       'node following in node reading order' => '',
-                       'node up' => '',
                        'on @emph{%{date}}' => '',
-                       'previous node' => '',
-                       'previous section in reading order' => '',
-                       'previous section on same level' => '',
                        'section `%{section}\' in @cite{%{book}}' => '',
                        'see %{node_file_href}' => '',
                        'see %{node_file_href} @cite{%{book}}' => '',
@@ -98,11 +115,7 @@
                        'see @cite{%{book}}' => '',
                        'see section %{reference_name}' => '',
                        'see section `%{section}\' in @cite{%{book}}' => '',
-                       'short table of contents' => '',
-                       'table of contents' => '',
-                       'unknown' => '',
-                       'up node' => '',
-                       'up section' => ''
+                       'unknown' => ''
                      };
 
 $T2H_OBSOLETE_STRINGS->{'de'} = {
@@ -112,6 +125,129 @@
                                 };
 
 
+$LANGUAGES->{'en'} = {
+                       '  The buttons in the navigation panels have the following meaning:' => '',
+                       '  where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:' => '',
+                       ' Up ' => '',
+                       '%{acronym_like} (%{explanation})' => '',
+                       '%{month}, %{day} %{year}' => '',
+                       '%{name} of %{class}' => '',
+                       '%{name} on %{class}' => '',
+                       '%{node_file_href}' => '',
+                       '%{node_file_href} @cite{%{book}}' => '',
+                       '%{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+                       '%{reference_name}' => '',
+                       '%{style} %{number}' => '',
+                       '%{style}: %{caption_first_line}' => '',
+                       '%{style}: %{shortcaption_first_line}' => '',
+                       '@b{%{quotation_arg}:} ' => '',
+                       '@cite{%{book}}' => '',
+                       'About' => '',
+                       'About (help)' => '',
+                       'About This Document' => '',
+                       'April' => '',
+                       'August' => '',
+                       'Back' => '',
+                       'Beginning of this chapter or previous chapter' => '',
+                       'Button' => '',
+                       'Contents' => '',
+                       'Cover (top) of document' => '',
+                       'Current Position' => '',
+                       'Current section' => '',
+                       'December' => '',
+                       'FastBack' => '',
+                       'FastForward' => '',
+                       'February' => '',
+                       'First' => '',
+                       'First section in reading order' => '',
+                       'Following' => '',
+                       'Following node' => '',
+                       'Footnotes' => '',
+                       'Forward' => '',
+                       'From 1.2.3 go to' => '',
+                       'Go to' => '',
+                       'Index' => '',
+                       'Index Entry' => '',
+                       'January' => '',
+                       'July' => '',
+                       'Jump to' => '',
+                       'June' => '',
+                       'Last' => '',
+                       'Last section in reading order' => '',
+                       'March' => '',
+                       'May' => '',
+                       'Menu:' => '',
+                       'Name' => '',
+                       'Next' => '',
+                       'Next chapter' => '',
+                       'Next node' => '',
+                       'Next section in reading order' => '',
+                       'Next section on same level' => '',
+                       'Node following in node reading order' => '',
+                       'Node up' => '',
+                       'NodeNext' => '',
+                       'NodePrev' => '',
+                       'NodeUp' => '',
+                       'November' => '',
+                       'October' => '',
+                       'Overview' => '',
+                       'Overview:' => '',
+                       'Prev' => '',
+                       'Previous node' => '',
+                       'Previous section in reading order' => '',
+                       'Previous section on same level' => '',
+                       'Section' => '',
+                       'Section One' => '',
+                       'See %{node_file_href}' => '',
+                       'See %{node_file_href} @cite{%{book}}' => '',
+                       'See %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+                       'See %{reference_name}' => '',
+                       'See @cite{%{book}}' => '',
+                       'See section %{reference_name}' => '',
+                       'See section `%{section}\' in @cite{%{book}}' => '',
+                       'September' => '',
+                       'Short Table of Contents' => '',
+                       'Short table of contents' => '',
+                       'Subsection One-Four' => '',
+                       'Subsection One-One' => '',
+                       'Subsection One-Three' => '',
+                       'Subsection One-Two' => '',
+                       'Subsubsection One-Two-Four' => '',
+                       'Subsubsection One-Two-One' => '',
+                       'Subsubsection One-Two-Three' => '',
+                       'Subsubsection One-Two-Two' => '',
+                       'T2H_today' => '%s, %d %d',
+                       'Table of Contents' => '',
+                       'Table of contents' => '',
+                       'The node you are looking for is at %{href}.' => '',
+                       'This' => '',
+                       'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
+                       'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
+                       'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => '',
+                       'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
+                       'Top' => '',
+                       'Untitled Document' => '',
+                       'Up' => '',
+                       'Up node' => '',
+                       'Up section' => '',
+                       'by @emph{%{user}}' => '',
+                       'by @emph{%{user}} on @emph{%{date}}' => '',
+                       'current' => '',
+                       'on @emph{%{date}}' => '',
+                       'section `%{section}\' in @cite{%{book}}' => '',
+                       'see %{node_file_href}' => '',
+                       'see %{node_file_href} @cite{%{book}}' => '',
+                       'see %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+                       'see %{reference_name}' => '',
+                       'see @cite{%{book}}' => '',
+                       'see section %{reference_name}' => '',
+                       'see section `%{section}\' in @cite{%{book}}' => '',
+                       'unknown' => ''
+                     };
+
+$T2H_OBSOLETE_STRINGS->{'en'} = {};
+
+
 $LANGUAGES->{'es'} = {
                        '  The buttons in the navigation panels have the following meaning:' => '',
                        '  where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:' => '',
@@ -129,15 +265,28 @@
                        '%{style}: %{shortcaption_first_line}' => '',
                        '@b{%{quotation_arg}:} ' => '',
                        '@cite{%{book}}' => '',
+                       'About' => '',
+                       'About (help)' => '',
                        'About This Document' => '',
                        'April' => 'abril',
                        'August' => 'agosto',
+                       'Back' => '',
+                       'Beginning of this chapter or previous chapter' => '',
                        'Button' => '',
                        'Contents' => '',
+                       'Cover (top) of document' => '',
                        'Current Position' => '',
+                       'Current section' => '',
                        'December' => 'diciembre',
+                       'FastBack' => '',
+                       'FastForward' => '',
                        'February' => 'febrero',
+                       'First' => '',
+                       'First section in reading order' => '',
+                       'Following' => '',
+                       'Following node' => '',
                        'Footnotes' => '',
+                       'Forward' => '',
                        'From 1.2.3 go to' => '',
                        'Go to' => '',
                        'Index' => 'Index',
@@ -146,16 +295,30 @@
                        'July' => 'julio',
                        'Jump to' => '',
                        'June' => 'junio',
+                       'Last' => '',
+                       'Last section in reading order' => '',
                        'March' => 'marzo',
                        'May' => 'mayo',
                        'Menu:' => '',
                        'Name' => '',
                        'Next' => '',
+                       'Next chapter' => '',
+                       'Next node' => '',
+                       'Next section in reading order' => '',
+                       'Next section on same level' => '',
+                       'Node following in node reading order' => '',
+                       'Node up' => '',
+                       'NodeNext' => '',
+                       'NodePrev' => '',
+                       'NodeUp' => '',
                        'November' => 'noviembre',
                        'October' => 'octubre',
                        'Overview' => '',
                        'Overview:' => '',
                        'Prev' => '',
+                       'Previous node' => '',
+                       'Previous section in reading order' => '',
+                       'Previous section on same level' => '',
                        'Section' => '',
                        'Section One' => '',
                        'See %{node_file_href}' => '',
@@ -167,6 +330,7 @@
                        'See section `%{section}\' in @cite{%{book}}' => '',
                        'September' => 'septiembre',
                        'Short Table of Contents' => 'Resumen del Contenido',
+                       'Short table of contents' => '',
                        'Subsection One-Four' => '',
                        'Subsection One-One' => '',
                        'Subsection One-Three' => '',
@@ -177,33 +341,22 @@
                        'Subsubsection One-Two-Two' => '',
                        'T2H_today' => '',
                        'Table of Contents' => '@\'{@dotless{I}}ndice General',
+                       'Table of contents' => '',
+                       'The node you are looking for is at %{href}.' => '',
+                       'This' => '',
                        'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
                        'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
                        'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => '',
                        'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
                        'Top' => '',
                        'Untitled Document' => '',
-                       'about (help)' => '',
-                       'beginning of this chapter or previous chapter' => '',
+                       'Up' => '',
+                       'Up node' => '',
+                       'Up section' => '',
                        'by @emph{%{user}}' => '',
                        'by @emph{%{user}} on @emph{%{date}}' => '',
-                       'cover (top) of document' => '',
                        'current' => '',
-                       'current section' => '',
-                       'first section in reading order' => '',
-                       'following node' => '',
-                       'index' => '',
-                       'last section in reading order' => '',
-                       'next chapter' => '',
-                       'next node' => '',
-                       'next section in reading order' => '',
-                       'next section on same level' => '',
-                       'node following in node reading order' => '',
-                       'node up' => '',
                        'on @emph{%{date}}' => '',
-                       'previous node' => '',
-                       'previous section in reading order' => '',
-                       'previous section on same level' => '',
                        'section `%{section}\' in @cite{%{book}}' => '',
                        'see %{node_file_href}' => '',
                        'see %{node_file_href} @cite{%{book}}' => '',
@@ -212,11 +365,7 @@
                        'see @cite{%{book}}' => '',
                        'see section %{reference_name}' => '',
                        'see section `%{section}\' in @cite{%{book}}' => '',
-                       'short table of contents' => '',
-                       'table of contents' => '',
-                       'unknown' => '',
-                       'up node' => '',
-                       'up section' => ''
+                       'unknown' => ''
                      };
 
 $T2H_OBSOLETE_STRINGS->{'es'} = {
@@ -243,15 +392,28 @@
                        '%{style}: %{shortcaption_first_line}' => '',
                        '@b{%{quotation_arg}:} ' => '',
                        '@cite{%{book}}' => '',
+                       'About' => 'A propos',
+                       'About (help)' => 'A propos (page d\'aide)',
                        'About This Document' => 'A propos de ce document',
                        'April' => 'Avril',
                        'August' => 'Ao@^ut',
+                       'Back' => 'Retour',
+                       'Beginning of this chapter or previous chapter' => 'D@\'ebut de ce chapitre ou chapitre pr@\'ec@\'edent',
                        'Button' => 'Bouton',
                        'Contents' => 'Table des mati@`eres',
+                       'Cover (top) of document' => 'Couverture (top) du document',
                        'Current Position' => 'Position',
+                       'Current section' => 'Section actuelle',
                        'December' => 'D@\'ecembre',
+                       'FastBack' => 'RetourRapide',
+                       'FastForward' => 'AvanceRapide',
                        'February' => 'F@\'evrier',
+                       'First' => 'Premier',
+                       'First section in reading order' => 'Premi@`e section dans l\'ordre de lecture',
+                       'Following' => 'Suivant',
+                       'Following node' => 'N@oe{}ud suivant',
                        'Footnotes' => 'Notes de bas de page',
+                       'Forward' => 'Avant',
                        'From 1.2.3 go to' => 'Depuis 1.2.3 aller @`a',
                        'Go to' => 'Aller @`a',
                        'Index' => 'Index',
@@ -260,16 +422,30 @@
                        'July' => 'Juillet',
                        'Jump to' => 'Aller @`a',
                        'June' => 'Juin',
+                       'Last' => 'Dernier',
+                       'Last section in reading order' => 'Derni@`ere section dans l\'ordre de lecture',
                        'March' => 'Mars',
                        'May' => 'Mai',
                        'Menu:' => 'Menu@ :',
                        'Name' => 'Nom',
                        'Next' => 'Suivant',
+                       'Next chapter' => 'Chapitre suivant',
+                       'Next node' => 'N@oe{}ud suivant',
+                       'Next section in reading order' => 'Section suivante dans l\'ordre de lecture',
+                       'Next section on same level' => 'Section suivante au m@^eme niveau',
+                       'Node following in node reading order' => 'N@oe{}ud suivant dans l\'ordre de lecture',
+                       'Node up' => 'N@oe{}ud au dessus',
+                       'NodeNext' => 'N@oe{}udSuivant',
+                       'NodePrev' => 'N@oe{}udPr@\'ec@\'edent',
+                       'NodeUp' => 'N@oe{}udMonter',
                        'November' => 'Novembre',
                        'October' => 'Octobre',
                        'Overview' => 'Vue d\'ensemble',
                        'Overview:' => 'Vue d\'ensemble@ :',
                        'Prev' => 'Pr@\'ec@\'edent',
+                       'Previous node' => 'N@oe{}ud pr@\'ec@\'edent',
+                       'Previous section in reading order' => 'Section pr@\'ec@\'edente dans l\'ordre de lecture',
+                       'Previous section on same level' => 'Section pr@\'ec@\'edente au m@^eme niveau',
                        'Section' => '',
                        'Section One' => 'Section un',
                        'See %{node_file_href}' => 'Voir %{node_file_href}',
@@ -281,6 +457,7 @@
                        'See section `%{section}\' in @cite{%{book}}' => 'Voir la section `%{section}\' dans @cite{%{book}}',
                        'September' => 'Septembre',
                        'Short Table of Contents' => 'R@\'esum@\'e du contenu',
+                       'Short table of contents' => 'R@\'esum@\'e du contenu',
                        'Subsection One-Four' => 'Sous section un-quatre',
                        'Subsection One-One' => 'Sous section un-un',
                        'Subsection One-Three' => 'Sous section un-trois',
@@ -291,33 +468,22 @@
                        'Subsubsection One-Two-Two' => 'Sous sous section un-deux-deux',
                        'T2H_today' => 'le %2$d %1$s %3$d',
                        'Table of Contents' => 'Table des mati@`eres',
+                       'Table of contents' => 'Table des mati@`eres',
+                       'The node you are looking for is at %{href}.' => 'Le n@oe{}ud que vous recherchez est ici@ : %{href}.',
+                       'This' => 'Ici',
                        'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Ce document a @\'et@\'e g@\'en@\'er@\'e par @emph{%{user}} @emph{%{date}} en utilisant @uref{%{program_homepage}, @emph{%{program}}}.',
                        'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Ce document a @\'et@\'e g@\'en@\'er@\'e par @emph{%{user}} en utilisant @uref{%{program_homepage}, @emph{%{program}}}.',
-                       'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => '',
+                       'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => 'Ce document a @\'et@\'e g@\'en@\'er@\'e @emph{%{date}} en utilisant @uref{%{program_homepage}, @emph{%{program}}}',
                        'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Ce document a @\'et@\'e g@\'en@\'er@\'e en utilisant @uref{%{program_homepage}, @emph{%{program}}}.',
                        'Top' => '',
                        'Untitled Document' => 'Document sans titre',
-                       'about (help)' => '@`a propos (page d\'aide)',
-                       'beginning of this chapter or previous chapter' => 'd@\'ebut de ce chapitre ou chapitre pr@\'ec@\'edent',
+                       'Up' => 'Monter',
+                       'Up node' => 'N@oe{}ud au dessus',
+                       'Up section' => 'Section sup@\'erieure',
                        'by @emph{%{user}}' => 'par @emph{%{user}}',
                        'by @emph{%{user}} on @emph{%{date}}' => 'par @emph{%{user}} @emph{%{date}}',
-                       'cover (top) of document' => 'couverture (top) du document',
                        'current' => 'courante',
-                       'current section' => 'section actuelle',
-                       'first section in reading order' => 'premi@`e section dans l\'ordre de lecture',
-                       'following node' => 'node suivant',
-                       'index' => 'index',
-                       'last section in reading order' => 'derni@`ere section dans l\'ordre de lecture',
-                       'next chapter' => 'chapitre suivant',
-                       'next node' => 'node suivant',
-                       'next section in reading order' => 'section suivante dans l\'ordre de lecture',
-                       'next section on same level' => 'section suivante au m@^eme niveau',
-                       'node following in node reading order' => 'node suivant dans l\'ordre des nodes',
-                       'node up' => 'node au dessus',
                        'on @emph{%{date}}' => '@emph{%{date}}',
-                       'previous node' => 'node pr@\'ec@\'edent',
-                       'previous section in reading order' => 'section pr@\'ec@\'edente dans l\'ordre de lecture',
-                       'previous section on same level' => 'section pr@\'ec@\'edente au m@^eme niveau',
                        'section `%{section}\' in @cite{%{book}}' => 'section `%{section}\' dans @cite{%{book}}',
                        'see %{node_file_href}' => 'voir %{node_file_href}',
                        'see %{node_file_href} @cite{%{book}}' => 'voir %{node_file_href} @cite{%{book}}',
@@ -326,11 +492,7 @@
                        'see @cite{%{book}}' => 'voir @cite{%{book}}',
                        'see section %{reference_name}' => 'voir la section %{reference_name}',
                        'see section `%{section}\' in @cite{%{book}}' => 'voir la section `%{section}\' dans @cite{{book}}',
-                       'short table of contents' => 'table des mati@`eres r@\'esum@\'ee',
-                       'table of contents' => 'table des mati@`eres',
-                       'unknown' => 'inconnu',
-                       'up node' => 'node au dessus',
-                       'up section' => 'section sup@\'erieure'
+                       'unknown' => 'inconnu'
                      };
 
 $T2H_OBSOLETE_STRINGS->{'fr'} = {
@@ -350,18 +512,184 @@
                                   'This document was generated on @emph{%{date}} using %{program_homepage_href}.' => 'Ce document a @\'et@\'e g@\'en@\'er@\'e @emph{%{date}} en utilisant %{program_homepage_href}.',
                                   'This document was generated on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Ce document a @\'et@\'e g@\'en@\'er@\'e @emph{%{date}} en utilisant @uref{%{program_homepage}, @emph{%{program}}}.',
                                   'This document was generated using %{program_homepage_href}.' => 'Ce document a @\'et@\'e g@\'en@\'er@\'e en utilisant %{program_homepage_href}.',
+                                  'about (help)' => '@`a propos (page d\'aide)',
                                   'about (this page)' => 'a propos (cette page)',
+                                  'beginning of this chapter or previous chapter' => 'd@\'ebut de ce chapitre ou chapitre pr@\'ec@\'edent',
                                   'by <i>%{user}</i>' => 'par <i>%{user}</i>',
                                   'by <i>%{user}</i> on <i>%{date}</i>' => 'par <i>%{user}</i> <i>%{date}</i>',
                                   'concept index' => 'index',
+                                  'cover (top) of document' => 'couverture (top) du document',
+                                  'current section' => 'section actuelle',
+                                  'first section in reading order' => 'premi@`e section dans l\'ordre de lecture',
+                                  'following node' => 'node suivant',
+                                  'index' => 'index',
+                                  'last section in reading order' => 'derni@`ere section dans l\'ordre de lecture',
+                                  'next chapter' => 'chapitre suivant',
+                                  'next node' => 'node suivant',
+                                  'next section in reading order' => 'section suivante dans l\'ordre de lecture',
+                                  'next section on same level' => 'section suivante au m@^eme niveau',
+                                  'node following in node reading order' => 'node suivant dans l\'ordre des nodes',
+                                  'node up' => 'node au dessus',
                                   'on <i>%{date}</i>' => '<i>%{date}</i>',
+                                  'previous node' => 'node pr@\'ec@\'edent',
+                                  'previous section in reading order' => 'section pr@\'ec@\'edente dans l\'ordre de lecture',
+                                  'previous section on same level' => 'section pr@\'ec@\'edente au m@^eme niveau',
                                   'section' => 'section',
                                   'section `%{section}\' in <cite>%{book}</cite>' => 'section `%{section}\' dans <cite>%{book}</cite>',
                                   'see' => 'voir',
                                   'see %{node_file_href} <cite>%{book}</cite>' => 'voir %{node_file_href} <cite>%{book}</cite>',
                                   'see %{node_file_href} section `%{section}\' in <cite>%{book}</cite>' => 'voir %{node_file_href} section `%{section}\' dans <cite>%{book}</cite>',
                                   'see <cite>%{book}</cite>' => 'voir <cite>%{book}</cite>',
-                                  'see section `%{section}\' in <cite>%{book}</cite>' => 'voir la section `%{section}\' dans <cite>%{book}</cite>'
+                                  'see section `%{section}\' in <cite>%{book}</cite>' => 'voir la section `%{section}\' dans <cite>%{book}</cite>',
+                                  'short table of contents' => 'table des mati@`eres r@\'esum@\'ee',
+                                  'table of contents' => 'table des mati@`eres',
+                                  'up node' => 'node au dessus',
+                                  'up section' => 'section sup@\'erieure'
+                                };
+
+
+$LANGUAGES->{'ja'} = {
+                       '  The buttons in the navigation panels have the following meaning:' => 'ナビゲーションパネル中のボタンには以下の意味があります。',
+                       '  where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:' => '@strong{例}では、以下に示す構造を持つ文書の@strong{1.2.3項}を現在位置に仮定しています。',
+                       ' Up ' => '上',
+                       '%{acronym_like} (%{explanation})' => '',
+                       '%{month}, %{day} %{year}' => '%{year}年%{month}月%{day}日',
+                       '%{name} of %{class}' => '',
+                       '%{name} on %{class}' => '',
+                       '%{node_file_href}' => '',
+                       '%{node_file_href} @cite{%{book}}' => '',
+                       '%{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+                       '%{reference_name}' => '',
+                       '%{style} %{number}' => '',
+                       '%{style}: %{caption_first_line}' => '',
+                       '%{style}: %{shortcaption_first_line}' => '',
+                       '@b{%{quotation_arg}:} ' => '',
+                       '@cite{%{book}}' => '',
+                       'About' => '',
+                       'About (help)' => '',
+                       'About This Document' => 'この文書について',
+                       'April' => '4月',
+                       'August' => '8月',
+                       'Back' => '',
+                       'Beginning of this chapter or previous chapter' => '',
+                       'Button' => 'ボタン',
+                       'Contents' => '目次',
+                       'Cover (top) of document' => '',
+                       'Current Position' => '現在位置',
+                       'Current section' => '',
+                       'December' => '12月',
+                       'FastBack' => '',
+                       'FastForward' => '',
+                       'February' => '2月',
+                       'First' => '',
+                       'First section in reading order' => '',
+                       'Following' => '',
+                       'Following node' => '',
+                       'Footnotes' => '脚注',
+                       'Forward' => '',
+                       'From 1.2.3 go to' => '1.2.3項からの移動先',
+                       'Go to' => '移動先',
+                       'Index' => '見出し',
+                       'Index Entry' => '見出し一覧',
+                       'January' => '1月',
+                       'July' => '7月',
+                       'Jump to' => '移動',
+                       'June' => '6月',
+                       'Last' => '',
+                       'Last section in reading order' => '',
+                       'March' => '3月',
+                       'May' => '5月',
+                       'Menu:' => 'メニュー',
+                       'Name' => '名称',
+                       'Next' => '次',
+                       'Next chapter' => '',
+                       'Next node' => '',
+                       'Next section in reading order' => '',
+                       'Next section on same level' => '',
+                       'Node following in node reading order' => '',
+                       'Node up' => '',
+                       'NodeNext' => '',
+                       'NodePrev' => '',
+                       'NodeUp' => '',
+                       'November' => '11月',
+                       'October' => '10月',
+                       'Overview' => '概要',
+                       'Overview:' => '概要:',
+                       'Prev' => '前',
+                       'Previous node' => '',
+                       'Previous section in reading order' => '',
+                       'Previous section on same level' => '',
+                       'Section' => '項',
+                       'Section One' => '第1項',
+                       'See %{node_file_href}' => '',
+                       'See %{node_file_href} @cite{%{book}}' => '',
+                       'See %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+                       'See %{reference_name}' => '',
+                       'See @cite{%{book}}' => '',
+                       'See section %{reference_name}' => '',
+                       'See section `%{section}\' in @cite{%{book}}' => '',
+                       'September' => '9月',
+                       'Short Table of Contents' => '簡略化した目次',
+                       'Short table of contents' => '',
+                       'Subsection One-Four' => '第1.4項',
+                       'Subsection One-One' => '第1.1項',
+                       'Subsection One-Three' => '第1.3項',
+                       'Subsection One-Two' => '第1.2項',
+                       'Subsubsection One-Two-Four' => '第1.2.4項',
+                       'Subsubsection One-Two-One' => '第1.2.1項',
+                       'Subsubsection One-Two-Three' => '第1.2.3項',
+                       'Subsubsection One-Two-Two' => '第1.2.2項',
+                       'T2H_today' => '%s, %d %d',
+                       'Table of Contents' => '目次',
+                       'Table of contents' => '',
+                       'The node you are looking for is at %{href}.' => '',
+                       'This' => '',
+                       'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => 'この文書は@emph{%{user}}によって@emph{%{date}}に@uref{%{program_homepage}, @emph{%{program}}}を用いて生成されました。',
+                       'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => 'この文書は@emph{%{user}}によって@uref{%{program_homepage}, @emph{%{program}}}を用いて生成されました。',
+                       'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => 'この文書は@emph{%{date}}に@uref{%{program_homepage}, @emph{%{program}}}を用いて生成されました。',
+                       'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => 'この文書は@uref{%{program_homepage}, @emph{%{program}}}を用いて生成されました。',
+                       'Top' => '冒頭',
+                       'Untitled Document' => '無題の文書',
+                       'Up' => '',
+                       'Up node' => '',
+                       'Up section' => '',
+                       'by @emph{%{user}}' => '@emph{%{user}}',
+                       'by @emph{%{user}} on @emph{%{date}}' => '@emph{%{user}}, @emph{%{date}',
+                       'current' => '現在位置',
+                       'on @emph{%{date}}' => '@emph{%{date}}',
+                       'section `%{section}\' in @cite{%{book}}' => '@cite{%{book}}の `%{section}\' ',
+                       'see %{node_file_href}' => '%{node_file_href}参照',
+                       'see %{node_file_href} @cite{%{book}}' => '%{node_file_href} @cite{%{book}}参照',
+                       'see %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+                       'see %{reference_name}' => '',
+                       'see @cite{%{book}}' => '',
+                       'see section %{reference_name}' => '',
+                       'see section `%{section}\' in @cite{%{book}}' => '',
+                       'unknown' => '不明'
+                     };
+
+$T2H_OBSOLETE_STRINGS->{'ja'} = {
+                                  'about (help)' => '使用法 (ヘルプ)',
+                                  'beginning of this chapter or previous chapter' => 'この章または前の章の冒頭',
+                                  'cover (top) of document' => '文書の表紙 (トップ)',
+                                  'current section' => '現在の節',
+                                  'first section in reading order' => '文書順で前の項',
+                                  'following node' => '次の節',
+                                  'index' => '見出し',
+                                  'last section in reading order' => '文書順で最後の項',
+                                  'next chapter' => '次の章',
+                                  'next node' => '次の節',
+                                  'next section in reading order' => '文書順で次の項',
+                                  'next section on same level' => '同じ階層にある次の項',
+                                  'node following in node reading order' => '文書順で次の節',
+                                  'node up' => '上の節へ',
+                                  'previous node' => '前の節',
+                                  'previous section in reading order' => '文書順で前の節',
+                                  'previous section on same level' => '同じ階層にある前の項',
+                                  'short table of contents' => '簡略化した目次',
+                                  'table of contents' => '文書の目次',
+                                  'up node' => '上の節',
+                                  'up section' => '上の項'
                                 };
 
 
@@ -382,15 +710,28 @@
                        '%{style}: %{shortcaption_first_line}' => '',
                        '@b{%{quotation_arg}:} ' => '',
                        '@cite{%{book}}' => '',
+                       'About' => '',
+                       'About (help)' => '',
                        'About This Document' => 'No translation available!',
                        'April' => 'April',
                        'August' => 'Augustus',
+                       'Back' => '',
+                       'Beginning of this chapter or previous chapter' => '',
                        'Button' => '',
                        'Contents' => '',
+                       'Cover (top) of document' => '',
                        'Current Position' => '',
+                       'Current section' => '',
                        'December' => 'December',
+                       'FastBack' => '',
+                       'FastForward' => '',
                        'February' => 'Februari',
+                       'First' => '',
+                       'First section in reading order' => '',
+                       'Following' => '',
+                       'Following node' => '',
                        'Footnotes' => 'No translation available!',
+                       'Forward' => '',
                        'From 1.2.3 go to' => '',
                        'Go to' => '',
                        'Index' => 'Index',
@@ -399,16 +740,30 @@
                        'July' => 'Juli',
                        'Jump to' => '',
                        'June' => 'Juni',
+                       'Last' => '',
+                       'Last section in reading order' => '',
                        'March' => 'Maart',
                        'May' => 'Mei',
                        'Menu:' => '',
                        'Name' => '',
                        'Next' => '',
+                       'Next chapter' => '',
+                       'Next node' => '',
+                       'Next section in reading order' => '',
+                       'Next section on same level' => '',
+                       'Node following in node reading order' => '',
+                       'Node up' => '',
+                       'NodeNext' => '',
+                       'NodePrev' => '',
+                       'NodeUp' => '',
                        'November' => 'November',
                        'October' => 'Oktober',
                        'Overview' => '',
                        'Overview:' => '',
                        'Prev' => '',
+                       'Previous node' => '',
+                       'Previous section in reading order' => '',
+                       'Previous section on same level' => '',
                        'Section' => '',
                        'Section One' => '',
                        'See %{node_file_href}' => '',
@@ -420,6 +775,7 @@
                        'See section `%{section}\' in @cite{%{book}}' => '',
                        'September' => 'September',
                        'Short Table of Contents' => 'Korte inhoudsopgave',
+                       'Short table of contents' => '',
                        'Subsection One-Four' => '',
                        'Subsection One-One' => '',
                        'Subsection One-Three' => '',
@@ -430,33 +786,22 @@
                        'Subsubsection One-Two-Two' => '',
                        'T2H_today' => '',
                        'Table of Contents' => 'Inhoudsopgave',
+                       'Table of contents' => '',
+                       'The node you are looking for is at %{href}.' => '',
+                       'This' => '',
                        'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
                        'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
                        'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => '',
                        'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
                        'Top' => '',
                        'Untitled Document' => '',
-                       'about (help)' => '',
-                       'beginning of this chapter or previous chapter' => '',
+                       'Up' => '',
+                       'Up node' => '',
+                       'Up section' => '',
                        'by @emph{%{user}}' => '',
                        'by @emph{%{user}} on @emph{%{date}}' => '',
-                       'cover (top) of document' => '',
                        'current' => '',
-                       'current section' => '',
-                       'first section in reading order' => '',
-                       'following node' => '',
-                       'index' => '',
-                       'last section in reading order' => '',
-                       'next chapter' => '',
-                       'next node' => '',
-                       'next section in reading order' => '',
-                       'next section on same level' => '',
-                       'node following in node reading order' => '',
-                       'node up' => '',
                        'on @emph{%{date}}' => '',
-                       'previous node' => '',
-                       'previous section in reading order' => '',
-                       'previous section on same level' => '',
                        'section `%{section}\' in @cite{%{book}}' => '',
                        'see %{node_file_href}' => '',
                        'see %{node_file_href} @cite{%{book}}' => '',
@@ -465,11 +810,7 @@
                        'see @cite{%{book}}' => '',
                        'see section %{reference_name}' => '',
                        'see section `%{section}\' in @cite{%{book}}' => '',
-                       'short table of contents' => '',
-                       'table of contents' => '',
-                       'unknown' => '',
-                       'up node' => '',
-                       'up section' => ''
+                       'unknown' => ''
                      };
 
 $T2H_OBSOLETE_STRINGS->{'nl'} = {
@@ -496,15 +837,28 @@
                        '%{style}: %{shortcaption_first_line}' => '',
                        '@b{%{quotation_arg}:} ' => '',
                        '@cite{%{book}}' => '',
+                       'About' => '',
+                       'About (help)' => '',
                        'About This Document' => 'No translation available!',
                        'April' => 'april',
                        'August' => 'august',
+                       'Back' => '',
+                       'Beginning of this chapter or previous chapter' => '',
                        'Button' => '',
                        'Contents' => '',
+                       'Cover (top) of document' => '',
                        'Current Position' => '',
+                       'Current section' => '',
                        'December' => 'desember',
+                       'FastBack' => '',
+                       'FastForward' => '',
                        'February' => 'februar',
+                       'First' => '',
+                       'First section in reading order' => '',
+                       'Following' => '',
+                       'Following node' => '',
                        'Footnotes' => 'No translation available!',
+                       'Forward' => '',
                        'From 1.2.3 go to' => '',
                        'Go to' => '',
                        'Index' => 'Indeks',
@@ -513,16 +867,30 @@
                        'July' => 'juli',
                        'Jump to' => '',
                        'June' => 'juni',
+                       'Last' => '',
+                       'Last section in reading order' => '',
                        'March' => 'mars',
                        'May' => 'mai',
                        'Menu:' => '',
                        'Name' => '',
                        'Next' => '',
+                       'Next chapter' => '',
+                       'Next node' => '',
+                       'Next section in reading order' => '',
+                       'Next section on same level' => '',
+                       'Node following in node reading order' => '',
+                       'Node up' => '',
+                       'NodeNext' => '',
+                       'NodePrev' => '',
+                       'NodeUp' => '',
                        'November' => 'november',
                        'October' => 'oktober',
                        'Overview' => '',
                        'Overview:' => '',
                        'Prev' => '',
+                       'Previous node' => '',
+                       'Previous section in reading order' => '',
+                       'Previous section on same level' => '',
                        'Section' => '',
                        'Section One' => '',
                        'See %{node_file_href}' => '',
@@ -534,6 +902,7 @@
                        'See section `%{section}\' in @cite{%{book}}' => '',
                        'September' => 'september',
                        'Short Table of Contents' => 'Kort innholdsfortegnelse',
+                       'Short table of contents' => '',
                        'Subsection One-Four' => '',
                        'Subsection One-One' => '',
                        'Subsection One-Three' => '',
@@ -544,33 +913,22 @@
                        'Subsubsection One-Two-Two' => '',
                        'T2H_today' => '',
                        'Table of Contents' => 'Innholdsfortegnelse',
+                       'Table of contents' => '',
+                       'The node you are looking for is at %{href}.' => '',
+                       'This' => '',
                        'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
                        'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
                        'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => '',
                        'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
                        'Top' => '',
                        'Untitled Document' => '',
-                       'about (help)' => '',
-                       'beginning of this chapter or previous chapter' => '',
+                       'Up' => '',
+                       'Up node' => '',
+                       'Up section' => '',
                        'by @emph{%{user}}' => '',
                        'by @emph{%{user}} on @emph{%{date}}' => '',
-                       'cover (top) of document' => '',
                        'current' => '',
-                       'current section' => '',
-                       'first section in reading order' => '',
-                       'following node' => '',
-                       'index' => '',
-                       'last section in reading order' => '',
-                       'next chapter' => '',
-                       'next node' => '',
-                       'next section in reading order' => '',
-                       'next section on same level' => '',
-                       'node following in node reading order' => '',
-                       'node up' => '',
                        'on @emph{%{date}}' => '',
-                       'previous node' => '',
-                       'previous section in reading order' => '',
-                       'previous section on same level' => '',
                        'section `%{section}\' in @cite{%{book}}' => '',
                        'see %{node_file_href}' => '',
                        'see %{node_file_href} @cite{%{book}}' => '',
@@ -579,11 +937,7 @@
                        'see @cite{%{book}}' => '',
                        'see section %{reference_name}' => '',
                        'see section `%{section}\' in @cite{%{book}}' => '',
-                       'short table of contents' => '',
-                       'table of contents' => '',
-                       'unknown' => '',
-                       'up node' => '',
-                       'up section' => ''
+                       'unknown' => ''
                      };
 
 $T2H_OBSOLETE_STRINGS->{'no'} = {
@@ -594,226 +948,298 @@
 
 
 $LANGUAGES->{'pt'} = {
-                       '  The buttons in the navigation panels have the following meaning:' => '',
-                       '  where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:' => '',
-                       ' Up ' => '',
+                       '  The buttons in the navigation panels have the following meaning:' => '  Os bot@~oes nos pain@\'eis de navega@,{c}@~ao possuem os seguintes significados:',
+                       '  where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:' => '  onde o @strong{ Exemplo } assume que a posi@,{c}@~ao atual localiza-se em @strong{ Subsub@,{c}@~ao Um-Dois-Tr@^es } de um documento com a seguinte estrutura:',
+                       ' Up ' => ' Acima ',
                        '%{acronym_like} (%{explanation})' => '',
-                       '%{month}, %{day} %{year}' => '',
-                       '%{name} of %{class}' => '',
-                       '%{name} on %{class}' => '',
+                       '%{month}, %{day} %{year}' => '%{day} de %{month} de %{year}',
+                       '%{name} of %{class}' => '%{name} da %{class}',
+                       '%{name} on %{class}' => '%{name} na %{class}',
                        '%{node_file_href}' => '',
                        '%{node_file_href} @cite{%{book}}' => '',
-                       '%{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+                       '%{node_file_href} section `%{section}\' in @cite{%{book}}' => '%{node_file_href} se@,{c}@~ao `%{section}\' em @cite{%{book}}',
                        '%{reference_name}' => '',
                        '%{style} %{number}' => '',
                        '%{style}: %{caption_first_line}' => '',
                        '%{style}: %{shortcaption_first_line}' => '',
                        '@b{%{quotation_arg}:} ' => '',
                        '@cite{%{book}}' => '',
-                       'About This Document' => '',
+                       'About' => 'Sobre',
+                       'About (help)' => 'Sobre (ajuda)',
+                       'About This Document' => 'Sobre Esse Documento',
                        'April' => 'Abril',
                        'August' => 'Agosto',
-                       'Button' => '',
-                       'Contents' => '',
-                       'Current Position' => '',
+                       'Back' => 'Volta',
+                       'Beginning of this chapter or previous chapter' => 'Come@,{c}o desse cap@\'itulo ou cap@\'itulo anterior',
+                       'Button' => 'Bot@~ao',
+                       'Contents' => 'Conte@\'udo',
+                       'Cover (top) of document' => 'In@\'icio (topo) do documento',
+                       'Current Position' => 'Posi@,{c}@~ao Atual',
+                       'Current section' => 'Se@,{c}@~ao atual',
                        'December' => 'Dezembro',
+                       'FastBack' => 'Voltar R@\'apido',
+                       'FastForward' => 'Avan@,{c}ar R@\'apido',
                        'February' => 'Fevereiro',
-                       'Footnotes' => '',
-                       'From 1.2.3 go to' => '',
-                       'Go to' => '',
+                       'First' => 'Primeiro',
+                       'First section in reading order' => 'Primeira se@,{c}@~ao na ordem de leitura',
+                       'Following' => 'Seguinte',
+                       'Following node' => 'Nodo seguinte',
+                       'Footnotes' => 'Notas de Rodap@\'e',
+                       'Forward' => 'Avan@,{c}ar',
+                       'From 1.2.3 go to' => 'De 1.2.3 v@\'a para',
+                       'Go to' => 'V@\'a para',
                        'Index' => '@\'Indice',
-                       'Index Entry' => '',
+                       'Index Entry' => 'Entrada de @\'Indice',
                        'January' => 'Janeiro',
                        'July' => 'Julho',
-                       'Jump to' => '',
+                       'Jump to' => 'Pular para',
                        'June' => 'Junho',
+                       'Last' => '@\'Ultimo',
+                       'Last section in reading order' => '@\'Ultima se@,{c}@~ao na ordem de leitura',
                        'March' => 'Mar@,{c}o',
                        'May' => 'Maio',
                        'Menu:' => '',
-                       'Name' => '',
-                       'Next' => '',
+                       'Name' => 'Nome',
+                       'Next' => 'Pr@\'oximo',
+                       'Next chapter' => 'Pr@\'oximo cap@\'itulo',
+                       'Next node' => 'Pr@\'oximo nodo',
+                       'Next section in reading order' => 'Pr@\'oxima se@,{c}@~ao na ordem de leitura',
+                       'Next section on same level' => 'Pr@\'oxima se@,{c}@~ao no mesmo n@\'ivel',
+                       'Node following in node reading order' => 'Nodo seguinte na ordem de leitura de nodos',
+                       'Node up' => 'Nodo acima',
+                       'NodeNext' => 'Pr@\'oximo Nodo',
+                       'NodePrev' => 'Nodo Anterior',
+                       'NodeUp' => 'Nodo Acima',
                        'November' => 'Novembro',
                        'October' => 'Outubro',
-                       'Overview' => '',
-                       'Overview:' => '',
-                       'Prev' => '',
-                       'Section' => '',
-                       'Section One' => '',
-                       'See %{node_file_href}' => '',
-                       'See %{node_file_href} @cite{%{book}}' => '',
-                       'See %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
-                       'See %{reference_name}' => '',
-                       'See @cite{%{book}}' => '',
-                       'See section %{reference_name}' => '',
-                       'See section `%{section}\' in @cite{%{book}}' => '',
+                       'Overview' => 'Vis@~ao geral',
+                       'Overview:' => 'Vis@~ao geral:',
+                       'Prev' => 'Pr@\'evio',
+                       'Previous node' => 'Nodo anterior',
+                       'Previous section in reading order' => 'Se@,{c}@~ao anterior na ordem de leitura',
+                       'Previous section on same level' => 'Se@,{c}@~ao anterior no mesmo n@\'ivel',
+                       'Section' => 'Se@,{c}@~ao',
+                       'Section One' => 'Se@,{c}@~ao Um',
+                       'See %{node_file_href}' => 'Veja %{node_file_href}',
+                       'See %{node_file_href} @cite{%{book}}' => 'Veja %{node_file_href} @cite{%{book}}',
+                       'See %{node_file_href} section `%{section}\' in @cite{%{book}}' => 'Veja %{node_file_href} se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+                       'See %{reference_name}' => 'Veja %{reference_name}',
+                       'See @cite{%{book}}' => 'Veja @cite{%{book}}',
+                       'See section %{reference_name}' => 'Veja se@,{c}@~ao %{reference_name}',
+                       'See section `%{section}\' in @cite{%{book}}' => 'Veja se@,{c}@~ao `%{section}\' em @cite{%{book}}',
                        'September' => 'Setembro',
                        'Short Table of Contents' => 'Breve Sum@\'ario',
-                       'Subsection One-Four' => '',
-                       'Subsection One-One' => '',
-                       'Subsection One-Three' => '',
-                       'Subsection One-Two' => '',
-                       'Subsubsection One-Two-Four' => '',
-                       'Subsubsection One-Two-One' => '',
-                       'Subsubsection One-Two-Three' => '',
-                       'Subsubsection One-Two-Two' => '',
+                       'Short table of contents' => 'Breve sum@\'ario',
+                       'Subsection One-Four' => 'Subse@,{c}@~ao Um-Quatro',
+                       'Subsection One-One' => 'Subse@,{c}@~ao Um-Um',
+                       'Subsection One-Three' => 'Subse@,{c}@~ao Um-Tr@^es',
+                       'Subsection One-Two' => 'Subse@,{c}@~ao Um-Dois',
+                       'Subsubsection One-Two-Four' => 'Subse@,{c}@~ao Um-Dois-Quatro',
+                       'Subsubsection One-Two-One' => 'Subse@,{c}@~ao Um-Dois-Um',
+                       'Subsubsection One-Two-Three' => 'Subse@,{c}@~ao Um-Dois-Tr@^es',
+                       'Subsubsection One-Two-Two' => 'Subse@,{c}@~ao Um-Dois-Dois',
                        'T2H_today' => '',
                        'Table of Contents' => 'Sum@\'ario',
-                       'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
-                       'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
-                       'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => '',
-                       'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
-                       'Top' => '',
-                       'Untitled Document' => '',
-                       'about (help)' => '',
-                       'beginning of this chapter or previous chapter' => '',
-                       'by @emph{%{user}}' => '',
-                       'by @emph{%{user}} on @emph{%{date}}' => '',
-                       'cover (top) of document' => '',
-                       'current' => '',
-                       'current section' => '',
-                       'first section in reading order' => '',
-                       'following node' => '',
-                       'index' => '',
-                       'last section in reading order' => '',
-                       'next chapter' => '',
-                       'next node' => '',
-                       'next section in reading order' => '',
-                       'next section on same level' => '',
-                       'node following in node reading order' => '',
-                       'node up' => '',
-                       'on @emph{%{date}}' => '',
-                       'previous node' => '',
-                       'previous section in reading order' => '',
-                       'previous section on same level' => '',
-                       'section `%{section}\' in @cite{%{book}}' => '',
-                       'see %{node_file_href}' => '',
-                       'see %{node_file_href} @cite{%{book}}' => '',
-                       'see %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
-                       'see %{reference_name}' => '',
-                       'see @cite{%{book}}' => '',
-                       'see section %{reference_name}' => '',
-                       'see section `%{section}\' in @cite{%{book}}' => '',
-                       'short table of contents' => '',
-                       'table of contents' => '',
-                       'unknown' => '',
-                       'up node' => '',
-                       'up section' => ''
+                       'Table of contents' => 'Sum@\'ario',
+                       'The node you are looking for is at %{href}.' => 'O nodo que vo@^e est@\'a olhando est@\'a em %{href}.',
+                       'This' => 'Esse',
+                       'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Esse documento foi gereado por @emph{%{user}} em @emph{%{date}} usando @uref{%{program_homepage}, @emph{%{program}}}.',
+                       'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Esse documento foi gerado por @emph{%{user}} usando @uref{%{program_homepage}, @emph{%{program}}}.',
+                       'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => 'Esse documento foi gerado em @i{%{date}} usando @uref{%{program_homepage}, @i{%{program}}}.',
+                       'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Esse documento foi gerado usando @uref{%{program_homepage}, @emph{%{program}}}.',
+                       'Top' => 'Topo',
+                       'Untitled Document' => 'Documento Sem Nome',
+                       'Up' => 'Acima',
+                       'Up node' => 'Nodo acima',
+                       'Up section' => 'Se@,{c}@~ao acima',
+                       'by @emph{%{user}}' => 'por  @emph{%{user}}',
+                       'by @emph{%{user}} on @emph{%{date}}' => 'por @emph{%{user}} em @emph{%{date}}',
+                       'current' => 'atual',
+                       'on @emph{%{date}}' => 'em @emph{%{date}}',
+                       'section `%{section}\' in @cite{%{book}}' => 'se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+                       'see %{node_file_href}' => 'veja %{node_file_href}',
+                       'see %{node_file_href} @cite{%{book}}' => 'veja %{node_file_href} @cite{%{book}}',
+                       'see %{node_file_href} section `%{section}\' in @cite{%{book}}' => 'veja %{node_file_href} se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+                       'see %{reference_name}' => 'veja %{reference_name}',
+                       'see @cite{%{book}}' => 'veja @cite{%{book}}',
+                       'see section %{reference_name}' => 'veja se@,{c}@~ao %{reference_name}',
+                       'see section `%{section}\' in @cite{%{book}}' => 'veja se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+                       'unknown' => 'desconhecido'
                      };
 
 $T2H_OBSOLETE_STRINGS->{'pt'} = {
                                   'See' => 'Veja',
+                                  'about (help)' => 'sobre (ajuda)',
+                                  'beginning of this chapter or previous chapter' => 'come@,{c}o desse cap@\'itulo ou cap@\'itulo anterior',
+                                  'cover (top) of document' => 'in@\'icio (topo) do documento',
+                                  'current section' => 'se@,{c}@~ao atual',
+                                  'first section in reading order' => 'primeira se@,{c}@~ao na ordem de leitura',
+                                  'following node' => 'nodo seguinte',
+                                  'index' => '@\'indice',
+                                  'last section in reading order' => '@\'ultima se@,{c}@~ao na ordem de leitura',
+                                  'next chapter' => 'pr@\'oximo cap@\'itulo',
+                                  'next node' => 'pr@\'oximo nodo',
+                                  'next section in reading order' => 'pr@\'oxima se@,{c}@~ao na ordem de leitura',
+                                  'next section on same level' => 'pr@\'oxima se@,{c}@~ao no mesmo n@\'ivel',
+                                  'node following in node reading order' => 'nodo seguinte na ordem de leitura de nodos',
+                                  'node up' => 'nodo acima',
+                                  'previous node' => 'nodo anterior',
+                                  'previous section in reading order' => 'se@,{c}@~ao anterior na ordem de leitura',
+                                  'previous section on same level' => 'se@,{c}@~ao anterior no mesmo n@\'ivel',
                                   'section' => 'Se@,{c}@~ao',
-                                  'see' => 'veja'
+                                  'see' => 'veja',
+                                  'short table of contents' => 'breve sum@\'ario',
+                                  'table of contents' => 'sum@\'ario',
+                                  'up node' => 'nodo acima',
+                                  'up section' => 'se@,{c}@~ao acima'
                                 };
 
 
-$LANGUAGES->{'en'} = {
-                       '  The buttons in the navigation panels have the following meaning:' => '',
-                       '  where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:' => '',
-                       ' Up ' => '',
-                       '%{acronym_like} (%{explanation})' => '',
-                       '%{month}, %{day} %{year}' => '',
-                       '%{name} of %{class}' => '',
-                       '%{name} on %{class}' => '',
-                       '%{node_file_href}' => '',
-                       '%{node_file_href} @cite{%{book}}' => '',
-                       '%{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
-                       '%{reference_name}' => '',
-                       '%{style} %{number}' => '',
-                       '%{style}: %{caption_first_line}' => '',
-                       '%{style}: %{shortcaption_first_line}' => '',
-                       '@b{%{quotation_arg}:} ' => '',
-                       '@cite{%{book}}' => '',
-                       'About This Document' => '',
-                       'April' => '',
-                       'August' => '',
-                       'Button' => '',
-                       'Contents' => '',
-                       'Current Position' => '',
-                       'December' => '',
-                       'February' => '',
-                       'Footnotes' => '',
-                       'From 1.2.3 go to' => '',
-                       'Go to' => '',
-                       'Index' => '',
-                       'Index Entry' => '',
-                       'January' => '',
-                       'July' => '',
-                       'Jump to' => '',
-                       'June' => '',
-                       'March' => '',
-                       'May' => '',
-                       'Menu:' => '',
-                       'Name' => '',
-                       'Next' => '',
-                       'November' => '',
-                       'October' => '',
-                       'Overview' => '',
-                       'Overview:' => '',
-                       'Prev' => '',
-                       'Section' => '',
-                       'Section One' => '',
-                       'See %{node_file_href}' => '',
-                       'See %{node_file_href} @cite{%{book}}' => '',
-                       'See %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
-                       'See %{reference_name}' => '',
-                       'See @cite{%{book}}' => '',
-                       'See section %{reference_name}' => '',
-                       'See section `%{section}\' in @cite{%{book}}' => '',
-                       'September' => '',
-                       'Short Table of Contents' => '',
-                       'Subsection One-Four' => '',
-                       'Subsection One-One' => '',
-                       'Subsection One-Three' => '',
-                       'Subsection One-Two' => '',
-                       'Subsubsection One-Two-Four' => '',
-                       'Subsubsection One-Two-One' => '',
-                       'Subsubsection One-Two-Three' => '',
-                       'Subsubsection One-Two-Two' => '',
-                       'T2H_today' => '%s, %d %d',
-                       'Table of Contents' => '',
-                       'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
-                       'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
-                       'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => '',
-                       'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
-                       'Top' => '',
-                       'Untitled Document' => '',
-                       'about (help)' => '',
-                       'beginning of this chapter or previous chapter' => '',
-                       'by @emph{%{user}}' => '',
-                       'by @emph{%{user}} on @emph{%{date}}' => '',
-                       'cover (top) of document' => '',
-                       'current' => '',
-                       'current section' => '',
-                       'first section in reading order' => '',
-                       'following node' => '',
-                       'index' => '',
-                       'last section in reading order' => '',
-                       'next chapter' => '',
-                       'next node' => '',
-                       'next section in reading order' => '',
-                       'next section on same level' => '',
-                       'node following in node reading order' => '',
-                       'node up' => '',
-                       'on @emph{%{date}}' => '',
-                       'previous node' => '',
-                       'previous section in reading order' => '',
-                       'previous section on same level' => '',
-                       'section `%{section}\' in @cite{%{book}}' => '',
-                       'see %{node_file_href}' => '',
-                       'see %{node_file_href} @cite{%{book}}' => '',
-                       'see %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
-                       'see %{reference_name}' => '',
-                       'see @cite{%{book}}' => '',
-                       'see section %{reference_name}' => '',
-                       'see section `%{section}\' in @cite{%{book}}' => '',
-                       'short table of contents' => '',
-                       'table of contents' => '',
-                       'unknown' => '',
-                       'up node' => '',
-                       'up section' => ''
-                     };
-
-$T2H_OBSOLETE_STRINGS->{'en'} = {};
+$LANGUAGES->{'pt_BR'} = {
+                          '  The buttons in the navigation panels have the following meaning:' => '  Os bot@~oes nos pain@\'eis de navega@,{c}@~ao possuem os seguintes significados:',
+                          '  where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:' => '  onde o @strong{ Exemplo } assume que a posi@,{c}@~ao atual localiza-se em @strong{ Subsub@,{c}@~ao Um-Dois-Tr@^es } de um documento com a seguinte estrutura:',
+                          ' Up ' => ' Acima ',
+                          '%{acronym_like} (%{explanation})' => '',
+                          '%{month}, %{day} %{year}' => '%{day} de %{month} de %{year}',
+                          '%{name} of %{class}' => '%{name} da %{class}',
+                          '%{name} on %{class}' => '%{name} na %{class}',
+                          '%{node_file_href}' => '',
+                          '%{node_file_href} @cite{%{book}}' => '',
+                          '%{node_file_href} section `%{section}\' in @cite{%{book}}' => '%{node_file_href} se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+                          '%{reference_name}' => '',
+                          '%{style} %{number}' => '',
+                          '%{style}: %{caption_first_line}' => '',
+                          '%{style}: %{shortcaption_first_line}' => '',
+                          '@b{%{quotation_arg}:} ' => '',
+                          '@cite{%{book}}' => '',
+                          'About' => 'Sobre',
+                          'About (help)' => 'Sobre (ajuda)',
+                          'About This Document' => 'Sobre Esse Documento',
+                          'April' => 'Abril',
+                          'August' => 'Agosto',
+                          'Back' => 'Volta',
+                          'Beginning of this chapter or previous chapter' => 'Come@,{c}o desse cap@\'itulo ou cap@\'itulo anterior',
+                          'Button' => 'Bot@~ao',
+                          'Contents' => 'Conte@\'udo',
+                          'Cover (top) of document' => 'In@\'icio (topo) do documento',
+                          'Current Position' => 'Posi@,{c}@~ao Atual',
+                          'Current section' => 'Se@,{c}@~ao atual',
+                          'December' => 'Dezembro',
+                          'FastBack' => 'Voltar R@\'apido',
+                          'FastForward' => 'Avan@,{c}ar R@\'apido',
+                          'February' => 'Fevereiro',
+                          'First' => 'Primeiro',
+                          'First section in reading order' => 'Primeira se@,{c}@~ao na ordem de leitura',
+                          'Following' => 'Seguinte',
+                          'Following node' => 'Nodo seguinte',
+                          'Footnotes' => 'Notas de Rodap@\'e',
+                          'Forward' => 'Avan@,{c}ar',
+                          'From 1.2.3 go to' => 'De 1.2.3 v@\'a para',
+                          'Go to' => 'V@\'a para',
+                          'Index' => '@\'Indice',
+                          'Index Entry' => 'Entrada de @\'Indice',
+                          'January' => 'Janeiro',
+                          'July' => 'Julho',
+                          'Jump to' => 'Pular para',
+                          'June' => 'Junho',
+                          'Last' => '@\'Ultimo',
+                          'Last section in reading order' => '@\'Ultima se@,{c}@~ao na ordem de leitura',
+                          'March' => 'Mar@,{c}o',
+                          'May' => 'Maio',
+                          'Menu:' => '',
+                          'Name' => 'Nome',
+                          'Next' => 'Pr@\'oximo',
+                          'Next chapter' => 'Pr@\'oximo cap@\'itulo',
+                          'Next node' => 'Pr@\'oximo nodo',
+                          'Next section in reading order' => 'Pr@\'oxima se@,{c}@~ao na ordem de leitura',
+                          'Next section on same level' => 'Pr@\'oxima se@,{c}@~ao no mesmo n@\'ivel',
+                          'Node following in node reading order' => 'Nodo seguinte na ordem de leitura de nodos',
+                          'Node up' => 'Nodo acima',
+                          'NodeNext' => 'Pr@\'oximo Nodo',
+                          'NodePrev' => 'Nodo Anterior',
+                          'NodeUp' => 'Nodo Acima',
+                          'November' => 'Novembro',
+                          'October' => 'Outubro',
+                          'Overview' => 'Vis@~ao geral',
+                          'Overview:' => 'Vis@~ao geral:',
+                          'Prev' => 'Pr@\'evio',
+                          'Previous node' => 'Nodo anterior',
+                          'Previous section in reading order' => 'Se@,{c}@~ao anterior na ordem de leitura',
+                          'Previous section on same level' => 'Se@,{c}@~ao anterior no mesmo n@\'ivel',
+                          'Section' => 'Se@,{c}@~ao',
+                          'Section One' => 'Se@,{c}@~ao Um',
+                          'See %{node_file_href}' => 'Veja %{node_file_href}',
+                          'See %{node_file_href} @cite{%{book}}' => 'Veja %{node_file_href} @cite{%{book}}',
+                          'See %{node_file_href} section `%{section}\' in @cite{%{book}}' => 'Veja %{node_file_href} se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+                          'See %{reference_name}' => 'Veja %{reference_name}',
+                          'See @cite{%{book}}' => 'Veja @cite{%{book}}',
+                          'See section %{reference_name}' => 'Veja se@,{c}@~ao %{reference_name}',
+                          'See section `%{section}\' in @cite{%{book}}' => 'Veja se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+                          'September' => 'Setembro',
+                          'Short Table of Contents' => 'Breve Sum@\'ario',
+                          'Short table of contents' => 'Breve sum@\'ario',
+                          'Subsection One-Four' => 'Subse@,{c}@~ao Um-Quatro',
+                          'Subsection One-One' => 'Subse@,{c}@~ao Um-Um',
+                          'Subsection One-Three' => 'Subse@,{c}@~ao Um-Tr@^es',
+                          'Subsection One-Two' => 'Subse@,{c}@~ao Um-Dois',
+                          'Subsubsection One-Two-Four' => 'Subse@,{c}@~ao Um-Dois-Quatro',
+                          'Subsubsection One-Two-One' => 'Subse@,{c}@~ao Um-Dois-Um',
+                          'Subsubsection One-Two-Three' => 'Subse@,{c}@~ao Um-Dois-Tr@^es',
+                          'Subsubsection One-Two-Two' => 'Subse@,{c}@~ao Um-Dois-Dois',
+                          'T2H_today' => '',
+                          'Table of Contents' => 'Sum@\'ario',
+                          'Table of contents' => 'Sum@\'ario',
+                          'The node you are looking for is at %{href}.' => 'O nodo que vo@^e est@\'a olhando est@\'a em %{href}.',
+                          'This' => 'Esse',
+                          'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Esse documento foi gereado por @emph{%{user}} em @emph{%{date}} usando @uref{%{program_homepage}, @emph{%{program}}}.',
+                          'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Esse documento foi gerado por @emph{%{user}} usando @uref{%{program_homepage}, @emph{%{program}}}.',
+                          'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => 'Esse documento foi gerado em @i{%{date}} usando @uref{%{program_homepage}, @i{%{program}}}.',
+                          'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Esse documento foi gerado usando @uref{%{program_homepage}, @emph{%{program}}}.',
+                          'Top' => 'Topo',
+                          'Untitled Document' => 'Documento Sem Nome',
+                          'Up' => 'Acima',
+                          'Up node' => 'Nodo acima',
+                          'Up section' => 'Se@,{c}@~ao acima',
+                          'by @emph{%{user}}' => 'por  @emph{%{user}}',
+                          'by @emph{%{user}} on @emph{%{date}}' => 'por @emph{%{user}} em @emph{%{date}}',
+                          'current' => 'atual',
+                          'on @emph{%{date}}' => 'em @emph{%{date}}',
+                          'section `%{section}\' in @cite{%{book}}' => 'se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+                          'see %{node_file_href}' => 'veja %{node_file_href}',
+                          'see %{node_file_href} @cite{%{book}}' => 'veja %{node_file_href} @cite{%{book}}',
+                          'see %{node_file_href} section `%{section}\' in @cite{%{book}}' => 'veja %{node_file_href} se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+                          'see %{reference_name}' => 'veja %{reference_name}',
+                          'see @cite{%{book}}' => 'veja @cite{%{book}}',
+                          'see section %{reference_name}' => 'veja se@,{c}@~ao %{reference_name}',
+                          'see section `%{section}\' in @cite{%{book}}' => 'veja se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+                          'unknown' => 'desconhecido'
+                        };
+
+$T2H_OBSOLETE_STRINGS->{'pt_BR'} = {
+                                     'See' => 'Veja',
+                                     'about (help)' => 'sobre (ajuda)',
+                                     'beginning of this chapter or previous chapter' => 'come@,{c}o desse cap@\'itulo ou cap@\'itulo anterior',
+                                     'cover (top) of document' => 'in@\'icio (topo) do documento',
+                                     'current section' => 'se@,{c}@~ao atual',
+                                     'first section in reading order' => 'primeira se@,{c}@~ao na ordem de leitura',
+                                     'following node' => 'nodo seguinte',
+                                     'index' => '@\'indice',
+                                     'last section in reading order' => '@\'ultima se@,{c}@~ao na ordem de leitura',
+                                     'next chapter' => 'pr@\'oximo cap@\'itulo',
+                                     'next node' => 'pr@\'oximo nodo',
+                                     'next section in reading order' => 'pr@\'oxima se@,{c}@~ao na ordem de leitura',
+                                     'next section on same level' => 'pr@\'oxima se@,{c}@~ao no mesmo n@\'ivel',
+                                     'node following in node reading order' => 'nodo seguinte na ordem de leitura de nodos',
+                                     'node up' => 'nodo acima',
+                                     'previous node' => 'nodo anterior',
+                                     'previous section in reading order' => 'se@,{c}@~ao anterior na ordem de leitura',
+                                     'previous section on same level' => 'se@,{c}@~ao anterior no mesmo n@\'ivel',
+                                     'section' => 'Se@,{c}@~ao',
+                                     'see' => 'veja',
+                                     'short table of contents' => 'breve sum@\'ario',
+                                     'table of contents' => 'sum@\'ario',
+                                     'up node' => 'nodo acima',
+                                     'up section' => 'se@,{c}@~ao acima'
+                                   };
 
 
--- tetex-src-3.0/utils/texi2html/texi2html.init.texi176	2005-02-01 22:38:28.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/texi2html.init	2007-06-03 02:26:07.000000000 +0200
@@ -12,7 +12,7 @@
 # Afterwards, load the file with command-line 
 # option -init-file <your_init_file>
 #
-# $Id: texi2html.init,v 1.81 2005/02/01 21:20:28 pertusus Exp $
+# $Id: texi2html.init,v 1.116 2007/05/07 22:56:02 pertusus Exp $
 
 ######################################################################
 # The following variables can also be set by command-line options
@@ -89,6 +89,10 @@
 # args are prepended to this list.
 @PREPEND_DIRS = ();
 
+# --conf-dir
+# append to the files searched for init files.
+@CONF_DIRS = ();
+
 # -top-file
 # This file name is used for the top-level file.
 # The extension is set appropriately, if necessary.
@@ -204,11 +208,13 @@
 $VERBOSE = '';
 
 # -lang
-# FIXME this has changed
-# For page titles use $Texi2HTML::I18n::WORDS->{$T2H_LANG}->{...} as title.
-# To add a new language, supply list of titles (see $Texi2HTML::I18n::WORDS).
-# and use ISO 639 language codes (see e.g. perl module Locale-Codes-1.02
-# for  definitions).
+# use &$I('my string') if you want to have translations of 'my string'
+# and provide the translations in $LANGUAGES->{$LANG} with 'my string'
+# as key.
+# To add a new language use ISO 639 language codes (see e.g. perl module 
+# Locale-Codes-1.02 for  definitions). Supply translations in the 
+# $LANGUAGES hash and put it in a file with $LANG as name in an i18n 
+# directory. 
 # Default's to 'en' if not set or no @documentlanguage is specified.
 $LANG = 'en';
 
@@ -268,15 +274,26 @@
 
 # If true do table of contents even if there is no @content
 $DO_CONTENTS = 0;
+
 # If true do short table of contents even if there is no @shortcontent
 $DO_SCONTENTS = 0;
 
+# if set, output the contents where the command is located
+$INLINE_CONTENTS = 0;
+
+# if this variable is true, numeric entities are used when there is no
+# corresponding textual entity.
+$USE_NUMERIC_ENTITY = 1;
+
 # if set, then use node names in menu entries, instead of section names
 $NODE_NAME_IN_MENU = 0;
 
 # new style for crossrefs
 $NEW_CROSSREF_STYLE = 1;
 
+# transliterate node names for external refs (and internal if NODE_FILES)
+$TRANSLITERATE_NODE = 1;
+
 # if set and menu entry equals menu description, then do not print 
 # menu description.
 # Likewise, if node name equals entry name, do not print entry name.
@@ -284,6 +301,7 @@
 
 # if set, center @image by default
 # otherwise, do not center by default
+# Deprecated and not used anymore
 $CENTER_IMAGE = 1;
 
 # used as identation for block enclosing command @example, etc
@@ -320,6 +338,8 @@
 $MENU_SYMBOL = '&bull;';
 #$MENU_SYMBOL = '*';
 
+$SIMPLE_MENU = 0;
+
 $OPEN_QUOTE_SYMBOL = "\`";
 $CLOSE_QUOTE_SYMBOL = "'";
 
@@ -335,6 +355,9 @@
 # file name used for Top node when NODE_FILES is true
 $TOP_NODE_FILE = "index";
 
+# node name used for Top node when automatic node directions are used
+$TOP_NODE_UP = '(dir)';
+
 # this controls the pre style for menus
 $MENU_PRE_STYLE = 'font-family: serif';
 
@@ -352,6 +375,7 @@
 
 # if set (e.g., to index.html) replace hrefs to this file
 # (i.e., to index.html) by ./
+# Obsolete. Worked around a bug that is fixed now.
 $HREF_DIR_INSTEAD_FILE = '';
 
 # text inserted after <body ...>
@@ -376,6 +400,9 @@
 # html version for latex2html
 $L2H_HTML_VERSION = "4.0";
 
+# use the information given by menus to complete the node directions
+$USE_MENU_DIRECTIONS = 1;
+
 # specify in this array which "buttons" should appear in which order
 # in the navigation panel for sections; use ' ' for empty buttons (space)
 @SECTION_BUTTONS =
@@ -463,6 +490,7 @@
      'Last',        '',
     );
 
+@IMAGE_EXTENSIONS = ('png','jpg','jpeg','gif');
 
 $init_out    = \&t2h_default_init_out;
 $finish_out    = \&t2h_default_finish_out;
@@ -472,6 +500,7 @@
 sub t2h_default_init_out()
 {
 # Names of text as alternative for icons
+# FIXME maybe get those in simple_format?
     %NAVIGATION_TEXT =
     (
      'Top',         &$I('Top'),
@@ -485,10 +514,10 @@
      'Prev',        &$I('Prev'),
      'Up',          &$I(' Up '),
      'Next',        &$I('Next'),
-     'NodeUp',      &$I('node up'),
-     'NodeNext',    &$I('next node'),
-     'NodePrev',    &$I('previous node'),
-     'Following',   &$I('following node'),
+     'NodeUp',      &$I('Node up'),
+     'NodeNext',    &$I('Next node'),
+     'NodePrev',    &$I('Previous node'),
+     'Following',   &$I('Following node'),
      'Forward',     ' &gt; ',
      'FastForward', ' &gt;&gt; ',
      'About',       ' ? ',
@@ -498,26 +527,51 @@
 
     %BUTTONS_GOTO =
     (
-     'Top',         &$I('cover (top) of document'),
-     'Contents',    &$I('table of contents'),
-     'Overview',    &$I('short table of contents'),
-     'Index',       &$I('index'),
-     'This',        &$I('current section'),
-     'Back',        &$I('previous section in reading order'),
-     'FastBack',    &$I('beginning of this chapter or previous chapter'),
-     'Prev',        &$I('previous section on same level'),
-     'Up',          &$I('up section'),
-     'Next',        &$I('next section on same level'),
-     'NodeUp',      &$I('up node'),
-     'NodeNext',    &$I('next node'),
-     'NodePrev',    &$I('previous node'),
-     'Following',   &$I('node following in node reading order'),
-     'Forward',     &$I('next section in reading order'),
-     'FastForward', &$I('next chapter'),
-     'About' ,      &$I('about (help)'),
-     'First',       &$I('first section in reading order'),
-     'Last',        &$I('last section in reading order'),
+     'Top',         &$I('Cover (top) of document'),
+     'Contents',    &$I('Table of contents'),
+     'Overview',    &$I('Short table of contents'),
+     'Index',       &$I('Index'),
+     'This',        &$I('Current section'),
+     'Back',        &$I('Previous section in reading order'),
+     'FastBack',    &$I('Beginning of this chapter or previous chapter'),
+     'Prev',        &$I('Previous section on same level'),
+     'Up',          &$I('Up section'),
+     'Next',        &$I('Next section on same level'),
+     'NodeUp',      &$I('Up node'),
+     'NodeNext',    &$I('Next node'),
+     'NodePrev',    &$I('Previous node'),
+     'Following',   &$I('Node following in node reading order'),
+     'Forward',     &$I('Next section in reading order'),
+     'FastForward', &$I('Next chapter'),
+     'About' ,      &$I('About (help)'),
+     'First',       &$I('First section in reading order'),
+     'Last',        &$I('Last section in reading order'),
     );
+
+    %BUTTONS_NAME =
+    (
+     'Top',         &$I('Top'),
+     'Contents',    &$I('Contents'),
+     'Overview',    &$I('Overview'),
+     'Index',       &$I('Index'),
+     ' ',           ' ',
+     'This',        &$I('This'),
+     'Back',        &$I('Back'),
+     'FastBack',    &$I('FastBack'),
+     'Prev',        &$I('Prev'),
+     'Up',          &$I('Up'),
+     'Next',        &$I('Next'),
+     'NodeUp',      &$I('NodeUp'),
+     'NodeNext',    &$I('NodeNext'),
+     'NodePrev',    &$I('NodePrev'),
+     'Following',   &$I('Following'),
+     'Forward',     &$I('Forward'),
+     'FastForward', &$I('FastForward'),
+     'About',       &$I('About'),
+     'First',       &$I('First'),
+     'Last',        &$I('Last')
+    );
+
     # Set the default body text, inserted between <body ... >
     $BODYTEXT = 'lang="' . $LANG . '" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"' unless (defined($BODYTEXT));
     if (!defined($EXTERNAL_CROSSREF_SPLIT))
@@ -531,30 +585,75 @@
             $EXTERNAL_CROSSREF_SPLIT = 0;
         }
     }
-    $ENCODING = $DOCUMENT_ENCODING if (!defined($ENCODING));
-    my $to_encoding;
-    if (defined($ENCODING))
+
+    $ENCODING_NAME = $ENCODING if (!defined($ENCODING_NAME) and 
+         defined($ENCODING));
+
+    if (!defined($OUT_ENCODING) and (defined($ENCODING_NAME)))
     {
-        $to_encoding = main::set_encoding ($ENCODING);
-        
-        if (defined($to_encoding) and defined($perl_charset_to_html{$to_encoding}))
-        {# FIXME is this really right ?
-             $ENCODING = $perl_charset_to_html{$to_encoding};
-        }
-        elsif (defined($to_encoding))
-        {# FIXME is this really right ?
-             $ENCODING = $to_encoding;
-        }
+        $OUT_ENCODING = main::encoding_alias ($ENCODING_NAME);
+        $OUT_ENCODING = $ENCODING_NAME if (!defined($OUT_ENCODING));
     }
-    else
+    if (!defined($OUT_ENCODING) and (defined($IN_ENCODING)))
+    {
+        $OUT_ENCODING = $IN_ENCODING;
+    }
+    if (!defined($OUT_ENCODING) and (defined($DOCUMENT_ENCODING)))
+    {
+        $OUT_ENCODING = main::encoding_alias ($DOCUMENT_ENCODING);
+        $OUT_ENCODING = $DOCUMENT_ENCODING if (!defined($OUT_ENCODING));
+    }
+
+    if (!defined($ENCODING_NAME))
+    {
+         if (defined($OUT_ENCODING) and defined($perl_charset_to_html{$OUT_ENCODING}))
+         {
+             $ENCODING_NAME = $perl_charset_to_html{$OUT_ENCODING};
+         }
+         elsif (defined($IN_ENCODING) and defined($perl_charset_to_html{$IN_ENCODING}))
+         {
+             $ENCODING_NAME = $perl_charset_to_html{$IN_ENCODING};
+         }
+         elsif (defined($DOCUMENT_ENCODING) and defined($perl_charset_to_html{$DOCUMENT_ENCODING}))
+         {
+             $ENCODING_NAME = $perl_charset_to_html{$DOCUMENT_ENCODING};
+         }
+         elsif (defined($OUT_ENCODING))
+         {
+             $ENCODING_NAME = $OUT_ENCODING;
+         }
+         elsif (defined($IN_ENCODING))
+         {
+             $ENCODING_NAME = $IN_ENCODING;
+         }
+         elsif (defined($DOCUMENT_ENCODING))
+         {
+             $ENCODING_NAME = $DOCUMENT_ENCODING;
+         }
+         elsif (defined($perl_charset_to_html{$DEFAULT_ENCODING}))
+         {
+             $ENCODING_NAME = $perl_charset_to_html{$DEFAULT_ENCODING};
+         }
+         else
+         {
+             $ENCODING_NAME = 'us-ascii';
+         }
+    }
+    my $out_encoding = $OUT_ENCODING;
+    $out_encoding = 'UNDEF' if (!defined($out_encoding));
+    my $in_encoding = $IN_ENCODING;
+    $in_encoding = 'UNDEF' if (!defined($in_encoding));
+    my $document_encoding = $DOCUMENT_ENCODING;
+    $document_encoding = 'UNDEF' if (!defined($document_encoding));
+    print STDERR "# Encodings: doc $document_encoding, in $in_encoding out $out_encoding, name $ENCODING_NAME\n" if ($VERBOSE);
+        
+    if ($SIMPLE_MENU and !defined($complex_format_map->{'menu'}))
     {
-        #$ENCODING = 'iso-8859-1';
-        $ENCODING = 'us-ascii';
+        $complex_format_map->{'menu'} = { 'begin' => q{''} , 'end' => q{''},
+           'pre_style' => "$MENU_PRE_STYLE", 'class' => 'menu-preformatted' };
     }
-    # FIXME default might be utf8 ?
-    $DOCUMENT_ENCODING = 'us-ascii' if (!defined($DOCUMENT_ENCODING));
     
-    return $to_encoding;
+    return $OUT_ENCODING;
 };
 
 sub t2h_default_finish_out()
@@ -569,9 +668,22 @@
 
 $BODYTEXT = undef;
 
-# Formatted document encoding. If undef set to @documentencoding. If undef and
-# there is no @documentencoding, set in init_out 
-$ENCODING = undef;
+# default used in init_out for the setting of the ENCODING_NAME variable
+$DEFAULT_ENCODING = 'utf8';
+
+# In file encoding. The @documentencoding overrides that variable.
+$DOCUMENT_ENCODING = undef;
+
+# In file encoding, understandable by perl. Set according to DOCUMENT_ENCODING 
+$IN_ENCODING = undef;
+
+# Formatted document encoding name. If undef, set in init_out based on 
+# $OUT_ENCODING or $DOCUMENT_ENCODING if they are defined
+$ENCODING_NAME = undef;
+
+# Out files encoding, understandable by perl. If undef, set in init_out
+# using $ENCODING_NAME or $IN_ENCODING if they are defined
+$OUT_ENCODING = undef;
 
 # if undef set to @documentdescription. If there is no @documentdescription,
 # set in page_head
@@ -580,6 +692,10 @@
 # if undef set 1 if SPLIT, to 0 otherwise
 $EXTERNAL_CROSSREF_SPLIT = undef;
 
+$USER = undef;
+$DATE = undef;
+
+
 ########################################################################
 # Control of Page layout:
 # You can make changes of the Page layout at two levels:
@@ -592,18 +708,18 @@
 # As a general interface, the hashes Texi2HTML::HREF, Texi2HTML::NAME, Texi2HTML::NODE, Texi2HTML::NO_TEXI, hold
 # href, html-name, node-name, name after removal of texi commands of
 # This     -- current section (resp. html page)
-# Top      -- top page FIXME: ($T2H_TOP_FILE)
-# Contents -- Table of contents
-# Overview -- Short table of contents
-# Index    -- Index page
-# About    -- page which explain "navigation buttons"
-# First    -- first node
-# Last     -- last node
+# Top      -- top element
+# Contents -- Table of contents element
+# Overview -- Short table of contents element
+# Index    -- Index page element
+# About    -- page which explain "navigation buttons" element
+# First    -- first node element
+# Last     -- last node element
 #
 # Whether or not the following hash values are set, depends on the context
 # (all values are w.r.t. 'This' section)
-# Next        -- next node of texinfo
-# Prev        -- previous node of texinfo
+# Next        -- next element of texinfo
+# Prev        -- previous element of texinfo
 # NodeUp      -- up node of texinfo
 # Following   -- following node in node reading order, taking menu into account
 # Forward     -- next node in reading order
@@ -630,6 +746,8 @@
 # $Texi2HTML::THISDOC{destination_directory}
                                  #      -- directory for the resulting files
 # $Texi2HTML::THISDOC{user}             -- user running the script
+# $Texi2HTML::THISDOC{css_import_lines} -- ref on @import lines in css files
+# $Texi2HTML::THISDOC{css_lines}        -- ref on css rules lines
 # other $Texi2HTML::THISDOC keys corresponds with texinfo commands, the value
 # being the command arg, for the following commands:
 # kbdinputstyle, paragraphindent, setchapternewpage, headings, footnotestyle,
@@ -644,7 +762,6 @@
 # $Texi2HTML::TITLEPAGE     -- lines of title page
 #
 # $Texi2HTML::THIS_ELEMENT  holds the element reference.  
-## FIXME: $T2H_TOP           -- lines of Top texinfo node
 
 #
 # There are the following subs which control the layout:
@@ -680,6 +797,7 @@
 $css_lines                 = \&T2H_DEFAULT_css_lines;
 $print_redirection_page    = \&T2H_DEFAULT_print_redirection_page;
 $node_file_name            = \&T2H_DEFAULT_node_file_name;
+$inline_contents           = \&T2H_DEFAULT_inline_contents;
 
 ########################################################################
 # Layout for html for every sections
@@ -749,7 +867,7 @@
         &$print_page_foot($fh);
     }
 }
-sub T2H_DEFAULT_print_Top
+sub T2H_DEFAULT_print_Top($$)
 {
     my $fh = shift;
     my $has_top_heading = shift;
@@ -758,9 +876,9 @@
     # my $buttons = [...];
     # as it is, 'Top', 'Contents', 'Index', 'About' are printed
     my $buttons = \@MISC_BUTTONS;
-    &$print_head_navigation($fh, $buttons);
+    &$print_head_navigation($fh, $buttons) if ($SPLIT or $SECTION_NAVIGATION);
     my $nw;
-    if ($Texi2HTML::THIS_SECTION)
+    if (@$Texi2HTML::THIS_SECTION)
     {
         # if top-level node has content, then print it with extra header
         #print $fh "<h1>$Texi2HTML::NAME{Top}</h1>\n"
@@ -771,14 +889,19 @@
     else
     {
         # top-level node is fully enclosed in @ifnothtml
-        # print fulltitle, subtitle, author, Overview
+        # print fulltitle, subtitle, author, Overview or table of contents
         print $fh $Texi2HTML::TITLEPAGE;
-        if (@{$Texi2HTML::OVERVIEW})
+        if (@{$Texi2HTML::OVERVIEW} and !$Texi2HTML::THISDOC{'setshortcontentsaftertitlepage'})
         {
-             print $fh '<h2> ' . &$I('Overview:') . "</h2>\n" . "<blockquote>\n";
+             print $fh '<h2> ' . $Texi2HTML::NAME{'Overview'} . "</h2>\n" . "<blockquote\n";
              my $nw = main::print_lines($fh, $Texi2HTML::OVERVIEW);
              print $fh "</blockquote>\n";
         }
+        elsif (@{$Texi2HTML::TOC_LINES} and !$Texi2HTML::THISDOC{'setcontentsaftertitlepage'})
+        {
+             print $fh '<h1> ' . $Texi2HTML::NAME{'Contents'}  . "</h1>\n";
+             my $nw = main::print_lines($fh, $Texi2HTML::TOC_LINES);
+        }
     }
 }
 
@@ -801,7 +924,9 @@
 }
 sub T2H_DEFAULT_print_About
 {
-    return &$print_misc(@_);
+    # if there is no section navigation and it is not split, the 
+    # navigation information is useless
+    return &$print_misc(@_) if ($SPLIT or $SECTION_NAVIGATION);
 }
 
 sub T2H_DEFAULT_print_misc_header
@@ -809,7 +934,7 @@
     my $fh = shift;
     my $buttons = shift;
     &$print_page_head($fh) if $SPLIT;
-    &$print_head_navigation($fh, $buttons);
+    &$print_head_navigation($fh, $buttons) if ($SPLIT or $SECTION_NAVIGATION);
 }
 
 sub T2H_DEFAULT_print_misc_footer
@@ -898,17 +1023,14 @@
 sub T2H_DEFAULT_print_page_head($)
 {
     my $fh = shift;
-    my $longtitle = "$Texi2HTML::THISDOC{'title_unformatted'}";
-    $longtitle .= ": $Texi2HTML::UNFORMATTED{'This'}" if exists $Texi2HTML::UNFORMATTED{'This'};
-    #my $longtitle = "$Texi2HTML::THISDOC{'title_no_texi'}";
-    #$longtitle .= ": $Texi2HTML::NO_TEXI{'This'}" if exists $Texi2HTML::NO_TEXI{'This'};
+    my $longtitle = "$Texi2HTML::THISDOC{'title_simple_format'}";
+    $longtitle .= ": $Texi2HTML::SIMPLE_TEXT{'This'}" if (defined ($Texi2HTML::SIMPLE_TEXT{'This'}) and ($Texi2HTML::SIMPLE_TEXT{'This'} !~ /^\s*$/) and $SPLIT);
     my $description = $DOCUMENT_DESCRIPTION;
     $description = $longtitle if (!defined($description));
     $description = "<meta name=\"description\" content=\"$description\">" if
          ($description ne '');
-    $description = $Texi2HTML::THISDOC{'documentdescription'} if (defined($Texi2HTML::THISDOC{'documentdescription'}));
     my $encoding = '';
-    $encoding = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=$ENCODING\">" if (defined($ENCODING) and ($ENCODING ne ''));
+    $encoding = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=$ENCODING_NAME\">" if (defined($ENCODING_NAME) and ($ENCODING_NAME ne ''));
     print $fh <<EOT;
 $DOCTYPE
 <html>
@@ -1039,16 +1161,25 @@
     my $icon = shift;
     my $name = shift;
     return '' if (!defined($icon));
-    if (defined($name) && $name)
+    $button = "" if (!defined ($button));
+    $name = '' if (!defined($name));
+    my $alt = ''; 
+    if ($name ne '')
     {
-        $name = ": $name";
+        if ($button ne '')
+        {
+            $alt = "$button: $name";
+        }
+        else
+        {
+            $alt = $name;
+        }  
     }
     else
     {
-        $name = '';
+        $alt = $button;
     }
-    $button = "" if (!defined ($button));
-    return qq{<img src="$icon" border="0" alt="$button$name" align="middle">};
+    return qq{<img src="$icon" border="0" alt="$alt" align="middle">};
 }
 
 sub T2H_DEFAULT_print_navigation
@@ -1078,6 +1209,7 @@
         {
             my $text = $button->[1];
             my $button_href = $button->[0];
+            # verify that $button_href is simple text and text is a reference
             if (defined($button_href) and !ref($button_href) 
                and defined($text) and (ref($text) eq 'SCALAR') and defined($$text))
             {             # use given text
@@ -1099,24 +1231,23 @@
         elsif ($button eq ' ')
         {                       # handle space button
             print $fh
-                $ICONS && $ACTIVE_ICONS{' '} ?
-                    &$button_icon_img($button, $ACTIVE_ICONS{' '}) :
+                ($ICONS && $ACTIVE_ICONS{' '}) ?
+                    &$button_icon_img($BUTTONS_NAME{$button}, $ACTIVE_ICONS{' '}) :
                         $NAVIGATION_TEXT{' '};
             #next;
         }
         elsif ($Texi2HTML::HREF{$button})
         {                       # button is active
             my $btitle = $BUTTONS_GOTO{$button} ?
-                'title="' . ucfirst($BUTTONS_GOTO{$button}) . '"' : '';
+                'title="' . $BUTTONS_GOTO{$button} . '"' : '';
             if ($ICONS && $ACTIVE_ICONS{$button})
             {                   # use icon
                 print $fh '' .
                     &$anchor('',
                         $Texi2HTML::HREF{$button},
-                        &$button_icon_img($button,
+                        &$button_icon_img($BUTTONS_NAME{$button},
                                    $ACTIVE_ICONS{$button},
-                                   #$Texi2HTML::NAME{$button}),
-                                   $Texi2HTML::NO_TEXI{$button}),
+                                   $Texi2HTML::SIMPLE_TEXT{$button}),
                         $btitle
                       );
             }
@@ -1136,10 +1267,9 @@
         {                       # button is passive
             print $fh
                 $ICONS && $PASSIVE_ICONS{$button} ?
-                    &$button_icon_img($button,
+                    &$button_icon_img($BUTTONS_NAME{$button},
                                           $PASSIVE_ICONS{$button},
-                                          #$Texi2HTML::NAME{$button}) :
-                                          $Texi2HTML::NO_TEXI{$button}) :
+                                          $Texi2HTML::SIMPLE_TEXT{$button}) :
 
                                               "[" . $NAVIGATION_TEXT{$button} . "]";
         }
@@ -1204,7 +1334,7 @@
 # 'file': the file containing the element, usefull to do href to that file
 #         in case the document is split.
 # 'text': text of the element, with section number
-# 'name': text of the element, without section number
+# 'text_nonumber': text of the element, without section number
 
 # Relevant configuration variables are:
 # $NUMBER_SECTIONS
@@ -1221,6 +1351,36 @@
 {
 }
 
+sub T2H_DEFAULT_inline_contents($$$)
+{
+    my $fh = shift;
+    my $command = shift;
+    my $element = shift;
+    my $name;
+    my $lines;
+
+    my $result = undef;
+
+    if ($command eq 'contents')
+    {
+        $name = $Texi2HTML::NAME{'Contents'};
+        $lines = $Texi2HTML::TOC_LINES;
+    }
+    else
+    {
+        $name = $Texi2HTML::NAME{'Overview'};
+        $lines = $Texi2HTML::OVERVIEW;
+    }
+    if (@{$lines})
+    {
+         $result = [ "".&$anchor($element->{'id'})."\n",
+            "<h1>$name</h1>\n" ]; 
+         push @$result, @$lines;
+    }
+
+    return $result;
+}
+
 sub T2H_DEFAULT_css_lines ($$)
 {
     my $import_lines = shift;
@@ -1307,11 +1467,11 @@
         $about .= "  <tr>\n    <td align=\"center\">";
         $about .=
             ($ICONS && $ACTIVE_ICONS{$button} ?
-             &$button_icon_img($button, $ACTIVE_ICONS{$button}) :
+             &$button_icon_img($BUTTONS_NAME{$button}, $ACTIVE_ICONS{$button}) :
              ' [' . $NAVIGATION_TEXT{$button} . '] ');
         $about .= "</td>\n";
         $about .= <<EOT;
-    <td align="center">$button</td>
+    <td align="center">$BUTTONS_NAME{$button}</td>
     <td>$BUTTONS_GOTO{$button}</td>
     <td>$BUTTONS_EXAMPLE{$button}</td>
   </tr>
@@ -1393,17 +1553,37 @@
     }
 
     $Texi2HTML::TITLEPAGE = $result . $Texi2HTML::TITLEPAGE;
+    
+    if ($Texi2HTML::THISDOC{'setcontentsaftertitlepage'} and @{$Texi2HTML::THISDOC{'inline_contents'}->{'contents'}})
+    {
+        foreach my $line(@{$Texi2HTML::THISDOC{'inline_contents'}->{'contents'}})
+        {
+            $Texi2HTML::TITLEPAGE .= $line;
+        }
+        $Texi2HTML::TITLEPAGE .= "$DEFAULT_RULE\n";
+    }
+    if ($Texi2HTML::THISDOC{'setshortcontentsaftertitlepage'} and @{$Texi2HTML::THISDOC{'inline_contents'}->{'shortcontents'}})
+    {
+        foreach my $line(@{$Texi2HTML::THISDOC{'inline_contents'}->{'shortcontents'}})
+        {
+            $Texi2HTML::TITLEPAGE .= $line;
+        }
+        $Texi2HTML::TITLEPAGE .= "$DEFAULT_RULE\n";
+    }
 }
 
-# i18n
+# FIXME Honor DOCUMENT_DESCRIPTION? 
 sub T2H_DEFAULT_print_redirection_page($)
 {
     my $fh = shift;
-    my $longtitle = "$Texi2HTML::THISDOC{'title_no_texi'}";
-    $longtitle .= ": $Texi2HTML::NO_TEXI{'This'}" if exists $Texi2HTML::NO_TEXI{'This'};
+    my $longtitle = "$Texi2HTML::THISDOC{'title_simple_format'}";
+    $longtitle .= ": $Texi2HTML::SIMPLE_TEXT{'This'}" if exists $Texi2HTML::SIMPLE_TEXT{'This'};
     my $description = $longtitle;
-    $description = $Texi2HTML::THISDOC{'documentdescription'} if (defined($Texi2HTML::THISDOC{'documentdescription'}));
+    my $encoding = '';
+    $encoding = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=$ENCODING_NAME\">" if (defined($ENCODING_NAME) and ($ENCODING_NAME ne ''));
     my $href = &$anchor('', $Texi2HTML::HREF{'This'}, $Texi2HTML::NAME{'This'}); 
+    my $string = &$I('The node you are looking for is at %{href}.',
+       { 'href' => $href });
     print $fh <<EOT;
 $DOCTYPE
 <html>
@@ -1419,48 +1599,51 @@
 <meta name="resource-type" content="document">
 <meta name="distribution" content="global">
 <meta name="Generator" content="$Texi2HTML::THISDOC{program}">
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="Refresh" content="0; url=$Texi2HTML::HREF{'This'}">
+$encoding
+$CSS_LINES
+<meta http-equiv="Refresh" content="2; url=$Texi2HTML::HREF{'This'}">
 $EXTRA_HEAD
 </head>
 
 <body $BODYTEXT>
 $AFTER_BODY_OPEN
-<p>The node you are looking for is at $href.</p>
+<p>$string</p>
 </body>
 EOT
 }
 
-sub T2H_DEFAULT_node_file_name($)
+sub T2H_DEFAULT_node_file_name($$)
 {
     my $node = shift;
-    return (undef, undef) if ($node->{'external_node'} or $node->{'index_page'});
-    my $file;
-    my $node_file;
-    
-    if ($NEW_CROSSREF_STYLE)
+    my $type = shift;
+    return undef if ($node->{'external_node'} or $node->{'index_page'}
+       or ($type eq 'top' and !$NEW_CROSSREF_STYLE));
+    my $node_file_base;
+    if ($type eq 'top' and defined($TOP_NODE_FILE))
     {
-         if (defined($node->{'file'}))
-         {
-              $file = $node->{'file'};
-              $node_file = $node->{'node_file'};
-         }
-         else
-         {
-              $node_file = $node->{'cross_manual_target'} . ".$NODE_FILE_EXTENSION";
-              $file =  $node_file if (($SPLIT eq 'node') and ($USE_NODES or $node->{'with_section'}));
-         }
+        $node_file_base = $TOP_NODE_FILE;
+    }
+    elsif ($NEW_CROSSREF_STYLE)
+    {
+        if ($TRANSLITERATE_NODE)
+        {
+            $node_file_base = $node->{'cross_manual_file'};
+        }
+        else
+        {
+            $node_file_base = $node->{'cross_manual_target'};
+        }
     }
     else
     {
-         return (undef, undef) if (defined($node->{'file'}));
-         my $name = main::remove_texi($node->{'texi'});
-         $name =~ s/[^\w\.\-]/-/g;
-         $name = "${name}.$NODE_FILE_EXTENSION";
-         $file = $name if (($SPLIT eq 'node') and ($USE_NODES or $node->{'with_section'}));
-         $node_file = $name;
+         $node_file_base = main::remove_texi($node->{'texi'});
+         $node_file_base =~ s/[^\w\.\-]/-/g;
     }
-    return ($file, $node_file);
+    if (defined($NODE_FILE_EXTENSION) and $NODE_FILE_EXTENSION ne '')
+    {
+        return ($node_file_base . ".$NODE_FILE_EXTENSION");
+    }
+    return $node_file_base;
 }
 
 ########################################################################
@@ -1540,7 +1723,7 @@
                'dots'         => '<small class="dots">...</small>',
                'enddots'      => '<small class="enddots">....</small>',
                'equiv'        => '==',
-# i18n
+# FIXME i18n
                'error'        => 'error--&gt;',
                'expansion'    => '==&gt;',
                'minus'        => '-',
@@ -1559,8 +1742,8 @@
                'o'            =>  '&oslash;',
                'O'            =>  '&Oslash;',
                'ss'           => '&szlig;',
-               'l'            => '/l',
-               'L'            => '/L',
+               'l'            => '&#322;',
+               'L'            => '&#321;',
                'exclamdown'   => '&iexcl;',
                'questiondown' => '&iquest;',
                'pounds'       => '&pound;',
@@ -1568,6 +1751,7 @@
                'ordm'         => '&ordm;',
                'comma'        => ',',
                'euro'         => '&euro;',
+               'tie'          => '&nbsp;',
              );
 
 # This map is used in preformatted environments
@@ -1603,7 +1787,7 @@
                'dots'         => '...',
                'enddots'      => '....',
                'equiv'        => '==',
-# i18n
+# FIXME i18n
                'error'        => 'error-->',
                'expansion'    => '==>',
                'minus'        => '-',
@@ -1617,8 +1801,8 @@
                'oe'           => 'oe', 
                'AE'           => 'AE',
                'OE'           => 'OE',
-               'o'            =>  '/o',
-               'O'            =>  '/O',
+               'o'            => '/o',
+               'O'            => '/O',
                'ss'           => 'ss',
                'l'            => '/l',
                'L'            => '/L',
@@ -1629,6 +1813,7 @@
                'ordm'         => 'o',
                'comma'        => ',',
                'euro'         => 'Euro',
+               'tie'          => ' ',
 );
 
 #
@@ -1692,6 +1877,7 @@
                'ordm'         => 'o',
                'comma'        => ',',
                'euro'         => 'Euro',
+               'tie'          => ' ',
             );
 
 # taken from
@@ -1704,6 +1890,11 @@
 #Latin Extended-B
 #http://www.alanwood.net/unicode/latin_extended_b.html
 #dotless i: 0131
+
+#http://www.alanwood.net/unicode/arrows.html 21**
+#http://www.alanwood.net/unicode/general_punctuation.html 20**
+#http://www.alanwood.net/unicode/mathematical_operators.html 22**
+
 %unicode_map = (
                'bullet'       => '2022',
                'copyright'    => '00A9',
@@ -1715,8 +1906,8 @@
                'expansion'    => '2192',
                'minus'        => '2212', # in mathematical operators
 #               'minus'        => '002D', # in latin1
-               'point'        => '2217',
-               'print'        => '',
+               'point'        => '2605',
+               'print'        => '22A3',
                'result'       => '21D2',
                'today'        => '',
                'aa'           => '00E5',
@@ -1737,8 +1928,47 @@
                'ordm'         => '00BA',
                'comma'        => '002C',
                'euro'         => '20AC',
+               'tie'          => '',
+#               'tie'          => '0020', 
              );
 
+%transliterate_map = (
+               '00C5'  => 'AA',
+               '00E5'  => 'aa',
+               '00D8'  => 'OE',
+               '00F8'  => 'oe',
+               '00E6' => 'ae',
+               '0153' => 'oe',
+               '00C6' => 'AE',
+               '0152' => 'OE',
+               '00DF' => 'ss',
+               '0141' => 'L',
+               '0142' => 'l',
+               '00D0'  => 'DH',
+               '0415'  => 'E',
+               '0435'  => 'e',
+               '0426'  => 'C',
+               '042A'  => 'W',
+               '044A'  => 'w',
+               '042C'  => 'X',
+               '044C'  => 'x',
+               '042E'  => 'yu',
+               '042F'  => 'YA',
+               '044F'  => 'ya',
+               '0433'  => 'g',
+               '0446'  => 'c',
+               '04D7'  => 'IO',
+               '00DD'  => 'Y', # unidecode gets this wrong ?
+          );
+
+foreach my $symbol(keys(%unicode_map))
+{
+    if ($unicode_map{$symbol} ne '' and !exists($transliterate_map{$symbol}))
+    {
+         $no_transliterate_map{$unicode_map{$symbol}} = 1;
+    }
+}
+
 %ascii_character_map = (
             ' ' => '0020',
             '!' => '0021',
@@ -1777,10 +2007,11 @@
 
 %perl_charset_to_html = (
               'utf8'       => 'utf-8',
+              'utf-8-strict'       => 'utf-8',
               'ascii'      => 'us-ascii',
 );
 
-# symbols used for the commands if $USE-ISO is true.
+# symbols used for the commands if $USE_ISO is true.
 %iso_symbols = (
          'equiv'     => '&equiv;',
          'dots'      => '&hellip;',
@@ -1788,8 +2019,21 @@
          'result'    => '&rArr;',
          'expansion' => '&rarr;',
          'point'     => '&lowast;',
+         "'"         => '&rsquo;',
+         '`'         => '&lsquo;',
         );
 
+# not used currently for html, but used in chm.init
+%numeric_entity_map = ();
+
+foreach my $symbol (keys(%unicode_map))
+{
+    if ($symbol ne '')
+    {
+        $numeric_entity_map{$symbol} = '&#' . hex($unicode_map{$symbol}) . ';';
+    }
+}
+
 # When the value begins with & the function with that name is used to do the
 # html. The first argument is the text enclosed within {}, the second is the
 # style name (which is also the key of the hash)
@@ -1835,11 +2079,12 @@
       'cite',       {'attribute' => 'cite'},
       'code',       {'args' => ['code'], 'attribute' => 'code'},
       'command',    {'args' => ['code'], 'attribute' => 'code'},
-      'ctrl',       {'function' => \&t2h_default_ctrl}, 
+      'ctrl',       {'function' => \&t2h_default_ctrl,'type' => 'simple_type'}, 
       'dfn',        {'attribute' => 'em'}, 
       'dmn',        {},   
       'email',      {'args' => ['code', 'normal'], 
-                       'function' => \&t2h_default_email}, 
+                       'function' => \&t2h_default_email,
+                       'type' => 'simple_type'}, 
       #'email',      {'args' => ['normal', 'normal'], 
       #                 'function' => \&t2h_default_email}, 
       'emph',       {'attribute' => 'em'}, 
@@ -1849,27 +2094,45 @@
       'slanted',    {'attribute' => 'i'},
       'sansserif',  {'attribute' => 'span class="sansserif"'},
       'kbd',        {'args' => ['code'], 'attribute' => 'kbd'},
-      'key',        {'attribute' => 'kbd'},
+      'key',        {'begin' => '&lt;', 'end' => '&gt;'},
       'math',       {'attribute' => 'em'},
       'option',     {'args' => ['code'], 'attribute' => 'samp', 'quote' => '"'},
-      'r',          {},
+      'r',          {'attribute' => 'span class="roman"'},
       'samp',       {'args' => ['code'], 'attribute' => 'samp', 'quote' => '"'},
-      'sc',         {'function' => \&t2h_default_sc},
+#      'sc',         {'function' => \&t2h_default_sc},
+      'sc',         {'attribute' => 'small'},
       'strong',     {'attribute' => 'strong'},
       't',          {'attribute' => 'tt'},
       'uref',       {'function' => \&t2h_default_uref, 
-                      'args' => ['code', 'normal', 'normal']},
+                      'args' => ['code', 'normal', 'normal'],
+                      'type' => 'simple_type' },
       #'uref',       {'function' => \&t2h_default_uref, 
       #                'args' => ['normal', 'normal', 'normal']},
       'url',        {'function' => \&t2h_default_uref, 
-                      'args' => ['code', 'normal', 'normal']},
-      'indicateurl', {'args' => ['code'], 'begin' => '&lt;<code>', 'end' => '</code>&gt;'},
+                      'args' => ['code', 'normal', 'normal'],
+                      'type' => 'simple_type'},
+      'indicateurl', {'args' => ['code'], 'begin' => '&lt;<code>', 'end' => '</code>&gt;','type' => 'simple_type'},
       'var',        {'attribute' => 'var'},
       'verb',       {'args' => ['code'], 'attribute' => 'tt'},
-      'titlefont',  {'function' => \&t2h_default_titlefont},
-      'w',          {},
+      'titlefont',  {'function' => \&t2h_default_titlefont, 
+            'type' => 'simple_type'},
+      'w',          {'type' => 'simple_type'},
      );
 
+%command_type = ();
+
+foreach my $style (keys(%style_map))
+{
+   if (exists($style_map{$style}->{'type'}))
+   {
+       $command_type{$style} = $style_map{$style}->{'type'};
+   }
+   else
+   {
+       $command_type{$style} = 'style';
+   }
+}
+
 %unicode_diacritical = (
        'H'          => '030B', 
        'ringaccent' => '030A', 
@@ -1884,7 +2147,8 @@
        '"'          => '0308', 
        'udotaccent' => '0323', 
        'ubaraccent' => '0332', 
-       'u'          => '0306'
+       'u'          => '0306',
+       'tieaccent'  => '0361'
 );
 
 %unicode_accents = (
@@ -1929,6 +2193,8 @@
         'z' => '017C',
     },
     'udotaccent' => { # dot below
+        'A' => '1EA0',
+        'a' => '1EA1',
         'B' => '1E04',
         'b' => '1E05',
         'D' => '1E0C',
@@ -2047,8 +2313,8 @@
         'Y' => '0178',
     },
     'u' => { # breve
-        'A' => '0101',
-        'a' => '0102',
+        'A' => '0102',
+        'a' => '0103',
         'E' => '0114',
         'e' => '0115',
         'G' => '011E',
@@ -2210,6 +2476,17 @@
     },
 );
 
+%transliterate_accent_map = ();
+foreach my $command (keys(%unicode_accents))
+{
+    foreach my $letter(keys (%{$unicode_accents{$command}}))
+    {
+        $transliterate_accent_map{$unicode_accents{$command}->{$letter}}
+            = $letter 
+          unless (exists($transliterate_map{$unicode_accents{$command}->{$letter}}));
+    }
+}
+
 %special_accents = (
       'ringaccent' => 'aA',
       "'"          => 'aeiouyAEIOUY',
@@ -2220,7 +2497,6 @@
       '"'          => 'aeiouyAEIOU',
 );
 
-#foreach my $accent_command ('tieaccent', 'dotless', keys(%unicode_accents), keys(%accent_map))
 foreach my $accent_command ('tieaccent', 'dotless', keys(%unicode_accents))
 {
      $style_map{$accent_command} = { 'function' => \&t2h_default_accent };
@@ -2250,6 +2526,21 @@
     return '&' . $text . 'ring;' if (($accent eq 'ringaccent') and (defined($special_accents{$accent})) and ($text =~ /^[$special_accents{$accent}]$/));
     return $text . '&lt;' if ($accent eq 'v');
     return "&${text}cedil;" if (($accent eq ',') and (defined($special_accents{$accent})) and ($text =~ /^[$special_accents{$accent}]$/));
+# FIXME here there could be a conversion to the character in the right 
+# encoding, like 
+#    if ($USE_UNICODE and defined($OUT_ENCODING) and $OUT_ENCODING ne '' 
+#        and exists($unicode_accents{$accent}) and  exists($unicode_accents{$accent}->{$text}))
+#    {
+#          my $encoded_char =  Encode::encode($OUT_ENCODING, chr(hex($unicode_map{$thing})), Encode::FB_QUIET);
+#          return $encoded_char if ($encoded_char ne '');
+#    }
+    if ($USE_NUMERIC_ENTITY)
+    {
+        if (exists($unicode_accents{$accent}) and exists($unicode_accents{$accent}->{$text}))
+        {
+             return ('&#' . hex($unicode_accents{$accent}->{$text}) . ';');
+        }
+    }
     return ascii_accents($text, $accent);
 }
 
@@ -2275,8 +2566,9 @@
     return '<small>' . uc($_[0]) . '</small>';
 }
 
+# now unused, upcasing is done in normal_text
 sub t2h_default_sc($$$)
-{
+{ 
     shift;
     my $args = shift;
     return '<small>' . uc($args->[0]) . '</small>';
@@ -2299,6 +2591,7 @@
     return uc($_[0]);
 }
 
+# now unused, upcasing is done in normal_text
 sub t2h_default_sc_pre($$$)
 {
     shift;
@@ -2312,6 +2605,7 @@
     return '';
 }
 
+# Avoid adding h1 if the text is empty
 sub t2h_default_titlefont($$$)
 {
     shift;
@@ -2320,13 +2614,16 @@
     return '';
 }
 
-# According to the texinfo manual this shouldn't lead to a link
-# but rather be formatted like text. If we did like makeinfo do
-# it would be
+# At some point in time (before 4.7?) according to the texinfo 
+# manual, url shouldn't lead to a link but rather be formatted 
+# like text. It is now what indicateurl do, url is the same that
+# uref with one arg. If we did like makeinfo did it would have been
 #sub url($$)
 #{
 #    return '&lt;<code>' . $_[0] . '</code>&gt;';
 #}
+# 
+# This is unused, t2h_default_uref is used instead
 sub t2h_default_url ($$)
 {
     shift;
@@ -2475,10 +2772,12 @@
     }
 }
 
-$style_map_pre{'sc'}->{'function'} = \&t2h_default_sc_pre;
+#$style_map_pre{'sc'}->{'function'} = \&t2h_default_sc_pre;
+$style_map_pre{'sc'} = {};
 $style_map_pre{'titlefont'} = {};
 
-$style_map_texi{'sc'}->{'function'} = \&t2h_default_sc_pre;
+#$style_map_texi{'sc'}->{'function'} = \&t2h_default_sc_pre;
+$style_map_texi{'sc'} = {};
 $style_map_texi{'email'}->{'function'} = \&t2h_default_no_texi_email;
 
 ####### special styles. You shouldn't need to change them
@@ -2501,13 +2800,9 @@
            'abbr',    {'args' => ['keep','keep'], 'function' => \&main::do_acronym_like},
 );
 
-# FIXME the unless defined(.... are now unusefull because the user can
-# overwrite.
-
 # @image is replaced by the first arg in strings
 $style_map_texi{'image'} = { 'args' => ['keep'],
-       'function' => \&t2h_default_no_texi_image }
-    unless (defined($style_map_texi{'image'}));
+       'function' => \&t2h_default_no_texi_image };
 
 $style_map_texi{'acronym'} = { 'args' => ['keep','keep'],
        'function' => \&t2h_default_no_texi_acronym_like };
@@ -2539,27 +2834,26 @@
 #%style_map = %old_style_map;
 #%style_map_pre = %old_style_map_pre;
 
-#FIXME USE_ISO ?
-%unformatted_text_simple_map_texi = %simple_map_pre;
-%unformatted_text_texi_map = %pre_map;
-%unformatted_text_style_map_texi = ();
+%simple_format_simple_map_texi = %simple_map_pre;
+%simple_format_texi_map = %pre_map;
+%simple_format_style_map_texi = ();
 
 foreach my $command (keys(%style_map_texi))
 {
-    #$unformatted_text_style_map_texi{$command} = {};
+    #$simple_format_style_map_texi{$command} = {};
     foreach my $key (keys (%{$style_map_texi{$command}}))
     {
     #print STDERR "$command, $key, $style_map_texi{$command}->{$key}\n";
-        $unformatted_text_style_map_texi{$command}->{$key} = 
+        $simple_format_style_map_texi{$command}->{$key} = 
              $style_map_texi{$command}->{$key};
     }
-    $unformatted_text_style_map_texi{$command} = {} if (!defined($unformatted_text_style_map_texi{$command}));
+    $simple_format_style_map_texi{$command} = {} if (!defined($simple_format_style_map_texi{$command}));
 }
 
 foreach my $accent_command ('tieaccent', 'dotless', keys(%unicode_accents))
 {
-#    $unformatted_text_style_map_texi{$accent_command}->{'args'} = ['normal'];
-    $unformatted_text_style_map_texi{$accent_command}->{'function'} = \&t2h_default_accent;
+#    $simple_format_style_map_texi{$accent_command}->{'args'} = ['normal'];
+    $simple_format_style_map_texi{$accent_command}->{'function'} = \&t2h_default_accent;
 }
 
 %format_map = (
@@ -2593,28 +2887,27 @@
 # an eval of these $complex_format_map->{what}->{'begin'} yields beginning
 # an eval of these $complex_format_map->{what}->{'end'} yields end
 # $EXAMPLE_INDENT_CELL and SMALL_EXAMPLE_INDENT_CELL can be usefull here
-# FIXME add \n at the end ?
 $complex_format_map =
 {
  'example' =>
  {
   'begin' => q{"<table><tr>$EXAMPLE_INDENT_CELL<td>"},
-  'end' => q{'</td></tr></table>'},
+  'end' => q{"</td></tr></table>\n"},
  },
  'smallexample' =>
  {
   'begin' => q{"<table><tr>$SMALL_EXAMPLE_INDENT_CELL<td>"},
-  'end' => q{'</td></tr></table>'},
+  'end' => q{"</td></tr></table>\n"},
  },
  'display' =>
  {
   'begin' => q{"<table><tr>$EXAMPLE_INDENT_CELL<td>"},
-  'end' => q{'</td></tr></table>'},
+  'end' => q{"</td></tr></table>\n"},
  },
  'smalldisplay' =>
  {
   'begin' => q{"<table><tr>$SMALL_EXAMPLE_INDENT_CELL<td>"},
-  'end' => q{'</td></tr></table>'},
+  'end' => q{"</td></tr></table>\n"},
  }
 };
 
@@ -2636,9 +2929,8 @@
     'deftypecv', [ 'v', 'category', 'class' , 'type', 'name' ],
     'defop', [ 'f', 'category', 'class' , 'name', 'arg' ],
     'deftp', [ 't', 'category', 'name', 'arg' ],
-    # basic x commands
     # shortcuts
-    # i18n
+    # FIXME i18n
     'defun', 'deffn Function',
     'defmac', 'deffn Macro',
     'defspec', 'deffn {Special Form}',
@@ -2652,6 +2944,7 @@
     'deftypemethod', 'deftypeop Method',
          );
 
+# basic x commands
 foreach my $key (keys(%def_map))
 {
     $def_map{$key . 'x'} = $def_map{$key};
@@ -2684,23 +2977,25 @@
         'contents' => {}, # no arg
         'shortcontents' => {}, # no arg
         'summarycontents'=> {}, # no arg
+        'setcontentsaftertitlepage' => {}, # no arg
+        'setshortcontentsaftertitlepage' => {}, # no arg
         'detailmenu' => {'skip' => 'whitespace'}, # no arg
         'end detailmenu' => {'skip' => 'space'}, # no arg
-        #'end detailmenu', 1, # no arg
         'bye' => {'skip' => 'line'}, # no arg
         # comments
         'comment' => {'arg' => 'line'},
         'c' => {'arg' => 'line'},
-        #'c'=> {'arg' => 'line', 'keep' => 1},
         # in preamble
         'novalidate' => {}, # no arg
         'dircategory'=> {'skip' => 'line'}, # line. Position with regard 
                          # with direntry is significant
         'pagesizes' => {'skip' => 'line', 'arg' => 2}, # can have 2 args 
+                                 # or one? 200mm,150mm 11.5in
         'finalout' => {}, # no arg
         'paragraphindent' => {'skip' => 'line', 'arg' => 1}, # arg none asis 
                              # or a number and forbids anything else on the line
         'firstparagraphindent' => {'skip' => 'line', 'arg' => 1}, # none insert
+        'frenchspacing' => {'arg' => 1}, # on off
         'exampleindent' => {'skip' => 'line', 'arg' => 1}, # asis or a number
         'footnotestyle'=> {'skip' => 'line', 'arg' => 1}, # end and separate
                                  # and nothing else on the line
@@ -2739,7 +3034,8 @@
         # formatting
         'page' => {}, # no arg (pagebreak)
         'refill' => {}, # no arg (obsolete, to be ignored)
-        'noindent' => {'skip' => 'space'}, # no arg
+        'noindent' => {'skip' => 'whitespace'}, # no arg
+        'indent' => {'skip' => 'whitespace'},
         'need' => {'skip' => 'line', 'arg' => 1}, # one numerical/real arg
         'exdent' => {'skip' => 'space'},  
         # not valid for info (should be in @iftex)
@@ -2747,10 +3043,12 @@
         'cropmarks' => {}, # no arg
         # miscalleneous
         'verbatiminclude'=> {'skip' => 'line'},
-        'noindent' => {'skip' => 'space'},
-        'documentencoding' => {'arg' => 1},
+        'documentencoding' => {'arg' => 1}, # makeinfo ignore the whole line
         # ???
         'filbreak' => {},
+        # obsolete @-commands
+        'quote-arg' => {},
+        'allow-recursion' => {},
      );
 my %misc_command_old = (
         # not needed for formatting
@@ -2838,13 +3136,32 @@
          'pre.display'            => 'font-family: serif',
          'pre.smalldisplay'       => 'font-family: serif; font-size: smaller',
          'pre.smallexample'       => 'font-size: smaller',
-         'span.sansserif'         => 'font-family:sans-serif; font-weight:normal;'
+         'span.sansserif'         => 'font-family:sans-serif; font-weight:normal;',
+         'span.roman'         => 'font-family:serif; font-weight:normal;'
      );
 
 $css_map{'pre.format'} = $css_map{'pre.display'};
 $css_map{'pre.smallformat'} = $css_map{'pre.smalldisplay'}; 
 $css_map{'pre.smalllisp'} = $css_map{'pre.smallexample'};
 
+# The command_handler arrays are for commands formatted externally.
+# The function references in @command_handler_init are called
+# before the second pass, before the @-commands text collection.
+# Those in @command_handler_process are called between the second pass
+# and the third pass, after collection of @-commands text and before their
+# expansion.
+# Those in @command_handler_process are called after the third pass,
+# after the document generation.
+@command_handler_init = ();
+@command_handler_process = ();
+@command_handler_finish = ();
+
+# the keys of %command_handler are @-command names and the value
+# is a hash reference with the following keys:
+# 'init'          function reference used to collect the @-command text
+# 'expand'        function reference used when expanding the @-command text
+%command_handler = ();
+
 # formatting functions
 
 $anchor            = \&t2h_default_anchor;
@@ -2865,14 +3182,16 @@
 $cell              = \&t2h_default_cell;
 $list_item         = \&t2h_default_list_item;
 $comment           = \&t2h_default_comment;
-$def_line	       = \&t2h_default_def_line;
+$def_line          = \&t2h_default_def_line;
 $def_line_no_texi  = \&t2h_default_def_line_no_texi;
 $raw               = \&t2h_default_raw;
+$raw_no_texi       = \&t2h_default_raw_no_texi;
 $heading           = \&t2h_default_heading;
 $paragraph         = \&t2h_default_paragraph;
 $preformatted      = \&t2h_default_preformatted;
 $foot_line_and_ref = \&t2h_default_foot_line_and_ref;
 $foot_section      = \&t2h_default_foot_section;
+$image_files       = \&t2h_default_image_files;
 $image             = \&t2h_default_image;
 $address           = \&t2h_default_address;
 $index_entry_label = \&t2h_default_index_entry_label;
@@ -2882,6 +3201,7 @@
 $index_letter      = \&t2h_default_index_letter;
 $print_index       = \&t2h_default_print_index;
 $protect_text      = \&t2h_default_protect_text;
+$normal_text       = \&t2h_default_normal_text;
 $complex_format    = \&t2h_default_complex_format;
 $cartouche         = \&t2h_default_cartouche;
 $sp                = \&t2h_default_sp;
@@ -2904,6 +3224,8 @@
 $quotation                = \&t2h_default_quotation;
 $quotation_prepend_text   = \&t2h_default_quotation_prepend_text;
 $paragraph_style_command  = \&t2h_default_paragraph_style_command;
+$heading_texi             = \&t2h_default_heading_texi;
+$index_element_heading_texi = \&t2h_default_index_element_heading_texi;
 
 # This function is called whenever a complex format is processed
 #
@@ -2937,25 +3259,31 @@
     return $beginning . $text . $end;	
 }
 
-sub t2h_default_empty_line($)
+sub t2h_default_empty_line($$)
 {
     my $text = shift;
+    my $state = shift;
+    #ignore the line if it just follows a deff
+    return '' if ($state->{'deff_line'});
     return $text;
 }
 
-sub t2h_default_unknown($$)
+sub t2h_default_unknown($$$$)
 {
     my $macro = shift;
     my $line = shift;
+    my $stack = shift;
+    my $state = shift;
     
     my ($result_line, $result, $result_text, $message);
     return ($line, 0, undef, undef);
 }
 
-sub t2h_default_unknown_style($$)
+sub t2h_default_unknown_style($$$$)
 {
     my $command = shift;
     my $text = shift;
+    my $state = shift;
     
     my ($result, $result_text, $message);
     return (0, undef, undef);
@@ -2969,33 +3297,33 @@
     my $style = $float->{'style_texi'};
     if (defined($float->{'nr'}))
     {
-         my $nr = $float->{'nr'};
-         if ($style ne '')
-         {
-              $style = &$I('%{style} %{number}', { 'style' => $style, 'number' => $nr});
-         }
-         else 
-         {
-              $style = $nr;
-         }
+        my $nr = $float->{'nr'};
+        if ($style ne '')
+        {
+            $style = &$I('%{style} %{number}', { 'style' => $style, 'number' => $nr});
+        }
+        else 
+        {
+            $style = $nr;
+        }
     }
     
     if (defined($float->{'caption_texi'}))
     {
-         @$caption_lines = @{$float->{'caption_texi'}};
-         if (defined($style))
-         {
-              $caption_lines->[0] = '@strong{' . &$I('%{style}: %{caption_first_line}', { 'style' => $style, 'caption_first_line' => $caption_lines->[0] });
-         }
-         else
-         {
-              $caption_lines->[0] = '@strong{' .  $caption_lines->[0];
-         }
-         push @$caption_lines, "}\n";
+        @$caption_lines = @{$float->{'caption_texi'}};
+        if (defined($style))
+        {
+            $caption_lines->[0] = '@strong{' . &$I('%{style}: %{caption_first_line}', { 'style' => $style, 'caption_first_line' => $caption_lines->[0] });
+        }
+        else
+        {
+            $caption_lines->[0] = '@strong{' .  $caption_lines->[0];
+        }
+        push @$caption_lines, "}\n";
     }
     elsif (defined($style))
     {
-         $caption_lines->[0] = '@strong{' . $style . '}' . "\n";
+        $caption_lines->[0] = '@strong{' . $style . '}' . "\n";
     }
     if (defined($float->{'shortcaption_texi'}))
     {
@@ -3033,15 +3361,15 @@
     
     if (defined($float->{'caption_texi'}))
     {
-         $caption_text = $caption;
+        $caption_text = $caption;
     }
     elsif (defined($float->{'shortcaption_texi'}))
     {
-         $caption_text = $shortcaption;
+        $caption_text = $shortcaption;
     }
     elsif (defined($caption))
     {
-         $caption_text = $caption;
+        $caption_text = $caption;
     }
     
     return '<div class="float">' . "$label\n" . $text . '</div>' . $caption_text;
@@ -3129,6 +3457,70 @@
    return $text;
 }
 
+
+sub in_small_caps($)
+{
+   my $style_stack = shift;
+   my $in_sc = 0;
+   if ($style_stack and scalar(@{$style_stack}))
+   {
+       my $level = $#$style_stack;
+       #print STDERR ":::$level ::@{$style_stack}\n";
+       while ($level >= 0)
+       {
+           if ($style_stack->[$level] eq 'sc')
+           {
+               $in_sc = 1;
+               last;
+           }
+           $level--;
+       }
+   } 
+   return $in_sc;
+}
+#
+#
+sub t2h_default_normal_text($$$$$)
+{
+   my $text = shift;
+   my $in_raw_text = shift;
+   my $in_preformatted = shift;
+   my $in_code = shift;
+   my $style_stack = shift;
+   $text = uc($text) if (in_small_caps($style_stack));
+   $text = &$protect_text($text) unless($in_raw_text);
+   if (! $in_code and !$in_preformatted)
+   { 
+       if ($USE_ISO and !$in_raw_text)
+       {
+           $text =~ s/---/\&mdash\;/g;
+           $text =~ s/--/\&ndash\;/g;
+           $text =~ s/``/\&ldquo\;/g;
+           $text =~ s/''/\&rdquo\;/g;
+       }
+       else
+       {   
+            if ($in_raw_text) #FIXME really do that ?
+            {
+                 $text =~ s/``/"/g;
+                 $text =~ s/''/"/g;
+            }
+            else
+            {
+                $text =~ s/``/&quot;/g;
+                $text =~ s/''/&quot;/g;
+            }
+            # temporary reuse '' to store --- !....
+            # FIXME won't '---' be handled wrongly?
+            # FIXME really do that in raw text?
+            $text =~ s/---/''/g; 
+            $text =~ s/--/-/g; 
+            $text =~ s/''/--/g;
+       }
+   }
+   return $text;
+}
+
 # This function produces an anchor 
 #
 # arguments:
@@ -3191,8 +3583,6 @@
     my $name = shift;
     my $class = shift;
     my $style = shift;
-#    print STDERR "definition_category $name, class $class, style $style\n";
-    return undef if (!defined($name) or $name =~ /^\s*$/);
     return ($name) if (!defined($class) or $class =~ /^\s*$/);
     if ($style eq 'f')
     {
@@ -3266,7 +3656,8 @@
     }
     $entry = &$anchor('', $href, $entry) if ($href);
     $entry .= $ending if ($preformatted);
-    return $entry . '&nbsp;';
+    $entry .= '&nbsp;' unless $preformatted;
+    return $entry;
 }
 
 # formats a menu entry link pointing to a node or section 
@@ -3289,12 +3680,14 @@
     my $node = shift;
     my $name = shift;
     my $ending = shift;
+#print STDERR  "MENU_LINK\n";
     if (($entry eq '') or $NODE_NAME_IN_MENU or $state->{'preformatted'})
     {
         $name .= ':' if ($name ne '');
         $entry = "$MENU_SYMBOL$name$node";
     }
     $entry = &$anchor ('', $href, $entry) if (defined($href));
+    return $entry if ($SIMPLE_MENU); 
     if ($state->{'preformatted'})
     {
         return '<tr><td>' . main::do_preformatted($entry . $ending, $state);
@@ -3302,6 +3695,13 @@
     return "<tr><td align=\"left\" valign=\"top\">$entry</td><td>&nbsp;&nbsp;</td>";
 }
 
+sub simplify_text($)
+{
+    my $text = shift;
+    $text =~ s/[^\w]//og;
+    return $text;
+}
+
 # formats a menu entry description, ie the text appearing after the node
 # specification in a menu entry an spanning until there is another
 # menu entry, an empty line or some text at the very beginning of the line
@@ -3310,14 +3710,22 @@
 # arguments:
 # the description text
 # the state. See menu_entry.
-sub t2h_default_menu_description($$)
+# the heading of the element associated with the node.
+sub t2h_default_menu_description($$$)
 {
     my $text = shift;
     my $state = shift;
+    my $element_text = shift;
+    return $text if ($SIMPLE_MENU); 
+#print STDERR  "MENU_DESCRIPTION element_text!$element_text, text!$text\n";
     if ($state->{'preformatted'})
     {
         return main::do_preformatted($text, $state) . '</td></tr>';
     }
+    elsif ($AVOID_MENU_REDUNDANCY)
+    {
+        $text = '' if (simplify_text($element_text) eq simplify_text($text));
+    }
     return "<td align=\"left\" valign=\"top\">$text</td></tr>\n";
 }
 
@@ -3336,6 +3744,7 @@
 sub t2h_default_menu_comment($)
 {
    my $text = shift;
+   return $text if ($SIMPLE_MENU); 
    if ($text =~ /\S/)
    {
        return "<tr><th colspan=\"3\" align=\"left\" valign=\"top\">$text</th></tr>";
@@ -3345,8 +3754,10 @@
 
 # Construct a href to an external source of information.
 # node is the node with texinfo @-commands
-# node_id is the node transformed such that it is unique and can be used to 
-#     make an html cross ref as explained in the texinfo manual
+# node_id is the node transliterated and transformed as explained in the
+#         texinfo manual
+# node_xhtml_id is the node transformed such that it is unique and can 
+#     be used to make an html cross ref as explained in the texinfo manual
 # file is the file in '(file)node'
 sub t2h_default_external_href($$$)
 {
@@ -3355,7 +3766,11 @@
     my $node_xhtml_id = shift;
     my $file = shift;
     $file = '' if (!defined($file));
-    my $target_split = $EXTERNAL_CROSSREF_SPLIT;
+    my $default_target_split = $EXTERNAL_CROSSREF_SPLIT;
+    my $target_split;
+    my $target_mono;
+    my $href_split;
+    my $href_mono;
     if ($file ne '')
     {
          if ($NEW_CROSSREF_STYLE)
@@ -3365,14 +3780,36 @@
              my $href;
              if (exists($Texi2HTML::THISDOC{'htmlxref'}->{$file}))
              {
-                  $target_split = $Texi2HTML::THISDOC{'htmlxref'}->{$file}->{'split'};
-                  $href = $Texi2HTML::THISDOC{'htmlxref'}->{$file}->{'href'};
+                  if (exists($Texi2HTML::THISDOC{'htmlxref'}->{$file}->{'split'}))
+                  {
+                       $target_split = 1;
+                       $href_split =  $Texi2HTML::THISDOC{'htmlxref'}->{$file}->{'split'}->{'href'};
+                  }
+                  if (exists($Texi2HTML::THISDOC{'htmlxref'}->{$file}->{'mono'}))
+                  {
+                       $target_mono = 1;
+                       $href_mono =  $Texi2HTML::THISDOC{'htmlxref'}->{$file}->{'mono'}->{'href'};
+                  }
+             }
+
+             if ((not $target_mono) and (not $target_split))
+             { # nothing specified for that manual, use default
+                  $target_split = $default_target_split;
              }
+             elsif ($target_split and $target_mono)
+             { # depends on the splitting of the manual
+                  $target_split = $SPLIT;
+             }
+             elsif ($target_mono)
+             { # only mono specified
+                  $target_split = 0;
+             }
+
              if ($target_split)
              {
-                  if (defined($href))
+                  if (defined($href_split))
                   {
-                       $file = "$href";
+                       $file = "$href_split";
                   }
                   elsif (defined($EXTERNAL_DIR))
                   {
@@ -3386,9 +3823,9 @@
              }
              else
              {# target not split
-                  if (defined($href))
+                  if (defined($href_mono))
                   {
-                       $file = "$href";
+                       $file = "$href_mono";
                   }
                   else
                   {
@@ -3418,21 +3855,14 @@
          }
     }
     else
-    { # here we necessarily have a ref to a node in the document, but the
-      # node is invalid
-         if ($NEW_CROSSREF_STYLE)
-         {
-              if (!$SPLIT)
-              {
-                   $file = $TOP_FILE;
-              }
-         }
+    {
+        $target_split = $default_target_split;
     }
     if ($node eq '')
     {
          if ($NEW_CROSSREF_STYLE)
          {
-             if ($SPLIT)
+             if ($target_split)
              {
                  return $file . $TOP_NODE_FILE . '.' . $NODE_FILE_EXTENSION . '#Top';
                  # or ?
@@ -3463,7 +3893,7 @@
     $file_basename = $TOP_NODE_FILE if ($node =~ /^top$/i);
     if ($NEW_CROSSREF_STYLE)
     {
-        if ($SPLIT)
+        if ($target_split)
         {
             return $file . $file_basename . ".$NODE_FILE_EXTENSION" . '#' . $target;
         }
@@ -3477,6 +3907,7 @@
         return $file . $file_basename . ".$NODE_FILE_EXTENSION";
     }
 }
+
 # format a reference external to the generated manual. This produces a full 
 # reference with introductive words and the reference itself.
 #
@@ -3615,21 +4046,48 @@
     return '';
 }
 
+sub teletyped_in_stack($)
+{
+    my $stack = shift;
+    foreach my $element(reverse(@$stack))
+    {
+        if ($complex_format_map->{$element})
+        {
+            if (!$complex_format_map->{$element}->{'pre_style'})
+            {
+                return 1;
+            }
+            else
+            {
+                return 0;
+            }
+        }
+    }
+    return 0;
+}
+
 # text after @item in table, vtable and ftable
-sub t2h_default_table_item($$$$$)
+sub t2h_default_table_item($$$$$$)
 {
     my $text = shift;
     my $index_label = shift;
     my $format = shift;
     my $command = shift;
     my $formatted_command = shift;
+    my $style_stack = shift;
+    #print STDERR "-> $format (@$style_stack)\n";
     $formatted_command = '' if (!defined($formatted_command) or 
           exists($special_list_commands{$format}->{$command}));
+    if (teletyped_in_stack($style_stack))
+    {
+       $text .= '</tt>';
+       $formatted_command = '<tt>' . $formatted_command;
+    }
     $text .= "\n" . $index_label  if (defined($index_label));
     return '<dt>' . $formatted_command . $text . '</dt>' . "\n";
 }
 
-# format text on the line following @item (in table, vtable and ftable)
+# format text on the line following the @item line (in table, vtable and ftable)
 sub t2h_default_table_line($)
 {
     my $text = shift;
@@ -3719,27 +4177,82 @@
 sub t2h_default_comment($)
 {
     my $text = shift;
-    while ($text =~ /-->/) # --> ends an html comment !
-    { 
-        $text =~ s/-->/->/go;
+    $text =~ s/--+/-/go;
+    return '<!-- ' . $text . ' -->' . "\n";
+}
+
+sub t2h_collect_styles($)
+{
+    my $stack = shift;
+    my @result = ();
+    foreach my $style (reverse(@$stack))
+    {
+#        last unless (defined($command_type{$style}) and $command_type{$style} eq 'style');
+        push @result, $style if (defined($command_type{$style}) and $command_type{$style} eq 'style');
     }
-    return '<!--' . $text . '-->' . "\n";
+    return @result;
+}
+
+sub t2h_get_attribute($;$)
+{
+    my $command = shift;
+    my $map_ref = shift;
+    $map_ref = \%style_map if (!defined($map_ref));
+    return '' unless (defined($map_ref->{$command}));
+    if ((ref($map_ref->{$command}) eq 'HASH') 
+       and exists($map_ref->{$command}->{'attribute'}))
+    {
+        return $map_ref->{$command}->{'attribute'};
+    }
+    elsif ($map_ref->{$command} !~ /^&/)
+    {
+        my $attribute = $map_ref->{$command};
+        $attribute =~ s/^\"//;
+        return $attribute;
+    }
+    return '';
+}
+
+sub t2h_begin_style($$;$)
+{
+    my $command = shift;
+    my $text = shift;
+    my $map_ref = shift;
+    my $attribute = t2h_get_attribute($command,$map_ref);
+    $attribute = "<$attribute>" if ($attribute ne '');
+    return $attribute.$text;
+}
+
+sub t2h_end_style($$;$)
+{
+    my $command = shift;
+    my $text = shift;
+    my $map_ref = shift;
+    my $attribute = t2h_get_attribute($command,$map_ref);
+    if ($attribute =~ /^(\w+)/)
+    {
+        $attribute = $1;
+    }
+    $attribute = "</$attribute>" if ($attribute ne '');
+    return $text.$attribute;
 }
 
 # a paragraph
 # arguments:
 # $text of the paragraph
 # $align for the alignement
+# $indent for the indent style (indent or noindent)
 # The following is usefull if the paragraph is in an itemize.
 # $paragraph_command is the leading formatting command (like @minus)
 # $paragraph_command_formatted is the leading formatting command formatted
 # $paragraph_number is a reference on the number of paragraphs appearing
 #    in the format. The value should be increased if a paragraph is done
 # $format is the format name (@itemize)
-sub t2h_default_paragraph($$$$$$$$$)
+sub t2h_default_paragraph($$$$$$$$$$$$)
 {
     my $text = shift;
     my $align = shift;
+    my $indent = shift;
     my $paragraph_command = shift;
     my $paragraph_command_formatted = shift;
     my $paragraph_number = shift;
@@ -3747,15 +4260,24 @@
     my $item_nr = shift;
     my $enumerate_style = shift;
     my $number = shift;
+    my $command_stack_at_end = shift;
+    my $command_stack_at_begin = shift;
 #print STDERR "format: $format\n" if (defined($format));
+#print STDERR "paragraph @$command_stack_at_end; @$command_stack_at_begin\n";
     $paragraph_command_formatted = '' if (!defined($paragraph_command_formatted) or 
           exists($special_list_commands{$format}->{$paragraph_command}));
-    #my $in_term = shift;
     return '' if ($text =~ /^\s*$/);
+    foreach my $style(t2h_collect_styles($command_stack_at_begin))
+    {
+       $text = t2h_begin_style($style, $text);
+    }
+    foreach my $style(t2h_collect_styles($command_stack_at_end))
+    {
+       $text = t2h_end_style($style, $text);
+    }
     if (defined($paragraph_number) and defined($$paragraph_number))
     {
          $$paragraph_number++;
-         #return $text . "\n" if (($format eq 'itemize' or $format eq 'enumerate') and
          return $text  if (($format eq 'itemize' or $format eq 'enumerate') and
             ($$paragraph_number == 1));
     }
@@ -3764,7 +4286,7 @@
     {
         $open = "<p align=\"$paragraph_style{$align}\">";
     }
-    return $open. "$text</p>";
+    return $open.$text.'</p>';
 }
 
 # a preformatted region
@@ -3777,7 +4299,7 @@
 # $leading_command_formatted is the leading formatting command formatted
 # $preformatted_number is a reference on the number of preformatteds appearing
 #    in the format. The value should be increased if a preformatted is done
-sub t2h_default_preformatted($$$$$$$$$$)
+sub t2h_default_preformatted($$$$$$$$$$$$)
 {
     my $text = shift;
     my $pre_style = shift;
@@ -3789,7 +4311,10 @@
     my $item_nr = shift;
     my $enumerate_style = shift;
     my $number = shift;
+    my $command_stack_at_end = shift;
+    my $command_stack_at_begin = shift;
 
+#print STDERR "preformatted @$command_stack_at_end; @$command_stack_at_begin\n";
     return '' if ($text eq '');
     $leading_command_formatted = '' if (!defined($leading_command_formatted) or 
           exists($special_list_commands{$format}->{$leading_command}));
@@ -3797,7 +4322,15 @@
     {
         $$preformatted_number++;
     }
-    return "<pre class=\"$class\">$text</pre>";
+    foreach my $style(t2h_collect_styles($command_stack_at_begin))
+    {
+       $text = t2h_begin_style($style, $text, \%style_map_pre);
+    }
+    foreach my $style(t2h_collect_styles($command_stack_at_end))
+    {
+       $text = t2h_end_style($style, $text, \%style_map_pre);
+    }
+    return "<pre class=\"$class\">".$text."</pre>";
 }
 
 # This function formats a heading for an element
@@ -3806,15 +4339,12 @@
 # an element. It is a hash reference for a node or a sectionning command.
 # The interesting keys are:
 # 'text': the heading text
-# 'name': the heading text without section number
+# 'text_nonumber': the heading text without section number
 # 'node': true if it is a node
 # 'level': level of the element. 0 for @top, 1 for chapter, heading, 
 #      appendix..., 2 for section and so on...
 # 'tag_level': the sectionning element name, raisesections and lowersections
 #      taken into account
-#
-# relevant configuration variable:
-# $NUMBER_SECTIONS
 sub t2h_default_heading($)
 {
     my $element = shift;
@@ -3825,10 +4355,6 @@
     }
     $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');
@@ -3836,11 +4362,13 @@
     {
          $text = &$anchor ('', "$Texi2HTML::THISDOC{'toc_file'}#$element->{'tocid'}", $text);
     }
-    return "<h$level class=\"$class\"> $text </h$level>\n";
+    my $align = '';
+    $align = ' align="center"' if ($element->{'tag'} eq 'centerchap');
+    return "<h$level class=\"$class\"$align> $text </h$level>\n";
 }
 
 # formatting of raw regions
-# ih L2H is true another mechanism is used for tex
+# if L2H is true another mechanism is used for tex
 sub t2h_default_raw($$)
 {
     my $style = shift;
@@ -3860,6 +4388,14 @@
     }
 }
 
+# raw environment when removing texi (in comments) 
+sub t2h_default_raw_no_texi($$)
+{
+    my $style = shift;
+    my $text = shift;
+    return $text;
+}
+
 # This function formats a footnote reference and the footnote text associated
 # with a given footnote.
 # The footnote reference is the text appearing in the main document pointing
@@ -3912,21 +4448,66 @@
     return $lines; 
 }
 
+sub t2h_default_image_files($$)
+{
+    my $base = shift;
+    my $extension = shift;
+    my @files = ();
+    return @files if (!defined($base) or ($base eq ''));
+    push @files,"$base.$extension" if (defined($extension) and ($extension ne ''));
+    foreach my $ext (@IMAGE_EXTENSIONS)
+    {
+        push @files, "$base.$ext";
+    }
+    return @files;
+}
+
 # format an image
 #
 # arguments:
 # image file name with path
-# image basename or alt text
+# image basename
 # a boolean true if we are in a preformatted format
 # image file name without path
-sub t2h_default_image($$$$)
+# alt text
+# width
+# height
+# raw alt
+# extension
+# path to working dir
+# path to file relative from working dir
+sub t2h_default_image($$$$$$$$$$$)
 {
-   my $file = shift;
-   my $base = shift;
-   my $preformatted = shift;
-   my $file_name = shift;
-   return "[ $base ]" if ($preformatted);
-   return "<img src=\"$file\" alt=\"$base\">";
+    my $file = shift;
+    my $base = shift;
+    my $preformatted = shift;
+    my $file_name = shift;
+    my $alt = shift;
+    my $width = shift;
+    my $height = shift;
+    my $raw_alt = shift;
+    my $extension = shift;
+    my $working_dir = shift;
+    my $file_path = shift;
+ 
+    if (!defined($file_path) or $file_path eq '')
+    {
+        if (defined($extension) and $extension ne '')
+        {
+            $file = "$base.$extension";
+        }
+        else
+        {
+            $file = "$base.jpg";
+        }
+        main::echo_warn ("no image file for $base, (using $file)");
+    } 
+    $alt = &$protect_text($base) if (!defined($alt) or ($alt eq ''));
+    return "[ $alt ]" if ($preformatted);
+    # it is possible that $file_name is more correct as it allows the user
+    # to chose the relative path.
+    $file = &$protect_text($file);
+    return "<img src=\"$file\" alt=\"$alt\">";
 }
 
 # address put in footer describing when was generated and who did the manual
@@ -3957,6 +4538,7 @@
 # arguments:
 # target identifier
 # boolean true if in preformatted format
+# FIXME document the remaining 
 sub t2h_default_index_entry_label($$)
 {
     my $identifier = shift;
@@ -3977,6 +4559,7 @@
    my $arguments = shift;
    my $index_label = shift;
    $index_label = '' if (!defined($index_label));
+   $category = '' if (!defined($category) or ($category =~ /^\s*$/));
    $name = '' if (!defined($name) or ($name =~ /^\s*$/));
    $type = '' if (!defined($type) or $type =~ /^\s*$/);
    if (!defined($arguments) or $arguments =~ /^\s*$/)
@@ -3985,6 +4568,7 @@
    }
    else
    {
+       chomp ($arguments);
        $arguments = '<i>' . $arguments . '</i>';
    }
    my $type_name = '';
@@ -4096,13 +4680,13 @@
     my $with_explanation = shift;
     my $explanation_lines = shift;
     my $explanation_text = shift;
-    my $explanation_unformatted = shift;
+    my $explanation_simply_formatted = shift;
     
     my $attribute = $command;
     my $opening = "<$attribute>";
-    if (defined($explanation_unformatted)) 
+    if (defined($explanation_simply_formatted)) 
     {
-        $opening = "<$attribute title=\"$explanation_unformatted\">";
+        $opening = "<$attribute title=\"$explanation_simply_formatted\">";
     }
     if ($with_explanation)
     {
@@ -4114,20 +4698,24 @@
     }
 }
 
-sub t2h_default_quotation_prepend_text($$)
+sub t2h_default_quotation_prepend_text($)
 {
-    my $style = shift;
     my $text = shift;
-    return &$I('@b{%{quotation_arg}:} ', {'quotation_arg' => $text}, {'keep_texi' => 1}) if (defined($text));
-    return undef;
+    return undef if (!defined($text) or $text =~ /^$/);
+# FIXME if there is a @ protecting the end of line the result is
+# @b{some text @:}
+# It is likely not to be what was intended
+    chomp($text);
+    return &$I('@b{%{quotation_arg}:} ', {'quotation_arg' => $text}, {'keep_texi' => 1});
 }
 
-sub t2h_default_quotation($$$$)
+sub t2h_default_quotation($$$)
 {
     my $text = shift;
     my $argument_text = shift;
-    my $argument_style_texi = shift;
-    my $argument_style_id = shift;
+    my $argument_text_texi = shift;
+#    my $argument_style_texi = shift;
+#    my $argument_style_id = shift;
 #    if (defined($argument_text))
 #    {
 #         return '<blockquote>' . &$I('%{style}:%{quotation}',
@@ -4251,4 +4839,30 @@
     $nonalpha_text . $join . $alpha_text . "</td></tr></table>\n";
 }
 
+# return the heading with number texinfo text
+# also called for nodes.
+sub t2h_default_heading_texi($$$)
+{
+    my $tag = shift;
+    my $texi = shift;
+    my $number = shift;
+    $texi =~ s/\s*$//;
+    $texi =~ s/^\s*//;
+    return "$number $texi" if ($NUMBER_SECTIONS and defined($number) and ($number !~ /^\s*$/)) ;
+    return $texi;
+}
+
+# return the heading texinfo text for split index sections
+sub t2h_default_index_element_heading_texi($$$)
+{ # FIXME i18n
+    my $heading_texi = shift;
+    my $tag = shift;
+    my $texi = shift;
+    my $number = shift;
+    my $first_letter = shift;
+    my $last_letter = shift;
+    return "$heading_texi: $first_letter -- $last_letter" if ($last_letter ne $first_letter);
+    return "$heading_texi: $first_letter";
+}
+
 1;
--- tetex-src-3.0/utils/texi2html/configure.ac.texi176	2005-02-04 00:36:38.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/configure.ac	2007-06-05 06:14:09.000000000 +0200
@@ -1,7 +1,7 @@
 dnl Process this file with autoconf to produce a configure script.
 AC_PREREQ(2.53)
-AC_INIT([texi2html], [1.76], [users@texi2html.cvshome.org])
-AM_INIT_AUTOMAKE([gnu 1.7 dist-bzip2])
+AC_INIT([texi2html], [1.78], [texi2html-bug@nongnu.org])
+AM_INIT_AUTOMAKE([gnu 1.7 dist-bzip2 dist-zip])
 
 dnl Disable Autoconf, Automake, and some other maintainer tools without the
 dnl --enable-maintainer-mode argument.
@@ -10,37 +10,75 @@
 dnl Misc variable settings
 PACKAGE_DATE=`"$srcdir"/mdate-sh "$srcdir"/configure.ac`
 AC_SUBST([PACKAGE_DATE])
-INIT=$srcdir/texi2html.init
-AC_SUBST_FILE([INIT])
-MYSIMPLE=$srcdir/MySimple.pm
-AC_SUBST_FILE([MYSIMPLE])
-T2H_I18N=$srcdir/T2h_i18n.pm
-AC_SUBST_FILE([T2H_I18N])
-T2H_L2H_FILE=$srcdir/l2h.init
-AC_SUBST_FILE([T2H_L2H_FILE])
-T2H_TRANSLATIONS_FILE=$srcdir/translations.pl
-AC_SUBST_FILE([T2H_TRANSLATIONS_FILE])
-AC_ARG_WITH([encode],
-           AC_HELP_STRING([--with-encode],
-                           [use encode (default: detected)]),
-            [if test $withval = 'no'; then
-              USE_UNICODE=0
-             else
-              USE_UNICODE=1
-             fi],
-            [
-            if perl -e "use Encode; use Unicode::Normalize;" > /dev/null 2>&1; 
-              then USE_UNICODE=1
-            else
-              USE_UNICODE=0
-            fi
-            ])
-AC_SUBST([USE_UNICODE])
 
 dnl Checks for programs.
 AC_ARG_VAR([PERL], [The path to the `perl' executable.])
 AC_PATH_PROG([PERL], [perl], [/usr/bin/env perl], [/opt/perl5/bin:"$PATH"])
 
+AC_ARG_WITH([encode],
+    AC_HELP_STRING([--with-encode],
+           [use encode (default: detected)]),
+    [if test $withval = 'no'; then
+         USE_UNICODE=0
+     else
+         USE_UNICODE=1
+     fi],
+    [
+     if $PERL -e "use Encode; use Unicode::Normalize;" > /dev/null 2>&1; 
+     then USE_UNICODE=1
+     else
+         USE_UNICODE=0
+     fi
+     ])
+
+AC_ARG_WITH([unidecode],
+    AC_HELP_STRING([--with-unidecode],
+           [use Text::Unidecode (default: detected)]),
+    [if test $withval = 'no'; then
+         USE_UNIDECODE=0
+     else
+         USE_UNIDECODE=1
+     fi],
+    [
+     USE_UNIDECODE=0
+     if test $USE_UNICODE = 1; then
+        if $PERL -e "use Text::Unidecode;" > /dev/null 2>&1; 
+        then USE_UNIDECODE=1
+        fi
+     fi
+     ])
+
+
+AC_SUBST([USE_UNICODE])
+AC_SUBST([USE_UNIDECODE])
+
+t2h_try_translations=
+AC_ARG_ENABLE([translations],
+    AC_HELP_STRING([--enable-translations],
+        [try to rebuild translation files (default: detected)]),
+    [if test $enableval = 'no'; then
+       t2h_try_translations='no'
+     else
+       t2h_try_translations='yes'
+     fi],
+    [ if $PERL -e "use 5.0; use Data::Dumper;" > /dev/null 2>&1;
+     then
+       t2h_try_translations='yes'
+     else  
+       t2h_try_translations='no'
+     fi
+    ])
+
+if test "z$t2h_try_translations" = 'zyes'; then
+    USE_DATA_DUMPER=1
+    REQUIRE_DATA_DUMPER="use Data::Dumper"
+else
+    USE_DATA_DUMPER=0
+    REQUIRE_DATA_DUMPER=1
+fi
+AC_SUBST([USE_DATA_DUMPER])
+AC_SUBST([REQUIRE_DATA_DUMPER])
+
 AC_PROG_INSTALL
 
 dnl Checks for libraries.
@@ -59,15 +97,15 @@
 && test "x$bindir" = 'x${exec_prefix}/bin' \
 && bindir="$bindir/$host"
 
-AC_CONFIG_FILES([texi2html:texi2html.pl], [chmod +x texi2html])
+AC_CONFIG_FILES([texi2html_configured.pl:texi2html.pl], 
+   [chmod +x texi2html_configured.pl])
 AC_CONFIG_FILES([check_texinfo.pl], [chmod +x check_texinfo.pl])
+AC_CONFIG_FILES([manage_i18n.pl], [chmod +x manage_i18n.pl])
 
 dnl The bulk config files.
 AC_CONFIG_FILES([\
                  Makefile \
                  Tests/Makefile \
-                 doc/Makefile \
-                 texi2html.1 \
-                 texi2html.spec \
+                 doc/Makefile 
                  ])
 AC_OUTPUT
--- tetex-src-3.0/utils/texi2html/Makefile.in.texi176	2005-02-04 22:19:59.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/Makefile.in	2007-06-05 06:16:36.000000000 +0200
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004  Free Software Foundation, Inc.
+# 2003, 2004, 2005  Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -40,10 +40,10 @@
 DIST_COMMON = README $(am__configure_deps) $(dist_i18n_DATA) \
 	$(dist_images_DATA) $(dist_pkgdata_DATA) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in $(srcdir)/check_texinfo.pl.in \
-	$(srcdir)/texi2html.1.in $(srcdir)/texi2html.pl \
-	$(srcdir)/texi2html.spec.in $(top_srcdir)/configure AUTHORS \
-	COPYING ChangeLog INSTALL NEWS TODO config.guess config.sub \
-	install-sh mdate-sh missing mkinstalldirs
+	$(srcdir)/manage_i18n.pl.in $(srcdir)/texi2html.pl \
+	$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
+	TODO config.guess config.sub install-sh mdate-sh missing \
+	mkinstalldirs
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.ac
@@ -52,10 +52,10 @@
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
  configure.lineno configure.status.lineno
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_CLEAN_FILES = texi2html check_texinfo.pl texi2html.1
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \
-	"$(DESTDIR)$(i18ndir)" "$(DESTDIR)$(imagesdir)" \
-	"$(DESTDIR)$(pkgdatadir)"
+CONFIG_CLEAN_FILES = texi2html_configured.pl check_texinfo.pl \
+	manage_i18n.pl
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(i18ndir)" \
+	"$(DESTDIR)$(imagesdir)" "$(DESTDIR)$(pkgdatadir)"
 binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(bin_SCRIPTS) $(noinst_SCRIPTS)
 SOURCES =
@@ -66,9 +66,6 @@
 	install-recursive installcheck-recursive installdirs-recursive \
 	pdf-recursive ps-recursive uninstall-info-recursive \
 	uninstall-recursive
-man1dir = $(mandir)/man1
-NROFF = nroff
-MANS = $(man_MANS)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -89,7 +86,7 @@
   { test ! -d $(distdir) \
     || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
          && rm -fr $(distdir); }; }
-DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 $(distdir).zip
 GZIP_ENV = --best
 distuninstallcheck_listfiles = find . -type f -print
 distcleancheck_listfiles = find . -type f -print
@@ -124,10 +121,13 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+REQUIRE_DATA_DUMPER = @REQUIRE_DATA_DUMPER@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
+USE_DATA_DUMPER = @USE_DATA_DUMPER@
 USE_UNICODE = @USE_UNICODE@
+USE_UNIDECODE = @USE_UNIDECODE@
 VERSION = @VERSION@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__leading_dot = @am__leading_dot@
@@ -170,24 +170,26 @@
 # in the top-level distribution directory.
 TEXINFO_TEX = doc/texinfo.tex
 bin_SCRIPTS = texi2html
-texi2html_SOURCES = \
+texi2html_additional_scripts = \
 	MySimple.pm \
 	T2h_i18n.pm \
 	texi2html.init \
-	texi2html.pl \
-	translations.pl
+	translations.pl \
+	l2h.init \
+	T2h_l2h.pm
 
-noinst_SCRIPTS = manage_i18n.pl
-man_MANS = texi2html.1
+texi2html_sources = texi2html_configured.pl $(texi2html_additional_scripts)
+noinst_SCRIPTS = manage_i18n.pl buildt2h.sh
 EXTRA_DIST = \
-	INTRODUCTION \
 	MySimple.pod \
 	autogen.sh \
-	manage_i18n.pl \
+	$(noinst_SCRIPTS) \
 	missing-texi2html \
-	l2h.init \
+	texi2html.pl \
 	texi2html.spec \
-	$(texi2html_SOURCES)
+	texi2html.spec.in \
+	texi2html.pl \
+	$(texi2html_additional_scripts)
 
 dist_pkgdata_DATA = l2h.init \
 	examples/makeinfo.init \
@@ -198,83 +200,94 @@
 	examples/inlinestyle.init \
 	examples/utf8.init \
 	examples/chm.init \
-	examples/roff.init	
+	examples/roff.init \
+	examples/tex4ht.init \
+	examples/my-bib-macros.texi \
+	examples/bib-example.texi \
+	examples/glossary.texi 
 
-dist_i18n_DATA = i18n/en \
-	i18n/de \
+i18n_files = i18n/de \
 	i18n/es \
 	i18n/fr \
 	i18n/nl \
 	i18n/no \
-	i18n/pt 
+	i18n/pt \
+	i18n/pt_BR \
+	i18n/ja
+
+dist_i18n_DATA = i18n/en \
+	$(i18n_files)
 
-dist_images_DATA = images/a_begin.gif \
-	images/a_begin_na.gif \
-	images/a_document.gif \
-	images/a_document_na.gif \
-	images/a_empty.gif \
-	images/a_end.gif \
-	images/a_end_na.gif \
-	images/a_help.gif \
-	images/a_help_na.gif \
-	images/a_index.gif \
-	images/a_index_na.gif \
-	images/a_leftdouble.gif \
-	images/a_leftdouble_na.gif \
-	images/a_left.gif \
-	images/a_left_na.gif \
-	images/a_page.gif \
-	images/a_page_na.gif \
-	images/a_rightdouble.gif \
-	images/a_rightdouble_na.gif \
-	images/a_right.gif \
-	images/a_right_na.gif \
-	images/a_searchdoc.gif \
-	images/a_searchdoc_na.gif \
-	images/a_search.gif \
-	images/a_search_na.gif \
-	images/a_tableofcon.gif \
-	images/a_tableofcon_na.gif \
-	images/a_top.gif \
-	images/a_top_na.gif \
-	images/a_up.gif \
-	images/a_up_na.gif \
+dist_images_DATA = images/a_begin.png \
+	images/a_begin_na.png \
+	images/a_document.png \
+	images/a_document_na.png \
+	images/a_empty.png \
+	images/a_end.png \
+	images/a_end_na.png \
+	images/a_help.png \
+	images/a_help_na.png \
+	images/a_index.png \
+	images/a_index_na.png \
+	images/a_leftdouble.png \
+	images/a_leftdouble_na.png \
+	images/a_left.png \
+	images/a_left_na.png \
+	images/a_page.png \
+	images/a_page_na.png \
+	images/a_rightdouble.png \
+	images/a_rightdouble_na.png \
+	images/a_right.png \
+	images/a_right_na.png \
+	images/a_searchdoc.png \
+	images/a_searchdoc_na.png \
+	images/a_search.png \
+	images/a_search_na.png \
+	images/a_tableofcon.png \
+	images/a_tableofcon_na.png \
+	images/a_top.png \
+	images/a_top_na.png \
+	images/a_up.png \
+	images/a_up_na.png \
 	images/bg.jpg \
-	images/bg_left.gif \
-	images/bg_right.gif \
-	images/blue_dir.gif \
-	images/blue_down.gif \
-	images/blue_grab.gif \
-	images/blue_help.gif \
-	images/blue_next.gif \
-	images/blue_nnext.gif \
-	images/blue_pprev.gif \
-	images/blue_prev.gif \
-	images/blue_readme.gif \
-	images/blue_top.gif \
-	images/blue_up.gif \
-	images/blue_uup.gif \
-	images/contents_motif.gif \
+	images/bg_left.png \
+	images/bg_right.png \
+	images/blue_dir.png \
+	images/blue_down.png \
+	images/blue_grab.png \
+	images/blue_help.png \
+	images/blue_next.png \
+	images/blue_nnext.png \
+	images/blue_pprev.png \
+	images/blue_prev.png \
+	images/blue_readme.png \
+	images/blue_top.png \
+	images/blue_up.png \
+	images/blue_uup.png \
+	images/contents_motif.png \
 	images/COPYING \
-	images/index_motif.gif \
-	images/Mybg.gif \
-	images/next_motif.gif \
-	images/next_motif_gr.gif \
-	images/previous_motif.gif \
-	images/previous_motif_gr.gif \
-	images/spacer3.gif \
-	images/xy_contents.gif \
-	images/xy_foot.gif \
-	images/xy_next.gif \
-	images/xy_next_gr.gif \
-	images/xy_nextsection.gif \
-	images/xy_nextsection_gr.gif \
-	images/xy_previous.gif \
-	images/xy_previous_gr.gif \
-	images/xy_previoussection.gif \
-	images/xy_previoussection_gr.gif \
-	images/xy_up.gif \
-	images/xy_up_gr.gif
+	images/COPYING.Attribution-ShareAlike \
+	images/GPL \
+	images/README \
+	images/index_motif.png \
+	images/Mybg.png \
+	images/next_motif.png \
+	images/next_motif_gr.png \
+	images/previous_motif.png \
+	images/previous_motif_gr.png \
+	images/spacer3.png \
+	images/xy_contents.png \
+	images/xy_foot.png \
+	images/xy_next.png \
+	images/xy_next_gr.png \
+	images/xy_nextsection.png \
+	images/xy_nextsection_gr.png \
+	images/xy_previous.png \
+	images/xy_previous_gr.png \
+	images/xy_previoussection.png \
+	images/xy_previoussection_gr.png \
+	images/xy_up.png \
+	images/xy_up_gr.png
 
 all: all-recursive
 
@@ -312,13 +325,11 @@
 	cd $(srcdir) && $(AUTOCONF)
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-texi2html: $(top_builddir)/config.status $(srcdir)/texi2html.pl
+texi2html_configured.pl: $(top_builddir)/config.status $(srcdir)/texi2html.pl
 	cd $(top_builddir) && $(SHELL) ./config.status $@
 check_texinfo.pl: $(top_builddir)/config.status $(srcdir)/check_texinfo.pl.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
-texi2html.1: $(top_builddir)/config.status $(srcdir)/texi2html.1.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-texi2html.spec: $(top_builddir)/config.status $(srcdir)/texi2html.spec.in
+manage_i18n.pl: $(top_builddir)/config.status $(srcdir)/manage_i18n.pl.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
 install-binSCRIPTS: $(bin_SCRIPTS)
 	@$(NORMAL_INSTALL)
@@ -340,51 +351,6 @@
 	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
 	done
 uninstall-info-am:
-install-man1: $(man1_MANS) $(man_MANS)
-	@$(NORMAL_INSTALL)
-	test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
-	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.1*) list="$$list $$i" ;; \
-	  esac; \
-	done; \
-	for i in $$list; do \
-	  if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
-	  else file=$$i; fi; \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    1*) ;; \
-	    *) ext='1' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
-	  $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
-	done
-uninstall-man1:
-	@$(NORMAL_UNINSTALL)
-	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.1*) list="$$list $$i" ;; \
-	  esac; \
-	done; \
-	for i in $$list; do \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    1*) ;; \
-	    *) ext='1' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
-	  rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
-	done
 install-dist_i18nDATA: $(dist_i18n_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(i18ndir)" || $(mkdir_p) "$(DESTDIR)$(i18ndir)"
@@ -444,7 +410,13 @@
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@set fnord $$MAKEFLAGS; amf=$$2; \
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -456,7 +428,7 @@
 	    local_target="$$target"; \
 	  fi; \
 	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
@@ -464,7 +436,13 @@
 
 mostlyclean-recursive clean-recursive distclean-recursive \
 maintainer-clean-recursive:
-	@set fnord $$MAKEFLAGS; amf=$$2; \
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
 	dot_seen=no; \
 	case "$@" in \
 	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
@@ -485,7 +463,7 @@
 	    local_target="$$target"; \
 	  fi; \
 	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -621,7 +599,6 @@
 dist-shar: distdir
 	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
 	$(am__remove_distdir)
-
 dist-zip: distdir
 	-rm -f $(distdir).zip
 	zip -rq $(distdir).zip $(distdir)
@@ -630,6 +607,8 @@
 dist dist-all: distdir
 	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
 	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
 	$(am__remove_distdir)
 
 # This target untars the dist file and tries a VPATH configuration.  Then
@@ -701,10 +680,10 @@
 	       exit 1; } >&2
 check-am: all-am
 check: check-recursive
-all-am: Makefile $(SCRIPTS) $(MANS) $(DATA)
+all-am: Makefile $(SCRIPTS) $(DATA)
 installdirs: installdirs-recursive
 installdirs-am:
-	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(i18ndir)" "$(DESTDIR)$(imagesdir)" "$(DESTDIR)$(pkgdatadir)"; do \
+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(i18ndir)" "$(DESTDIR)$(imagesdir)" "$(DESTDIR)$(pkgdatadir)"; do \
 	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
 	done
 install: install-recursive
@@ -733,7 +712,7 @@
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-recursive
 
-clean-am: clean-generic mostlyclean-am
+clean-am: clean-generic clean-local mostlyclean-am
 
 distclean: distclean-recursive
 	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
@@ -746,18 +725,20 @@
 
 html: html-recursive
 
+html-am: html-local
+
 info: info-recursive
 
 info-am:
 
 install-data-am: install-dist_i18nDATA install-dist_imagesDATA \
-	install-dist_pkgdataDATA install-man
+	install-dist_pkgdataDATA
 
 install-exec-am: install-binSCRIPTS
 
 install-info: install-info-recursive
 
-install-man: install-man1
+install-man:
 
 installcheck-am:
 
@@ -781,37 +762,65 @@
 
 uninstall-am: uninstall-binSCRIPTS uninstall-dist_i18nDATA \
 	uninstall-dist_imagesDATA uninstall-dist_pkgdataDATA \
-	uninstall-info-am uninstall-man
+	uninstall-info-am
 
 uninstall-info: uninstall-info-recursive
 
-uninstall-man: uninstall-man1
-
 .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
-	check-am clean clean-generic clean-recursive ctags \
+	check-am clean clean-generic clean-local clean-recursive ctags \
 	ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \
 	dist-tarZ dist-zip distcheck distclean distclean-generic \
 	distclean-recursive distclean-tags distcleancheck distdir \
-	distuninstallcheck dvi dvi-am html html-am info info-am \
-	install install-am install-binSCRIPTS install-data \
+	distuninstallcheck dvi dvi-am html html-am html-local info \
+	info-am install install-am install-binSCRIPTS install-data \
 	install-data-am install-dist_i18nDATA install-dist_imagesDATA \
 	install-dist_pkgdataDATA install-exec install-exec-am \
-	install-info install-info-am install-man install-man1 \
-	install-strip installcheck installcheck-am installdirs \
-	installdirs-am maintainer-clean maintainer-clean-generic \
+	install-info install-info-am install-man install-strip \
+	installcheck installcheck-am installdirs installdirs-am \
+	maintainer-clean maintainer-clean-generic \
 	maintainer-clean-recursive mostlyclean mostlyclean-generic \
 	mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
 	uninstall uninstall-am uninstall-binSCRIPTS \
 	uninstall-dist_i18nDATA uninstall-dist_imagesDATA \
-	uninstall-dist_pkgdataDATA uninstall-info-am uninstall-man \
-	uninstall-man1
+	uninstall-dist_pkgdataDATA uninstall-info-am
+
 
+#texi2html: $(texi2html_sources)
+#	sed -e "/@MYSIMPLE@/r $(srcdir)/MySimple.pm" \
+#	    -e "/@INIT@/r $(srcdir)/texi2html.init" \
+#	    -e "/@T2H_TRANSLATIONS_FILE@/r $(srcdir)/translations.pl" \
+#	    -e "/@T2H_L2H_INIT@/r $(srcdir)/l2h.init" \
+#	    -e "/@T2H_I18N@/r $(srcdir)/T2h_i18n.pm" \
+#	    -e "/@T2H_L2H@/r $(srcdir)/T2h_l2h.pm" $< >$@
+#	chmod a+x $@
+texi2html: $(texi2html_sources)
+	$(SHELL) $(srcdir)/buildt2h.sh $@ $^ 
+	chmod a+x $@
+
+texi2html.spec: texi2html.spec.in configure
+	@echo Generating $@...
+	@sed -e "s/[@]PACKAGE_VERSION[@]/$(PACKAGE_VERSION)/" \
+	     -e "s/[@]PACKAGE_TARNAME[@]/$(PACKAGE_TARNAME)/" $< >texi2html.tmp
+	@cp texi2html.tmp $(srcdir)/$@
+	-@rm texi2html.tmp
+
+i18n/en: texi2html.pl texi2html.init T2h_i18n.pm examples/roff.init \
+                 examples/noheaders.init
+	$(PERL) $(top_builddir)/manage_i18n.pl -d i18n -I . -I $(srcdir) template $^
+
+#i18n/de i18n/nl i18n/es i18n/no i18n/pt i18n/fr: i18n/en
+
+$(i18n_files): i18n/en
+	$(PERL) $(top_builddir)/manage_i18n.pl -d i18n -I . -I $(srcdir) update
+
+#translations.pl: i18n/de i18n/nl i18n/es i18n/no i18n/pt i18n/fr i18n/en
+translations.pl: $(dist_i18n_DATA) 
+	$(PERL) $(top_builddir)/manage_i18n.pl -d i18n -o $@ -I . -I $(srcdir) merge
 
-texi2html: $(texi2html_SOURCES)
+html-local: texi2html
 
-translations.pl: texi2html.pl texi2html.init T2h_i18n.pm examples/roff.init \
- examples/noheaders.init i18n/de i18n/nl i18n/es i18n/no i18n/pt i18n/fr
-	$(PERL) $(srcdir)/manage_i18n.pl all
+clean-local:
+	-rm -f texi2html
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
--- tetex-src-3.0/utils/texi2html/INSTALL.texi176	2001-04-29 09:23:10.000000000 +0200
+++ tetex-src-3.0/utils/texi2html/INSTALL	2005-07-07 23:27:01.000000000 +0200
@@ -1,27 +1,43 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
+Software Foundation, Inc.
+
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
 Basic Installation
 ==================
 
-   These are generic installation instructions.
+These are generic installation instructions.
 
    The `configure' shell script attempts to guess correct values for
 various system-dependent variables used during compilation.  It uses
 those values to create a `Makefile' in each directory of the package.
 It may also create one or more `.h' files containing system-dependent
 definitions.  Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, a file
-`config.cache' that saves the results of its tests to speed up
-reconfiguring, and a file `config.log' containing compiler output
-(useful mainly for debugging `configure').
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
 
    If you need to do unusual things to compile the package, please try
 to figure out how `configure' could check whether to do them, and mail
 diffs or instructions to the address given in the `README' so they can
-be considered for the next release.  If at some point `config.cache'
-contains results you don't want to keep, you may remove or edit it.
-
-   The file `configure.in' is used to create `configure' by a program
-called `autoconf'.  You only need `configure.in' if you want to change
-it or regenerate `configure' using a newer version of `autoconf'.
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
 
 The simplest way to compile this package is:
 
@@ -54,20 +70,22 @@
 Compilers and Options
 =====================
 
-   Some systems require unusual options for compilation or linking that
-the `configure' script does not know about.  You can give `configure'
-initial values for variables by setting them in the environment.  Using
-a Bourne-compatible shell, you can do that on the command line like
-this:
-     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about.  Run `./configure --help' for
+details on some of the pertinent environment variables.
 
-Or on systems that have the `env' program, you can do it like this:
-     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
 
 Compiling For Multiple Architectures
 ====================================
 
-   You can compile the package for more than one kind of computer at the
+You can compile the package for more than one kind of computer at the
 same time, by placing the object files for each architecture in their
 own directory.  To do this, you must use a version of `make' that
 supports the `VPATH' variable, such as GNU `make'.  `cd' to the
@@ -75,28 +93,28 @@
 the `configure' script.  `configure' automatically checks for the
 source code in the directory that `configure' is in and in `..'.
 
-   If you have to use a `make' that does not supports the `VPATH'
-variable, you have to compile the package for one architecture at a time
-in the source code directory.  After you have installed the package for
-one architecture, use `make distclean' before reconfiguring for another
-architecture.
+   If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory.  After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
 
 Installation Names
 ==================
 
-   By default, `make install' will install the package's files in
+By default, `make install' will install the package's files in
 `/usr/local/bin', `/usr/local/man', etc.  You can specify an
 installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
+option `--prefix=PREFIX'.
 
    You can specify separate installation prefixes for
 architecture-specific files and architecture-independent files.  If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
+give `configure' the option `--exec-prefix=PREFIX', the package will
+use PREFIX as the prefix for installing programs and libraries.
 Documentation and other data files will still use the regular prefix.
 
    In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
+options like `--bindir=DIR' to specify different values for particular
 kinds of files.  Run `configure --help' for a list of the directories
 you can set and what kinds of files go in them.
 
@@ -107,7 +125,7 @@
 Optional Features
 =================
 
-   Some packages pay attention to `--enable-FEATURE' options to
+Some packages pay attention to `--enable-FEATURE' options to
 `configure', where FEATURE indicates an optional part of the package.
 They may also pay attention to `--with-PACKAGE' options, where PACKAGE
 is something like `gnu-as' or `x' (for the X Window System).  The
@@ -122,48 +140,86 @@
 Specifying the System Type
 ==========================
 
-   There may be some features `configure' can not figure out
-automatically, but needs to determine by the type of host the package
-will run on.  Usually `configure' can figure that out, but if it prints
-a message saying it can not guess the host type, give it the
-`--host=TYPE' option.  TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name with three fields:
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
      CPU-COMPANY-SYSTEM
 
-See the file `config.sub' for the possible values of each field.  If
+where SYSTEM can have one of these forms:
+
+     OS KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
 `config.sub' isn't included in this package, then this package doesn't
-need to know the host type.
+need to know the machine type.
 
-   If you are building compiler tools for cross-compiling, you can also
+   If you are _building_ compiler tools for cross-compiling, you should
 use the `--target=TYPE' option to select the type of system they will
-produce code for and the `--build=TYPE' option to select the type of
-system on which you are compiling the package.
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
 
 Sharing Defaults
 ================
 
-   If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
 `configure' looks for `PREFIX/share/config.site' if it exists, then
 `PREFIX/etc/config.site' if it exists.  Or, you can set the
 `CONFIG_SITE' environment variable to the location of the site script.
 A warning: not all `configure' scripts look for a site script.
 
-Operation Controls
+Defining Variables
 ==================
 
-   `configure' recognizes the following options to control how it
-operates.
+Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
 
-`--cache-file=FILE'
-     Use and save the results of the tests in FILE instead of
-     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
-     debugging `configure'.
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).  Here is a another example:
+
+     /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
+configuration-related scripts to be executed by `/bin/bash'.
+
+`configure' Invocation
+======================
+
+`configure' recognizes the following options to control how it operates.
 
 `--help'
+`-h'
      Print a summary of the options to `configure', and exit.
 
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
 `--quiet'
 `--silent'
 `-q'
@@ -175,8 +231,6 @@
      Look for the package's source code in directory DIR.  Usually
      `configure' can determine that directory automatically.
 
-`--version'
-     Print the version of Autoconf used to generate the `configure'
-     script, and exit.
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
 
-`configure' also accepts some other, not widely useful, options.
--- tetex-src-3.0/utils/texi2html/texi2html.pl.texi176	2005-02-04 01:16:52.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/texi2html.pl	2007-06-03 02:26:07.000000000 +0200
@@ -1,11 +1,14 @@
-#! @PERL@
+#! @PERL@ -- # perl
 'di ';
 'ig 00 ';
 #+##############################################################################
 #
 # texi2html: Program to transform Texinfo documents to HTML
 #
-#    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
+#    Copyright (C) 1999-2005  Patrice Dumas <dumas@centre-cired.fr>,
+#                             Derek Price <derek@ximbiot.com>,
+#                             Adrian Aichner <adrian@xemacs.org>,
+#                           & others.
 #
 #    This program is free software; you can redistribute it and/or modify
 #    it under the terms of the GNU General Public License as published by
@@ -19,12 +22,12 @@
 #
 #    You should have received a copy of the GNU General Public License
 #    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+#    02110-1301  USA
 #
 #-##############################################################################
-
-# This requires perl version 5 or higher
-#require 5.0;
+# The man page for this program is included at the end of this file and can be
+# viewed using the command 'nroff -man texi2html'.
 
 # for POSIX::setlocale and File::Spec
 require 5.00405;
@@ -32,8 +35,11 @@
 use strict;
 # used in case of tests, to revert to "C" locale.
 use POSIX qw(setlocale LC_ALL LC_CTYPE);
+# used to obtain the name of the current working directory
+use Cwd;
 # used to find a relative path back to the current working directory
 use File::Spec;
+
 #
 # According to
 # larry.jones@sdrc.com (Larry Jones)
@@ -42,23 +48,21 @@
 # Perl pragma to control optional warnings
 # use warnings;
 
-# Declarations. Empty lines separate the different classes of variables:
-
-
-#++##############################################################################
+#++##########################################################################
 #
 # NOTE FOR DEBUGGING THIS SCRIPT:
 # You can run 'perl texi2html.pl' directly, provided you have
 # the environment variable T2H_HOME set to the directory containing
-# the texi2html.init file
+# the texi2html.init, T2h_i18n.pm, translations.pl, l2h.init, 
+# T2h_l2h.pm files
 #
-#--##############################################################################
+#--##########################################################################
 
 # CVS version:
-# $Id: texi2html.pl,v 1.126 2005/02/04 00:14:39 pertusus Exp $
+# $Id: texi2html.pl,v 1.182 2007/05/07 22:56:02 pertusus Exp $
 
 # Homepage:
-my $T2H_HOMEPAGE = "http://texi2html.cvshome.org/";
+my $T2H_HOMEPAGE = "http://www.nongnu.org/texi2html/";
 
 # Authors (appears in comments):
 my $T2H_AUTHORS = <<EOT;
@@ -66,14 +70,20 @@
             Karl Berry  <karl\@freefriends.org>
             Olaf Bachmann <obachman\@mathematik.uni-kl.de>
             and many others.
-Maintained by: Many creative people <dev\@texi2html.cvshome.org>
-Send bugs and suggestions to <users\@texi2html.cvshome.org>
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug\@nongnu.org>
 EOT
 
 # Version: set in configure.in
 my $THISVERSION = '@PACKAGE_VERSION@';
 my $THISPROG = "texi2html $THISVERSION"; # program name and version
 
+#+++########################################################################
+#                                                                          #
+# Paths and file names                                                     #
+#                                                                          #
+#---########################################################################
+
 # set by configure, prefix for the sysconfdir and so on
 my $prefix = '@prefix@';
 my $sysconfdir;
@@ -102,14 +112,29 @@
     $pkgdatadir = "/usr/local/share/texi2html";
     $datadir = "/usr/local/share";
 }
-# The man page for this program is included at the end of this file and can be
-# viewed using the command 'nroff -man texi2html'.
 
-#+++############################################################################
-#                                                                              #
-# Constants                                                                    #
-#                                                                              #
-#---############################################################################
+my $i18n_dir = 'i18n'; # name of the directory containing the per language files
+my $conf_file_name = 'Config' ;
+my $texinfo_htmlxref = 'htmlxref.cnf';
+
+# directories for texi2html init files
+my @texi2html_config_dirs = ('./');
+push @texi2html_config_dirs, "$ENV{'HOME'}/.texi2html/" if (defined($ENV{'HOME'}));
+push @texi2html_config_dirs, "$sysconfdir/texi2html/" if (defined($sysconfdir));
+push @texi2html_config_dirs, "$pkgdatadir" if (defined($pkgdatadir));
+
+# directories for texinfo configuration files
+my @texinfo_config_dirs = ('./.texinfo/');
+push @texinfo_config_dirs, "$ENV{'HOME'}/.texinfo/" if (defined($ENV{'HOME'}));
+push @texinfo_config_dirs, "$sysconfdir/texinfo/" if (defined($sysconfdir));
+push @texinfo_config_dirs, "$datadir/texinfo/" if (defined($datadir));
+
+
+#+++########################################################################
+#                                                                          #
+# Constants                                                                #
+#                                                                          #
+#---########################################################################
 
 my $DEBUG_MENU   =  1;
 my $DEBUG_INDEX =  2;
@@ -129,32 +154,14 @@
 my $MAX_LEVEL = 4;
 my $MIN_LEVEL = 1;
 
-my $i18n_dir = 'i18n'; # name of the directory containing the per language files
-my $conf_file_name = 'Config' ;
-my $texinfo_htmlxref = 'htmlxref.cnf';
-
-# directories for texi2html init files
-my @texi2html_config_dirs = ('./');
-push @texi2html_config_dirs, "$ENV{'HOME'}/.texi2html/" if (defined($ENV{'HOME'}));
-push @texi2html_config_dirs, "$sysconfdir/texi2html/" if (defined($sysconfdir));
-push @texi2html_config_dirs, "$pkgdatadir" if (defined($pkgdatadir));
-
-# directories for texinfo configuration files
-my @texinfo_config_dirs = ('./.texinfo/');
-push @texinfo_config_dirs, "$ENV{'HOME'}/.texinfo/" if (defined($ENV{'HOME'}));
-push @texinfo_config_dirs, "$sysconfdir/texinfo/" if (defined($sysconfdir));
-push @texinfo_config_dirs, "$datadir/texinfo/" if (defined($datadir));
-
-#+++############################################################################
-#                                                                              #
-# Initialization                                                               #
-# Pasted content of File $(srcdir)/texi2html.init: Default initializations     #
-#                                                                              #
-#---############################################################################
-
-# leave this within comments, and keep the require statement
-# This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/texi2html.init
-# exists.
+#+++###########################################################################
+#                                                                             #
+# Initialization                                                              #
+# Some declarations, some functions that are GPL and therefore cannot be in   #
+# texi2html.init, some functions that are not to be customized.               #
+# Pasted content of File $(srcdir)/texi2html.init: Default initializations    #
+#                                                                             #
+#---###########################################################################
 
 {
 package Texi2HTML::Config;
@@ -201,6 +208,8 @@
 $NUMBER_SECTIONS
 $USE_NODES
 $USE_UNICODE
+$USE_UNIDECODE
+$TRANSLITERATE_NODE
 $NODE_FILES
 $NODE_NAME_IN_MENU
 $AVOID_MENU_REDUNDANCY
@@ -225,14 +234,22 @@
 $EXTERNAL_DIR
 @INCLUDE_DIRS 
 @PREPEND_DIRS 
+@CONF_DIRS 
 $IGNORE_PREAMBLE_TEXT
 @CSS_FILES
+$INLINE_CONTENTS
 );
 
 # customization variables
+# ENCODING is deprecated
 use vars qw(
 $ENCODING
+
+$ENCODING_NAME
 $DOCUMENT_ENCODING
+$OUT_ENCODING
+$IN_ENCODING
+$DEFAULT_ENCODING
 $MENU_PRE_STYLE
 $CENTER_IMAGE
 $EXAMPLE_INDENT_CELL
@@ -246,6 +263,7 @@
 $INDEX_CHAPTER
 $SPLIT_INDEX
 $HREF_DIR_INSTEAD_FILE
+$USE_MENU_DIRECTIONS
 $AFTER_BODY_OPEN
 $PRE_BODY_CLOSE
 $EXTRA_HEAD
@@ -253,21 +271,27 @@
 $WORDS_IN_PAGE
 $ICONS
 $UNNUMBERED_SYMBOL_IN_MENU
+$SIMPLE_MENU
 $MENU_SYMBOL
 $OPEN_QUOTE_SYMBOL
 $CLOSE_QUOTE_SYMBOL
 $TOC_LIST_STYLE
 $TOC_LIST_ATTRIBUTE
 $TOP_NODE_FILE
+$TOP_NODE_UP
 $NODE_FILE_EXTENSION
 $BEFORE_OVERVIEW
 $AFTER_OVERVIEW
 $BEFORE_TOC_LINES
 $AFTER_TOC_LINES
 $NEW_CROSSREF_STYLE
+$USER
+$USE_NUMERIC_ENTITY
+$DATE
 %ACTIVE_ICONS
 %NAVIGATION_TEXT
 %PASSIVE_ICONS
+%BUTTONS_NAME
 %BUTTONS_GOTO
 %BUTTONS_EXAMPLE
 @CHAPTER_BUTTONS
@@ -275,6 +299,7 @@
 @SECTION_BUTTONS
 @SECTION_FOOTER_BUTTONS
 @NODE_FOOTER_BUTTONS
+@IMAGE_EXTENSIONS
 );
 
 # customization variables which may be guessed in the script
@@ -328,6 +353,7 @@
 $finish_out
 $node_file_name
 $element_file_name
+$inline_contents
 
 $protect_text
 $anchor
@@ -353,6 +379,7 @@
 $def_line
 $def_line_no_texi
 $raw
+$raw_no_texi
 $heading
 $paragraph
 $preformatted
@@ -360,6 +387,7 @@
 $foot_section
 $address
 $image
+$image_files
 $index_entry_label
 $index_entry
 $index_letter
@@ -392,6 +420,8 @@
 $quotation
 $quotation_prepend_text
 $paragraph_style_command
+$heading_texi
+$index_element_heading_texi
 
 $PRE_ABOUT
 $AFTER_ABOUT
@@ -409,18 +439,23 @@
 %style_map
 %style_map_pre
 %style_map_texi
-%unformatted_text_simple_map_texi
-%unformatted_text_style_map_texi
-%unformatted_text_texi_map
+%simple_format_simple_map_texi
+%simple_format_style_map_texi
+%simple_format_texi_map
+%command_type
 %paragraph_style
 %things_map
 %pre_map
 %texi_map
 %unicode_map
 %unicode_diacritical
+%transliterate_map 
+%transliterate_accent_map
+%no_transliterate_map
 %ascii_character_map
 %ascii_simple_map
 %ascii_things_map
+%numeric_entity_map
 %perl_charset_to_html
 %iso_symbols
 %misc_command
@@ -430,21 +465,29 @@
 %accent_letters
 %unicode_accents
 %special_accents
+@command_handler_init
+@command_handler_process
+@command_handler_finish
+%command_handler
 );
 
+# needed in this namespace for translations
 $I = \&Texi2HTML::I18n::get_string;
 
+#
+# Function refs covered by the GPL as part of the texi2html.pl original
+# code. As such they cannot appear in texi2html.init which is public 
+# domain (at least the things coded by me, and, if I'm not wrong also the 
+# things coded by Olaf -- Pat).
+#
+
 $toc_body                 = \&T2H_GPL_toc_body;
 $style                    = \&T2H_GPL_style;
 $format                   = \&T2H_GPL_format;
-$normal_text              = \&t2h_gpl_normal_text;
 
 sub T2H_GPL_toc_body($)
 {
     my $elements_list = shift;
-#    my $do_contents = shift;
-#    my $do_scontents = shift;
-    #return unless ($do_contents or $do_scontents or $FRAMES);
     return unless ($DO_CONTENTS or $DO_SCONTENTS or $FRAMES);
     my $current_level = 0;
     my $ul_style = $NUMBER_SECTIONS ? $TOC_LIST_ATTRIBUTE : ''; 
@@ -483,7 +526,7 @@
         my $file = '';
         $file = $element->{'file'} if ($SPLIT);
         my $text = $element->{'text'};
-        $text = $element->{'name'} unless ($NUMBER_SECTIONS);
+        #$text = $element->{'name'} unless ($NUMBER_SECTIONS);
         my $entry = "<li>" . &$anchor ($element->{'tocid'}, "$file#$element->{'id'}",$text);
         push (@{$Texi2HTML::TOC_LINES}, $ind . $entry);
         push(@{$Texi2HTML::OVERVIEW}, $entry. "</li>\n") if ($level == 1);
@@ -494,14 +537,12 @@
         my $ind = '  ' x $current_level;
         push(@{$Texi2HTML::TOC_LINES}, "</li>\n$ind</ul>\n");
     }
-    #@{$Texi2HTML::TOC_LINES} = () unless ($do_contents);
     @{$Texi2HTML::TOC_LINES} = () unless ($DO_CONTENTS);
     if (@{$Texi2HTML::TOC_LINES})
     {
         unshift @{$Texi2HTML::TOC_LINES}, $BEFORE_TOC_LINES;
         push @{$Texi2HTML::TOC_LINES}, $AFTER_TOC_LINES;
     }
-    #@{$Texi2HTML::OVERVIEW} = () unless ($do_scontents or $FRAMES);
     @{$Texi2HTML::OVERVIEW} = () unless ($DO_SCONTENTS or $FRAMES);
     if (@{$Texi2HTML::OVERVIEW})
     {
@@ -570,12 +611,14 @@
             $style = $1;
             $attribute_text = $2;
         }
+#        $text = "<${style}$attribute_text>$text</$style>" ;
+        $text = "<${style}$attribute_text>" . "$text" if (!$no_open);
+        $text .= "</$style>" if (!$no_close);
         if ($do_quotes)
         {
              $text = $OPEN_QUOTE_SYMBOL . "$text" if (!$no_open);
              $text .= $CLOSE_QUOTE_SYMBOL if (!$no_close);
         }
-        $text = "<${style}$attribute_text>$text</$style>" ;
     }
     if (ref($style) eq 'HASH')
     {
@@ -612,14 +655,10 @@
     return "<${element}$attribute_text>\n" . $text. "</$element>\n";
 }
 
-sub t2h_gpl_normal_text($)
-{
-    my $text = shift;
-    $text =~ s/``/"/go;
-    $text =~ s/''/"/go;
-    $text =~ s/-(--?)/$1/go;
-    return $text;
-}
+# leave this within comments, and keep the require statement
+# This way, you can directly run texi2html.pl, if 
+# $ENV{T2H_HOME}/texi2html.init exists.
+
 # @INIT@
 
 require "$ENV{T2H_HOME}/texi2html.init" 
@@ -628,37 +667,53 @@
 
 my $translation_file = 'translations.pl'; # file containing all the translations
 my $T2H_OBSOLETE_STRINGS;
+
+# leave this within comments, and keep the require statement
+# This way, you can directly run texi2html.pl, 
+# if $ENV{T2H_HOME}/translations.pl exists.
+#
+# @T2H_TRANSLATIONS_FILE@
+
 require "$ENV{T2H_HOME}/$translation_file"
     if ($0 =~ /\.pl$/ &&
         -e "$ENV{T2H_HOME}/$translation_file" && -r "$ENV{T2H_HOME}/$translation_file");
 
-# @T2H_TRANSLATIONS_FILE@
-my $index_name = -1;
-my @index_to_hash = ('style_map', 'style_map_pre', 'style_map_texi');
-foreach my $hash (\%style_map, \%style_map_pre, \%style_map_texi, \%unformatted_text_style_map_texi)
+# set the default 'args' entry to normal for each style hash (and each command
+# within)
+my $name_index = -1;
+my @hash_names = ('style_map', 'style_map_pre', 'style_map_texi', 'simple_format_style_map_texi');
+foreach my $hash (\%style_map, \%style_map_pre, \%style_map_texi, \%simple_format_style_map_texi)
 {
-    $index_name++;
-    my $name = $index_to_hash[$index_name];
+    $name_index++;
+    my $name = $hash_names[$name_index]; # name associated with hash ref
     foreach my $style (keys(%{$hash}))
     {
-         next unless (ref($hash->{$style}) eq 'HASH');
-         $hash->{$style}->{'args'} = ['normal'] if (!exists($hash->{$style}->{'args'}));
-         die "Bug: args not defined for $style in $name" if (!defined($hash->{$style}->{'args'}));
+        next unless (ref($hash->{$style}) eq 'HASH');
+        $hash->{$style}->{'args'} = ['normal'] if (!exists($hash->{$style}->{'args'}));
+        die "Bug: args not defined, but existing, for $style in $name" if (!defined($hash->{$style}->{'args'}));
 #print STDERR "DEFAULT($name, $hash) add normal as arg for $style ($hash->{$style}), $hash->{$style}->{'args'}\n";
     }
 }
 
-sub t2h_utf8_accent($$)
+#
+# Some functions used to override normal formatting functions in specific 
+# cases. The user shouldn't want to change them, but can use them.
+#
+
+# used to utf8 encode the result
+sub t2h_utf8_accent($$$)
 {
     my $accent = shift;
     my $args = shift;
     my $style_stack = shift;
   
     my $text = $args->[0];
+    #print STDERR "$accent\[".scalar(@$style_stack) ."\] (@$style_stack)\n"; 
 
+    # special handling of @dotless{i}
     if ($accent eq 'dotless')
-    { # \x{0131}\x{0308} for @dotless{i} @" doesn't lead to NFC 00ef.
-        if (($text eq 'i') and (!defined($style_stack->[-2]) or (!defined($unicode_accents{$style_stack->[-2]})) or ($style_stack->[-2] eq 'tieaccent')))
+    { 
+        if (($text eq 'i') and (!defined($style_stack->[-1]) or (!defined($unicode_accents{$style_stack->[-1]})) or ($style_stack->[-1] eq 'tieaccent')))
         {
              return "\x{0131}";
         }
@@ -666,28 +721,49 @@
         return $text;
     }
         
+    # FIXME \x{0131}\x{0308} for @dotless{i} @" doesn't lead to NFC 00ef.
     return Unicode::Normalize::NFC($text . chr(hex($unicode_diacritical{$accent}))) 
         if (defined($unicode_diacritical{$accent}));
     return ascii_accents($text, $accent);
 }
 
-sub t2h_utf8_normal_text($)
+sub t2h_utf8_normal_text($$$$$)
 {
     my $text = shift;
-    $text =~ s/---/\x{2014}/g;
-    $text =~ s/--/\x{2013}/g;
-    $text =~ s/``/\x{201C}/g;
-    $text =~ s/''/\x{201D}/g;
-    return $text;
+    my $in_raw_text = shift;
+    my $in_preformatted = shift;
+    my $in_code =shift;
+    my $style_stack = shift;
+    $text = &$protect_text($text) unless($in_raw_text);
+    $text = uc($text) if (in_small_caps($style_stack));
+
+    if (!$in_code and !$in_preformatted)
+    {
+        $text =~ s/---/\x{2014}/g;
+        $text =~ s/--/\x{2013}/g;
+        $text =~ s/``/\x{201C}/g;
+        $text =~ s/''/\x{201D}/g;
+    }
+    return Unicode::Normalize::NFC($text);
 }
 
-sub t2h_cross_manual_normal_text($)
+# these are unlikely to be used by users, as they are essentially
+# used to follow the html external refs specification in texinfo
+sub t2h_cross_manual_normal_text($$$$$)
 {
-   my $text = shift;
-   $text = main::normalise_space($text);
-   my $result = '';
-   while ($text ne '')
-   {
+    my $text = shift;
+    my $in_raw_text = shift;
+    my $in_preformatted = shift;
+    my $in_code =shift;
+    my $style_stack = shift;
+
+    $text = uc($text) if (in_small_caps($style_stack));
+    return $text if ($USE_UNICODE);
+
+    # if there is no unicode support, we do all the transformations here
+    my $result = '';
+    while ($text ne '')
+    {
         if ($text =~ s/^([A-Za-z0-9]+)//o)
         {
              $result .= $1;
@@ -700,34 +776,40 @@
         {
              if (exists($ascii_character_map{$1}))
              {
-                  $result .= '_' . lc($ascii_character_map{$1});
-             }
-             elsif ($USE_UNICODE)
-             {
-                  $result .= $1;
+                 $result .= '_' . lc($ascii_character_map{$1});
              }
              else
-             {
+             { # wild guess that should work for latin1
                   $result .= '_' . '00' . lc(sprintf("%02x",ord($1)));
              }
         }
         else
         {
-             print STDERR "Bug: unknown character in node (likely in infinite loop)\n";
+             print STDERR "Bug: unknown character in cross ref (likely in infinite loop)\n";
              sleep 1;
-        }    
-   }
+        }
+    }
    
-   return $result;
+    return $result;
 }
 
-sub t2h_nounicode_cross_manual_accent($$)
+sub t2h_nounicode_cross_manual_accent($$$)
 {
     my $accent = shift;
     my $args = shift;
+    my $style_stack = shift;
                                                                                 
     my $text = $args->[0];
 
+    if ($accent eq 'dotless')
+    { 
+        if (($text eq 'i') and (!defined($style_stack->[-1]) or (!defined($unicode_accents{$style_stack->[-1]})) or ($style_stack->[-1] eq 'tieaccent')))
+        {
+             return "_0131";
+        }
+        #return "\x{}" if ($text eq 'j'); # not found !
+        return $text;
+    }
     return '_' . lc($unicode_accents{$accent}->{$text})
         if (defined($unicode_accents{$accent}->{$text}));
     return ($text . '_' . lc($unicode_diacritical{$accent})) 
@@ -735,36 +817,38 @@
     return ascii_accents($text, $accent);
 }
 
-$USE_UNICODE = '@USE_UNICODE@';
-if ($USE_UNICODE eq '@USE_UNICODE@')
+sub t2h_transliterate_cross_manual_accent($$)
 {
-    $USE_UNICODE = 1;
-    eval {
-        require Encode;
-        require Unicode::Normalize; 
-        Encode->import('encode');
-    };
-    $USE_UNICODE = 0 if ($@);
-}
+    my $accent = shift;
+    my $args = shift;
+                                                                                
+    my $text = $args->[0];
 
+    if (exists($unicode_accents{$accent}->{$text}) and
+        exists ($transliterate_map{$unicode_accents{$accent}->{$text}}))
+    {
+         return $transliterate_map{$unicode_accents{$accent}->{$text}};
+    }
+    return $text;
 }
 
+
+} # end package Texi2HTML::Config
+
 use vars qw(
 %value
 );
 
-# This is deprecated
-#our %user_sub;
-
 # variables which might be redefined by the user but aren't likely to be  
 # they seem to be in the main namespace
 use vars qw(
-$index_properties
+%index_names
 %predefined_index
 %valid_index
 %sec2level
 %code_style_map
 %region_lines
+%forbidden_index_name
 );
 
 # Some global variables are set in the script, and used in the subroutines
@@ -788,12 +872,12 @@
     if ($0 =~ /\.pl$/ &&
         -e "$ENV{T2H_HOME}/MySimple.pm" && -r "$ENV{T2H_HOME}/MySimple.pm");
 
-#+++############################################################################
-#                                                                              #
-# Initialization                                                               #
-# Pasted content of File $(srcdir)/T2h_i18n.pm: Internationalisation           #
-#                                                                              #
-#---############################################################################
+#+++########################################################################
+#                                                                          #
+# Initialization                                                           #
+# Pasted content of File $(srcdir)/T2h_i18n.pm: Internationalisation       #
+#                                                                          #
+#---########################################################################
 
 # leave this within comments, and keep the require statement
 # This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/T2h_i18n.pm
@@ -805,6 +889,26 @@
         -e "$ENV{T2H_HOME}/T2h_i18n.pm" && -r "$ENV{T2H_HOME}/T2h_i18n.pm");
 
 
+#########################################################################
+#
+# latex2html stuff
+#
+#---######################################################################
+
+{
+# leave this within comments, and keep the require statement
+# This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/T2h_l2h.pm
+# exists.
+
+# @T2H_L2H@
+
+
+require "$ENV{T2H_HOME}/T2h_l2h.pm"
+    if ($0 =~ /\.pl$/ &&
+        -e "$ENV{T2H_HOME}/T2h_l2h.pm" && -r "$ENV{T2H_HOME}/T2h_l2h.pm");
+
+}
+
 {
 package Texi2HTML::LaTeX2HTML::Config;
 
@@ -867,39 +971,34 @@
 #
 # pre-defined indices
 #
-$index_properties =
-{
- 'c' => { name => 'cp'},
- 'f' => { name => 'fn', code => 1},
- 'v' => { name => 'vr', code => 1},
- 'k' => { name => 'ky', code => 1},
- 'p' => { name => 'pg', code => 1},
- 't' => { name => 'tp', code => 1}
-};
 
+my %index_prefix_to_name = ();
 
-%predefined_index = (
-                     'cp', 'c',
-                     'fn', 'f',
-                     'vr', 'v',
-                     'ky', 'k',
-                     'pg', 'p',
-                     'tp', 't',
-	            );
+%index_names =
+(
+ 'cp' => { 'prefix' => ['cp','c']},
+ 'fn' => { 'prefix' => ['fn', 'f'], code => 1},
+ 'vr' => { 'prefix' => ['vr', 'v'], code => 1},
+ 'ky' => { 'prefix' => ['ky', 'k'], code => 1},
+ 'pg' => { 'prefix' => ['pg', 'p'], code => 1},
+ 'tp' => { 'prefix' => ['tp', 't'], code => 1}
+);
 
-#
-# valid indices
-#
-%valid_index = (
-                'c', 1,
-                'f', 1,
-                'v', 1,
-                'k', 1,
-                'p', 1,
-                't', 1,
-               );
+foreach my $name(keys(%index_names))
+{
+    foreach my $prefix (@{$index_names{$name}->{'prefix'}})
+    {
+        $forbidden_index_name{$prefix} = 1;
+        $index_prefix_to_name{$prefix} = $name;
+    }
+}
+
+foreach my $other_forbidden_index_name ('info','ps','pdf','htm',
+   'log','aux','dvi','texi','txi','texinfo','tex','bib')
+{
+    $forbidden_index_name{$other_forbidden_index_name} = 1;
+}
 
-#
 # commands with ---, -- '' and `` preserved
 # usefull with the old interface
 
@@ -914,21 +1013,24 @@
            'verb'    => 1,
 );
 
-my $simple_map_ref = \%Texi2HTML::Config::simple_map;
-my $simple_map_pre_ref = \%Texi2HTML::Config::simple_map_pre;
-my $simple_map_texi_ref = \%Texi2HTML::Config::simple_map_texi;
-my $style_map_ref = \%Texi2HTML::Config::style_map;
-my $style_map_pre_ref = \%Texi2HTML::Config::style_map_pre;
-my $style_map_texi_ref = \%Texi2HTML::Config::style_map_texi;
-my $things_map_ref = \%Texi2HTML::Config::things_map;
-my $pre_map_ref = \%Texi2HTML::Config::pre_map;
-my $texi_map_ref = \%Texi2HTML::Config::texi_map;
+my @element_directions = ('Up', 'Forward', 'Back', 'Next', 'Prev', 
+'SectionNext', 'SectionPrev', 'SectionUp', 'FastForward', 'FastBack', 
+'This', 'NodeUp', 'NodePrev', 'NodeNext', 'Following' );
+$::simple_map_ref = \%Texi2HTML::Config::simple_map;
+$::simple_map_pre_ref = \%Texi2HTML::Config::simple_map_pre;
+$::simple_map_texi_ref = \%Texi2HTML::Config::simple_map_texi;
+$::style_map_ref = \%Texi2HTML::Config::style_map;
+$::style_map_pre_ref = \%Texi2HTML::Config::style_map_pre;
+$::style_map_texi_ref = \%Texi2HTML::Config::style_map_texi;
+$::things_map_ref = \%Texi2HTML::Config::things_map;
+$::pre_map_ref = \%Texi2HTML::Config::pre_map;
+$::texi_map_ref = \%Texi2HTML::Config::texi_map;
 
-# delete from hash if we are using te new interface
+# delete from hash if we are using the new interface
 foreach my $code (keys(%code_style_map))
 {
     delete ($code_style_map{$code}) 
-       if (ref($style_map_ref->{$code}) eq 'HASH');
+       if (ref($::style_map_ref->{$code}) eq 'HASH');
 }
 
 # no paragraph in these commands
@@ -941,16 +1043,6 @@
 );
 
 
-#foreach my $command (keys(%Texi2HTML::Config::style_map))
-#{
-#    next unless (ref($style_map_ref->{$command}) eq 'HASH');
-#    print STDERR "CMD: $command\n";
-#    die "Bug: no args for $command in style_map\n" unless defined($style_map_ref->{$command}->{'args'});
-#    die "Bug: no args for $command in style_map_pre\n" unless defined($style_map_pre_ref->{$command}->{'args'});
-#    die "Bug: non existence of args for $command in style_map_texi\n" unless (exists($style_map_texi_ref->{$command}->{'args'}));
-#    die "Bug: no args for $command in style_map_texi\n" unless defined($style_map_texi_ref->{$command}->{'args'});
-#}
-
 #
 # texinfo section names to level
 #
@@ -1010,9 +1102,11 @@
 # sec2level{'majorheading'} is also 1 and not 0
 $sec2level{'majorheading'} = 1;
 $sec2level{'chapheading'} = 1;
-# FIXME this one could be centered...
 $sec2level{'centerchap'} = 1;
 
+# sction to level hash not taking into account raise and lower sections
+my %reference_sec2level = %sec2level;
+
 # regions treated especially. The text for these regions is collected in the
 # corresponding array 
 %region_lines = (
@@ -1048,38 +1142,28 @@
 }
 
 # a hash associating a format @thing / @end thing with the type of the format
-# 'complex' 'simple' 'deff' 'list' 'menu' 'paragraph_style'
+# 'complex_format' 'simple_format' 'deff' 'list' 'menu' 'paragraph_format'
 my %format_type = (); 
 
 foreach my $simple_format (keys(%Texi2HTML::Config::format_map))
 {
-   $format_type{$simple_format} = 'simple';
-   $no_line_macros{$simple_format} = 1;
-   $no_line_macros{"end $simple_format"} = 1;
+   $format_type{$simple_format} = 'simple_format';
 }
 foreach my $paragraph_style (keys(%Texi2HTML::Config::paragraph_style))
 {
-   $format_type{$paragraph_style} = 'paragraph_style';
-   $no_line_macros{$paragraph_style} = 1;
-   $no_line_macros{"end $paragraph_style"} = 1;
+   $format_type{$paragraph_style} = 'paragraph_format';
 }
 foreach my $complex_format (keys(%$Texi2HTML::Config::complex_format_map))
 {
-   $format_type{$complex_format} = 'complex';
-   $no_line_macros{$complex_format} = 1;
-   $no_line_macros{"end $complex_format"} = 1;
+   $format_type{$complex_format} = 'complex_format';
 }
 foreach my $table (('table', 'ftable', 'vtable', 'multitable'))
 {
    $format_type{$table} = 'table';
-   $no_line_macros{$table} = 1;
-   $no_line_macros{"end $table"} = 1;
 }
 foreach my $def_format (keys(%Texi2HTML::Config::def_map))
 {
    $format_type{$def_format} = 'deff';
-   $no_line_macros{$def_format} = 1;
-   $no_line_macros{"end $def_format"} = 1;
 }
 $format_type{'itemize'} = 'list';
 $format_type{'enumerate'} = 'list';
@@ -1094,10 +1178,10 @@
 
 $format_type{'group'} = 'group';
 
-foreach my $macro (('itemize', 'enumerate', 'menu', 'cartouche', 'float', 'quotation'))
-{ 
-   $no_line_macros{$macro} = 1;
-   $no_line_macros{"end $macro"} = 1;
+foreach my $key (keys(%format_type))
+{
+   $no_line_macros{$key} = 1;
+   $no_line_macros{"end $key"} = 1;
 }
 
 foreach my $macro (keys(%Texi2HTML::Config::format_in_paragraph))
@@ -1128,34 +1212,9 @@
     $format_type{$key} = 'fake';
 }
 
-# A hash associating style @-comand with the type, 'accent', real 'style',
-# 'simple' style, or 'special'.
-my %style_type = (); 
-foreach my $style (keys(%Texi2HTML::Config::style_map))
-{
-    $style_type{$style} = 'style';
-}
-foreach my $accent (keys(%Texi2HTML::Config::unicode_accents), 'tieaccent', 'dotless')
-{
-    $style_type{$accent} = 'accent';
-}
-foreach my $simple ('ctrl', 'w', 'url')
-{
-    $style_type{$simple} = 'simple';
-}
-foreach my $special ('footnote', 'ref', 'xref', 'pxref', 'inforef', 'anchor', 'image')
-{
-    $style_type{$special} = 'special';
-}
-
 # raw formats which are expanded especially
 my @raw_regions = ('html', 'verbatim', 'tex', 'xml', 'docbook');
 
-# special raw formats which are expanded between first and second pass
-# and are replaced by specific commands. Currently used for tex. It takes
-# precedence over raw_regions.
-my @special_regions = ();
-
 # regions expanded or not depending on the value of this hash
 my %text_macros = (
      'iftex' => 0, 
@@ -1181,11 +1240,9 @@
      'direntry' => 0,
      'verbatim' => 'raw', 
      'ifclear' => 'value', 
-     'ifset' => 'value' 
+     'ifset' => 'value' ,
      );
     
-
-
 foreach my $key (keys(%text_macros))
 {
     unless ($text_macros{$key} eq 'raw')
@@ -1218,7 +1275,6 @@
 select(STDOUT);
 $| = 1;
 
-#FIXME my or our ?
 my $I = \&Texi2HTML::I18n::get_string;
 
 my $T2H_USER; # user running the script
@@ -1226,6 +1282,7 @@
 
 # shorthand for Texi2HTML::Config::VERBOSE
 my $T2H_VERBOSE;
+my $T2H_DEBUG;
 
 sub echo_warn($;$);
 #print STDERR "" . &$I('test i18n: \' , \a \\ %% %{unknown}a %known % %{known}  \\', { 'known' => 'a known string', 'no' => 'nope'}); exit 0;
@@ -1312,15 +1369,18 @@
         $cmd_line_lang = 1 if ($from_command_line);
         if (!$Texi2HTML::Config::TEST)
         {
+            print STDERR "# Setting date in $Texi2HTML::Config::LANG\n" if ($T2H_DEBUG);
             $Texi2HTML::THISDOC{'today'} = Texi2HTML::I18n::pretty_date($Texi2HTML::Config::LANG);  # like "20 September 1993";
         }
         else
         {
             $Texi2HTML::THISDOC{'today'} = 'a sunny day';
         }
-        $things_map_ref->{'today'} = $Texi2HTML::THISDOC{'today'};
-        $pre_map_ref->{'today'} = $Texi2HTML::THISDOC{'today'};
-        $texi_map_ref->{'today'} = $Texi2HTML::THISDOC{'today'};
+        $Texi2HTML::THISDOC{'today'} = $Texi2HTML::Config::DATE 
+            if (defined($Texi2HTML::Config::DATE));
+        $::things_map_ref->{'today'} = $Texi2HTML::THISDOC{'today'};
+        $::pre_map_ref->{'today'} = $Texi2HTML::THISDOC{'today'};
+        $::texi_map_ref->{'today'} = $Texi2HTML::THISDOC{'today'};
     }
     else
     {
@@ -1328,6 +1388,7 @@
     }
 }
 
+# used to manage expanded sections from the command line
 sub set_expansion($$)
 {
     my $region = shift;
@@ -1342,15 +1403,19 @@
          @Texi2HTML::Config::EXPAND = grep {$_ ne $region} @Texi2HTML::Config::EXPAND;
     }
 }
-	 
-sub set_encoding($)
+
+
+# find the encoding alias.
+# with encoding support (USE_UNICODE), may return undef if no alias was found
+sub encoding_alias($)
 {
     my $encoding = shift;
+    return $encoding if (!defined($encoding) or $encoding eq '');
     if ($Texi2HTML::Config::USE_UNICODE)
     {
          if (! Encode::resolve_alias($encoding))
          {
-              echo_warn("Encoding $Texi2HTML::Config::DOCUMENT_ENCODING unknown");
+              echo_warn("Encoding $encoding unknown");
               return undef;
          }
          print STDERR "# Using encoding " . Encode::resolve_alias($encoding) . "\n"
@@ -1359,93 +1424,128 @@
     }
     else
     {
-         echo_warn("Nothing specific done for encodings (due to the perl version)");
-         return undef;
+         echo_warn("No alias searched for encoding");
+         return $encoding;
     }
 }
 
+# setup hashes used for html manual cross references in texinfo
 my %cross_ref_texi_map = %Texi2HTML::Config::texi_map;
+
+$cross_ref_texi_map{'enddots'} = '...';
+
 my %cross_ref_simple_map_texi = %Texi2HTML::Config::simple_map_texi;
 my %cross_ref_style_map_texi = ();
+my %cross_transliterate_style_map_texi = ();
+
+my %cross_transliterate_texi_map = %cross_ref_texi_map;
 
 foreach my $command (keys(%Texi2HTML::Config::style_map_texi))
 {
     $cross_ref_style_map_texi{$command} = {}; 
+    $cross_transliterate_style_map_texi{$command} = {};
     foreach my $key (keys (%{$Texi2HTML::Config::style_map_texi{$command}}))
     {
 #print STDERR "$command, $key, $style_map_texi{$command}->{$key}\n";
          $cross_ref_style_map_texi{$command}->{$key} = 
               $Texi2HTML::Config::style_map_texi{$command}->{$key};
+         $cross_transliterate_style_map_texi{$command}->{$key} = 
+              $Texi2HTML::Config::style_map_texi{$command}->{$key};
     }
 }
 
 $cross_ref_simple_map_texi{"\n"} = ' ';
+$cross_ref_simple_map_texi{"*"} = ' ';
 
+my %nodes = ();             # nodes hash. The key is the texi node name
+my %cross_reference_nodes = ();  # normalized node names arrays
 
-# This function is used to construct a link name from a node name as 
-# described in the proposal I posted on texinfo-pretest.
-sub cross_manual_links($$)
-{
-    my $nodes_hash = shift;
-    my $cross_reference_hash = shift;
-
-    $simple_map_texi_ref = \%cross_ref_simple_map_texi;
-    $style_map_texi_ref = \%cross_ref_style_map_texi;
-    $texi_map_ref = \%cross_ref_texi_map;
+# This function is used to construct link names from node names as
+# specified for texinfo
+sub cross_manual_links()
+{
+    print STDERR "# Doing ".scalar(keys(%nodes))." cross manual links\n" 
+       if ($T2H_DEBUG);
     my $normal_text_kept = $Texi2HTML::Config::normal_text;
+    $::simple_map_texi_ref = \%cross_ref_simple_map_texi;
+    $::style_map_texi_ref = \%cross_ref_style_map_texi;
+    $::texi_map_ref = \%cross_ref_texi_map;
     $Texi2HTML::Config::normal_text = \&Texi2HTML::Config::t2h_cross_manual_normal_text;
 
-    foreach my $key (keys(%$nodes_hash))
+    foreach my $key (keys(%nodes))
     {
-        my $node = $nodes_hash->{$key};
+        my $node = $nodes{$key};
+        #print STDERR "CROSS_MANUAL:$key,$node\n";
         next if ($node->{'index_page'});
         if (!defined($node->{'texi'}))
         {
-            # begin debug section 
+            ###################### debug section 
             foreach my $key (keys(%$node))
             {
                 #print STDERR "$key:$node->{$key}!!!\n";
             }
-            # end debug section 
+            ###################### end debug section 
         }
         else 
         {
+            $node->{'cross_manual_target'} = remove_texi($node->{'texi'});
             if ($Texi2HTML::Config::USE_UNICODE)
             {
-                 my $text = $node->{'texi'};
-#print STDERR "CROSS_MANUAL $node->{'texi'}\n";
-                 if (defined($Texi2HTML::Config::DOCUMENT_ENCODING) and 
-                      Encode::resolve_alias($Texi2HTML::Config::DOCUMENT_ENCODING) and
-                      (Encode::resolve_alias($Texi2HTML::Config::DOCUMENT_ENCODING) ne 'utf8'))
-                 {
-                      $text = Encode::decode($Texi2HTML::Config::DOCUMENT_ENCODING, $text);
-                 }
-                 $node->{'cross_manual_target'} = unicode_to_protected(Unicode::Normalize::NFC(remove_texi($text)));
-            }
-            else
-            {
-                 $node->{'cross_manual_target'} = remove_texi($node->{'texi'});
+                $node->{'cross_manual_target'} = Unicode::Normalize::NFC($node->{'cross_manual_target'});
+                if ($Texi2HTML::Config::TRANSLITERATE_NODE and  $Texi2HTML::Config::USE_UNIDECODE)
+                {
+                     $node->{'cross_manual_file'} = 
+                       unicode_to_protected(unicode_to_transliterate($node->{'cross_manual_target'}));
+                }
+                $node->{'cross_manual_target'} = 
+                    unicode_to_protected($node->{'cross_manual_target'});
             }
 #print STDERR "CROSS_MANUAL_TARGET $node->{'cross_manual_target'}\n";
             unless ($node->{'external_node'})
             {
-                if (defined($cross_reference_hash->{$node->{'cross_manual_target'}}))
+                if (exists($cross_reference_nodes{$node->{'cross_manual_target'}}))
                 {
-                    echo_error("Node equivalent with `$node->{'texi'}' allready used `$cross_reference_hash->{$node->{'cross_manual_target'}}'");
+                    my $other_node_array = $cross_reference_nodes{$node->{'cross_manual_target'}};
+                    my $node_seen;
+                    foreach my $other_node (@{$other_node_array})
+                    {
+                        $node_seen = $other_node;
+                        last if ($nodes{$other_node}->{'seen'})
+                    }
+                    echo_error("Node equivalent with `$node->{'texi'}' allready used `$node_seen'");
+                    push @{$other_node_array}, $node->{'texi'};
                 }
                 else 
                 {
-                    $cross_reference_hash->{$node->{'cross_manual_target'}} = $node->{'texi'};
+                    push @{$cross_reference_nodes{$node->{'cross_manual_target'}}}, $node->{'texi'};
                 }
             }
-            #print STDERR "$node->{'texi'}: $node->{'cross_manual_target'}\n";
         }
     }
 
+    
+    if ($Texi2HTML::Config::TRANSLITERATE_NODE and 
+         (!$Texi2HTML::Config::USE_UNICODE or !$Texi2HTML::Config::USE_UNIDECODE))
+    {
+         $::style_map_texi_ref = \%cross_transliterate_style_map_texi;
+         $::texi_map_ref = \%cross_transliterate_texi_map;
+
+         foreach my $key (keys(%nodes))
+         {
+             my $node = $nodes{$key};
+             next if ($node->{'index_page'});
+             if (defined($node->{'texi'}))
+             {
+                  $node->{'cross_manual_file'} = remove_texi($node->{'texi'});
+                  $node->{'cross_manual_file'} = unicode_to_protected(unicode_to_transliterate($node->{'cross_manual_file'})) if ($Texi2HTML::Config::USE_UNICODE);
+             }
+         }
+    }
+
     $Texi2HTML::Config::normal_text = $normal_text_kept;
-    $simple_map_texi_ref = \%Texi2HTML::Config::simple_map_texi;
-    $style_map_texi_ref = \%Texi2HTML::Config::style_map_texi;
-    $texi_map_ref = \%Texi2HTML::Config::texi_map;
+    $::simple_map_texi_ref = \%Texi2HTML::Config::simple_map_texi;
+    $::style_map_texi_ref = \%Texi2HTML::Config::style_map_texi;
+    $::texi_map_ref = \%Texi2HTML::Config::texi_map;
 }
 
 sub unicode_to_protected($)
@@ -1454,50 +1554,131 @@
     my $result = '';
     while ($text ne '')
     {
-        if ($text =~ s/^([A-Za-z0-9_\-]+)//o)
+        if ($text =~ s/^([A-Za-z0-9]+)//o)
         {
              $result .= $1;
         }
+        elsif ($text =~ s/^ //o)
+        {
+             $result .= '-';
+        }
         elsif ($text =~ s/^(.)//o)
         {
-             $result .= '_' . lc(sprintf("%04x",ord($1)));
+             if (exists($Texi2HTML::Config::ascii_character_map{$1}))
+             {
+                 $result .= '_' . lc($Texi2HTML::Config::ascii_character_map{$1});
+             }
+             else
+             {
+                 $result .= '_' . lc(sprintf("%04x",ord($1)));
+             }
         }
         else
         {
-             print STDERR "Bug: unknown character in node (likely in infinite loop)\n";
+             print STDERR "Bug: unknown character in a cross ref (likely in infinite loop)\n";
+             print STDERR "Text: !!$text!!\n";
              sleep 1;
-        }    
+        }
+    }
+    return $result;
+}
+
+sub unicode_to_transliterate($)
+{
+    my $text = shift;
+    my $result = '';
+    while ($text ne '')
+    {
+        if ($text =~ s/^([A-Za-z0-9 ]+)//o)
+        {
+             $result .= $1;
+        }
+        elsif ($text =~ s/^(.)//o)
+        {
+             if (exists($Texi2HTML::Config::ascii_character_map{$1}))
+             {
+                 $result .= $1;
+             }
+             elsif (exists($Texi2HTML::Config::transliterate_map{uc(sprintf("%04x",ord($1)))}))
+             {
+                 $result .= $Texi2HTML::Config::transliterate_map{uc(sprintf("%04x",ord($1)))};
+             }
+             elsif (exists($Texi2HTML::Config::unicode_diacritical{uc(sprintf("%04x",ord($1)))}))
+             {
+                 $result .= '';
+             }
+             else
+             {
+                 if ($Texi2HTML::Config::USE_UNIDECODE)
+                 {
+                      $result .= unidecode($1);
+                 }
+                 else
+                 {
+                      $result .= $1;
+                 }
+             }
+        }
+        else
+        {
+             print STDERR "Bug: unknown character in cross ref transliteration (likely in infinite loop)\n";
+             sleep 1;
+        }
     }
-   
     return $result;
 }
 
-sub cross_manual_line($)
+# This function is used to construct a link name from a node name as
+# specified for texinfo
+sub cross_manual_line($;$)
 {
     my $text = shift;
+    my $transliterate = shift;
 #print STDERR "cross_manual_line $text\n";
-    $simple_map_texi_ref = \%cross_ref_simple_map_texi;
-    $style_map_texi_ref = \%cross_ref_style_map_texi;
-    $texi_map_ref = \%cross_ref_texi_map;
+#print STDERR "remove_texi text ". remove_texi($text)."\n\n\n";
+    $::simple_map_texi_ref = \%cross_ref_simple_map_texi;
+    $::style_map_texi_ref = \%cross_ref_style_map_texi;
+    $::texi_map_ref = \%cross_ref_texi_map;
     my $normal_text_kept = $Texi2HTML::Config::normal_text;
     $Texi2HTML::Config::normal_text = \&Texi2HTML::Config::t2h_cross_manual_normal_text;
     
-    my $cross_ref;
+    my ($cross_ref_target, $cross_ref_file);
     if ($Texi2HTML::Config::USE_UNICODE)
     {
-         $cross_ref = unicode_to_protected(Unicode::Normalize::NFC(remove_texi($text)));
+         $cross_ref_target = Unicode::Normalize::NFC(remove_texi($text));
+         if ($transliterate and $Texi2HTML::Config::USE_UNIDECODE)
+         {
+             $cross_ref_file = 
+                unicode_to_protected(unicode_to_transliterate($cross_ref_target));
+         }
+         $cross_ref_target = unicode_to_protected($cross_ref_target);
     }
     else
     {
-         $cross_ref = remove_texi($text);
+         $cross_ref_target = remove_texi($text);
+    }
+    
+    if ($transliterate and 
+         (!$Texi2HTML::Config::USE_UNICODE or !$Texi2HTML::Config::USE_UNIDECODE))
+    {
+         $::style_map_texi_ref = \%cross_transliterate_style_map_texi;
+         $::texi_map_ref = \%cross_transliterate_texi_map;
+         $cross_ref_file = remove_texi($text);
+         $cross_ref_file = unicode_to_protected(unicode_to_transliterate($cross_ref_file))
+               if ($Texi2HTML::Config::USE_UNICODE);
     }
 
     $Texi2HTML::Config::normal_text = $normal_text_kept;
-    $simple_map_texi_ref = \%Texi2HTML::Config::simple_map_texi;
-    $style_map_texi_ref = \%Texi2HTML::Config::style_map_texi;
-    $texi_map_ref = \%Texi2HTML::Config::texi_map;
-#print STDERR "cross_ref $cross_ref\n";
-    return $cross_ref;
+    $::simple_map_texi_ref = \%Texi2HTML::Config::simple_map_texi;
+    $::style_map_texi_ref = \%Texi2HTML::Config::style_map_texi;
+    $::texi_map_ref = \%Texi2HTML::Config::texi_map;
+#print STDERR "\n\ncross_ref $cross_ref\n";
+    unless ($transliterate)
+    {
+        return $cross_ref_target;
+    }
+#    print STDERR "$text|$cross_ref_target|$cross_ref_file\n";
+    return ($cross_ref_target, $cross_ref_file);
 }
 
 # T2H_OPTIONS is a hash whose keys are the (long) names of valid
@@ -1619,46 +1800,6 @@
  verbose => "expand ifplaintext sections",
 };
 
-#$T2H_OPTIONS -> {'no-ifhtml'} =
-#{
-# type => '!',
-# linkage => sub { set_expansion('html', (! $_[1])); },
-# verbose => "don't expand ifhtml and html sections",
-# noHelp => 1,
-#};
-
-#$T2H_OPTIONS -> {'no-ifinfo'} =
-#{
-# type => '!',
-# linkage => sub { set_expansion('info', (! $_[1])); },
-# verbose => "don't expand ifinfo",
-# noHelp => 1,
-#};
-
-#$T2H_OPTIONS -> {'no-ifxml'} =
-#{
-# type => '!',
-# linkage => sub { set_expansion('xml', (! $_[1])); },
-# verbose => "don't expand ifxml and xml sections",
-# noHelp => 1,
-#};
-
-#$T2H_OPTIONS -> {'no-iftex'} =
-#{
-# type => '!',
-# linkage => sub { set_expansion('tex', (! $_[1])); },
-# verbose => "don't expand iftex and tex sections",
-# noHelp => 1,
-#};
-
-#$T2H_OPTIONS -> {'no-ifplaintext'} =
-#{
-# type => '!',
-# linkage => sub { set_expansion('plaintext', (! $_[1])); },
-# verbose => "don't expand ifplaintext sections",
-# noHelp => 1,
-#};
-
 $T2H_OPTIONS -> {'invisible'} =
 {
  type => '=s',
@@ -1682,6 +1823,13 @@
  verbose => 'append $s to the @include search path',
 };
 
+$T2H_OPTIONS -> {'conf-dir'} =
+{
+ type => '=s',
+ linkage => \@Texi2HTML::Config::CONF_DIRS,
+ verbose => 'append $s to the init file directories',
+};
+
 $T2H_OPTIONS -> {'P'} =
 {
  type => '=s',
@@ -1696,7 +1844,6 @@
  verbose => 'use $s as top file, instead of <docname>.html',
 };
 
-
 $T2H_OPTIONS -> {'toc-file'} =
 {
  type => '=s',
@@ -1719,14 +1866,6 @@
  verbose => 'output Texinfo menus',
 };
 
-#$T2H_OPTIONS -> {'no-menu'} =
-#{
-# type => '!',
-# linkage => sub { $Texi2HTML::Config::SHOW_MENU = (! $_[1]);},
-# verbose => "don't output Texinfo menus",
-# noHelp => 1,
-#};
-
 $T2H_OPTIONS -> {'number'} =
 {
  type => '!',
@@ -1734,14 +1873,6 @@
  verbose => 'use numbered sections',
 };
 
-#$T2H_OPTIONS -> {'no-number'} =
-#{
-# type => '!',
-# linkage => sub { $Texi2HTML::Config::NUMBER_SECTIONS = (! $_[1]);}, 
-# verbose => 'sections not numbered',
-# noHelp => 1,
-#};
-
 $T2H_OPTIONS -> {'use-nodes'} =
 {
  type => '!',
@@ -2073,11 +2204,18 @@
 {
  type => '!',
  linkage => \$Texi2HTML::Config::USE_GLOSSARY,
-# verbose => "if set, uses section named `Footnotes' for glossary",
  verbose => "this does nothing",
  noHelp  => 2,
 };
 
+$T2H_OBSOLETE_OPTIONS -> {check} =
+{
+ type => '!',
+ linkage => sub {exit 0;},
+ verbose => "exit without doing anything",
+ noHelp  => 2,
+};
+
 $T2H_OBSOLETE_OPTIONS -> {dump_texi} =
 {
  type => '!',
@@ -2155,7 +2293,7 @@
 {
  type => '=s',
  linkage => sub {$Texi2HTML::Config::OUT = $_[1]; $Texi2HTML::Config::SPLIT = '';},
- verbose => 'obsolete, use -out_file instead',
+ verbose => 'obsolete, use --out-file instead',
  noHelp => 2
 };
 
@@ -2163,7 +2301,7 @@
 {
  type => '!',
  linkage => \$Texi2HTML::Config::SECTION_NAVIGATION,
- verbose => 'obsolete, use -sec_nav instead',
+ verbose => 'obsolete, use --sec-nav instead',
  noHelp => 2,
 };
 
@@ -2176,7 +2314,7 @@
 };
 
 # read initialzation from $sysconfdir/texi2htmlrc or $HOME/.texi2htmlrc
-# obsolete.
+# (this is obsolete)
 my @rc_files = ();
 push @rc_files, "$sysconfdir/texi2htmlrc" if defined($sysconfdir);
 push @rc_files, "$ENV{'HOME'}/.texi2htmlrc" if (defined($ENV{HOME}));
@@ -2194,7 +2332,7 @@
 # read initialization files
 foreach my $file (locate_init_file($conf_file_name, 1))
 {
-	print STDERR "# reading initialization file from $file\n" if ($T2H_VERBOSE);
+    print STDERR "# reading initialization file from $file\n" if ($T2H_VERBOSE);
     Texi2HTML::Config::load($file);
 }
 
@@ -2229,11 +2367,15 @@
  type => ':i', 
  default => '',
  linkage => sub {$options->helpOptions($_[1]); 
-    print "\nSend bugs and suggestions to <users\@texi2html.cvshome.org>\n";
+    print "\nSend bugs and suggestions to <texi2html-bug\@nongnu.org>\n";
     exit (0);},
  verbose => "print help and exit"
 };
 
+# this avoids getOptions defining twice 'help' and 'version'.
+$T2H_OBSOLETE_OPTIONS -> {'help'} = 0;
+$T2H_OBSOLETE_OPTIONS -> {'version'} = 0;
+
 # some older version of GetOpt::Long don't have
 # Getopt::Long::Configure("pass_through")
 eval {Getopt::Long::Configure("pass_through");};
@@ -2243,8 +2385,6 @@
            'texi2html --help 2' for a complete list) or upgrade to perl
            version 5.005 or higher.
 EOT
-# FIXME getOptions is called 2 times, and thus adds 2 times the default 
-# help and version and after that warns.
 if (! $options->getOptions($T2H_OPTIONS, $T2H_USAGE_TEXT, "$THISVERSION\n"))
 {
     print STDERR "$Configure_failed" if $Configure_failed;
@@ -2259,34 +2399,103 @@
         die $T2H_FAILURE_TEXT;
     }
 }
+
+#
+# read texi2html extensions (if any)
+# It is obsolete (obsoleted by -init-file). we keep it for backward
+# compatibility.
+my $extensions = 'texi2html.ext';  # extensions in working directory
+if (-f $extensions)
+{
+    print STDERR "# reading extensions from $extensions\n" if $T2H_VERBOSE;
+    require($extensions);
+}
+my $progdir;
+($progdir = $0) =~ s/[^\/]+$//;
+if ($progdir && ($progdir ne './'))
+{
+    $extensions = "${progdir}texi2html.ext"; # extensions in texi2html directory
+    if (-f $extensions)
+    {
+	print STDERR "# reading extensions from $extensions\n" if $T2H_VERBOSE;
+	require($extensions);
+    }
+}
+
 # $T2H_DEBUG and $T2H_VERBOSE are shorthands
-my $T2H_DEBUG = $Texi2HTML::Config::DEBUG;
+$T2H_DEBUG = $Texi2HTML::Config::DEBUG;
 $T2H_VERBOSE = $Texi2HTML::Config::VERBOSE;
 
+$Texi2HTML::THISDOC{'debug_l2h'} = 0;
+$Texi2HTML::THISDOC{'debug_l2h'} = 1 if ($T2H_DEBUG & $DEBUG_L2H);
+
+
 #+++############################################################################
 #                                                                              #
 # evaluation of cmd line options
 #                                                                              #
 #---############################################################################
 
+# Fill in the %style_type hash, a hash associating style @-comand with 
+# the type, 'accent', real 'style', simple' style, or 'special'.
+# 'simple_style' styles don't extend accross lines.
+my %style_type = (); 
+my @simple_styles = ('ctrl', 'w', 'url','uref','indicateurl','email',
+    'titlefont');
+foreach my $style (keys(%Texi2HTML::Config::style_map))
+{
+    if (exists $Texi2HTML::Config::command_type{$style})
+    {
+        $style_type{$style} = $Texi2HTML::Config::command_type{$style};
+        next;
+    }
+    if (ref($Texi2HTML::Config::style_map{$style} eq 'HASH'))
+    {
+        $style_type{$style} = $Texi2HTML::Config::style_map{$style}->{'type'}
+          if (exists($Texi2HTML::Config::style_map{$style}->{'type'}));
+    }
+    else
+    {
+        $style_type{$style} = 'simple_style' if (grep {$_ eq $style} @simple_styles);
+    }
+    $style_type{$style} = 'style' unless (defined($style_type{$style}));
+}
+foreach my $accent (keys(%Texi2HTML::Config::unicode_accents), 'tieaccent', 'dotless')
+{
+    if (exists $Texi2HTML::Config::command_type{$accent})
+    {
+        $style_type{$accent} = $Texi2HTML::Config::command_type{$accent};
+        next;
+    }
+    $style_type{$accent} = 'accent';
+}
+#foreach my $simple ('ctrl', 'w', 'url','uref','indicateurl','email')
+#{
+#    $style_type{$simple} = 'simple_style';
+#}
+foreach my $special ('footnote', 'ref', 'xref', 'pxref', 'inforef', 'anchor', 'image')
+{
+    if (exists $Texi2HTML::Config::command_type{$special})
+    {
+        $style_type{$special} = $Texi2HTML::Config::command_type{$special};
+        next;
+    }
+    $style_type{$special} = 'special';
+}
+
 # retro compatibility for $Texi2HTML::Config::EXPAND
 push (@Texi2HTML::Config::EXPAND, $Texi2HTML::Config::EXPAND) if ($Texi2HTML::Config::EXPAND);
 
-# correct %text_macros and @special_regions based on command line and init
+unshift @texi2html_config_dirs, @Texi2HTML::Config::CONF_DIRS;
+# correct %text_macros based on command line and init
 # variables
 $text_macros{'menu'} = 1 if ($Texi2HTML::Config::SHOW_MENU);
 
-push @special_regions, 'tex' if ($Texi2HTML::Config::L2H);
-
 foreach my $expanded (@Texi2HTML::Config::EXPAND)
 {
     $text_macros{"if$expanded"} = 1 if (exists($text_macros{"if$expanded"}));
     next unless (exists($text_macros{$expanded}));
-    if (grep {$_ eq $expanded} @special_regions)
-    {
-         $text_macros{$expanded} = 'special'; 
-    }
-    elsif (grep {$_ eq $expanded} @raw_regions)
+    if (grep {$_ eq $expanded} @raw_regions)
     {
          $text_macros{$expanded} = 'raw'; 
     }
@@ -2322,6 +2531,55 @@
 
 $T2H_DEBUG |= $DEBUG_TEXI if ($Texi2HTML::Config::DUMP_TEXI);
 
+# no user provided USE_UNICODE, use configure provided
+if (!defined($Texi2HTML::Config::USE_UNICODE))
+{
+    $Texi2HTML::Config::USE_UNICODE = '@USE_UNICODE@';
+}
+
+# no user provided nor configured, run time test
+if ($Texi2HTML::Config::USE_UNICODE eq '@' .'USE_UNICODE@')
+{
+    $Texi2HTML::Config::USE_UNICODE = 1;
+    eval {
+        require Encode;
+        require Unicode::Normalize; 
+        Encode->import('encode');
+    };
+    $Texi2HTML::Config::USE_UNICODE = 0 if ($@);
+}
+elsif ($Texi2HTML::Config::USE_UNICODE)
+{# user provided or set by configure
+    require Encode;
+    require Unicode::Normalize;
+    Encode->import('encode');
+}
+
+# no user provided USE_UNIDECODE, use configure provided
+if (!defined($Texi2HTML::Config::USE_UNIDECODE))
+{
+    $Texi2HTML::Config::USE_UNIDECODE = '@USE_UNIDECODE@';
+}
+
+# no user provided nor configured, run time test
+if ($Texi2HTML::Config::USE_UNIDECODE eq '@' .'USE_UNIDECODE@')
+{
+    $Texi2HTML::Config::USE_UNIDECODE = 1;
+    eval {
+        require Text::Unidecode;
+        Text::Unidecode->import('unidecode');
+    };
+    $Texi2HTML::Config::USE_UNIDECODE = 0 if ($@);
+}
+elsif ($Texi2HTML::Config::USE_UNIDECODE)
+{# user provided or set by configure
+    require Text::Unidecode;
+    Text::Unidecode->import('unidecode');
+}
+
+print STDERR "# USE_UNICODE $Texi2HTML::Config::USE_UNICODE, USE_UNIDECODE $Texi2HTML::Config::USE_UNIDECODE \n" 
+  if ($T2H_VERBOSE);
+
 # Construct hashes used for cross references generation
 # Do it now as the user may have changed $USE_UNICODE
 
@@ -2331,14 +2589,39 @@
     {
         if ($Texi2HTML::Config::USE_UNICODE)
         {
-             $cross_ref_texi_map{$key} = chr(hex($Texi2HTML::Config::unicode_map{$key}));
+            $cross_ref_texi_map{$key} = chr(hex($Texi2HTML::Config::unicode_map{$key}));
+            if (($Texi2HTML::Config::TRANSLITERATE_NODE and !$Texi2HTML::Config::USE_UNIDECODE)
+                and (exists ($Texi2HTML::Config::transliterate_map{$Texi2HTML::Config::unicode_map{$key}})))
+            {
+                $cross_transliterate_texi_map{$key} = $Texi2HTML::Config::transliterate_map{$Texi2HTML::Config::unicode_map{$key}};
+                 
+            }
         }
         else
         {
-             $cross_ref_texi_map{$key} = '_' . lc($Texi2HTML::Config::unicode_map{$key});
+            $cross_ref_texi_map{$key} = '_' . lc($Texi2HTML::Config::unicode_map{$key});
+            if ($Texi2HTML::Config::TRANSLITERATE_NODE)
+            {
+                if (exists ($Texi2HTML::Config::transliterate_map{$Texi2HTML::Config::unicode_map{$key}}))
+                {
+                    $cross_transliterate_texi_map{$key} = $Texi2HTML::Config::transliterate_map{$Texi2HTML::Config::unicode_map{$key}};
+                }
+                else
+                {
+                     $cross_transliterate_texi_map{$key} = '_' . lc($Texi2HTML::Config::unicode_map{$key});
+                }
+            }
         }
     }
 }
+if ($Texi2HTML::Config::USE_UNICODE and $Texi2HTML::Config::TRANSLITERATE_NODE
+     and ! $Texi2HTML::Config::USE_UNIDECODE)
+{
+    foreach my $key (keys (%Texi2HTML::Config::transliterate_accent_map))
+    {
+        $Texi2HTML::Config::transliterate_map{$key} = $Texi2HTML::Config::transliterate_accent_map{$key};
+    }
+}
 
 foreach my $key (keys(%cross_ref_style_map_texi))
 {
@@ -2353,29 +2636,22 @@
         {
              $cross_ref_style_map_texi{$key}->{'function'} = \&Texi2HTML::Config::t2h_nounicode_cross_manual_accent;
         }
+        if ($Texi2HTML::Config::TRANSLITERATE_NODE and 
+           !($Texi2HTML::Config::USE_UNICODE and $Texi2HTML::Config::USE_UNIDECODE))
+        {
+             $cross_transliterate_style_map_texi{$key}->{'function'} = \&Texi2HTML::Config::t2h_transliterate_cross_manual_accent;
+        }
     }
 }
 
 #
-# file name buisness
+# file name business
 #
 
-# this is directly pasted over from latex2html
-sub getcwd
-{
-    local($_) = `pwd`;
-
-    die "'pwd' failed (out of memory?)\n"
-        unless length;
-    chop;
-    $_;
-}
-
 
 my $docu_dir;            # directory of the document
 my $docu_name;           # basename of the document
 my $docu_rdir;           # directory for the output
-#my $docu_ext = "html";   # extension
 my $docu_ext = $Texi2HTML::Config::EXTENSION;   # extension
 my $docu_toc;            # document's table of contents
 my $docu_stoc;           # document's short toc
@@ -2400,7 +2676,7 @@
 unshift(@Texi2HTML::Config::INCLUDE_DIRS, $docu_dir);
 unshift(@Texi2HTML::Config::INCLUDE_DIRS, @Texi2HTML::Config::PREPEND_DIRS);
 $docu_name =~ s/\.te?x(i|info)?$//;
-$docu_name = $Texi2HTML::Config::PREFIX if ($Texi2HTML::Config::PREFIX);
+$docu_name = $Texi2HTML::Config::PREFIX if $Texi2HTML::Config::PREFIX;
 
 # resulting files splitting
 if ($Texi2HTML::Config::SPLIT =~ /section/i)
@@ -2500,7 +2776,7 @@
 my $path_to_working_dir = $docu_rdir;
 if ($docu_rdir ne '')
 {
-    my $cwd = getcwd;
+    my $cwd = cwd;
     my $docu_path = $docu_rdir;
     $docu_path = $cwd . '/' . $docu_path unless ($docu_path =~ /^\//);
     my @result = ();
@@ -2540,23 +2816,45 @@
 {
     $docu_ext = "htm";
 }
-if ($Texi2HTML::Config::TOP_FILE =~ s/\..*$//)
-{
-    $Texi2HTML::Config::TOP_FILE .= ".$docu_ext";
-}
 
-$docu_doc = "$docu_name.$docu_ext"; # document's contents
+$docu_doc = $docu_name . ($docu_ext ? ".$docu_ext" : ""); # document's contents
 if ($Texi2HTML::Config::SPLIT)
 {
-    # if Texi2HTML::Config::NODE_FILES is true and a node is called ${docu_name}_toc
-    # ${docu_name}_ovr... there may be trouble with the old naming scheme in
-    # very rare circumstances. This won't be fixed, the new scheme will be used
-    # soon.
-    $docu_toc   = $Texi2HTML::Config::TOC_FILE || "${docu_name}_toc.$docu_ext";
-    $docu_stoc  = "${docu_name}_ovr.$docu_ext";
-    $docu_foot  = "${docu_name}_fot.$docu_ext";
-    $docu_about = "${docu_name}_abt.$docu_ext";
     $docu_top   = $Texi2HTML::Config::TOP_FILE || $docu_doc;
+
+    if (defined $Texi2HTML::Config::element_file_name)
+    {
+        $docu_toc = &$Texi2HTML::Config::element_file_name
+            (undef, "toc", $docu_name);
+        $docu_stoc = &$Texi2HTML::Config::element_file_name
+            (undef, "stoc", $docu_name);
+        $docu_foot = &$Texi2HTML::Config::element_file_name
+            (undef, "foot", $docu_name);
+        $docu_about = &$Texi2HTML::Config::element_file_name
+            (undef, "about", $docu_name);
+	# $docu_top may be overwritten later.
+    }
+    if (!defined($docu_toc))
+    {
+        my $default_toc = "${docu_name}_toc";
+        $default_toc .= ".$docu_ext" if (defined($docu_ext));
+        $docu_toc   = $Texi2HTML::Config::TOC_FILE || $default_toc;
+    }
+    if (!defined($docu_stoc))
+    {
+        $docu_stoc  = "${docu_name}_ovr";
+        $docu_stoc .= ".$docu_ext" if (defined($docu_ext));
+    }
+    if (!defined($docu_foot))
+    {
+        $docu_foot  = "${docu_name}_fot";
+        $docu_foot .= ".$docu_ext" if (defined($docu_ext));
+    }
+    if (!defined($docu_about))
+    {
+        $docu_about = "${docu_name}_abt";
+        $docu_about .= ".$docu_ext" if (defined($docu_ext));
+    }
 }
 else
 {
@@ -2565,12 +2863,28 @@
         $docu_doc = $Texi2HTML::Config::OUT;
         $docu_doc =~ s|.*/||;
     }
+    if (defined $Texi2HTML::Config::element_file_name)
+    {
+        my $docu_name = &$Texi2HTML::Config::element_file_name
+           (undef, "doc", $docu_name);
+        $docu_top = $docu_name if (defined($docu_name));
+    } 
     $docu_toc = $docu_foot = $docu_stoc = $docu_about = $docu_top = $docu_doc;
 }
 
+# Note that file extension has already been added here.
+
 # For use in init files
-$Texi2HTML::Config::TOP_FILE = $docu_top;
-$Texi2HTML::Config::TOC_FILE = $docu_toc;
+$Texi2HTML::THISDOC{'filename'}->{'top'} = $docu_top;
+$Texi2HTML::THISDOC{'filename'}->{'foot'} = $docu_foot;
+$Texi2HTML::THISDOC{'filename'}->{'stoc'} = $docu_stoc;
+$Texi2HTML::THISDOC{'filename'}->{'about'} = $docu_about;
+$Texi2HTML::THISDOC{'filename'}->{'toc'} = $docu_toc;
+$Texi2HTML::THISDOC{'extension'} = $docu_ext;
+# FIXME document that
+$Texi2HTML::THISDOC{'out_dir'} = $docu_rdir;
+$Texi2HTML::THISDOC{'file_base_name'} = $docu_name;
+
 
 my $docu_doc_file = "$docu_rdir$docu_doc"; 
 my $docu_toc_file  = "$docu_rdir$docu_toc";
@@ -2579,8 +2893,10 @@
 my $docu_about_file = "$docu_rdir$docu_about";
 my $docu_top_file  = "$docu_rdir$docu_top";
 
-my $docu_frame_file =     "$docu_rdir${docu_name}_frame.$docu_ext";
-my $docu_toc_frame_file = "$docu_rdir${docu_name}_toc_frame.$docu_ext";
+my $docu_frame_file =     "$docu_rdir${docu_name}_frame";
+$docu_frame_file .= ".$docu_ext" if $docu_ext;
+my $docu_toc_frame_file = "$docu_rdir${docu_name}_toc_frame";
+$docu_toc_frame_file .= ".$docu_ext" if $docu_ext;
 
 #
 # _foo: internal variables to track @foo
@@ -2592,7 +2908,7 @@
 }
 my $index;                         # ref on a hash for the index entries
 my %indices = ();                  # hash of indices names containing 
-                                   #[ $Pages, $Entries ] (page indices and 
+                                   #[ $pages, $entries ] (page indices and 
                                    # raw index entries)
 my @index_labels = ();             # array corresponding with @?index commands
                                    # constructed during pass_texi, used to
@@ -2613,11 +2929,22 @@
 {
     foreach my $thing (keys(%Texi2HTML::Config::iso_symbols))
     {
-         $things_map_ref->{$thing} = $Texi2HTML::Config::iso_symbols{$thing};
-         $pre_map_ref->{$thing} = $Texi2HTML::Config::iso_symbols{$thing};
-    }
+         next unless exists ($::things_map_ref->{$thing});
+         $::things_map_ref->{$thing} = $Texi2HTML::Config::iso_symbols{$thing};
+         $::pre_map_ref->{$thing} = $Texi2HTML::Config::iso_symbols{$thing};
+         $Texi2HTML::Config::simple_format_texi_map{$thing} = $Texi2HTML::Config::iso_symbols{$thing};
+    }
+    # we don't override the user defined quote, but beware that this works
+    # only if the hardcoded defaults, '`' and "'" match with the defaults
+    # in the default init file
+    $Texi2HTML::Config::OPEN_QUOTE_SYMBOL = $Texi2HTML::Config::iso_symbols{'`'} 
+        if (exists($Texi2HTML::Config::iso_symbols{'`'}) and ($Texi2HTML::Config::OPEN_QUOTE_SYMBOL eq '`'));
+    $Texi2HTML::Config::CLOSE_QUOTE_SYMBOL = $Texi2HTML::Config::iso_symbols{"'"} 
+       if (exists($Texi2HTML::Config::iso_symbols{"'"}) and ($Texi2HTML::Config::CLOSE_QUOTE_SYMBOL eq "'"));
 }
 
+
+
 # process a css file
 sub process_css_file ($$)
 {
@@ -2722,86 +3049,19 @@
     return ($imports, $rules);
 }
 
-my @css_import_lines;
-my @css_rule_lines;
-
-# process css files
-foreach my $file (@Texi2HTML::Config::CSS_FILES)
-{
-    my $css_file_fh;
-    my $css_file;
-    if ($file eq '-')
-    {
-        $css_file_fh = \*STDIN;
-        $css_file = '-';
-    }
-    else
-    {
-         $css_file = locate_init_file ($file);
-         unless (defined($css_file))
-         {
-             warn "css file $file not found\n";
-             next;
-         }
-         unless (open (CSSFILE, "$css_file"))
-         {
-             warn "Cannot open ${css_file}: $!";
-             next;
-        }
-        $css_file_fh = \*CSSFILE;
-    }
-    my ($import_lines, $rules_lines);
-    ($import_lines, $rules_lines) = process_css_file ($css_file_fh, $css_file);
-    push @css_import_lines, @$import_lines;
-    push @css_rule_lines, @$rules_lines;
-}
-
-if ($T2H_DEBUG & $DEBUG_USER)
-{
-    if (@css_import_lines)
-    {
-        print STDERR "# css import lines\n";
-        foreach my $line (@css_import_lines)
-        {
-            print STDERR "$line";
-        }
-    }
-    if (@css_rule_lines)
-    {
-        print STDERR "# css rule lines\n";
-        foreach my $line (@css_rule_lines)
-        {
-            print STDERR "$line";
-        }
-    }
-}
 
-#
-# read texi2html extensions (if any)
-# FIXME isn't that obsolete ? (obsoleted by -init-file)
-my $extensions = 'texi2html.ext';  # extensions in working directory
-if (-f $extensions)
-{
-    print STDERR "# reading extensions from $extensions\n" if $T2H_VERBOSE;
-    require($extensions);
-}
-my $progdir;
-($progdir = $0) =~ s/[^\/]+$//;
-if ($progdir && ($progdir ne './'))
-{
-    $extensions = "${progdir}texi2html.ext"; # extensions in texi2html directory
-    if (-f $extensions)
-    {
-	print STDERR "# reading extensions from $extensions\n" if $T2H_VERBOSE;
-	require($extensions);
-    }
-}
 
-# parse texinfo cnf file for external manual specifications.
+# parse texinfo cnf file for external manual specifications. This was
+# discussed on texinfo list but not in makeinfo for now. 
 my @texinfo_htmlxref_files = locate_init_file ($texinfo_htmlxref, 1, \@texinfo_config_dirs);
 foreach my $file (@texinfo_htmlxref_files)
 {
-    open (HTMLXREF, $file);
+    print STDERR "html refs config file: $file\n" if ($T2H_DEBUG);    
+    unless (open (HTMLXREF, $file))
+    {
+         warn "Cannot open html refs config file ${file}: $!";
+         next;
+    }
     while (<HTMLXREF>)
     {
         my $line = $_;
@@ -2810,7 +3070,6 @@
         next if /^\s*$/;
         my @htmlxref = split /\s+/;
         my $manual = shift @htmlxref;
-        next if (exists($Texi2HTML::THISDOC{'htmlxref'}->{$manual}));
         my $split_or_mono = shift @htmlxref;
         if (!defined($split_or_mono) or ($split_or_mono ne 'split' and $split_or_mono ne 'mono'))
         {
@@ -2818,23 +3077,16 @@
             next;
         }
         my $href = shift @htmlxref;
-        if ($split_or_mono eq 'split')
+        next if (exists($Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{$split_or_mono}) and exists($Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{$split_or_mono}->{'href'}));
+        
+        if (defined($href))
         {
-            $Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{'split'} = 1;
-            $Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{'mono'} = 0;
+            $href =~ s/\/*$// if ($split_or_mono eq 'split');
+            $Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{$split_or_mono}->{'href'} = $href;
         }
         else
         {
-            $Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{'split'} = 0;
-            $Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{'mono'} = 1;
-        }
-        if (defined($href))
-        {
-            if ($Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{'split'})
-            {
-                $href =~ s/\/*$//;
-            }
-            $Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{'href'} = $href;
+            $Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{$split_or_mono} = {};
         }
     }
     close (HTMLXREF);
@@ -2844,557 +3096,47 @@
 {
     foreach my $manual (keys(%{$Texi2HTML::THISDOC{'htmlxref'}}))
     {
-         my $href = 'NO';
-         $href = $Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{'href'} if
-            defined($Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{'href'});
-         print STDERR "$manual: split $Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{'split'}, href: $href\n";
+         foreach my $split ('split', 'mono')
+         {
+              my $href = 'NO';
+              next unless (exists($Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{$split}));
+              $href = $Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{$split}->{'href'} if
+                  exists($Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{$split}->{'href'});
+              print STDERR "$manual: $split, href: $href\n";
+         }
     }
 }
 
 print STDERR "# reading from $docu\n" if $T2H_VERBOSE;
 
-{
+#+++###########################################################################
+#                                                                             #
+# Pass texi: read source, handle variable, ignored text,                      #
+#                                                                             #
+#---###########################################################################
 
-package Texi2HTML::LaTeX2HTML;
+my @fhs = ();			# hold the file handles to read
+my $input_spool;		# spooled lines to read
+my @lines = ();             # whole document
+my @lines_numbers = ();     # line number, originating file associated with 
+                            # whole document 
+my $macros;                 # macros. reference on a hash
+my %info_enclose;           # macros defined with definfoenclose
+my $texi_line_number = { 'file_name' => '', 'line_nr' => 0, 'macro' => '' };
+my @floats = ();            # floats list
+my %floats = ();            # floats by style
 
-#########################################################################
-#
-# latex2html stuff
-#
-# latex2html conversions consist of three stages:
-# 1) ToLatex: Put "latex" code into a latex file
-# 2) ToHtml: Use latex2html to generate corresponding html code and images
-# 3) FromHtml: Extract generated code and images from latex2html run
-#
+sub initialise_state_texi($)
+{
+    my $state = shift;
+    $state->{'texi'} = 1;           # for substitute_text and close_stack: 
+                                    # 1 if pass_texi/scan_texi is to be used
+    $state->{'macro_inside'} = 0 unless(defined($state->{'macro_inside'}));
+    $state->{'ifvalue_inside'} = 0 unless(defined($state->{'ifvalue_inside'}));
+    $state->{'arg_expansion'} = 0 unless(defined($state->{'arg_expansion'}));
+}
 
-# init l2h defaults for files and names
-
-# variable which shouldn't be global FIXME
-use vars qw(
-            %l2h_img
-           );
-my ($l2h_name, $l2h_latex_file, $l2h_cache_file, $l2h_html_file, $l2h_prefix);
-
-# holds the status of latex2html operations. If 0 it means that there was 
-# an error
-my $status = 0;
-my $debug;
-my $docu_rdir;
-
-#if ($Texi2HTML::Config::L2H)
-sub init($$$)
-{
-    my $docu_name = shift;
-    $docu_rdir = shift;
-    $debug = shift;
-    $l2h_name =  "${docu_name}_l2h";
-    $l2h_latex_file = "$docu_rdir${l2h_name}.tex";
-    $l2h_cache_file = "${docu_rdir}l2h_cache.pm";
-    # destination dir -- generated images are put there, should be the same
-    # as dir of enclosing html document --
-    $l2h_html_file = "$docu_rdir${l2h_name}.html";
-    $l2h_prefix = "${l2h_name}_";
-    $status = init_to_latex();
-}
-
-##########################
-#
-# First stage: Generation of Latex file
-# Initialize with: l2h_InitToLatex
-# Add content with: l2h_ToLatex($text) --> HTML placeholder comment
-# Finish with: l2h_FinishToLatex
-#
-
-my $l2h_latex_preamble = <<EOT;
-% This document was automatically generated by the l2h extenstion of texi2html
-% DO NOT EDIT !!!
-\\documentclass{article}
-\\usepackage{html}
-\\begin{document}
-EOT
-
-my $l2h_latex_closing = <<EOT;
-\\end{document}
-EOT
-
-my %l2h_to_latex = ();
-my @l2h_to_latex = ();
-my $l2h_latex_count = 0;     # number of latex texts really stored
-my $l2h_to_latex_count = 0;  # total number of latex texts processed
-my $l2h_cached_count = 0;    # number of cached latex text
-my %l2h_cache = ();          
-#$Texi2HTML::Config::L2H = l2h_InitToLatex() if ($Texi2HTML::Config::L2H);
-
-# return used latex 1, if l2h could be initalized properly, 0 otherwise
-#sub l2h_InitToLatex
-sub init_to_latex()
-{
-    unless ($Texi2HTML::Config::L2H_SKIP)
-    {
-        unless (open(L2H_LATEX, ">$l2h_latex_file"))
-        {
-            warn "$ERROR Error l2h: Can't open latex file '$l2h_latex_file' for writing\n";
-            return 0;
-        }
-        print STDERR "# l2h: use ${l2h_latex_file} as latex file\n" if ($T2H_VERBOSE);
-        print L2H_LATEX $l2h_latex_preamble;
-    }
-    # open database for caching
-    #l2h_InitCache();
-    init_cache();
-    return  1;
-}
-
-
-# print text (1st arg) into latex file (if not already there), return
-# @tex_$number which can be later on replaced by the latex2html
-# generated text
-#sub l2h_ToLatex
-sub to_latex
-{
-    my($text) = @_;
-    my($count);
-    $l2h_to_latex_count++;
-    $text =~ s/(\s*)$//;
-    # try whether we can cache it
-    #my $cached_text = l2h_FromCache($text);
-    my $cached_text = from_cache($text);
-    if ($cached_text)
-    {
-        $l2h_cached_count++;
-        return $cached_text;
-    }
-    # try whether we have text already on things to do
-    unless ($count = $l2h_to_latex{$text})
-    {
-        $count = $l2h_latex_count;
-        $l2h_latex_count++;
-        $l2h_to_latex{$text} = $count;
-        $l2h_to_latex[$count] = $text;
-        unless ($Texi2HTML::Config::L2H_SKIP)
-        {
-            print L2H_LATEX "\\begin{rawhtml}\n";
-            print L2H_LATEX "<!-- l2h_begin ${l2h_name} ${count} -->\n";
-            print L2H_LATEX "\\end{rawhtml}\n";
-
-            print L2H_LATEX "$text\n";
-
-            print L2H_LATEX "\\begin{rawhtml}\n";
-            print L2H_LATEX "<!-- l2h_end ${l2h_name} ${count} -->\n";
-            print L2H_LATEX "\\end{rawhtml}\n";
-        }
-    }
-    return "\@tex_${count} ";
-}
-
-# print closing into latex file and close it
-#sub l2h_FinishToLatex
-sub finish_to_latex()
-{
-    my ($reused);
-    $reused = $l2h_to_latex_count - $l2h_latex_count - $l2h_cached_count;
-    unless ($Texi2HTML::Config::L2H_SKIP)
-    {
-        print L2H_LATEX $l2h_latex_closing;
-        close(L2H_LATEX);
-    }
-    print STDERR "# l2h: finished to latex ($l2h_cached_count cached, $reused reused, $l2h_latex_count contents)\n" if ($T2H_VERBOSE);
-    unless ($l2h_latex_count)
-    {
-        #l2h_Finish();
-        finish();
-        return 0;
-    }
-    return 1;
-}
-
-###################################
-# Second stage: Use latex2html to generate corresponding html code and images
-#
-# l2h_ToHtml([$l2h_latex_file, [$l2h_html_dir]]):
-#   Call latex2html on $l2h_latex_file
-#   Put images (prefixed with $l2h_name."_") and html file(s) in $l2h_html_dir
-#   Return 1, on success
-#          0, otherwise
-#
-#sub l2h_ToHtml
-sub to_html()
-{
-    my ($call, $dotbug);
-    if ($Texi2HTML::Config::L2H_SKIP)
-    {
-        print STDERR "# l2h: skipping latex2html run\n" if ($T2H_VERBOSE);
-        return 1;
-    }
-    # Check for dot in directory where dvips will work
-    if ($Texi2HTML::Config::L2H_TMP)
-    {
-        if ($Texi2HTML::Config::L2H_TMP =~ /\./)
-        {
-            warn "$ERROR Warning l2h: l2h_tmp dir contains a dot. Use /tmp, instead\n";
-            $dotbug = 1;
-        }
-    }
-    else
-    {
-        if (main::getcwd() =~ /\./)
-        {
-            warn "$ERROR Warning l2h: current dir contains a dot. Use /tmp as l2h_tmp dir \n";
-            $dotbug = 1;
-        }
-    }
-    # fix it, if necessary and hope that it works
-    $Texi2HTML::Config::L2H_TMP = "/tmp" if ($dotbug);
-
-    $call = $Texi2HTML::Config::L2H_L2H;
-    # use init file, if specified
-    my $init_file = main::locate_init_file($Texi2HTML::Config::L2H_FILE);
-    $call = $call . " -init_file " . $init_file if ($init_file);
-    # set output dir
-    $call .=  ($docu_rdir ? " -dir $docu_rdir" : " -no_subdir");
-    # use l2h_tmp, if specified
-    $call = $call . " -tmp $Texi2HTML::Config::L2H_TMP" if ($Texi2HTML::Config::L2H_TMP);
-    # use a given html version if specified
-    $call = $call . " -html_version $Texi2HTML::Config::L2H_HTML_VERSION" if ($Texi2HTML::Config::L2H_HTML_VERSION);
-    # options we want to be sure of
-    $call = $call ." -address 0 -info 0 -split 0 -no_navigation -no_auto_link";
-    $call = $call ." -prefix ${l2h_prefix} $l2h_latex_file";
-
-    print STDERR "# l2h: executing '$call'\n" if ($Texi2HTML::Config::VERBOSE);
-    if (system($call))
-    {
-        warn "l2h ***Error: '${call}' did not succeed\n";
-        return 0;
-    }
-    else
-    {
-        print STDERR "# l2h: latex2html finished successfully\n" if ($Texi2HTML::Config::VERBOSE);
-        return 1;
-    }
-}
-
-##########################
-# Third stage: Extract generated contents from latex2html run
-# Initialize with: l2h_InitFromHtml
-#   open $l2h_html_file for reading
-#   reads in contents into array indexed by numbers
-#   return 1,  on success -- 0, otherwise
-# Extract Html code with: l2h_FromHtml($text)
-#   replaces in $text all previosuly inserted comments by generated html code
-#   returns (possibly changed) $text
-# Finish with: l2h_FinishFromHtml
-#   closes $l2h_html_dir/$l2h_name.".$docu_ext"
-
-my $l2h_extract_error = 0;
-my $l2h_range_error = 0;
-my @l2h_from_html;
-
-#sub l2h_InitFromHtml()
-sub init_from_html()
-{
-    local(%l2h_img);
-    my ($count, $h_line);
-
-    if (! open(L2H_HTML, "<${l2h_html_file}"))
-    {
-        print STDERR "$ERROR Error l2h: Can't open ${l2h_html_file} for reading\n";
-        return 0;
-    }
-    print STDERR "# l2h: use ${l2h_html_file} as html file\n" if ($T2H_VERBOSE);
-
-    my $l2h_html_count = 0;
-    while ($h_line = <L2H_HTML>)
-    {
-        if ($h_line =~ /^<!-- l2h_begin $l2h_name ([0-9]+) -->/)
-        {
-            $count = $1;
-            my $h_content = "";
-            while ($h_line = <L2H_HTML>)
-            {
-                if ($h_line =~ /^<!-- l2h_end $l2h_name $count -->/)
-                {
-                    chomp $h_content;
-                    chomp $h_content;
-                    $l2h_html_count++;
-                    #$h_content = l2h_ToCache($count, $h_content);
-                    $h_content = to_cache($count, $h_content);
-                    $l2h_from_html[$count] = $h_content;
-                    $h_content = '';
-                    last;
-                }
-                $h_content = $h_content.$h_line;
-            }
-            if ($h_content)
-            {
-                print STDERR "$ERROR Warning l2h: l2h_end $l2h_name $count not found\n"
-                    if ($Texi2HTML::Config::VERBOSE);
-                close(L2H_HTML);
-                return 0;
-            }
-        }
-    }
-    print STDERR "# l2h: Got $l2h_html_count of $l2h_latex_count html contents\n"
-        if ($Texi2HTML::Config::VERBOSE);
-
-    close(L2H_HTML);
-    return 1;
-}
-
-sub latex2html()
-{
-    return unless($status);
-    return unless ($status = finish_to_latex());
-    return unless ($status = to_html());
-    return unless ($status = init_from_html());
-}
-
-# FIXME used ??
-#sub l2h_FromHtml($)
-sub from_html($)
-{
-    my($text) = @_;
-    my($done, $to_do, $count);
-    $to_do = $text;
-    $done = '';
-    while ($to_do =~ /([^\000]*)<!-- l2h_replace $l2h_name ([0-9]+) -->([^\000]*)/)
-    {
-        $to_do = $1;
-        $count = $2;
-        $done = $3.$done;
-        $done = "<!-- l2h_end $l2h_name $count -->".$done
-            #if ($T2H_DEBUG & $DEBUG_L2H);
-            if ($debug);
-
-        #$done = l2h_ExtractFromHtml($count) . $done;
-        $done = extract_from_html($count) . $done;
-
-        $done = "<!-- l2h_begin $l2h_name $count -->".$done
-            #if ($T2H_DEBUG & $DEBUG_L2H);
-            if ($debug);
-    }
-    return $to_do.$done;
-}
-
-sub do_tex($)
-{
-    my $count = shift;
-    my $result = '';
-    $result = "<!-- l2h_begin $l2h_name $count -->"
-            #if ($T2H_DEBUG & $DEBUG_L2H);
-            if ($debug);
-    $result .= extract_from_html($count);
-    $result .= "<!-- l2h_end $l2h_name $count -->"
-            #if ($T2H_DEBUG & $DEBUG_L2H);
-            if ($debug);
-    return $result;
-}
-
-#sub l2h_ExtractFromHtml($)
-sub extract_from_html($)
-{
-    my $count = shift;
-    return $l2h_from_html[$count] if ($l2h_from_html[$count]);
-    if ($count >= 0 && $count < $l2h_latex_count)
-    {
-        # now we are in trouble
-        my $line;
-        $l2h_extract_error++;
-        print STDERR "$ERROR l2h: can't extract content $count from html\n"
-            if ($T2H_VERBOSE);
-        # try simple (ordinary) substition (without l2h)
-        #my $l_l2h = $Texi2HTML::Config::L2H;
-        $Texi2HTML::Config::L2H = 0;
-        my $l_l2h = $status;
-        $status = 0;
-        $line = $l2h_to_latex{$count};
-        $line = main::substitute_text({}, $line);
-        $line = "<!-- l2h: ". __LINE__ . " use texi2html -->" . $line
-            #if ($T2H_DEBUG & $DEBUG_L2H);
-            if ($debug);
-        #$Texi2HTML::Config::L2H = $l_l2h;
-        $status = $l_l2h;
-        return $line;
-    }
-    else
-    {
-        # now we have been incorrectly called
-        $l2h_range_error++;
-        print STDERR "$ERROR l2h: Request of $count content which is out of valide range [0,$l2h_latex_count)\n";
-        return "<!-- l2h: ". __LINE__ . " out of range count $count -->"
-            #if ($T2H_DEBUG & $DEBUG_L2H);
-            if ($debug);
-        return "<!-- l2h: out of range count $count -->";
-    }
-}
-
-#sub l2h_FinishFromHtml()
-sub finish_from_html()
-{
-    if ($Texi2HTML::Config::VERBOSE)
-    {
-        if ($l2h_extract_error + $l2h_range_error)
-        {
-            print STDERR "# l2h: finished from html ($l2h_extract_error extract and $l2h_range_error errors)\n";
-        }
-        else
-        {
-            print STDERR "# l2h: finished from html (no errors)\n";
-        }
-    }
-}
-
-#sub l2h_Finish()
-sub finish()
-{
-    return unless($status);
-    finish_from_html();
-    #l2h_StoreCache();
-    store_cache();
-    if ($Texi2HTML::Config::L2H_CLEAN)
-    {
-        local ($_);
-        print STDERR "# l2h: removing temporary files generated by l2h extension\n"
-            if $Texi2HTML::Config::VERBOSE;
-        while (<"$docu_rdir$l2h_name"*>)
-        {
-            unlink $_;
-        }
-    }
-    print STDERR "# l2h: Finished\n" if $Texi2HTML::Config::VERBOSE;
-    return 1;
-}
-
-##############################
-# stuff for l2h caching
-#
-
-# I tried doing this with a dbm data base, but it did not store all
-# keys/values. Hence, I did as latex2html does it
-#sub l2h_InitCache
-sub init_cache
-{
-    if (-r "$l2h_cache_file")
-    {
-        my $rdo = do "$l2h_cache_file";
-        warn("$ERROR l2h Error: could not load $docu_rdir$l2h_cache_file: $@\n")
-            unless ($rdo);
-    }
-}
-
-#sub l2h_StoreCache
-sub store_cache
-{
-    return unless $l2h_latex_count;
-    my ($key, $value);
-    open(FH, ">$l2h_cache_file") || return warn"$ERROR l2h Error: could not open $docu_rdir$l2h_cache_file for writing: $!\n";
-    while (($key, $value) = each %l2h_cache)
-    {
-        # escape stuff
-        $key =~ s|/|\\/|g;
-        $key =~ s|\\\\/|\\/|g;
-        # weird, a \ at the end of the key results in an error
-        # maybe this also broke the dbm database stuff
-        $key =~ s|\\$|\\\\|;
-        $value =~ s/\|/\\\|/go;
-        $value =~ s/\\\\\|/\\\|/go;
-        $value =~ s|\\\\|\\\\\\\\|g;
-        print FH "\n\$l2h_cache_key = q/$key/;\n";
-        print FH "\$l2h_cache{\$l2h_cache_key} = q|$value|;\n";
-    }
-    print FH "1;";
-    close(FH);
-}
-
-# return cached html, if it exists for text, and if all pictures
-# are there, as well
-#sub l2h_FromCache
-sub from_cache
-{
-    my $text = shift;
-    my $cached = $l2h_cache{$text};
-    if ($cached)
-    {
-        while ($cached =~ m/SRC="(.*?)"/g)
-        {
-            unless (-e "$docu_rdir$1")
-            {
-                return undef;
-            }
-        }
-        return $cached;
-    }
-    return undef;
-}
-
-# insert generated html into cache, move away images,
-# return transformed html
-my $maximage = 1;
-#sub l2h_ToCache($$)
-sub to_cache($$)
-{
-    my $count = shift;
-    my $content = shift;
-    my @images = ($content =~ /SRC="(.*?)"/g);
-    my ($src, $dest);
-
-    for $src (@images)
-    {
-        $dest = $l2h_img{$src};
-        unless ($dest)
-        {
-            my $ext;
-            if ($src =~ /.*\.(.*)$/ && $1 ne $docu_ext)
-            {
-                $ext = $1;
-            }
-            else
-            {
-                warn "$ERROR: L2h image $src has invalid extension\n";
-                next;
-            }
-            while (-e "$docu_rdir${docu_name}_$maximage.$ext")
-            {
-                $maximage++;
-            }
-            $dest = "${docu_name}_$maximage.$ext";
-            system("cp -f $docu_rdir$src $docu_rdir$dest");
-            $l2h_img{$src} = $dest;
-            #unlink "$docu_rdir$src" unless ($T2H_DEBUG & $DEBUG_L2H);
-            unlink "$docu_rdir$src" unless ($debug);
-        }
-        $content =~ s/$src/$dest/g;
-    }
-    $l2h_cache{$l2h_to_latex[$count]} = $content;
-    return $content;
-}
-
-}
-
-#+++###########################################################################
-#                                                                             #
-# Pass texi: read source, handle variable, ignored text,                      #
-#                                                                             #
-#---###########################################################################
-
-my @fhs = ();			# hold the file handles to read
-my $input_spool;		# spooled lines to read
-my @lines = ();             # whole document
-my @lines_numbers = ();     # line number, originating file associated with 
-                            # whole document 
-my $macros;                 # macros. reference on a hash
-my %info_enclose;           # macros defined with definfoenclose
-my $texi_line_number = { 'file_name' => '', 'line_nr' => 0, 'macro' => '' };
-my @floats = ();            # floats list
-my %floats = ();            # floats by style
-
-sub initialise_state_texi($)
-{
-    my $state = shift;
-    $state->{'texi'} = 1;           # for substitute_text and close_stack: 
-                                    # 1 if pass_texi/scan_texi is to be used
-}
-
-my @first_lines = ();
+my @first_lines = ();
 
 sub pass_texi()
 {
@@ -3428,33 +3170,40 @@
                 next;
             }
         }
-	#print STDERR "line_nr $texi_line_number->{'line_nr'} :$_";
+	#print STDERR "PASS_TEXI($texi_line_number->{'line_nr'})$_";
         my $chomped_line = $_;
         if (scan_texi ($_, \$text, \@stack, $state, $texi_line_number) and chomp($chomped_line))
         {
-        #print STDERR "scan_texi line_nr $texi_line_number->{'line_nr'}\n";
+        #print STDERR "==> new page (line_nr $texi_line_number->{'line_nr'},$texi_line_number->{'file_name'},$texi_line_number->{'macro'})\n";
             push (@lines_numbers, { 'file_name' => $texi_line_number->{'file_name'},
                   'line_nr' => $texi_line_number->{'line_nr'},
                   'macro' => $texi_line_number->{'macro'} });
         }
-        
         #dump_stack (\$text, \@stack, $state);
         if ($state->{'bye'})
         {
             #dump_stack(\$text, \@stack, $state);
             # close stack after bye
+            #print STDERR "close stack after bye\n";
             close_stack_texi_structure(\$text, \@stack, $state, $texi_line_number);
+            #dump_stack(\$text, \@stack, $state);
         }
         next if (@stack);
         $_ = $text;
         $text = '';
-        next if !defined($_);
-        push @lines, split_lines ($_);
+        if (!defined($_))
+        {# FIXME: remove the error message if it is reported too often
+            print STDERR "# \$_ undefined after scan_texi. This may be a bug, or not.\n";
+            print STDERR "# Report (with texinfo file) if you want, otherwise ignore that message.\n";
+            next unless ($state->{'bye'});
+        }
+        push @lines, split_lines($_);
         last if ($state->{'bye'});
     }
     # close stack at the end of pass texi
+    #print STDERR "close stack at the end of pass texi\n";
     close_stack_texi_structure(\$text, \@stack, $state, $texi_line_number);
-    push @lines, split_lines ($text);
+    push @lines, split_lines($text);
     print STDERR "# end of pass texi\n" if $T2H_VERBOSE;
 }
 
@@ -3528,7 +3277,7 @@
         $text .= $1;
     }
     $line = '' if (!defined($line));
-    return ($line, "\@$macro" . $text, $args);
+    return ($line, $text, $args);
 }
 
 #+++###########################################################################
@@ -3546,6 +3295,10 @@
     'texi' => 'VIRTUAL ELEMENT BEFORE ANYTHING',
 };
 
+# This is a place for index entries, anchors and so on appearing in 
+# copying or documentdescription
+my $region_place = [];
+
 sub initialise_state_structure($)
 {
     my $state = shift;
@@ -3554,9 +3307,13 @@
                                     # to be used
     $state->{'menu'} = 0;           # number of opened menus
     $state->{'detailmenu'} = 0;     # number of opened detailed menus      
-    $state->{'level'} = 0;          # current sectionning level
+    $state->{'sectionning_base'} = 0;         # current base sectionning level
     $state->{'table_stack'} = [ "no table" ]; # a stack of opened tables/lists
-    delete ($state->{'region_lines'}) unless (defined($state->{'region_lines'}));
+    if (exists($state->{'region_lines'}) and !defined($state->{'region_lines'}))
+    {
+        delete ($state->{'region_lines'});
+        print STDERR "Bug: state->{'region_lines'} exists but undef.\n";
+    }
 }
 
 my @doc_lines = ();         # whole document
@@ -3565,15 +3322,14 @@
                             # each member is a reference on a hash
 my @sections_list = ();     # sections in reading order
                             # each member is a reference on a hash
-my @elements_list = ();     # sectionning elements (nodes and sections)
+my @all_elements = ();      # sectionning elements (nodes and sections)
                             # in reading order. Each member is a reference
                             # on a hash which also appears in %nodes,
-                            # @sections_list @nodes_list, @all_elements
-my @all_elements;           # all the elements in document order
-my %nodes = ();             # nodes hash. The key is the texi node name
-my %cross_reference_nodes = ();  # normalized node names
+                            # @sections_list @nodes_list, @elements_list
+my @elements_list;          # all the resulting elements in document order
 my %sections = ();          # sections hash. The key is the section number
                             # headings are there, although they are not elements
+my $section_top;            # @top section
 my $element_top;            # Top element
 my $node_top;               # Top node
 my $node_first;             # First node
@@ -3581,6 +3337,8 @@
 my $element_chapter_index;  # chapter with first index
 my $element_first;          # first element
 my $element_last;           # last element
+my %special_commands;       # hash for the commands specially handled 
+                            # by the user 
 
 # This is a virtual element used to have the right hrefs for index entries
 # and anchors in footnotes
@@ -3593,6 +3351,12 @@
     'place' => [],
 };
 
+my %content_element =
+(
+    'contents' => { 'id' => 'SEC_Contents', 'contents' => 1, 'texi' => '_contents' },
+    'shortcontents' => { 'id' => 'SEC_Overview', 'shortcontents' => 1, 'texi' => '_shortcontents' },
+);
+
 #my $do_contents;            # do table of contents if true
 #my $do_scontents;           # do short table of contents if true
 my $novalidate = $Texi2HTML::Config::NOVALIDATE; # @novalidate appeared
@@ -3620,7 +3384,7 @@
         }
         $line_nr = shift (@lines_numbers);
         #print STDERR "PASS_STRUCTURE: $_";
-        if (!$state->{'raw'} and !$state->{'special'} and !$state->{'verb'})
+        if (!$state->{'raw'} and !$state->{'verb'})
         {
             my $tag = '';
             if (/^\s*\@(\w+)\b/)
@@ -3631,20 +3395,20 @@
             #
             # analyze the tag
             #
-            if ($tag and $tag eq 'node' or defined($sec2level{$tag}) or $tag eq 'printindex' or $tag eq 'float')
+            if ($tag and $tag eq 'node' or defined($sec2level{$tag}) or $tag eq 'printindex')
             {
-                $_ = substitute_texi_line($_); #usefull if there is an anchor ???
-                if (@stack and $tag eq 'node' or defined($sec2level{$tag}) or
-$tag eq 'float')
-                {# in pass structure node and float shouldn't appear in formats
+                $_ = substitute_texi_line($_); 
+                if ($tag eq 'node' or defined($sec2level{$tag}))
+                {# in pass structure node shouldn't appear in formats
                     close_stack_texi_structure(\$text, \@stack, $state, $line_nr);
                     if (exists($state->{'region_lines'}))
                     {
-                        push @{$region_lines{$state->{'region_lines'}->{'format'}}}, split_lines ($text);
+                        push @{$region_lines{$state->{'region_lines'}->{'format'}}}, split_lines($text);
+                        close_region($state); 
                     }
                     else
                     {
-                        push @doc_lines, split_lines ($text);
+                        push @doc_lines, split_lines($text);
                     }
                     $text = '';
                 }
@@ -3715,7 +3479,7 @@
                                 $node_ref->{'first'} = 1;
                             }
                             push (@nodes_list, $node_ref);
-                            push @elements_list, $node_ref;
+                            push @all_elements, $node_ref;
                         }
                     }
                     else
@@ -3723,7 +3487,7 @@
                         echo_error ("Node is undefined: $_ (eg. \@node NODE-NAME, NEXT, PREVIOUS, UP)", $line_nr);
                         next;
                     }
-                
+
                     if ($node_next)
                     {
                         $node_ref->{'node_next'} = normalise_node($node_next);
@@ -3738,7 +3502,7 @@
                     }
                 }
                 elsif (defined($sec2level{$tag}))
-                {
+                { # section or heading
                     if (/^\@$tag\s*(.*)$/)
                     {
                         my $name = normalise_space($1);
@@ -3776,7 +3540,7 @@
                                 $section_ref->{'top'} = 1;
                                 $section_ref->{'number'} = '';
                                 $sections{0} = $section_ref;
-                                $element_top = $section_ref;
+                                $section_top = $section_ref;
                             }
                             $sections{$num} = $section_ref;
                             merge_element_before_anything($section_ref);
@@ -3793,8 +3557,7 @@
                                echo_warn ("$tag without name", $line_nr);
                             }
                             push @sections_list, $section_ref;
-                            push @elements_list, $section_ref;
-                            $state->{'section_ref'} = $section_ref;
+                            push @all_elements, $section_ref;
                             $state->{'element'} = $section_ref;
                             $state->{'place'} = $section_ref->{'current_place'};
                             my $node_ref = "NO NODE";
@@ -3823,63 +3586,20 @@
                         }
                     }
                 }
-                elsif ($tag eq 'float')
-                {
-                    my ($style_texi, $label_texi) = split(/,/, $_);
-                    $style_texi =~ s/^\@float\s*//;
-                    $style_texi = normalise_space($style_texi);
-                    $label_texi = undef if (defined($label_texi) and ($label_texi =~ /^\s*$/));
-                    if (defined($label_texi))
-                    {
-                        $label_texi = normalise_node($label_texi);
-                        if (exists($nodes{$label_texi}) and defined($nodes{$label_texi})
-                             and $nodes{$label_texi}->{'seen'})
-                        {
-                            echo_error ("Duplicate label found: $label_texi", $line_nr);
-                            while ($_ =~ /,/)
-                            {
-                                $_ =~ s/,.*$//;
-                            }
-                        }
-                        else
-                        {
-                            my $float = { };
-                            if (exists($nodes{$label_texi}) and defined($nodes{$label_texi}))
-                            { # float appeared in a menu
-                                $float = $nodes{$label_texi};
-                            }
-                            else
-                            {
-                                $nodes{$label_texi} = $float;
-                            }
-                            $float->{'float'} = 1;
-                            $float->{'tag'} = 'float';
-                            $float->{'texi'} = $label_texi;
-                            $float->{'seen'} = 1;
-                            $float->{'id'} = $label_texi;
-#print STDERR "FLOAT: $float $float->{'texi'}, place $state->{'place'}\n";
-                            push @{$state->{'place'}}, $float;
-                            $float->{'element'} = $state->{'element'};
-                            $state->{'float'} = $float;
-                            $float->{'style_texi'} = $style_texi;
-                            push @floats, $float;
-                        }
-                    }
-                }
                 elsif (/^\@printindex\s+(\w+)/)
                 {
-                    unless (@elements_list)
+                    unless (@all_elements)
                     {
                         echo_warn ("Printindex before document beginning: \@printindex $1", $line_nr);
                         next;
                     }
-                    $state->{'after_element'} = 0;
+                    delete $state->{'after_element'};
                     # $element_index is the first element with index
-                    $element_index = $elements_list[-1] unless (defined($element_index));
+                    $element_index = $all_elements[-1] unless (defined($element_index));
                     # associate the index to the element such that the page
                     # number is right
                     my $placed_elements = [];
-                    push @{$elements_list[-1]->{'index_names'}}, { 'name' => $1, 'place' => $placed_elements };
+                    push @{$all_elements[-1]->{'index_names'}}, { 'name' => $1, 'place' => $placed_elements };
                     $state->{'place'} = $placed_elements;
                 }
                 if (exists($state->{'region_lines'}))
@@ -3904,23 +3624,36 @@
         next if (!defined($_));
         if ($state->{'region_lines'})
         {
-            push @{$region_lines{$state->{'region_lines'}->{'format'}}}, split_lines ($_);
+            push @{$region_lines{$state->{'region_lines'}->{'format'}}}, split_lines($_);
         }
         else
         {
-            push @doc_lines, split_lines ($_);
+            push @doc_lines, split_lines($_);
         }
     }
     if (@stack)
     {# close stack at the end of pass structure
         close_stack_texi_structure(\$text, \@stack, $state, $line_nr);
-        push @doc_lines, split_lines ($text) if ($text and (!exists($state->{'region_lines'})));
+        if ($text)
+        {
+            if (exists($state->{'region_lines'}))
+            {
+                push @{$region_lines{$state->{'region_lines'}->{'format'}}}, 
+                   split_lines($text);
+            }
+            else
+            {
+                push @doc_lines, split_lines($text);
+            }
+        }
     }
     echo_warn ("At end of document, $state->{'region_lines'}->{'number'} $state->{'region_lines'}->{'format'} not closed") if (exists($state->{'region_lines'}));
     print STDERR "# end of pass structure\n" if $T2H_VERBOSE;
 }
 
 # split line at end of line and put each resulting line in an array
+# FIXME there must be a more perlish way to do it... Not a big deal 
+# as long as it work
 sub split_lines($)
 {
    my $line = shift;
@@ -3938,6 +3671,7 @@
    return @result;
 }
 
+# handle misc commands and misc command args
 sub misc_command_structure($$$$)
 {
     my $line = shift;
@@ -3954,7 +3688,7 @@
         {
             $sec2level{$sec} = $level + 1;
         }
-        $state->{'level'}--;
+        $state->{'sectionning_base'}--;
     }
     elsif ($macro eq 'raisesections')
     {
@@ -3963,23 +3697,29 @@
         {
             $sec2level{$sec} = $level - 1;
         }
-        $state->{'level'}++;
+        $state->{'sectionning_base'}++;
     }
-    elsif ($macro eq 'contents')
+    elsif (($macro eq 'contents') or ($macro eq 'summarycontents') or ($macro eq 'shortcontents'))
     {
-        $Texi2HTML::Config::DO_CONTENTS = 1;
+        if ($macro eq 'contents')
+        {
+             $Texi2HTML::Config::DO_CONTENTS = 1;
+        }
+        else
+        {
+             $macro = 'shortcontents';
+             $Texi2HTML::Config::DO_SCONTENTS = 1;
+        }
+        push @{$state->{'place'}}, $content_element{$macro};
     }
     elsif ($macro eq 'detailmenu')
     {
         $state->{'detailmenu'}++;
     }
-    elsif (($macro eq 'summarycontents') or ($macro eq 'shortcontents'))
-    {
-        $Texi2HTML::Config::DO_SCONTENTS = 1;
-    }
     elsif ($macro eq 'novalidate')
     {
         $novalidate = 1;
+        $Texi2HTML::THISDOC{$macro} = 1; 
     }
     elsif (grep {$_ eq $macro} ('settitle','setfilename','shortitle','shorttitlepage') 
              and ($line =~ /^\s+(.*)$/))
@@ -3996,24 +3736,23 @@
     {
         if ($line =~ /^\s+(\w+)\s+(\w+)/)
         {
-            my $from = $1;
-            my $to = $2;
-            my $prefix_from = index_name2prefix($from);
-            my $prefix_to = index_name2prefix($to);
-            echo_error ("unknown from index name $from in \@$macro", $line_nr)
-                unless $prefix_from;
-            echo_error ("unknown to index name $to in \@$macro", $line_nr)
-                unless $prefix_to;
-            if ($prefix_from and $prefix_to)
+            my $index_from = $1;
+            my $index_to = $2;
+            echo_error ("unknown from index name $index_from in \@$macro", $line_nr)
+                unless $index_names{$index_from};
+            echo_error ("unknown to index name $index_to in \@$macro", $line_nr)
+                unless $index_names{$index_to};
+            if ($index_names{$index_from} and $index_names{$index_to})
             {
                 if ($macro eq 'syncodeindex')
                 {
-                    $index_properties->{$prefix_to}->{'from_code'}->{$prefix_from} = 1;
+                    $index_names{$index_to}->{'associated_indices_code'}->{$index_from} = 1;
                 }
                 else
                 {
-                    $index_properties->{$prefix_to}->{'from'}->{$prefix_from} = 1;
+                    $index_names{$index_to}->{'associated_indices'}->{$index_from} = 1;
                 }
+                push @{$Texi2HTML::THISDOC{$macro}}, [$index_from,$index_to]; 
             }
         }
         else
@@ -4026,11 +3765,22 @@
         if ($line =~ /^\s+(\w+)\s*$/)
         {
             my $name = $1;
-            $index_properties->{$name}->{'name'} = $name;
-            $index_properties->{$name}->{'code'} = 1 if $macro eq 'defcodeindex';
+            if ($forbidden_index_name{$name})
+            {
+                echo_error("Reserved index name $name", $line_nr);
+            }
+            else
+            {
+                @{$index_names{$name}->{'prefix'}} = ($name);
+                $index_names{$name}->{'code'} = 1 if $macro eq 'defcodeindex';
+                $index_prefix_to_name{$name} = $name;
+                push @{$Texi2HTML::THISDOC{$macro}}, $name; 
+            }
         }
         else
-        {# FIXME makeinfo don't warn ?
+        {# makeinfo don't warn and even accepts index with empty name
+         # and index with numbers only. I reported it on the mailing list
+         # this should be fixed in future makeinfo versions.
             echo_error ("Bad $macro line: $line", $line_nr);
         }
     }
@@ -4040,22 +3790,26 @@
         {
             my $lang = $1;
             set_document_language($lang, 0, $line_nr) if (!$cmd_line_lang && $lang);
+            # warning, this is not the language of the document but the one that
+            # appear in the texinfo...
+            $Texi2HTML::THISDOC{$macro} = $lang; 
         }
     }
     elsif ($macro eq 'kbdinputstyle')
-    {# FIXME makeinfo ignores that with --html
+    {# makeinfo ignores that with --html. I reported it and it should be 
+     # fixed in future makeinfo releases
         if ($line =~ /\s+([a-z]+)/)
         {
             if ($1 eq 'code')
             {
-                $style_map_ref->{'kbd'} = $style_map_ref->{'code'};
-                $style_map_pre_ref->{'kbd'} = $style_map_pre_ref->{'code'};
-                $Texi2HTML::THISDOC{'kbdinputstyle'} = $1;
+                $::style_map_ref->{'kbd'} = $::style_map_ref->{'code'};
+                $::style_map_pre_ref->{'kbd'} = $::style_map_pre_ref->{'code'};
+                $Texi2HTML::THISDOC{$macro} = $1;
             }
             elsif ($1 eq 'example')
             {
-                $style_map_pre_ref->{'kbd'} = $style_map_pre_ref->{'code'};
-                $Texi2HTML::THISDOC{'kbdinputstyle'} = $1;
+                $::style_map_pre_ref->{'kbd'} = $::style_map_pre_ref->{'code'};
+                $Texi2HTML::THISDOC{$macro} = $1;
             }
             elsif ($1 ne 'distinct')
             {
@@ -4071,11 +3825,11 @@
     {
         if ($line =~ /\s+([0-9]+)/)
         {
-            $Texi2HTML::THISDOC{'paragraphindent'} = $1;
+            $Texi2HTML::THISDOC{$macro} = $1;
         }
         elsif (($line =~ /\s+(none)[^\w\-]/) or ($line =~ /\s+(asis)[^\w\-]/))
         {
-            $Texi2HTML::THISDOC{'paragraphindent'} = $1;
+            $Texi2HTML::THISDOC{$macro} = $1;
         }
         else
         {
@@ -4086,7 +3840,7 @@
     {
         if (($line =~ /\s+(none)[^\w\-]/) or ($line =~ /\s+(insert)[^\w\-]/))
         {
-            $Texi2HTML::THISDOC{'firstparagraphindent'} = $1;
+            $Texi2HTML::THISDOC{$macro} = $1;
         }
         else
         {
@@ -4097,11 +3851,22 @@
     {
         if ($line =~ /^\s+([0-9]+)/)
         {
-            $Texi2HTML::THISDOC{'exampleindent'} = $1;
+            $Texi2HTML::THISDOC{$macro} = $1;
         }
         elsif ($line =~ /^\s+(asis)[^\w\-]/)
         {
-            $Texi2HTML::THISDOC{'exampleindent'} = $1;
+            $Texi2HTML::THISDOC{$macro} = $1;
+        }
+        else
+        {
+            echo_error ("Bad \@$macro", $line_nr);
+        }
+    }
+    elsif ($macro eq 'frenchspacing')
+    {
+        if (($line =~ /^\s+(on)[^\w\-]/) or ($line =~ /^\s+(off)[^\w\-]/))
+        {
+            $Texi2HTML::THISDOC{$macro} = $1;
         }
         else
         {
@@ -4112,7 +3877,7 @@
     {
         if (($line =~ /^\s+(end)[^\w\-]/) or ($line =~ /^\s+(separate)[^\w\-]/))
         {
-            $Texi2HTML::THISDOC{'footnotestyle'} = $1;
+            $Texi2HTML::THISDOC{$macro} = $1;
         }
         else
         {
@@ -4128,7 +3893,7 @@
             if ($line =~ /^\s+($possible_arg)[^\w\-]/)
             {   
                 $valid_arg = 1;
-                $Texi2HTML::THISDOC{'headings'} = $possible_arg;
+                $Texi2HTML::THISDOC{$macro} = $possible_arg;
                 last;
             }
         }
@@ -4142,13 +3907,20 @@
         if (($line =~ /^\s+(on)[^\w\-]/) or ($line =~ /^\s+(off)[^\w\-]/)
                 or ($line =~ /^\s+(odd)[^\w\-]/))
         {
-            $Texi2HTML::THISDOC{'setchapternewpage'} = $1;
+            $Texi2HTML::THISDOC{$macro} = $1;
         }
         else
         {
             echo_error ("Bad \@$macro", $line_nr);
         }
     }
+    elsif ($macro eq 'setcontentsaftertitlepage' or $macro eq 'setshortcontentsaftertitlepage')
+    {
+        $Texi2HTML::THISDOC{$macro} = 1;
+        my $tag = 'contents';
+        $tag = 'shortcontents' if ($macro ne 'setcontentsaftertitlepage');
+        $content_element{$tag}->{'aftertitlepage'} = 1;
+    }
     elsif (grep {$macro eq $_} ('everyheading', 'everyfooting',
           'evenheading', 'evenfooting', 'oddheading', 'oddfooting'))
     {
@@ -4156,6 +3928,14 @@
         $arg =~ s/^\s+//;
         $Texi2HTML::THISDOC{$macro} = $arg;
     }
+    elsif ($macro eq 'need')
+    {
+        unless (($line =~ /^\s+([0-9]+(\.[0-9]*)?)[^\w\-]/) or 
+                 ($line =~ /^\s+(\.[0-9]+)[^\w\-]/))
+        {
+            echo_warn ("Bad \@$macro", $line_nr);
+        }
+    }
 
     ($text, $line, $args) = preserve_command($line, $macro);
     return ($text, $line);
@@ -4173,6 +3953,8 @@
     my $text = shift;
     my $line_nr = shift;
     my ($skipped, $remaining, $args);
+    # if it is true the command args are kept so the user can modify how
+    # they are skipped and handle them as unknown @-commands
     my $keep = $Texi2HTML::Config::misc_command{$macro}->{'keep'};
 
     if ($macro eq 'detailmenu')
@@ -4195,7 +3977,10 @@
             echo_error ("\@$macro needs a numeric arg or no arg", $line_nr);
         }
         $sp_number = 1 if ($sp_number eq '');
-        add_prev($text, $stack, &$Texi2HTML::Config::sp($sp_number, $state->{'preformatted'}));
+        if (!$state->{'remove_texi'})
+        {
+            add_prev($text, $stack, &$Texi2HTML::Config::sp($sp_number, $state->{'preformatted'}));
+        }
     }
     elsif($macro eq 'verbatiminclude' and !$keep)
     {
@@ -4216,7 +4001,15 @@
                     {
                         $verb_text .= $line;
                     }
-                    add_prev($text, $stack, &$Texi2HTML::Config::raw('verbatim',$verb_text));
+                    
+                    if ($state->{'remove_texi'})
+                    {
+                        add_prev ($text, $stack, &$Texi2HTML::Config::raw_no_texi('verbatim', $verb_text));
+                    }
+                    else
+                    { 
+                        add_prev($text, $stack, &$Texi2HTML::Config::raw('verbatim', $verb_text));
+                    }
                     close VERBINCLUDE;
                 }
             }
@@ -4230,39 +4023,38 @@
             echo_error ("Bad \@$macro line: $_", $line_nr);
         }
     }
-    elsif ($macro eq 'need')
+    elsif ($macro eq 'indent' or $macro eq 'noindent')
     {
-        unless (($line =~ /\s+([0-9]+(\.[0-9]*)?)[^\w\-]/) or 
-                 ($line =~ /\s+(\.[0-9]+)[^\w\-]/))
-        {
-            echo_warn ("Bad \@$macro", $line_nr);
-        }
+        $state->{'paragraph_indent'} = $macro;
     }
     ($remaining, $skipped, $args) = preserve_command($line, $macro);
-    if ($keep)
-    {
-        $remaining = $args . $remaining;
-    }
+    return ($skipped) if ($keep);
     return $remaining if ($remaining ne '');
     return undef;
 }
 
 # merge the things appearing before the first @node or sectionning command
-# (held by element_before_anything) with the current element if not allready 
-# done 
+# (held by element_before_anything) with the current element 
+# do that only once.
 sub merge_element_before_anything($)
 {
     my $element = shift;
     if (exists($element_before_anything->{'place'}))
     {
         $element->{'current_place'} = $element_before_anything->{'place'};
-        $element->{'titlefont'} = $element_before_anything->{'titlefont'};
         delete $element_before_anything->{'place'};
         foreach my $placed_thing (@{$element->{'current_place'}})
         {
             $placed_thing->{'element'} = $element if (exists($placed_thing->{'element'}));
         }
     }
+    # this is certainly redundant with the above condition, but cleaner 
+    # that way
+    if (exists($element_before_anything->{'titlefont'}))
+    {
+        $element->{'titlefont'} = $element_before_anything->{'titlefont'};
+        delete $element_before_anything->{'titlefont'};
+    }
 }
 
 # find menu_prev, menu_up... for a node in menu
@@ -4281,9 +4073,8 @@
         $nodes{$node} = $node_menu_ref;
         $node_menu_ref->{'texi'} = $node;
         $node_menu_ref->{'external_node'} = 1 if ($node =~ /\(.+\)/);
-# or $novalidate);
     }
-    #$node_menu_ref->{'menu_node'} = 1;
+    return if ($state->{'detailmenu'});
     if ($state->{'node_ref'})
     {
         $node_menu_ref->{'menu_up'} = $state->{'node_ref'};
@@ -4292,9 +4083,7 @@
     else
     {
         echo_warn ("menu entry without previous node: $node", $line_nr) unless ($node =~ /\(.+\)/);
-        #warn "$WARN menu entry without previous node: $node\n" unless ($node =~ /\(.+\)/);
     }
-    return if ($state->{'detailmenu'});
     if ($state->{'prev_menu_node'})
     {
         $node_menu_ref->{'menu_prev'} = $state->{'prev_menu_node'};
@@ -4307,13 +4096,27 @@
     $state->{'prev_menu_node'} = $node_menu_ref;
 }
 
+sub equivalent_nodes($)
+{
+    my $name = shift;
+#print STDERR "equivalent_nodes $name\n";
+    my $node = normalise_node($name);
+    $name = cross_manual_line($node);
+    my @equivalent_nodes = ();
+    if (exists($cross_reference_nodes{$name}))
+    {
+        @equivalent_nodes = grep {$_ ne $node} @{$cross_reference_nodes{$name}};
+    }
+    return @equivalent_nodes;
+}
+
 my %files = ();   # keys are files. This is used to avoid reusing an allready
                   # used file name
 my %empty_indices = (); # value is true for an index name key if the index 
                         # is empty
 my %printed_indices = (); # value is true for an index name not empty and
                           # printed
-		  
+
 # find next, prev, up, back, forward, fastback, fastforward
 # find element id and file
 # split index pages
@@ -4322,49 +4125,58 @@
 # associate nodes with sections
 sub rearrange_elements()
 {
-    @all_elements = @elements_list;
-    
     print STDERR "# find sections levels and toplevel\n"
         if ($T2H_DEBUG & $DEBUG_ELEMENTS);
     
     my $toplevel = 4;
     # correct level if raisesections or lowersections overflowed
-    # and find toplevel
-    foreach my $element (values(%sections))
+    # and find toplevel level
+    # use %sections to modify also the headings
+    foreach my $section (values(%sections))
     {
-        my $level = $element->{'level'};
+        my $level = $section->{'level'};
         if ($level > $MAX_LEVEL)
         {
-             $element->{'level'} = $MAX_LEVEL;
+             $section->{'level'} = $MAX_LEVEL;
         }
-        elsif ($level < $MIN_LEVEL and !$element->{'top'})
+        elsif ($level < $MIN_LEVEL and !$section->{'top'})
         {
-             $element->{'level'} = $MIN_LEVEL;
+             $section->{'level'} = $MIN_LEVEL;
         }
         else
         {
-             $element->{'level'} = $level;
+             $section->{'level'} = $level;
         }
-        $element->{'toc_level'} = $element->{'level'};
+        $section->{'toc_level'} = $section->{'level'};
         # This is for top
-        $element->{'toc_level'} = $MIN_LEVEL if ($element->{'level'} < $MIN_LEVEL);
+        $section->{'toc_level'} = $MIN_LEVEL if ($section->{'level'} < $MIN_LEVEL);
         # find the new tag corresponding with the level of the section
-        $element->{'tag_level'} = $level2sec{$element->{'tag'}}->[$element->{'level'}] if ($element->{'tag'} !~ /heading/);
-        $toplevel = $element->{'level'} if (($element->{'level'} < $toplevel) and ($element->{'level'} > 0 and ($element->{'tag'} !~ /heading/)));
-        print STDERR "# section level $level: $element->{'texi'}\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+        if ($section->{'tag'} !~ /heading/ and ($level ne $reference_sec2level{$section->{'tag'}}))
+        {
+             $section->{'tag_level'} = $level2sec{$section->{'tag'}}->[$section->{'level'}];
+        }
+        else
+        {
+             $section->{'tag_level'} = $section->{'tag'};
+        }
+        $toplevel = $section->{'level'} if (($section->{'level'} < $toplevel) and ($section->{'level'} > 0 and ($section->{'tag'} !~ /heading/)));
+        print STDERR "# section level $level: $section->{'texi'}\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
     }
     
     print STDERR "# find sections structure, construct section numbers (toplevel=$toplevel)\n"
         if ($T2H_DEBUG & $DEBUG_ELEMENTS);
-	
     my $in_appendix = 0;
-    # these arrays heve an element per sectionning level. 
+    # these arrays have an element per sectionning level. 
     my @previous_numbers = ();   # holds the number of the previous sections
                                  # at the same and upper levels
     my @previous_sections = ();  # holds the ref of the previous sections
     
     foreach my $section (@sections_list)
     {
+        ########################### debug
+        print STDERR "BUG: node or section_ref defined for section $section->{'texi'}\n"
+            if (exists($section->{'node'}) or exists($section->{'section_ref'}));
+        ########################### end debug
         next if ($section->{'top'});
         print STDERR "Bug level undef for ($section) $section->{'texi'}\n" if (!defined($section->{'level'}));
         $section->{'toplevel'} = 1 if ($section->{'level'} == $toplevel);
@@ -4425,14 +4237,13 @@
         if (defined($previous_sections[$section->{'level'}]))
         {
             my $prev_section = $previous_sections[$section->{'level'}];
-            $section->{'section_prev'} = $prev_section;
-            $prev_section->{'next'} = $section;
-            $prev_section->{'element_next'} = $section;
+            $section->{'sectionprev'} = $prev_section;
+            $prev_section->{'sectionnext'} = $section;
         }
         # find the up section
         if ($section->{'level'} == $toplevel)
         {
-            $section->{'up'} = undef;
+            $section->{'sectionup'} = undef;
         }
         else
         {
@@ -4443,27 +4254,39 @@
             }
             if ($level >= 0)
             {
-                $section->{'up'} = $previous_sections[$level];
+                $section->{'sectionup'} = $previous_sections[$level];
                 # 'child' is the first child
-                $section->{'up'}->{'child'} = $section unless ($section->{'section_prev'});
+                $section->{'sectionup'}->{'child'} = $section unless ($section->{'sectionprev'});
+                push @{$section->{'sectionup'}->{'section_childs'}}, $section;
             }
             else
             {
-                 $section->{'up'} = undef;
+                 $section->{'sectionup'} = undef;
             }
         }
         $previous_sections[$section->{'level'}] = $section;
-        # element_up is used for reparenting in case an index page 
-        # splitted a section. This is used in order to preserve the up which
-        # points to the up section. See below at index pages generation.
-        $section->{'element_up'} = $section->{'up'};
+        # This is what is used in the .init file. 
+        $section->{'up'} = $section->{'sectionup'};
+        # Not used but documented. 
+        $section->{'next'} = $section->{'sectionnext'};
+        $section->{'prev'} = $section->{'sectionprev'};
 
+        ############################# debug
         my $up = "NO_UP";
-        $up = $section->{'up'} if (defined($section->{'up'}));
+        $up = $section->{'sectionup'} if (defined($section->{'sectionup'}));
         print STDERR "# numbering section ($section->{'level'}): $section->{'number'}: (up: $up) $section->{'texi'}\n"
             if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+        ############################# end debug
     }
 
+    # at that point there are still some node structures that are not 
+    # in %nodes, (the external nodes, and unknown nodes in case 
+    # novalidate is true) so we cannot find the id. The consequence is that
+    # some node equivalent with another node may not be catched during
+    # that pass. We mark the nodes that have directions for unreferenced 
+    # nodes and make a second pass for these nodes afterwards.
+    my @nodes_with_unknown_directions = ();
+
     my @node_directions = ('node_prev', 'node_next', 'node_up');
     # handle nodes 
     # the node_prev... are texinfo strings, find the associated node references
@@ -4471,8 +4294,9 @@
     foreach my $node (@nodes_list)
     {
         foreach my $direction (@node_directions)
-        {
-            if ($node->{$direction} and !ref($node->{$direction}))
+        { 
+            if (defined($node->{$direction}) and !ref($node->{$direction})
+                and ($node->{$direction} ne ''))
             {
                 if ($nodes{$node->{$direction}} and $nodes{$node->{$direction}}->{'seen'})
                 {
@@ -4491,16 +4315,51 @@
                         # do then ?
                         my $node_ref = { 'texi' => $node->{$direction} };
                         $node_ref->{'external_node'} = 1 if ($node->{$direction} =~ /^\(.*\)/);
-                        #my $node_ref = { 'texi' => $node->{$direction},
-                        #    'external_node' => 1 };
                         $nodes{$node->{$direction}} = $node_ref;
                         $node->{$direction} = $node_ref;
                     }
                 }
                 else
                 {
-                     echo_warn ("$direction `$node->{$direction}' for `$node->{'texi'}' not found");
-                     delete $node->{$direction};
+                     push @nodes_with_unknown_directions, $node;
+                }
+            }
+        }
+    }
+
+    # Find cross manual links as explained on the texinfo mailing list
+    # The  specification is such that cross manual links formatting should 
+    # be insensitive to the manual split
+    cross_manual_links();    
+
+    # Now it is possible to find the unknown directions that are equivalent
+    # (have same node id) than an existing node
+    foreach my $node (@nodes_with_unknown_directions)
+    {
+        foreach my $direction (@node_directions)
+        { 
+            if (defined($node->{$direction}) and !ref($node->{$direction})
+                and ($node->{$direction} ne ''))
+            {
+                echo_warn ("$direction `$node->{$direction}' for `$node->{'texi'}' not found");
+                my @equivalent_nodes = equivalent_nodes($node->{$direction});
+                my $node_seen;
+                foreach my $equivalent_node (@equivalent_nodes)
+                {
+                    if ($nodes{$equivalent_node}->{'seen'})
+                    {
+                        $node_seen = $equivalent_node;
+                        last;
+                    }
+                }
+                if (defined($node_seen))
+                {
+                    echo_warn (" ---> but equivalent node `$node_seen' found");
+                    $node->{$direction} = $nodes{$node_seen};
+                }
+                else
+                {
+                    delete $node->{$direction};
                 }
             }
         }
@@ -4547,11 +4406,12 @@
             print STDERR "# no section\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
             @elements_list = @all_elements;
         }
-        elsif (!$element_top and $node_top and !$node_top->{'with_section'})
+        elsif (!$section_top and $node_top and !$node_top->{'with_section'})
         { # special case for the top node if it isn't associated with 
           # a section. The top node element is inserted between the 
           # $section_before_top and the $section_after_top
-            $node_top->{'as_section'} = 1;
+            print STDERR "# Top not associated with a section\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+            $node_top->{'top_as_section'} = 1;
             $node_top->{'section_ref'} = $node_top;
             my @old_element_lists = @elements_list;
             @elements_list = ();
@@ -4584,10 +4444,8 @@
     else
     {
         # elements are sections if possible, and node if no section associated
-        my @elements = ();
-        while (@elements_list)
+        foreach my $element(@all_elements)
         {
-            my $element = shift @elements_list;
             if ($element->{'node'})
             {
                 if (!defined($element->{'with_section'}))
@@ -4595,117 +4453,185 @@
                     $element->{'toc_level'} = $MIN_LEVEL if (!defined($element->{'toc_level'}));
                     print STDERR "# new node element ($element) $element->{'texi'}\n"
                         if ($T2H_DEBUG & $DEBUG_ELEMENTS);
-                    push @elements, $element;
+                    push @elements_list, $element;
                 }
             }
             else
             {
                 print STDERR "# new section element ($element) $element->{'texi'}\n"
                     if ($T2H_DEBUG & $DEBUG_ELEMENTS);
-                push @elements, $element;
+                push @elements_list, $element;
             }
         }
-        @elements_list = @elements;
-    }
-    foreach my $element (@elements_list)
-    {
-        $element->{'element'} = 1;
     }
     
     # nodes are attached to the section preceding them if not allready 
     # associated with a section
+    # here we don't set @{$element->{'nodes'}} since it may be changed 
+    # below if split by indices. Therefore we only set 
+    # @{$element->{'all_elements'}} with all the elements associated
+    # with an element output, in the right order
     print STDERR "# Find the section associated with each node\n"
         if ($T2H_DEBUG & $DEBUG_ELEMENTS);
     my $current_section = $sections_list[0];
-    $current_section = $node_top if ($node_top and $node_top->{'as_section'} and !$section_before_top);
-    my $current;
+    $current_section = $node_top if ($node_top and $node_top->{'top_as_section'} and !$section_before_top);
     foreach my $element (@all_elements)
     {
-        if ($element->{'node'} and !$element->{'as_section'})
-        {   
+        if ($element->{'node'} and !$element->{'top_as_section'})
+        {
             if ($element->{'with_section'})
             { # the node is associated with a section
                 $element->{'section_ref'} = $element->{'with_section'};
-                push @{$element->{'section_ref'}->{'nodes'}}, $element;
+                push @{$element->{'section_ref'}->{'all_elements'}}, $element, $element->{'section_ref'};
+                # first index is section if the first index is associated with that node
+                $element_index = $element->{'section_ref'} if ($element_index and ($element_index eq $element));
             }
             elsif (defined($current_section))
-            {
-                $current_section = $section_after_top 
-                    if ($current_section->{'node'} and $section_after_top);
-                $element->{'in_top'} = 1 if ($current_section->{'top'});
+            {# node appearing after a section, but not before another section,
+             # or appearing before any section
                 $element->{'section_ref'} = $current_section;
-                # nodes are considered sub elements for the purprose of 
-                # reparenting and their element_next and element_prev
-                # are next and prev node associated with the same section
-                $element->{'element_up'} = $current_section;
                 $element->{'toc_level'} = $current_section->{'toc_level'};
-                if (defined($current))
+                push @{$current_section->{'node_childs'}}, $element;
+                if ($Texi2HTML::Config::USE_NODES)
+                { # the node is an element itself
+                    push @{$element->{'all_elements'}}, $element;
+                }
+                else
                 {
-                    $current->{'element_next'} = $element;
-                    $element->{'element_prev'} = $current;
+                    push @{$current_section->{'all_elements'}}, $element;
+                    # first index is section if the first index is associated with that node
+                    $element_index = $current_section if ($element_index and ($element_index eq $element));
                 }
-                $current = $element;
-                push @{$element->{'section_ref'}->{'nodes'}}, $element;
             }
             else
-            {
+            { # seems like there are only nodes in the documents
                 $element->{'toc_level'} = $MIN_LEVEL;
+                push @{$element->{'all_elements'}}, $element;
             }
         }
         else
         {
-            $current = undef;
             $current_section = $element;
             if ($element->{'node'})
-            { # Top node
+            { # Top node not associated with a section
                 $element->{'toc_level'} = $MIN_LEVEL;
-                push @{$element->{'section_ref'}->{'nodes'}}, $element;
+                push @{$element->{'section_ref'}->{'all_elements'}}, $element;
+            }
+            elsif (!$element->{'node_ref'})
+            { # a section not preceded by a node
+                push @{$element->{'all_elements'}}, $element;
             }
         }
     }
+
+    # find first, last and top elements 
+    $element_first = $elements_list[0];
+    print STDERR "# element first: $element_first->{'texi'}\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS); 
+    print STDERR "# top node: $node_top->{'texi'}\n" if (defined($node_top) and
+        ($T2H_DEBUG & $DEBUG_ELEMENTS));
+    # element top is the element with @top.
+    $element_top = $section_top;
+    # If the top node is associated with a section it is the top_element 
+    # otherwise element top may be the top node 
+    $element_top = $node_top if (!defined($element_top) and defined($node_top));
+    # If there is no @top section no top node the first node is the top element
+    $element_top = $element_first unless (defined($element_top));
+    $element_top->{'top'} = 1 if ($element_top->{'node'});
+    print STDERR "# element top: $element_top->{'texi'}\n" if ($element_top and
+        ($T2H_DEBUG & $DEBUG_ELEMENTS));
+
+    # It is the last element before indices split, which may add new 
+    # elements
+    $element_last = $elements_list[-1];
+    
     print STDERR "# Complete nodes next prev and up based on menus and sections\n"
         if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+    # set the default id based on the node number 
+    my $node_nr = 1;
+    # find the node* directions
+    # find the directions corresponding with sections
+    # and set 'up' for the node
     foreach my $node (@nodes_list)
     {
+        # first a warning if the node and the equivalent nodes don't 
+        # appear in menus
         if (!$node->{'first'} and !$node->{'top'} and !$node->{'menu_up'} and ($node->{'texi'} !~ /^top$/i) and $Texi2HTML::Config::SHOW_MENU)
         {
-            warn "$WARN `$node->{'texi'}' doesn't appear in menus\n";
+            my @equivalent_nodes = equivalent_nodes($node->{'texi'});
+            my $found = 0;
+            foreach my $equivalent_node (@equivalent_nodes)
+            {
+                if ($nodes{$equivalent_node}->{'first'} or $nodes{$equivalent_node}->{'menu_up'})
+                {
+                   $found = 1;
+                   last;
+                }
+            }
+            unless ($found)
+            {
+                warn "$WARN `$node->{'texi'}' doesn't appear in menus\n";
+            }
         }
 
         # use values deduced from menus to complete missing up, next, prev
         # or from sectionning commands if automatic sectionning
         if ($node->{'node_up'})
         {
-            $node->{'up'} = $node->{'node_up'};
+            $node->{'nodeup'} = $node->{'node_up'};
         }
-        elsif ($node->{'automatic_directions'} and $node->{'section_ref'} and defined($node->{'section_ref'}->{'up'}))
+        elsif ($node->{'automatic_directions'} and $node->{'section_ref'})
         {
-            $node->{'up'} = get_node($node->{'section_ref'}->{'up'});
+            if (defined($node_top) and ($node eq $node_top))
+            { # Top node has a special up, which is (dir) by default
+                my $top_nodeup = $Texi2HTML::Config::TOP_NODE_UP;
+                if (exists($nodes{$top_nodeup}))
+                {
+                    $node->{'nodeup'} = $nodes{$top_nodeup};
+                }
+                else
+                {
+                    my $node_ref = { 'texi' => $top_nodeup };
+                    $node_ref->{'external_node'} = 1;
+                    $nodes{$top_nodeup} = $node_ref;
+                    $node->{'nodeup'} = $node_ref;
+                }
+            }
+            elsif (defined($node->{'section_ref'}->{'sectionup'}))
+            {
+                $node->{'nodeup'} = get_node($node->{'section_ref'}->{'sectionup'});
+            }
+            elsif ($node->{'section_ref'}->{'toplevel'} and ($node->{'section_ref'} ne $element_top))
+            {
+                $node->{'nodeup'} = get_node($element_top);
+            }
+            print STDERR "# Deducing from section node_up $node->{'nodeup'}->{'texi'} for $node->{'texi'}\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS and defined($node->{'nodeup'}));
         }
-        elsif ($node->{'menu_up'})
-        {
-            $node->{'up'} = $node->{'menu_up'};
+
+        if (!$node->{'nodeup'} and $node->{'menu_up'} and $Texi2HTML::Config::USE_MENU_DIRECTIONS)
+        { # makeinfo don't do that
+            $node->{'nodeup'} = $node->{'menu_up'};
+            print STDERR "# Deducing from menu node_up $node->{'menu_up'}->{'texi'} for $node->{'texi'}\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
         }
 
-        if ($node->{'up'} and !$node->{'up'}->{'external_node'})
+        if ($node->{'nodeup'} and !$node->{'nodeup'}->{'external_node'})
         {
             # We detect when the up node has no menu entry for that node, as
             # there may be infinite loops when finding following node (see below)
-            unless (defined($node->{'menu_up_hash'}) and ($node->{'menu_up_hash'}->{$node->{'up'}->{'texi'}}))
+            unless (defined($node->{'menu_up_hash'}) and ($node->{'menu_up_hash'}->{$node->{'nodeup'}->{'texi'}}))
             {
-                print STDERR "$WARN `$node->{'up'}->{'texi'}' is up for `$node->{'texi'}', but has no menu entry for this node\n" if ($Texi2HTML::Config::SHOW_MENU);
-                push @{$node->{'up_not_in_menu'}}, $node->{'up'}->{'texi'};
+                print STDERR "$WARN `$node->{'nodeup'}->{'texi'}' is up for `$node->{'texi'}', but has no menu entry for this node\n" if ($Texi2HTML::Config::SHOW_MENU);
+                push @{$node->{'up_not_in_menu'}}, $node->{'nodeup'}->{'texi'};
             }
         }
 
         # Find next node
         if ($node->{'node_next'})
         {
-            $node->{'next'} = $node->{'node_next'};
+            $node->{'nodenext'} = $node->{'node_next'};
         }
         elsif ($node->{'texi'} eq 'Top')
         { # special case as said in the texinfo manual
-            $node->{'next'} = $node->{'menu_child'} if ($node->{'menu_child'});
+            $node->{'nodenext'} = $node->{'menu_child'} if ($node->{'menu_child'});
         }
         elsif ($node->{'automatic_directions'})
         {
@@ -4713,57 +4639,59 @@
             {
                 my $next;
                 my $section = $node->{'section_ref'};
-                if (defined($section->{'next'}))
+                if (defined($section->{'sectionnext'}))
                 {
-                    $next = get_node($section->{'next'})
+                    $next = get_node($section->{'sectionnext'})
                 }
                 else 
                 {
-                    while (defined($section->{'up'}) and !defined($section->{'next'}))
+                    while (defined($section->{'sectionup'}) and !defined($section->{'sectionnext'}))
                     {
-                        $section = $section->{'up'};
+                        $section = $section->{'sectionup'};
                     }
-                    if (defined($section->{'next'}))
+                    if (defined($section->{'sectionnext'}))
                     {
-                        $next = get_node($section->{'next'});
+                        $next = get_node($section->{'sectionnext'});
                     }
                 }
-                $node->{'next'} = $next;
+                $node->{'nodenext'} = $next;
             }
         }
-        if (!defined($node->{'next'}) and $node->{'menu_next'})
+        # next we try menus. makeinfo don't do that
+        if (!defined($node->{'nodenext'}) and $node->{'menu_next'} 
+            and $Texi2HTML::Config::USE_MENU_DIRECTIONS)
         {
-            $node->{'next'} = $node->{'menu_next'};
+            $node->{'nodenext'} = $node->{'menu_next'};
         }
         # Find prev node
         if ($node->{'node_prev'})
         {
-            $node->{'prev'} = $node->{'node_prev'};
+            $node->{'nodeprev'} = $node->{'node_prev'};
         }
         elsif ($node->{'automatic_directions'})
         {
             if (defined($node->{'section_ref'}))
             {
                 my $section = $node->{'section_ref'};
-                if (defined($section->{'section_prev'}))
+                if (defined($section->{'sectionprev'}))
                 {
-                    $node->{'prev'} = get_node($section->{'section_prev'});
+                    $node->{'nodeprev'} = get_node($section->{'sectionprev'});
                 }
-                elsif (defined($section->{'up'}))
+                elsif (defined($section->{'sectionup'}))
                 {
-                    $node->{'prev'} = get_node($section->{'up'});
+                    $node->{'nodeprev'} = get_node($section->{'sectionup'});
                 }
             }
         }
         # next we try menus. makeinfo don't do that
-        if (!defined($node->{'prev'}) and $node->{'menu_prev'}) 
+        if (!defined($node->{'nodeprev'}) and $node->{'menu_prev'} and $Texi2HTML::Config::USE_MENU_DIRECTIONS) 
         {
-            $node->{'prev'} = $node->{'menu_prev'};
+            $node->{'nodeprev'} = $node->{'menu_prev'};
         }
         # the prev node is the parent node
-        elsif (!defined($node->{'prev'}) and $node->{'menu_up'})
+        elsif (!defined($node->{'nodeprev'}) and $node->{'menu_up'} and $Texi2HTML::Config::USE_MENU_DIRECTIONS)
         {
-            $node->{'prev'} = $node->{'menu_up'};
+            $node->{'nodeprev'} = $node->{'menu_up'};
         }
     
         # the following node is the node following in node reading order
@@ -4775,15 +4703,15 @@
         }
         elsif ($node->{'automatic_directions'} and defined($node->{'section_ref'}) and defined($node->{'section_ref'}->{'child'}))
         {
-            $node->{'following'} = get_node ($node->{'section_ref'}->{'child'});
+            $node->{'following'} = get_node($node->{'section_ref'}->{'child'});
         }
-        elsif (defined($node->{'next'}))
+        elsif (defined($node->{'nodenext'}))
         {
-            $node->{'following'} = $node->{'next'};
+            $node->{'following'} = $node->{'nodenext'};
         }
 	else
         {
-            my $up = $node->{'up'};
+            my $up = $node->{'nodeup'};
             # in order to avoid infinite recursion in case the up node is the 
             # node itself we use the up node as following when there isn't 
             # a correct menu structure, here and also below.
@@ -4795,19 +4723,19 @@
                     $node->{'following'} = $node_top;
                     $up = undef;
                 }
-                if (defined($up->{'next'}))
+                if (defined($up->{'nodenext'}))
                 {
-                    $node->{'following'} = $up->{'next'};
+                    $node->{'following'} = $up->{'nodenext'};
                 }
-                elsif (defined($up->{'up'}))
+                elsif (defined($up->{'nodeup'}))
                 {
-                    if (! grep { $_ eq $up->{'up'}->{'texi'} } @{$node->{'up_not_in_menu'}}) 
+                    if (! grep { $_ eq $up->{'nodeup'}->{'texi'} } @{$node->{'up_not_in_menu'}}) 
                     { 
-                        $up = $up->{'up'};
+                        $up = $up->{'nodeup'};
                     }
                     else
                     { # in that case we can go into a infinite loop
-                        $node->{'following'} = $up->{'up'};
+                        $node->{'following'} = $up->{'nodeup'};
                     }
                 }
                 else
@@ -4816,35 +4744,59 @@
                 }
             }
         }
+
+        if (defined($node->{'section_ref'}))
+        {
+            my $section = $node->{'section_ref'};
+            foreach my $direction ('sectionnext', 'sectionprev', 'sectionup')
+            {
+                $node->{$direction} = $section->{$direction}
+                  if (defined($section->{$direction}));
+            }
+            # this is a node appearing within a section but not associated
+            # with that section. We consider that it is below that section.
+            $node->{'sectionup'} = $section
+               if (grep {$node eq $_} @{$section->{'node_childs'}});
+        }
+        # 'up' is used in .init files. Maybe should go away.
+        if (defined($node->{'sectionup'}))
+        {
+            $node->{'up'} = $node->{'sectionup'};
+        }
+        elsif (defined($node->{'nodeup'}) and 
+             (!$node_top or ($node ne $node_top)))
+        {
+            $node->{'up'} = $node->{'nodeup'};
+        }
+        # 'next' not used but documented. 
+        if (defined($node->{'sectionnext'}))
+        {
+            $node->{'next'} = $node->{'sectionnext'};
+        }
+        if (defined($node->{'sectionprev'}))
+        {
+            $node->{'prev'} = $node->{'sectionprev'};
+        }
+
+        # default id for nodes. Should be overriden later.
+        $node->{'id'} = 'NOD' . $node_nr;
+        $node_nr++;
     }
     
-    # find first and last elements before we split indices
-    # FIXME Is it right for the last element ? Or should it be the last
-    # with indices taken into account ?
-    $element_first = $elements_list[0];
-    print STDERR "# element first: $element_first->{'texi'}\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS); 
-    print STDERR "# top node: $node_top->{'texi'}\n" if (defined($node_top) and
-        ($T2H_DEBUG & $DEBUG_ELEMENTS));
-    # If there is no @top section no top node the first node is the top element
-    $element_top = $node_top if (!defined($element_top) and defined($node_top));
-    $element_top = $element_first unless (defined($element_top));
-    $element_top->{'top'} = 1 if ($element_top->{'node'});
-    $element_last = $elements_list[-1];
-    print STDERR "# element top: $element_top->{'texi'}\n" if ($element_top and
-        ($T2H_DEBUG & $DEBUG_ELEMENTS));
-    
     print STDERR "# find forward and back\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
     my $prev;
     foreach my $element (@elements_list)
     {
-        # complete the up for toplevel elements
-        if ($element->{'toplevel'} and !defined($element->{'up'}) and $element ne $element_top)
+        $element->{'element'} = 1;
+        # complete the up for toplevel elements now that element_top is defined
+        print STDERR "# fwd and back for $element->{'texi'}\n" 
+            if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+        # at that point no node may be toplevel, only sections. 
+        if ($element->{'toplevel'} and ($element ne $element_top))
         {
+            $element->{'sectionup'} = $element_top;
             $element->{'up'} = $element_top;
         }
-        # The childs are element which should be reparented in cas a chapter 
-        # is split by an index
-        push @{$element->{'element_up'}->{'childs'}}, $element if (defined($element->{'element_up'}));
         if ($prev)
         {
             $element->{'back'} = $prev;
@@ -4859,25 +4811,25 @@
         # if there is an associated node
         if (defined($element->{'node_ref'}))
         {
-            $element->{'nodenext'} = $element->{'node_ref'}->{'next'};
-            $element->{'nodeprev'} = $element->{'node_ref'}->{'prev'};
+            $element->{'nodenext'} = $element->{'node_ref'}->{'nodenext'};
+            $element->{'nodeprev'} = $element->{'node_ref'}->{'nodeprev'};
             $element->{'menu_next'} = $element->{'node_ref'}->{'menu_next'};
             $element->{'menu_prev'} = $element->{'node_ref'}->{'menu_prev'};
             $element->{'menu_child'} = $element->{'node_ref'}->{'menu_child'};
             $element->{'menu_up'} = $element->{'node_ref'}->{'menu_up'};
-            $element->{'nodeup'} = $element->{'node_ref'}->{'up'};
+            $element->{'nodeup'} = $element->{'node_ref'}->{'nodeup'};
             $element->{'following'} = $element->{'node_ref'}->{'following'};
         }
         elsif (! $element->{'node'})
         { # the section has no node associated. Find the node directions using 
           # sections
-            if (defined($element->{'next'}))
+            if (defined($element->{'sectionnext'}))
             {
-                 $element->{'nodenext'} = get_node($element->{'next'});
+                 $element->{'nodenext'} = get_node($element->{'sectionnext'});
             }
-            if (defined($element->{'section_prev'}))
+            if (defined($element->{'sectionprev'}))
             {
-                 $element->{'nodeprev'} = get_node($element->{'section_prev'});
+                 $element->{'nodeprev'} = get_node($element->{'sectionprev'});
             }
             if (defined($element->{'up'}))
             {
@@ -4887,29 +4839,26 @@
             {
                 $element->{'following'} = get_node($element->{'child'});
             }
-            elsif ($element->{'next'})
+            elsif ($element->{'sectionnext'})
             {
-                $element->{'following'} = get_node($element->{'next'});
+                $element->{'following'} = get_node($element->{'sectionnext'});
             }
             elsif ($element->{'up'})
             {
                 my $up = $element;
                 while ($up->{'up'} and !$element->{'following'})
                 {
+                    print STDERR "# Going up, searching next section from $up->{'texi'}\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
                     $up = $up->{'up'};
-                    if ($up->{'next_section'})
+                    if ($up->{'sectionnext'})
                     {
-                        $element->{'following'} = get_node ($up->{'next_section'});
+                        $element->{'following'} = get_node ($up->{'sectionnext'});
                     }
+                    # avoid infinite loop if the top is up for itself
+                    last if ($up->{'toplevel'} or $up->{'top'});
                 }
             }
         }
-        if ($element->{'node'})
-        {
-             $element->{'nodeup'} = $element->{'up'};
-             $element->{'nodeprev'} = $element->{'prev'};
-             $element->{'nodenext'} = $element->{'next'};
-        }
     }
 
     my @new_elements = ();
@@ -4918,66 +4867,21 @@
     while(@elements_list)
     {
         my $element = shift @elements_list;
-        # @checked_elements are the elements included in the $element (including
-        # itself) and are searched for indices
-        my @checked_elements = ();
-        if (!$element->{'node'} or $element->{'as_section'})
-        {
-            if (!$Texi2HTML::Config::USE_NODES)
-            {
-                foreach my $node (@{$element->{'nodes'}})
-                {
-                    # we update the element index, first element with index
-                    # if it is a node
-                    $element_index = $element if ($element_index and ($node eq $element_index));
-                    push @checked_elements, $node;
-                    # we push the section itself after the corresponding node
-                    if (defined($element->{'node_ref'}) and ($node eq $element->{'node_ref'}))
-                    {
-                        push @checked_elements, $element;
-                    }
-                }
-                if (!defined($element->{'node_ref'}) and !$element->{'node'})
-                {
-                    push @checked_elements, $element;
-                }
-                $element->{'nodes'} = []; # We reset the element nodes list
-                # as the nodes may be associated below to another element if 
-                # the element is split accross several other elements/pages
-            }
-            else
-            {
-                if ($element->{'node_ref'})
-                {
-                    push @checked_elements, $element->{'node_ref'};
-                    $element_index = $element if ($element_index and ($element->{'node_ref'} eq $element_index));
-                }
-                push @checked_elements, $element;
-                $element->{'nodes'} = [];
-            }
-        }
-        else
-        {
-            push @checked_elements, $element;
-        }
-        my $checked_nodes = '';
-        foreach my $checked (@checked_elements)
-        {
-            $checked_nodes .= "$checked->{'texi'}, ";
-        }
-        print STDERR "# Elements checked for $element->{'texi'}: $checked_nodes\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
-        # current_element is the last element holding text
+        # current_element is the last element which can hold text. It is 
+        # initialized to a fake element
         my $current_element = { 'holder' => 1, 'texi' => 'HOLDER', 
             'place' => [], 'indices' => [] };
-        # back is sed to find back and forward
+        # $back, $forward and $sectionnext are kept because $element
+        # is in @{$element->{'all_elements'}}, so it is possible that 
+        # those directions get changed.
+        # back is set to find back and forward
         my $back = $element->{'back'} if defined($element->{'back'});
-        # forward is sed to find forward of the last inserted element
         my $forward = $element->{'forward'};
-        my $element_next = $element->{'element_next'};
+        my $sectionnext = $element->{'sectionnext'};
         my $index_num = 0;
         my @waiting_elements = (); # elements (nodes) not used for sectionning 
                                  # waiting to be associated with an element
-        foreach my $checked_element(@checked_elements)
+        foreach my $checked_element(@{$element->{'all_elements'}})
         {
 	    if ($checked_element->{'element'})
             { # this is the element, we must add it
@@ -4992,28 +4896,16 @@
                 }
                 else
                 {  
-                    if ($checked_element->{'toplevel'})
-                    # there was an index_page added, this index_page is toplevel.
-                    # it begun a new chapter. The element next for this 
-                    # index page (current_element) is the checked_element
-                    {
-                        $current_element->{'element_next'} = $checked_element;
-                    }
-                    $current_element->{'next'} = $checked_element;
+                    $current_element->{'sectionnext'} = $checked_element;
                     $current_element->{'following'} = $checked_element;
-                    $checked_element->{'prev'} = $current_element;
+                    $checked_element->{'sectionprev'} = $current_element;
                 }
                 $current_element = $checked_element;
                 $checked_element->{'back'} = $back;
                 $back->{'forward'} = $checked_element if (defined($back));
                 $back = $checked_element;
                 push @{$checked_element->{'nodes'}}, @waiting_elements;
-                my $waiting_element;
-                while (@waiting_elements)
-                {
-                    $waiting_element = shift @waiting_elements;
-                    $waiting_element->{'section_ref'} = $checked_element;
-                }
+                @waiting_elements = ();
             }
             elsif ($current_element->{'holder'})
             {
@@ -5029,54 +4921,68 @@
             {
                 print STDERR "# Index in `$checked_element->{'texi'}': $index->{'name'}. Current is `$current_element->{'texi'}'\n"
                     if ($T2H_DEBUG & $DEBUG_INDEX);
-                my ($Pages, $Entries) = get_index($index->{'name'});
-                if (defined($Pages))
+                my ($pages, $entries) = get_index($index->{'name'});
+                if (defined($pages))
                 {
-                    my @pages = @$Pages;
+                    my @pages = @$pages;
                     my $first_page = shift @pages;
-                    # begin debug section
+                    ############################## begin debug section
                     my $back_texi = 'NO_BACK';
                     $back_texi = $back->{'texi'} if (defined($back));
-                    print STDERR "# New index first page (back `$back_texi', current `$current_element->{'texi'}')\n" if ($T2H_DEBUG & $DEBUG_INDEX);
-                    # end debug section
+                    print STDERR "# Index first page (back `$back_texi', in  `$current_element->{'texi'}')\n" if ($T2H_DEBUG & $DEBUG_INDEX);
+                    ############################## end debug section
                     push @{$current_element->{'indices'}}, [ {'element' => $current_element, 'page' => $first_page, 'name' => $index->{'name'} } ];
                     if (@pages)
-                    {
+                    {# index is split accross more than one page
                         if ($current_element->{'holder'})
-                        { # the current element isn't a real element. 
-                          # We add the real element 
+                        { # the current element isn't an element which is
+                          # normally outputted. We add a real element. 
                           # we are in a node of a section but the element
-                          # is splitted by the index, thus we must add 
+                          # is split by the index, thus we must add 
                           # a new element which will contain the text 
                           # between the beginning of the element and the index
+                          # WARNING the added element is like a section, and
+                          # indeed it is a 'section_ref' and 'sectionup' 
+                          # for other nodes, it has 'nodes' 
+                          # (see below and above).
+                          # But it is also a node. It may have a 'with_section'
+                          # and have a 'section_ref'
+                          # it may be considered 'node_ref' for a section.
+                          # and the Texi2HTML::NODE is relative to this
+                          # added element.
+                            
                             push @new_elements, $checked_element;
-                            print STDERR "# Add element `$element->{'texi'}' before index page\n" 
+                            print STDERR "# Add `$checked_element->{'texi'}' before index page for `$element->{'texi'}'\n" 
                                 if ($T2H_DEBUG & $DEBUG_INDEX);
+                            echo_warn("Add `$checked_element->{'texi'}' for indicing");
                             $checked_element->{'element'} = 1;
                             $checked_element->{'level'} = $element->{'level'};
                             $checked_element->{'toc_level'} = $element->{'toc_level'};
                             $checked_element->{'toplevel'} = $element->{'toplevel'};
+                            if ($element->{'top'})
+                            {
+                                $checked_element->{'toplevel'} = 1; 
+                                $checked_element->{'top'} = 1;
+                            }
                             $checked_element->{'up'} = $element->{'up'};
+                            $checked_element->{'sectionup'} = $element->{'sectionup'};
                             $checked_element->{'element_added'} = 1;
                             print STDERR "Bug: checked element wasn't seen" if 
                                  (!$checked_element->{'seen'});
-                            delete $checked_element->{'with_section'};
-                            if ($checked_element->{'toplevel'})
-                            {
-                                $element->{'element_prev'}->{'element_next'} = $checked_element if (exists($element->{'element_prev'}));
-                            }
+                            $element->{'sectionprev'}->{'sectionnext'} = $checked_element if (exists($element->{'sectionprev'}));
                             push @{$checked_element->{'place'}}, @{$current_element->{'place'}};
                             foreach my $index(@{$current_element->{'indices'}})
                             {
                                 push @{$checked_element->{'indices'}}, [ { 'element' => $checked_element, 'page' => $index->[0]->{'page'}, 'name' => $index->[0]->{'name'} } ] ;
                             }
-                            push @{$checked_element->{'nodes'}}, @waiting_elements;
-                            my $waiting_element;
-                            while (@waiting_elements)
+                            foreach my $waiting_element (@waiting_elements)
                             {
-                                $waiting_element = shift @waiting_elements;
-                                $waiting_element->{'section_ref'} = $checked_element;
+                                 next if ($waiting_element eq $checked_element);
+                                 $waiting_element->{'section_ref'} = $checked_element;
+                                 $waiting_element->{'sectionup'} = $checked_element;
+                                 push @{$checked_element->{'nodes'}}, $waiting_element;
                             }
+                            @waiting_elements = ();
                             $checked_element->{'back'} = $back;
                             $back->{'forward'} = $checked_element if (defined($back));
                             $current_element = $checked_element;
@@ -5089,18 +4995,17 @@
                             $index_num++;
                             my $page = shift @pages;
                             $index_page = { 'index_page' => 1,
-                             'texi' => "$element->{'texi'} index $index->{'name'} page $index_num",
+                             'texi' => "NOT REALLY USED: $current_element->{'texi'}' index $index->{'name'} page $index_num",
                              'level' => $element->{'level'},
                              'tag' => $element->{'tag'},
                              'tag_level' => $element->{'tag_level'},
                              'toplevel' => $element->{'toplevel'},
+                             'top' => $element->{'top'},
                              'up' => $element->{'up'},
-                             'element_up' => $element->{'element_up'},
-                             'element_next' => $element_next,
-                             'element_ref' => $element,
+                             'sectionup' => $element->{'sectionup'},
                              'back' => $back,
                              'prev' => $back,
-                             'next' => $current_element->{'next'},
+                             'sectionnext' => $sectionnext,
                              'following' => $current_element->{'following'},
                              'nodeup' => $current_element->{'nodeup'},
                              'nodenext' => $current_element->{'nodenext'},
@@ -5109,6 +5014,16 @@
                              'seen' => 1,
                              'page' => $page
                             };
+                            # the index page is associated with the new element
+                            # if there is one, the element otherwise
+                            if ($checked_element->{'element_added'})
+                            {
+                                $index_page->{'original_index_element'} = $checked_element;
+                            }
+                            else
+                            {
+                                $index_page->{'original_index_element'} = $element;
+                            }
                             $index_page->{'node'} = 1 if ($element->{'node'});
                             while ($nodes{$index_page->{'texi'}})
                             {
@@ -5118,9 +5033,8 @@
                             push @{$current_element->{'indices'}->[-1]}, {'element' => $index_page, 'page' => $page, 'name' => $index->{'name'} };
                             push @new_elements, $index_page;
                             $back->{'forward'} = $index_page;
-                            $back->{'next'} = $index_page;
                             $back->{'nodenext'} = $index_page;
-                            $back->{'element_next'} = $index_page unless ($back->{'top'});
+                            $back->{'sectionnext'} = $index_page unless ($back->{'top'});
                             $back->{'following'} = $index_page;
                             $back = $index_page;
                             $index_page->{'toplevel'} = 1 if ($element->{'top'});
@@ -5142,17 +5056,12 @@
             $current_element->{'forward'} = $forward;
             $forward->{'back'} = $current_element;
         }
-        next if ($current_element eq $element or !$current_element->{'toplevel'});
-        # reparent the elements below $element, following element
-        # and following parent of element to the last index page
-        print STDERR "# Reparent `$element->{'texi'}':\n" if ($T2H_DEBUG & $DEBUG_INDEX);
-        my @reparented_elements = ();
-        @reparented_elements = (@{$element->{'childs'}}) if (defined($element->{'childs'}));
-        push @reparented_elements, $element->{'element_next'} if (defined($element->{'element_next'}));
-        foreach my $reparented(@reparented_elements)
+        next if ($current_element eq $element or !$element->{'toplevel'});
+        # reparent the elements below $element to the last index page
+        print STDERR "# Reparent for `$element->{'texi'}':\n" if ($T2H_DEBUG & $DEBUG_INDEX);
+        foreach my $reparented(@{$element->{'section_childs'}},@{$element->{'node_childs'}})
         {
-            next if ($reparented->{'toplevel'});
-            $reparented->{'element_up'} = $current_element;
+            $reparented->{'sectionup'} = $current_element;
 	    print STDERR "   reparented: $reparented->{'texi'}\n"
                     if ($T2H_DEBUG & $DEBUG_INDEX);
         }
@@ -5166,10 +5075,9 @@
         my $up = get_top($element);
         next unless (defined($up));
         $element_chapter_index = $up if ($element_index and ($element_index eq $element));
-	#print STDERR "$element->{'texi'} (top: $element->{'top'}, toplevel: $element->{'toplevel'}, $element->{'element_up'}, $element->{'element_up'}->{'texi'}): up: $up, $up->{'texi'}\n";
         # fastforward is the next element on same level than the upper parent
         # element
-        $element->{'fastforward'} = $up->{'element_next'} if (exists ($up->{'element_next'}));
+        $element->{'fastforward'} = $up->{'sectionnext'} if (exists ($up->{'sectionnext'}));
         # if the element isn't at the highest level, fastback is the 
         # highest parent element
         if ($up and ($up ne $element))
@@ -5183,6 +5091,21 @@
             $element->{'fastforward'}->{'fastback'} = $element if ($element->{'fastforward'});
         }
     }
+    
+    # set 'reference_element' which is used each time there is a cross ref
+    # to that node.
+    # It is the section associated with the node except if USE_NODES
+    unless ($Texi2HTML::Config::USE_NODES)
+    {
+        foreach my $node(@nodes_list)
+        {
+            if ($node->{'with_section'})
+            {
+                $node->{'reference_element'} = $node->{'with_section'};
+            }
+        }
+    }
+
     my $index_nr = 0;
     # convert directions in direction with first letter in all caps, to be
     # consistent with the convention used in the .init file.
@@ -5190,9 +5113,7 @@
     foreach my $element (@elements_list)
     {
         $element->{'this'} = $element;
-        foreach my $direction (('Up', 'Forward', 'Back', 'Next', 
-            'Prev', 'FastForward', 'FastBack', 'This', 'NodeUp', 
-            'NodePrev', 'NodeNext', 'Following' ))
+        foreach my $direction (@element_directions)
         {
             my $direction_no_caps = $direction;
             $direction_no_caps =~ tr/A-Z/a-z/;
@@ -5204,110 +5125,84 @@
             $index_nr++;
         }
     }
-    my $node_nr = 1;
-    foreach my $node (@nodes_list)
-    {
-        $node->{'id'} = 'NOD' . $node_nr;
-        $node_nr++;
-        # debug check
-        print STDERR "Bug: level defined for node `$node->{'texi'}'\n" if (defined($node->{'level'}) and !$node->{'element_added'});
-    }
 
-    # Find cross manual links as explained on the texinfo mailing list
-    cross_manual_links(\%nodes, \%cross_reference_nodes);
-    
+    print STDERR "# find float id\n" 
+       if ($T2H_DEBUG & $DEBUG_ELEMENTS);
     foreach my $float (@floats)
     {
-         $float->{'id'} = cross_manual_line (normalise_node($float->{'texi'}));
-         $float->{'style_id'} = cross_manual_line (normalise_space($float->{'style_texi'}));
-         my $float_style = { };
-         if (exists($floats{$float->{'style_id'}}))
-         {
-              $float_style = $floats{$float->{'style_id'}};
-         }
-         else
-         {
-              $floats{$float->{'style_id'}} = $float_style;
-         }
-         push @{$float_style->{'floats'}}, $float;
-         $float->{'absolute_nr'} = scalar(@{$float_style->{'floats'}});
-         my $up = get_top($float->{'element'});
-         if (!defined($float_style->{'current_chapter'}) or ($up->{'texi'} ne $float_style->{'current_chapter'}))
-         {
-              $float_style->{'current_chapter'} = $up->{'texi'};
-              $float_style->{'nr_in_chapter'} = 1;
-         }
-         else
-         {
-              $float_style->{'nr_in_chapter'}++;
-         }
-         if ($up->{'number'} ne '')
-         {
-              $float->{'chapter_nr'} = $up->{'number'};
-              $float->{'nr'} = $float->{'chapter_nr'} . $float_style->{'nr_in_chapter'};
-         }
-         else
-         {
-              $float->{'nr'} = $float->{'absolute_nr'};
-         }
-    }
-    
-    if ($Texi2HTML::Config::NEW_CROSSREF_STYLE)
-    { # FIXME allready done for floats?
-        foreach my $key (keys(%nodes))
+        $float->{'style_id'} = cross_manual_line(normalise_space($float->{'style_texi'}));
+        my $float_style = { };
+        if (exists($floats{$float->{'style_id'}}))
         {
-            my $node = $nodes{$key};
-            next if ($node->{'external_node'} or $node->{'index_page'});
-            $node->{'id'} = node_to_id($node->{'cross_manual_target'});
+            $float_style = $floats{$float->{'style_id'}};
         }
-    }
-
-    # Find node file names
-    if ($Texi2HTML::Config::NODE_FILES)
-    {
-        my $top;
-        if ($node_top)
+        else
         {
-            $top = $node_top;
+            $floats{$float->{'style_id'}} = $float_style;
         }
-        elsif ($element_top->{'node_ref'})
+        push @{$float_style->{'floats'}}, $float;
+        $float->{'absolute_nr'} = scalar(@{$float_style->{'floats'}});
+        my $up = get_top($float->{'element'});
+        if (defined($up) and (!defined($float_style->{'current_chapter'}) or ($up->{'texi'} ne $float_style->{'current_chapter'})))
         {
-            $top = $element_top->{'node_ref'};
+            $float_style->{'current_chapter'} = $up->{'texi'};
+            $float_style->{'nr_in_chapter'} = 1;
         }
         else
         {
-            $top = $node_first;
+            $float_style->{'nr_in_chapter'}++;
+        }
+        if (defined($up) and $up->{'number'} ne '')
+        {
+            $float->{'chapter_nr'} = $up->{'number'};
+            $float->{'nr'} = $float->{'chapter_nr'} . $float_style->{'nr_in_chapter'};
         }
-        if ($top)
+        else
         {
-            my $file = "$Texi2HTML::Config::TOP_NODE_FILE.$Texi2HTML::Config::NODE_FILE_EXTENSION";
-            $top->{'file'} = $file if ($Texi2HTML::Config::SPLIT eq 'node');
-            $top->{'node_file'} = $file;
+            $float->{'nr'} = $float->{'absolute_nr'};
         }
+    }
+    
+    if ($Texi2HTML::Config::NEW_CROSSREF_STYLE)
+    { 
         foreach my $key (keys(%nodes))
         {
             my $node = $nodes{$key};
-            my ($file, $node_file);
-            ($file, $node_file) = &$Texi2HTML::Config::node_file_name ($node);
-            $node->{'file'} = $file if (defined($file));
-            $node->{'node_file'} = $node_file if (defined($node_file));
-#            next if ($node->{'external_node'} or $node->{'index_page'});
-#            if (defined($Texi2HTML::Config::node_file_name))
-#            {
-#                 ($node->{'file'}, $node->{'node_file'}) =
-#                      &$Texi2HTML::Config::node_file_name ($node);
-#            }
-#            else
-#            {
-#                 next if (defined($node->{'file'}));
-#                 my $name = remove_texi($node->{'texi'});
-#                 $name =~ s/[^\w\.\-]/-/g;
-#                 my $file = "${name}.$Texi2HTML::Config::NODE_FILE_EXTENSION";
-#                 $node->{'file'} = $file if (($Texi2HTML::Config::SPLIT eq 'node') and ($Texi2HTML::Config::USE_NODES or $node->{'with_section'}));
-#                 $node->{'node_file'} = $file;
-#            }
+            next if ($node->{'external_node'} or $node->{'index_page'});
+            $node->{'id'} = node_to_id($node->{'cross_manual_target'});
         }
     }
+
+    # Find node file names and file names for nodes considered as elements
+    my $node_as_top;
+    if ($node_top)
+    {
+        $node_as_top = $node_top;
+    }
+    elsif ($element_top->{'node_ref'})
+    {
+        $node_as_top = $element_top->{'node_ref'};
+    }
+    else
+    {
+        $node_as_top = $node_first;
+    }
+    if ($node_as_top)
+    {
+        my $node_file;
+        $node_file = &$Texi2HTML::Config::node_file_name($node_as_top,'top');
+        $node_as_top->{'node_file'} = $node_file if (defined($node_file));
+    }
+    foreach my $key (keys(%nodes))
+    {
+        my $node = $nodes{$key};
+        next if (defined($node_as_top) and ($node eq $node_as_top));
+        my $node_file = &$Texi2HTML::Config::node_file_name($node,'');
+        $node->{'node_file'} = $node_file if (defined($node_file));
+    }
+    
+    print STDERR "# split and set files\n" 
+       if ($T2H_DEBUG & $DEBUG_ELEMENTS);
     # find document nr and document file for sections and nodes. 
     # Split according to Texi2HTML::Config::SPLIT.
     # find file and id for placed elements (anchors, index entries, headings)
@@ -5319,70 +5214,56 @@
         {
             $cut_section = 2 if ($toplevel <= 2);
         }
-        my $top_doc_nr;
-        my $prev_nr;
+        my $previous_file;
         foreach my $element (@elements_list)
-        {
-            print STDERR "# Splitting ($Texi2HTML::Config::SPLIT) $element->{'texi'}\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
-            $doc_nr++ if (
+        { 
+            print STDERR "# Splitting ($Texi2HTML::Config::SPLIT:$cut_section) $element->{'texi'}\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+            my $new_file = 0;
+            if (
                ($Texi2HTML::Config::SPLIT eq 'node') or
                (
-                 (!$element->{'node'} or $element->{'element_added'}) and ($element->{'level'} <= $cut_section)
+                 defined($element->{'level'}) and ($element->{'level'} <= $cut_section)
                )
-              );
+              )
+            {
+                $new_file = 1;
+                $doc_nr++;
+            }
             $doc_nr = 0 if ($doc_nr < 0); # happens if first elements are nodes
             $element->{'doc_nr'} = $doc_nr;
-            if ($Texi2HTML::Config::NODE_FILES and ($Texi2HTML::Config::SPLIT eq 'node'))
+            my $is_top = '';
+            $element->{'file'} = "${docu_name}_$doc_nr"
+                   . ($docu_ext ? ".$docu_ext" : "");
+            if ($element->{'top'} or (defined($element->{'node_ref'}) and $element->{'node_ref'} eq $element_top))
+            { # the top elements
+                $is_top = "top";
+                $element->{'file'} = $docu_top;
+            }
+            elsif ($Texi2HTML::Config::NODE_FILES)
             {
-                my $node = get_node($element);
-                if ($node and $node->{'file'})
+                if ($new_file)
                 {
-                    $element->{'file'} = $node->{'file'};
+                    my $node = get_node($element) unless(exists($element->{'node_ref'})
+                        and $element->{'node_ref'}->{'element_added'});
+                    if ($node and defined($node->{'node_file'}))
+                    {
+                        $element->{'file'} = $node->{'node_file'};
+                    }
+                    $previous_file = $element->{'file'};
                 }
-                unless ($element->{'file'})
+                elsif($previous_file)
                 {
-                    $element->{'file'} = "${docu_name}_$doc_nr.$docu_ext";
-                    $element->{'doc_nr'} = $doc_nr;
+                    $element->{'file'} = $previous_file;
                 }
             }
-            else
+            if (defined($Texi2HTML::Config::element_file_name))
             {
-                $element->{'file'} = "${docu_name}_$doc_nr.$docu_ext";
-                my $is_top = 0;
-                if (defined($top_doc_nr))
-                {
-                    if ($doc_nr eq $top_doc_nr)
-                    {
-                        $element->{'file'} = "$docu_top";
-                        if ($element->{'level'} # this is an element below @top.
-                                               # It starts a new file.
-                          or ($element->{'node'} and ($element ne $node_top) and (!defined($element->{'section_ref'}) or $element->{'section_ref'} ne $element_top))
-                          )# this is a node not associated with top
-                        {
-                            $doc_nr++;
-                            $element->{'doc_nr'} = $doc_nr;
-                            $element->{'file'} = "${docu_name}_$doc_nr.$docu_ext";
-                        }
-                    }
-                }
-                elsif ($element eq $element_top or (defined($element->{'section_ref'}) and $element->{'section_ref'} eq $element_top) or (defined($element->{'node_ref'}) and !$element->{'node_ref'}->{'element_added'} and $element->{'node_ref'} eq $element_top))
-                { # the top element
-                    $is_top = 1;
-                    $element->{'file'} = "$docu_top";
-                    # if there is a previous element, we force it to be in 
-                    # another file than top
-                    $doc_nr++ if (defined($prev_nr) and $doc_nr == $prev_nr);
-                    $top_doc_nr = $doc_nr;
-                    $element->{'doc_nr'} = $doc_nr;
-                }
-                if (defined($Texi2HTML::Config::element_file_name))
-                {
-                     $element->{'file'} = 
-                         &$Texi2HTML::Config::element_file_name ($element, $is_top, $docu_name);
-                }
+                my $filename = 
+                    &$Texi2HTML::Config::element_file_name ($element, $is_top, $docu_name);
+                $element->{'file'} = $filename if (defined($filename));
             }
+            print STDERR "# add_file $element->{'file'} for $element->{'texi'}\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
             add_file($element->{'file'});
-            $prev_nr = $doc_nr;
             foreach my $place(@{$element->{'place'}})
             {
                 $place->{'file'} = $element->{'file'};
@@ -5396,30 +5277,24 @@
                     $node->{'file'} = $element->{'file'};
                 }
             }
-            elsif ($element->{'node_ref'} and !$element->{'node_ref'}->{'element_added'})
-            {
-                $element->{'node_ref'}->{'doc_nr'} = $element->{'doc_nr'} ;
-                $element->{'node_ref'}->{'file'} = $element->{'file'};
-            }
         }
     }
     else
-    {
+    { # not split
         add_file($docu_doc);
         foreach my $element(@elements_list)
         {
-            #die "$ERROR monolithic file and a node have the same file name $docu_doc\n" if ($Texi2HTML::Config::NODE_FILES and $files{$docu_doc});
-            $element->{'file'} =  "$docu_doc";
+            $element->{'file'} = $docu_doc;
             $element->{'doc_nr'} = 0;
             foreach my $place(@{$element->{'place'}})
             {
-                $place->{'file'} = "$element->{'file'}";
+                $place->{'file'} = $element->{'file'};
                 $place->{'id'} = $element->{'id'} unless defined($place->{'id'});
             }
         }
         foreach my $node(@nodes_list)
         {
-            $node->{'file'} =  "$docu_doc";
+            $node->{'file'} = $docu_doc;
             $node->{'doc_nr'} = 0;
         }
     }
@@ -5429,16 +5304,40 @@
         $place->{'file'} = $footnote_element->{'file'};
         $place->{'id'} = $footnote_element->{'id'} unless defined($place->{'id'});
     }
+    # if setcontentsaftertitlepage is set, the contents should be associated
+    # with the titlepage. That's wat is done there.
+    push @$region_place, $content_element{'contents'} 
+      if ($Texi2HTML::Config::DO_CONTENTS and $Texi2HTML::THISDOC{'setcontentsaftertitlepage'});
+    push @$region_place, $content_element{'shortcontents'} 
+      if ($Texi2HTML::Config::DO_SCONTENTS and $Texi2HTML::THISDOC{'setshortcontentsaftertitlepage'});
+    # correct the id and file for the things placed in regions (copying...)
+    foreach my $place(@$region_place)
+    {
+#print STDERR "entry $place->{'entry'} texi $place->{'texi'}\n";
+        $place->{'file'} = $element_top->{'file'};
+        $place->{'id'} = $element_top->{'id'} unless defined($place->{'id'});
+        $place->{'element'} =  $element_top if (exists($place->{'element'}));
+    }
+    foreach my $content_type(keys(%content_element))
+    {
+        if (!defined($content_element{$content_type}->{'file'}))
+        {
+            print STDERR "# No content $content_type\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+            $content_element{$content_type} = undef;
+        }
+    }
+
+    ########################### debug prints
     foreach my $file (keys(%files))
     {
         last unless ($T2H_DEBUG & $DEBUG_ELEMENTS);
-        print STDERR "$file: $files{$file}->{'counter'}\n";
+        print STDERR "$file: counter $files{$file}->{'counter'}\n";
     }
     foreach my $element ((@elements_list, $footnote_element))
     {
         last unless ($T2H_DEBUG & $DEBUG_ELEMENTS);
-        my $is_toplevel = 'not top';
-        $is_toplevel = 'top' if ($element->{'toplevel'});
+        my $is_toplevel = 'not toplevel';
+        $is_toplevel = 'toplevel' if ($element->{'toplevel'});
         print STDERR "$element ";
         if ($element->{'index_page'})
         {
@@ -5446,9 +5345,7 @@
         }
         elsif ($element->{'node'})
         {
-            my $added = '';
-            $added = 'added, ' if ($element->{'element_added'});
-            print STDERR "node($element->{'id'}, toc_level $element->{'toc_level'}, $is_toplevel, ${added}doc_nr $element->{'doc_nr'}($element->{'file'})) $element->{'texi'}:\n";
+            print STDERR "node($element->{'id'}, toc_level $element->{'toc_level'}, $is_toplevel, doc_nr $element->{'doc_nr'}($element->{'file'})) $element->{'texi'}:\n";
             print STDERR "  section_ref: $element->{'section_ref'}->{'texi'}\n" if (defined($element->{'section_ref'}));
         }
         elsif ($element->{'footnote'})
@@ -5477,7 +5374,7 @@
         print STDERR "  fb: $element->{'fastback'}->{'texi'}\n" if (defined($element->{'fastback'}));
         print STDERR "  b: $element->{'back'}->{'texi'}\n" if (defined($element->{'back'}));
         print STDERR "  p: $element->{'prev'}->{'texi'}\n" if (defined($element->{'prev'}));
-        print STDERR "  n: $element->{'next'}->{'texi'}\n" if (defined($element->{'next'}));
+        print STDERR "  n: $element->{'sectionnext'}->{'texi'}\n" if (defined($element->{'sectionnext'}));
         print STDERR "  n_u: $element->{'nodeup'}->{'texi'}\n" if (defined($element->{'nodeup'}));
         print STDERR "  f: $element->{'forward'}->{'texi'}\n" if (defined($element->{'forward'}));
         print STDERR "  follow: $element->{'following'}->{'texi'}\n" if (defined($element->{'following'}));
@@ -5485,8 +5382,6 @@
 	print STDERR "  m_n: $element->{'menu_next'}->{'texi'}\n" if (defined($element->{'menu_next'}));
 	print STDERR "  m_u: $element->{'menu_up'}->{'texi'}\n" if (defined($element->{'menu_up'}));
 	print STDERR "  m_ch: $element->{'menu_child'}->{'texi'}\n" if (defined($element->{'menu_child'}));
-	print STDERR "  u_e: $element->{'element_up'}->{'texi'}\n" if (defined($element->{'element_up'}));
-	print STDERR "  n_e: $element->{'element_next'}->{'texi'}\n" if (defined($element->{'element_next'}));
         print STDERR "  ff: $element->{'fastforward'}->{'texi'}\n" if (defined($element->{'fastforward'}));
         if (defined($element->{'menu_up_hash'}))
         {
@@ -5511,7 +5406,7 @@
         print STDERR "  places: $element->{'place'}\n";
         foreach my $place(@{$element->{'place'}})
         {
-            if (!$place->{'entry'} and !$place->{'float'} and !$place->{'texi'})
+            if (!$place->{'entry'} and !$place->{'float'} and !$place->{'texi'} and !$place->{'contents'} and !$place->{'shortcontents'})
             {
                  print STDERR "BUG: unknown placed stuff ========\n";
                  foreach my $key (keys(%$place))
@@ -5539,6 +5434,14 @@
                     print STDERR "    float($place): NO LABEL\n";
                 }
             }
+            elsif ($place->{'contents'})
+            {
+                print STDERR "    contents\n";
+            }
+            elsif ($place->{'shortcontents'})
+            {
+                print STDERR "    shortcontents\n";
+            }
             else
             {
                 print STDERR "    heading: $place->{'texi'}\n";
@@ -5558,6 +5461,7 @@
             }
         }
     }
+    ########################### end debug prints
 }
 
 sub add_file($)
@@ -5571,7 +5475,9 @@
     {
          $files{$file} = { 
            #'type' => 'section', 
-           'counter' => 1
+           'counter' => 1,
+           'relative_foot_num' => 1,
+           'foot_lines' => []
          };
     }
 }
@@ -5583,13 +5489,12 @@
    my $up = $element;
    while (!$up->{'toplevel'} and !$up->{'top'})
    {
-       $up = $up->{'element_up'};
+       $up = $up->{'sectionup'};
        if (!defined($up))
        {
            # If there is no section, it is normal not to have toplevel element,
            # and it is also the case if there is a low level element before
            # a top level element
-           print STDERR "$WARN no toplevel for $element->{'texi'} (could be normal)\n" if (@sections_list);
            return undef;
        }
    }
@@ -5601,41 +5506,52 @@
     my $element = shift;
     return undef if (!defined($element));
     return $element if ($element->{'node'});
-    return $element->{'node_ref'} if ($element->{'node_ref'} and !$element->{'node_ref'}->{'element_added'});
+    return $element->{'node_ref'} if ($element->{'node_ref'});
     return $element;
 }
 # get the html names from the texi for all elements
 sub do_names()
 {
+    print STDERR "# Doing ". scalar(keys(%nodes)) . " nodes, ".
+        scalar(keys(%sections)) . " sections in ". $#elements_list . 
+        " elements\n" if ($T2H_DEBUG);
     # for nodes and anchors we haven't any state defined
     # This seems right, however, as we don't want @refs or @footnotes
     # or @anchors within nodes, section commands or anchors.
-    foreach my $node (%nodes)
+    foreach my $node (keys(%nodes))
     {
         next if ($nodes{$node}->{'index_page'}); # some nodes are index pages.
-        $nodes{$node}->{'text'} = substitute_line ($nodes{$node}->{'texi'});
-        $nodes{$node}->{'name'} = $nodes{$node}->{'text'};
-        $nodes{$node}->{'no_texi'} = &$Texi2HTML::Config::protect_text(remove_texi($nodes{$node}->{'texi'}));
-        $nodes{$node}->{'unformatted'} = unformatted_text (undef, $nodes{$node}->{'texi'});
+        my $texi = &$Texi2HTML::Config::heading_texi($nodes{$node}->{'tag'}, 
+           $nodes{$node}->{'texi'}, undef);
+        $nodes{$node}->{'text'} = substitute_line ($texi);
+        $nodes{$node}->{'text_nonumber'} = $nodes{$node}->{'text'};
+        # backward compatibility
+        $nodes{$node}->{'name'} = $nodes{$node}->{'text_nonumber'};
+        $nodes{$node}->{'no_texi'} = remove_texi($texi);
+        $nodes{$node}->{'simple_format'} = simple_format(undef, $texi);
+        $nodes{$node}->{'heading_texi'} = $texi;
         # FIXME : what to do if $nodes{$node}->{'external_node'} and
         # $nodes{$node}->{'seen'}
     }
     foreach my $number (keys(%sections))
     {
         my $section = $sections{$number};
-        $section->{'name'} = substitute_line ($section->{'texi'});
-        $section->{'text'} = $section->{'number'} . " " . $section->{'name'};
-        $section->{'text'} =~ s/^\s*//;
-        $section->{'no_texi'} = &$Texi2HTML::Config::protect_text($section->{'number'} . " " .remove_texi($section->{'texi'}));
-        $section->{'no_texi'} =~ s/^\s*//;
-        $section->{'unformatted'} = &$Texi2HTML::Config::protect_text($section->{'number'}) . " " .unformatted_text(undef,$section->{'texi'});
-        $section->{'unformatted'} =~ s/^\s*//;
+        #$section->{'name'} = substitute_line($section->{'texi'});
+        my $texi = &$Texi2HTML::Config::heading_texi($section->{'tag'}, $section->{'texi'}, $section->{'number'});
+        $section->{'text'} = substitute_line($texi);
+        $section->{'text_nonumber'} = substitute_line($section->{'texi'});
+        # backward compatibility
+        $section->{'name'} = $section->{'text_nonumber'};
+        $section->{'no_texi'} = remove_texi($texi);
+        $section->{'simple_format'} = simple_format(undef,$texi);
+        $section->{'heading_texi'} = $texi;
     }
     my $tocnr = 1;
     foreach my $element (@elements_list)
     {
         if (!$element->{'top'} and !$element->{'index_page'})
-        {
+        { # for link back to table of contents
+          # FIXME do it for top too?
             $element->{'tocid'} = 'TOC' . $tocnr;
             $tocnr++;
         }
@@ -5643,20 +5559,20 @@
         if ($element->{'index_page'})
         {
             my $page = $element->{'page'};
-            my $sec_name = $element->{'element_ref'}->{'text'};
-            $element->{'text'} = ($page->{First} ne $page->{Last} ?
-                "$sec_name: $page->{First} -- $page->{Last}" :
-                "$sec_name: $page->{First}");
-            $sec_name = $element->{'element_ref'}->{'no_texi'};
-            $element->{'no_texi'} = &$Texi2HTML::Config::protect_text($page->{First} ne $page->{Last} ?
-                "$sec_name: $page->{First} -- $page->{Last}" :
-                "$sec_name: $page->{First}");
-            $sec_name = $element->{'element_ref'}->{'unformatted'};
-            $element->{'unformatted'} = $page->{First} ne $page->{Last} ?
-                "$sec_name: " . &$Texi2HTML::Config::protect_text("$page->{First} -- $page->{Last}") :
-                "$sec_name: " . &$Texi2HTML::Config::protect_text("$page->{First}");
+            my $original_element = $element->{'original_index_element'};
+            my $texi = &$Texi2HTML::Config::index_element_heading_texi(
+                 $original_element->{'heading_texi'}, 
+                 $original_element->{'tag'}, 
+                 $original_element->{'texi'},
+                 $original_element->{'number'},
+                 $page->{'first_letter'}, $page->{'last_letter'});
+            $element->{'heading_texi'} = $texi;
+            $element->{'text'} = substitute_line($texi);
+            $element->{'no_texi'} = remove_texi($texi);
+            $element->{'simple_format'} = simple_format(undef,$texi);
         }
     }
+    print STDERR "# Names done\n" if ($T2H_DEBUG);
 }
 
 @{$Texi2HTML::TOC_LINES} = ();            # table of contents
@@ -5670,9 +5586,8 @@
 #                                                                              #
 #---############################################################################
 
-# FIXME what to do with index entries appearing in @copying 
-# @documentdescription and @titlepage
-sub enter_index_entry($$$$$$)
+# called during pass_structure
+sub enter_index_entry($$$$$$$)
 {
     my $prefix = shift;
     my $line_nr = shift;
@@ -5680,11 +5595,11 @@
     my $place = shift;
     my $element = shift;
     my $use_section_id = shift;
-    unless (exists ($index_properties->{$prefix}))
+    my $command = shift;
+    unless ($index_prefix_to_name{$prefix})
     {
         echo_error ("Undefined index command: ${prefix}index", $line_nr);
-        #warn "$ERROR Undefined index command: ${prefix}index\n";
-        return 0;
+        $key = '';
     }
     if (!exists($element->{'tag'}) and !$element->{'footnote'})
     {
@@ -5695,72 +5610,40 @@
     my $entry = $key;
     # The $key is mostly usefull for alphabetical sorting
     $key = remove_texi($key);
-    return if ($key =~ /^\s*$/);
-    while (exists $index->{$prefix}->{$key})
-    {
-        $key .= ' ';
-    }
     my $id = '';
-    unless ($use_section_id)
+    # don't add a specific index target if after a section or the index
+    # entry is in @copying or the like
+    unless ($use_section_id or ($place eq $region_place))
     {
         $id = 'IDX' . ++$idx_num;
     }
-    $index->{$prefix}->{$key}->{'entry'} = $entry;
-    $index->{$prefix}->{$key}->{'element'} = $element;
-    $index->{$prefix}->{$key}->{'label'} = $id;
-    $index->{$prefix}->{$key}->{'prefix'} = $prefix;
-    push @$place, $index->{$prefix}->{$key};
-    print STDERR "# enter ${prefix}index '$key' with id $id ($index->{$prefix}->{$key})\n"
+    my $index_entry = {
+           'entry'    => $entry,
+           'element'  => $element,
+           'prefix'   => $prefix,
+           'label'    => $id,
+           'command'  => $command
+    };
+            
+    print STDERR "# enter \@$command ${prefix}index '$key' with id $id ($index_entry)\n"
         if ($T2H_DEBUG & $DEBUG_INDEX);
-    push @index_labels, $index->{$prefix}->{$key};
-    return $index->{$prefix}->{$key};
-}
-
-# returns prefix of @?index command associated with 2 letters prefix name
-# for example returns 'c' for 'cp'
-sub index_name2prefix
-{
-    my $name = shift;
-    my $prefix;
-
-    for $prefix (keys %$index_properties)
-    {
-        return $prefix if ($index_properties->{$prefix}->{'name'} eq $name);
-    }
-    return undef;
-}
-
-# get all the entries (for all the prefixes) in the $normal and $code 
-# references, formatted with @code{code } if it is a $code entry.
-sub get_index_entries($$)
-{
-    my $normal = shift;
-    my $code = shift;
-    my $entries = {};
-    foreach my $prefix (keys %$normal)
+    if ($key =~ /^\s*$/)
     {
-        for my $key (keys %{$index->{$prefix}})
-        {
-            $entries->{$key} = $index->{$prefix}->{$key};
-        }
+        echo_warn("Empty index entry for \@$command",$line_nr);
+        # don't add the index entry to the list of index entries used for index
+        # entry formatting,if the index entry appears in a region like copying 
+        push @index_labels, $index_entry unless ($place eq $region_place);
+        return;
     }
-
-    if (defined($code))
+    while (exists $index->{$prefix}->{$key})
     {
-        foreach my $prefix (keys %$code)
-        {
-            unless (exists $normal->{$prefix})
-            {
-                foreach my $key (keys %{$index->{$prefix}})
-                {
-                    $entries->{$key} = $index->{$prefix}->{$key};
-                    # use @code for code style index entry
-                    $entries->{$key}->{'entry'} = "\@code{$entries->{$key}->{entry}}";
-                }
-            }
-        }
+        $key .= ' ';
     }
-    return $entries;
+    $index->{$prefix}->{$key} = $index_entry;
+    push @$place, $index_entry;
+    # don't add the index entry to the list of index entries used for index
+    # entry formatting,if the index entry appears in a region like copying 
+    push @index_labels, $index_entry unless ($place eq $region_place);
 }
 
 # sort according to cmp if both $a and $b are alphabetical or non alphabetical, 
@@ -5790,100 +5673,131 @@
 
 # returns an array of index entries pages splitted by letters
 # each page has the following members:
-# {First}            first letter on that page
-# {Last}             last letter on that page
-# {Letters}          ref on an array with all the letters for that page
-# {EntriesByLetter}  ref on a hash. Each key is a letter, with value
-#                    a ref on arrays of index entries begining with this letter
+# 'first_letter'       first letter on that page
+# 'last_letter'        last letter on that page
+# 'letters'            ref on an array with all the letters for that page
+# 'entries_by_letter'  ref on a hash. Each key is a letter, with value a ref 
+#                      on arrays of index entries beginning with this letter
 sub get_index_pages($)
 {
     my $entries = shift;
-    my (@Letters);
-    my ($EntriesByLetter, $Pages, $page) = ({}, [], {});
+    my (@letters);
+    my ($entries_by_letter, $pages, $page) = ({}, [], {});
     my @keys = sort by_alpha keys %$entries;
 
     # each index entry is placed according to its first letter in
-    # EntriesByLetter
+    # entries_by_letter
     for my $key (@keys)
     {
-        push @{$EntriesByLetter->{uc(substr($key,0, 1))}} , $entries->{$key};
+        push @{$entries_by_letter->{uc(substr($key,0, 1))}} , $entries->{$key};
     }
-    @Letters = sort by_alpha keys %$EntriesByLetter;
+    @letters = sort by_alpha keys %$entries_by_letter;
     $Texi2HTML::Config::SPLIT_INDEX = 0 unless $Texi2HTML::Config::SPLIT;
 
     if ($Texi2HTML::Config::SPLIT_INDEX and $Texi2HTML::Config::SPLIT_INDEX =~ /^\d+$/)
     {
         my $i = 0;
         my ($prev_letter);
-        for my $letter (@Letters)
+        foreach my $letter (@letters)
         {
             if ($i > $Texi2HTML::Config::SPLIT_INDEX)
             {
-                $page->{Last} = $prev_letter;
-                push @$Pages, $page;
+                $page->{'last_letter'} = $prev_letter;
+                push @$pages, $page;
                 $i=0;
             }
 	    if ($i == 0)
 	    {
 		$page = {};
-		$page->{Letters} = [];
-		$page->{EntriesByLetter} = {};
-		$page->{First} = $letter;
+		$page->{'letters'} = [];
+		$page->{'entries_by_letter'} = {};
+		$page->{'first_letter'} = $letter;
 	    }
-            push @{$page->{Letters}}, $letter;
-            $page->{EntriesByLetter}->{$letter} = [@{$EntriesByLetter->{$letter}}];
-            $i += scalar(@{$EntriesByLetter->{$letter}});
+            push @{$page->{'letters'}}, $letter;
+            $page->{'entries_by_letter'}->{$letter} = [@{$entries_by_letter->{$letter}}];
+            $i += scalar(@{$entries_by_letter->{$letter}});
             $prev_letter = $letter;
         }
-        $page->{Last} = $Letters[$#Letters];
-        push @$Pages, $page;
+        $page->{'last_letter'} = $letters[$#letters];
+        push @$pages, $page;
     }
     else
     {
         warn "$WARN Bad Texi2HTML::Config::SPLIT_INDEX: $Texi2HTML::Config::SPLIT_INDEX\n" if ($Texi2HTML::Config::SPLIT_INDEX);
-        $page->{First} = $Letters[0];
-        $page->{Last} = $Letters[$#Letters];
-        $page->{Letters} = \@Letters;
-        $page->{EntriesByLetter} = $EntriesByLetter;
-        push @$Pages, $page;
-        return $Pages;
+        $page->{'first_letter'} = $letters[0];
+        $page->{'last_letter'} = $letters[$#letters];
+        $page->{'letters'} = \@letters;
+        $page->{'entries_by_letter'} = $entries_by_letter;
+        push @$pages, $page;
+        return $pages;
     }
-    return $Pages;
+    return $pages;
 }
 
+# return the page and the entries. Cache the result in %indices.
 sub get_index($;$)
 {
-    my $name = shift;
+    my $index_name = shift;
     my $line_nr = shift;
-    return (@{$indices{$name}}) if ($indices{$name});
-    my $prefix = index_name2prefix($name);
-    unless ($prefix)
+
+    return (@{$indices{$index_name}}) if ($indices{$index_name});
+
+    unless (exists($index_names{$index_name}))
     {
-        echo_error ("Bad index name: $name", $line_nr);
-        #warn "$ERROR Bad index name: $name\n";
+        echo_error ("Bad index name: $index_name", $line_nr);
         return;
     }
-    if ($index_properties->{$prefix}->{code})
+    # add the index name itself to the index names searched for index
+    # prefixes. Only those found associated by synindex or syncodeindex are 
+    # allready there (unless this code has allready been called).
+    if ($index_names{$index_name}->{'code'})
     {
-        $index_properties->{$prefix}->{from_code}->{$prefix} = 1;
+        $index_names{$index_name}->{'associated_indices_code'}->{$index_name} = 1;
     }
     else
     {
-        $index_properties->{$prefix}->{from}->{$prefix}= 1;
+        $index_names{$index_name}->{'associated_indices'}->{$index_name} = 1;
+    }
+
+    # find all the index names associated with the prefixes and then 
+    # all the entries associated with each prefix
+    my $entries = {};
+    foreach my $associated_indice(keys %{$index_names{$index_name}->{'associated_indices'}})
+    {
+        foreach my $prefix(@{$index_names{$associated_indice}->{'prefix'}})
+        {
+            foreach my $key (keys %{$index->{$prefix}})
+            {
+                $entries->{$key} = $index->{$prefix}->{$key};
+            }
+        }
+    }
+
+    foreach my $associated_indice (keys %{$index_names{$index_name}->{'associated_indices_code'}})
+    {
+        unless (exists ($index_names{$index_name}->{'associated_indices'}->{$associated_indice}))
+        {
+            foreach my $prefix (@{$index_names{$associated_indice}->{'prefix'}})
+            {
+                foreach my $key (keys (%{$index->{$prefix}}))
+                {
+                    $entries->{$key} = $index->{$prefix}->{$key};
+                    # use @code for code style index entry
+                    $entries->{$key}->{'entry'} = "\@code{$entries->{$key}->{entry}}";
+                }
+            }
+        }
     }
 
-    my $Entries = get_index_entries($index_properties->{$prefix}->{from},
-                                  $index_properties->{$prefix}->{from_code});
-    return unless %$Entries;
-    my $Pages = get_index_pages($Entries);
-    $indices{$name} = [ $Pages, $Entries ];
-    return ($Pages, $Entries);
+    return unless %$entries;
+    my $pages = get_index_pages($entries);
+    $indices{$index_name} = [ $pages, $entries ];
+    return ($pages, $entries);
 }
 
 my @foot_lines = ();           # footnotes
 my $copying_comment = '';      # comment constructed from text between
                                # @copying and @end copying with licence
-my $from_encoding;             # texinfo file encoding
 my $to_encoding;               # out file encoding
 my %acronyms_like = ();        # acronyms or similar commands associated texts
                                # the key are the commands, the values are
@@ -5898,11 +5812,11 @@
     $state->{'keep_texi'} = 0 unless exists($state->{'keep_texi'});
     $state->{'keep_nr'} = 0 unless exists($state->{'keep_nr'});
     $state->{'detailmenu'} = 0 unless exists($state->{'detailmenu'});     # number of opened detailed menus      
-    $state->{'format_stack'} = [ {'format' => "noformat"} ] unless exists($state->{'format_stack'});
+    $state->{'table_list_stack'} = [ {'format' => "noformat"} ] unless exists($state->{'table_list_stack'});
     $state->{'paragraph_style'} = [ '' ] unless exists($state->{'paragraph_style'}); 
     $state->{'preformatted_stack'} = [ '' ] unless exists($state->{'preformatted_stack'}); 
     $state->{'menu'} = 0 unless exists($state->{'menu'}); 
-    $state->{'style_stack'} = [] unless exists($state->{'style_stack'});
+    $state->{'command_stack'} = [] unless exists($state->{'command_stack'});
     $state->{'quotation_stack'} = [] unless exists($state->{'quotation_stack'});
     # if there is no $state->{'element'} the first element is used
     $state->{'element'} = $elements_list[0] unless (exists($state->{'element'}) and !$state->{'element'}->{'before_anything'});
@@ -5911,7 +5825,7 @@
 sub pass_text()
 {
     my %state;
-    initialise_state (\%state);
+    initialise_state(\%state);
     my @stack;
     my $text;
     my $doc_nr;
@@ -5931,7 +5845,6 @@
     # We set titlefont only if the titlefont appeared in the top element
     if (defined($element_top->{'titlefont'}))
     {
-         $element_top->{'has_heading'} = 1;
          $value{'_titlefont'} = $element_top->{'titlefont'};
     }
     
@@ -5968,25 +5881,21 @@
         my $thing_texi = $Texi2HTML::THISDOC{$doc_thing . '_texi'};
         $Texi2HTML::THISDOC{$doc_thing} = substitute_line($thing_texi);
         $Texi2HTML::THISDOC{$doc_thing . '_no_texi'} =
-           &$Texi2HTML::Config::protect_text(remove_texi($thing_texi));
-        $Texi2HTML::THISDOC{$doc_thing . '_unformatted'} =
-           unformatted_text(undef, $thing_texi);
-    }
-#    $Texi2HTML::THISDOC{'shorttitlepage_texi'} = $value{'_shorttitlepage'};
-#    $Texi2HTML::THISDOC{'fulltitle'} = substitute_line($value{'_title'}) || substitute_line($value{'_settitle'}) || substitute_line($value{'_shorttitlepage'}) || substitute_line($value{'_titlefont'});
-#    $Texi2HTML::THISDOC{'title'} = substitute_line($value{'_settitle'}) || $Texi2HTML::THISDOC{'fulltitle'};
-#    $Texi2HTML::THISDOC{'shorttitle'} =  substitute_line($value{'_shorttitle'});
+           remove_texi($thing_texi);
+        $Texi2HTML::THISDOC{$doc_thing . '_simple_format'} =
+           simple_format(undef, $thing_texi);
+    }
 
     # find Top name
     my $element_top_text = '';
     my $top_no_texi = '';
-    my $top_unformatted = '';
+    my $top_simple_format = '';
     my $top_name;
     if ($element_top and $element_top->{'text'} and (!$node_top or ($element_top ne $node_top)))
     {
         $element_top_text = $element_top->{'text'};
         $top_no_texi = $element_top->{'no_texi'};
-        $top_unformatted =  $element_top->{'unformatted'};
+        $top_simple_format =  $element_top->{'simple_format'};
     }
     foreach my $possible_top_name ($Texi2HTML::Config::TOP_HEADING, 
          $element_top_text, $Texi2HTML::THISDOC{'title'},
@@ -6001,7 +5910,7 @@
     foreach my $possible_top_no_texi ($Texi2HTML::Config::TOP_HEADING, 
          $top_no_texi, $Texi2HTML::THISDOC{'title_no_texi'},
          $Texi2HTML::THISDOC{'shorttitle_no_texi'}, 
-         &$I('Top',{},{'remove_texi' => 1, 'no_protection' => 1}))
+         &$I('Top',{},{'remove_texi' => 1}))
     {
          if (defined($possible_top_no_texi) and $possible_top_no_texi ne '')
          {
@@ -6010,14 +5919,14 @@
          }
     }
      
-    foreach my $possible_top_unformatted ($top_unformatted,
-         $Texi2HTML::THISDOC{'title_unformatted'},
-         $Texi2HTML::THISDOC{'shorttitle_unformatted'},
-         &$I('Top',{}, {'unformatted' => 1}))
+    foreach my $possible_top_simple_format ($top_simple_format,
+         $Texi2HTML::THISDOC{'title_simple_format'},
+         $Texi2HTML::THISDOC{'shorttitle_simple_format'},
+         &$I('Top',{}, {'simple_format' => 1}))
     {
-         if (defined($possible_top_unformatted) and $possible_top_unformatted ne '')
+         if (defined($possible_top_simple_format) and $possible_top_simple_format ne '')
          {
-             $top_unformatted = $possible_top_unformatted;
+             $top_simple_format = $possible_top_simple_format;
              last;
          }
     }
@@ -6039,33 +5948,10 @@
         my $thing_texi = $Texi2HTML::THISDOC{$doc_thing . '_texi'};
         $Texi2HTML::THISDOC{$doc_thing} = substitute_line($thing_texi);
         $Texi2HTML::THISDOC{$doc_thing . '_no_texi'} =
-           &$Texi2HTML::Config::protect_text(remove_texi($thing_texi));
-        $Texi2HTML::THISDOC{$doc_thing . '_unformatted'} =
-           unformatted_text(undef, $thing_texi);
-    }
-#    $Texi2HTML::THISDOC{'fulltitle'} = $Texi2HTML::THISDOC{'fulltitle'} || &$I('Untitled Document') ;
-#    $Texi2HTML::THISDOC{'title'} = $Texi2HTML::THISDOC{'settitle'} || $Texi2HTML::THISDOC{'fulltitle'};
-#    $Texi2HTML::THISDOC{'author'} = substitute_line($value{'_author'});
-#    $Texi2HTML::THISDOC{'titlefont'} = substitute_line($value{'_titlefont'});
-#    $Texi2HTML::THISDOC{'subtitle'} = substitute_line($value{'_subtitle'});
-
-#    $Texi2HTML::THISDOC{'title_unformatted'} = unformatted_text(undef, $Texi2HTML::THISDOC{'title_texi'});
-#    $Texi2HTML::THISDOC{'shorttitle_unformatted'} =  unformatted_text(undef, $value{'_shorttitle'});
-#    $Texi2HTML::THISDOC{'title_no_texi'} = &$Texi2HTML::Config::protect_text(remove_texi($value{'_title'})) || &$Texi2HTML::Config::protect_text(remove_texi($value{'_settitle'})) || &$Texi2HTML::Config::protect_text(remove_texi($value{'_shorttitlepage'})) || &$Texi2HTML::Config::protect_text(remove_texi($value{'_titlefont'}));
-#    $Texi2HTML::THISDOC{'shorttitle_no_texi'} =  &$Texi2HTML::Config::protect_text(remove_texi($value{'_shorttitle'}));
-
-#    my $top_no_texi = '';
-#    my $top_unformatted = '';
-#    if ($element_top and $element_top->{'no_texi'}  and (!$node_top or ($element_top ne $node_top)))
-#    {
-#        $top_no_texi = $element_top->{'no_texi'};
-#        $top_unformatted =  $element_top->{'unformatted'};
-#    }
-
-#    $top_no_texi = $Texi2HTML::Config::TOP_HEADING || $top_no_texi || $Texi2HTML::THISDOC{'title_no_texi'} || $Texi2HTML::THISDOC{'shorttitle_no_texi'} || &$I('Top',{}, {'remove_texi' => 1, 'no_protection' => 1});
-#    $top_unformatted = $top_unformatted || $Texi2HTML::THISDOC{'title_unformatted'} || $Texi2HTML::THISDOC{'shorttitle_unformatted'} || &$I('Top',{}, {'unformatted' => 1});
-#    $Texi2HTML::THISDOC{'title_unformatted'} = $Texi2HTML::THISDOC{'title_unformatted'} || &$I('Untitled Document',{},  {'unformatted' => 1});
-#    $Texi2HTML::THISDOC{'title_no_texi'} = $Texi2HTML::THISDOC{'title_no_texi'} || &$I('Untitled Document',{}, {'remove_texi' => 1, 'no_protection' => 1});
+           remove_texi($thing_texi);
+        $Texi2HTML::THISDOC{$doc_thing . '_simple_format'} =
+           simple_format(undef, $thing_texi);
+    }
 
     for my $key (keys %Texi2HTML::THISDOC)
     {
@@ -6077,11 +5963,9 @@
     $Texi2HTML::THISDOC{'program_homepage'} = $T2H_HOMEPAGE;
     $Texi2HTML::THISDOC{'program_authors'} = $T2H_AUTHORS;
     $Texi2HTML::THISDOC{'user'} = $T2H_USER;
+    $Texi2HTML::THISDOC{'user'} = $Texi2HTML::Config::USER if (defined($Texi2HTML::Config::USER));
 #    $Texi2HTML::THISDOC{'documentdescription'} = $documentdescription;
     $Texi2HTML::THISDOC{'copying'} = $copying_comment;
-    $Texi2HTML::THISDOC{'toc_file'} = ''; 
-    $Texi2HTML::THISDOC{'toc_file'} = $docu_toc if ($Texi2HTML::Config::SPLIT); 
-    $Texi2HTML::THISDOC{'file_base_name'} = $docu_name;
     $Texi2HTML::THISDOC{'destination_directory'} = $docu_rdir;
     $Texi2HTML::THISDOC{'authors'} = [] if (!defined($Texi2HTML::THISDOC{'authors'}));
     $Texi2HTML::THISDOC{'subtitles'} = [] if (!defined($Texi2HTML::THISDOC{'subtitles'}));
@@ -6096,87 +5980,83 @@
             #print STDERR "$element:$i: $Texi2HTML::THISDOC{$element}->[$i]\n";
         }
     }
-    # prepare TOC, OVERVIEW
+    # prepare TOC, OVERVIEW...
+    my ($toc_file, $stoc_file, $foot_file, $about_file);
+    # if not split the references are to the same file
+    $toc_file = $stoc_file = $foot_file = $about_file = '';
     if ($Texi2HTML::Config::SPLIT)
     {
-        $Texi2HTML::HREF{'Contents'} = $docu_toc.'#SEC_Contents' if @{$Texi2HTML::TOC_LINES};
-        $Texi2HTML::HREF{'Overview'} = $docu_stoc.'#SEC_Overview' if @{$Texi2HTML::OVERVIEW};
-        $Texi2HTML::HREF{'Footnotes'} = $docu_foot. '#SEC_Foot';
-        $Texi2HTML::HREF{'About'} = $docu_about . '#SEC_About' unless $one_section;
-    }
-    else
-    {
-        $Texi2HTML::HREF{'Contents'} = '#SEC_Contents' if @{$Texi2HTML::TOC_LINES};
-        $Texi2HTML::HREF{'Overview'} = '#SEC_Overview' if @{$Texi2HTML::OVERVIEW};
-        $Texi2HTML::HREF{'Footnotes'} = '#SEC_Foot';
-        $Texi2HTML::HREF{'About'} = '#SEC_About' unless $one_section;
-    }
-    
-    %Texi2HTML::NAME =
-        (
-         'First',   $element_first->{'text'},
-         'Last',    $element_last->{'text'},
-         'About',    &$I('About This Document'),
-         'Contents', &$I('Table of Contents'),
-         'Overview', &$I('Short Table of Contents'),
-         'Top',      $top_name,
-         'Footnotes', &$I('Footnotes'),
-        );
+        $toc_file = $docu_toc;
+        $stoc_file = $docu_stoc;
+        if ($Texi2HTML::Config::INLINE_CONTENTS)
+        {
+            $toc_file = $content_element{'contents'}->{'file'} if (defined($content_element{'contents'}));
+            $stoc_file = $content_element{'shortcontents'}->{'file'} if (defined($content_element{'shortcontents'}));
+        }
+        $foot_file = $docu_foot;
+        $about_file = $docu_about;
+    }
+    $Texi2HTML::THISDOC{'toc_file'} = $toc_file; 
+    $Texi2HTML::HREF{'Contents'} = $toc_file.'#'.$content_element{'contents'}->{'id'} if @{$Texi2HTML::TOC_LINES};
+    $Texi2HTML::HREF{'Overview'} = $stoc_file.'#'.$content_element{'shortcontents'}->{'id'} if @{$Texi2HTML::OVERVIEW};
+    $Texi2HTML::HREF{'Footnotes'} = $foot_file. '#SEC_Foot';
+    $Texi2HTML::HREF{'About'} = $about_file . '#SEC_About' unless ($one_section or (not $Texi2HTML::Config::SPLIT and not $Texi2HTML::Config::SECTION_NAVIGATION));
+    
+    $Texi2HTML::NAME{'First'} = $element_first->{'text'};
+    $Texi2HTML::NAME{'Last'} = $element_last->{'text'};
+    $Texi2HTML::NAME{'About'} = &$I('About This Document');
+    $Texi2HTML::NAME{'Contents'} = &$I('Table of Contents');
+    $Texi2HTML::NAME{'Overview'} = &$I('Short Table of Contents');
+    $Texi2HTML::NAME{'Top'} = $top_name;
+    $Texi2HTML::NAME{'Footnotes'} = &$I('Footnotes');
     $Texi2HTML::NAME{'Index'} = $element_chapter_index->{'text'} if (defined($element_chapter_index));
     $Texi2HTML::NAME{'Index'} = $Texi2HTML::Config::INDEX_CHAPTER if ($Texi2HTML::Config::INDEX_CHAPTER ne '');
-    
-    %Texi2HTML::NO_TEXI =
-        (
-         'First',   $element_first->{'no_texi'},
-         'Last',    $element_last->{'no_texi'},
-#FIXME this is not really NO_TEXI as there may be some formatting expanded
-# in &$I, using substitute_line
-         'About',    &$I('About This Document', {}, {'remove_texi' => 1, 'no_protection' => 1} ),
-         'Contents', &$I('Table of Contents', {}, {'remove_texi' => 1, 'no_protection' => 1} ),
-         'Overview', &$I('Short Table of Contents', {}, {'remove_texi' => 1, 'no_protection' => 1} ),
-         'Top',      $top_no_texi,
-         'Footnotes', &$I('Footnotes', {}, {'remove_texi' => 1, 'no_protection' => 1} ),
-        );
+
+    $Texi2HTML::NO_TEXI{'First'} = $element_first->{'no_texi'};
+    $Texi2HTML::NO_TEXI{'Last'} = $element_last->{'no_texi'};
+    $Texi2HTML::NO_TEXI{'About'} = &$I('About This Document', {}, {'remove_texi' => 1} );
+    $Texi2HTML::NO_TEXI{'Contents'} = &$I('Table of Contents', {}, {'remove_texi' => 1} );
+    $Texi2HTML::NO_TEXI{'Overview'} = &$I('Short Table of Contents', {}, {'remove_texi' => 1} );
+    $Texi2HTML::NO_TEXI{'Top'} = $top_no_texi;
+    $Texi2HTML::NO_TEXI{'Footnotes'} = &$I('Footnotes', {}, {'remove_texi' => 1} );
     $Texi2HTML::NO_TEXI{'Index'} = $element_chapter_index->{'no_texi'} if (defined($element_chapter_index));
-    %Texi2HTML::UNFORMATTED =
-        (
-         'First',   $element_first->{'unformatted'},
-         'Last',    $element_last->{'unformatted'},
-#FIXME this is not really UNFORMATTED as there may be some formatting expanded
-# in &$I, using substitute_line
-         'About',    &$I('About This Document', {}, {'unformatted' => 1}),
-         'Contents', &$I('Table of Contents',{},  {'unformatted' => 1}),
-         'Overview', &$I('Short Table of Contents', {}, {'unformatted' => 1}),
-         'Top',      $top_unformatted,
-         'Footnotes', &$I('Footnotes', {},{'unformatted' => 1}),
-        );
-    $Texi2HTML::UNFORMATTED{'Index'} = $element_chapter_index->{'unformatted'} if (defined($element_chapter_index));
+
+    $Texi2HTML::SIMPLE_TEXT{'First'} = $element_first->{'simple_format'};
+    $Texi2HTML::SIMPLE_TEXT{'Last'} = $element_last->{'simple_format'};
+    $Texi2HTML::SIMPLE_TEXT{'About'} = &$I('About This Document', {}, {'simple_format' => 1});
+    $Texi2HTML::SIMPLE_TEXT{'Contents'} = &$I('Table of Contents',{},  {'simple_format' => 1});
+    $Texi2HTML::SIMPLE_TEXT{'Overview'} = &$I('Short Table of Contents', {}, {'simple_format' => 1});
+    $Texi2HTML::SIMPLE_TEXT{'Top'} = $top_simple_format;
+    $Texi2HTML::SIMPLE_TEXT{'Footnotes'} = &$I('Footnotes', {},{'simple_format' => 1});
+
+    $Texi2HTML::SIMPLE_TEXT{'Index'} = $element_chapter_index->{'simple_format'} if (defined($element_chapter_index));
+    # must be after toc_body, but before titlepage
+    for my $element_tag ('contents', 'shortcontents')
+    {
+        my $toc_lines = &$Texi2HTML::Config::inline_contents(undef, $element_tag, $content_element{$element_tag});
+        @{$Texi2HTML::THISDOC{'inline_contents'}->{$element_tag}} = @$toc_lines if (defined($toc_lines));
+    }
     $Texi2HTML::TITLEPAGE = '';
     $Texi2HTML::TITLEPAGE = substitute_text({}, @{$region_lines{'titlepage'}})
         if (@{$region_lines{'titlepage'}});
     &$Texi2HTML::Config::titlepage();
 
-    $to_encoding = &$Texi2HTML::Config::init_out();
+    &$Texi2HTML::Config::init_out();
+    $to_encoding = $Texi2HTML::Config::OUT_ENCODING;
 
     ############################################################################
     # print frame and frame toc file
     #
     if ( $Texi2HTML::Config::FRAMES )
     {
-        #open(FILE, "> $docu_frame_file")
-        #    || die "$ERROR: Can't open $docu_frame_file for writing: $!\n";
         my $FH = open_out($docu_frame_file);
         print STDERR "# Creating frame in $docu_frame_file ...\n" if $T2H_VERBOSE;
         &$Texi2HTML::Config::print_frame($FH, $docu_toc_frame_file, $docu_top_file);
         close_out($FH, $docu_frame_file);
 
-        #open(FILE, "> $docu_toc_frame_file")
-        #    || die "$ERROR: Can't open $docu_toc_frame_file for writing: $!\n";
         $FH = open_out($docu_toc_frame_file);
         print STDERR "# Creating toc frame in $docu_frame_file ...\n" if $T2H_VERBOSE;
-        #&$Texi2HTML::Config::print_toc_frame(\*FILE, $Texi2HTML::OVERVIEW);
         &$Texi2HTML::Config::print_toc_frame($FH, $Texi2HTML::OVERVIEW);
-        #close(FILE);
         close_out($FH, $docu_toc_frame_file);
     }
 
@@ -6231,14 +6111,9 @@
                     if (! $element)
                     {
                         $new_element = shift @elements_list;
-                        $element->{'has_heading'} = 1 if ($new_element->{'top'});
                     }
                     else
                     {
-                        if ($element->{'top'})
-                        {
-                            $element->{'has_heading'} = 1;
-                        }
                         push (@section_lines, &$Texi2HTML::Config::anchor($current_element->{'id'}) . "\n");
                         push @section_lines, &$Texi2HTML::Config::heading($current_element);
                         next;
@@ -6247,7 +6122,7 @@
                 elsif (!$index_pages)
                 {# handle node and structuring elements
                     $current_element = shift (@all_elements);
-                    #begin debug section
+                    ########################## begin debug section
                     if ($current_element->{'node'})
                     {
                          print STDERR 'NODE ' . "$current_element->{'texi'}($current_element->{'file'})" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
@@ -6258,18 +6133,19 @@
                          print STDERR 'SECTION ' . $current_element->{'texi'} if ($T2H_DEBUG & $DEBUG_ELEMENTS);
                     }
                     print STDERR ": $_" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
-                    #end debug section
+                    ########################## end debug section
 
                     # The element begins a new section if there is no previous
                     # or it is an element and not the current one or the 
-                    # associated section (in case of node) is not the current one
+                    # associated section (in case of node) is not the current 
+                    # one
                     if (!$element 
                       or ($current_element->{'element'} and ($current_element ne $element))
                       or ($current_element->{'section_ref'} and ($current_element->{'section_ref'} ne $element)))
                     {
                          $new_element = shift @elements_list;
                     }
-                    # begin debugging section
+                    ########################### begin debug
                     my $section_element = $new_element;
                     $section_element = $element unless ($section_element);
                     if (!$current_element->{'node'} and !$current_element->{'index_page'} and ($section_element ne $current_element))
@@ -6277,7 +6153,7 @@
                          print STDERR "NODE: $element->{'texi'}\n" if ($element->{'node'});
                          warn "elements_list and all_elements not in sync (elements $section_element->{'texi'}, all $current_element->{'texi'}): $_";
                     }
-                    # end debugging section
+                    ########################### end debug
                 }
                 else
                 { # this is a new index section
@@ -6293,21 +6169,11 @@
                     my $old = 'NO_OLD';
                     $old = $element->{'texi'} if (defined($element));
                     print STDERR "NEW: $new_element->{'texi'}, OLD: $old\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
-# FIXME this should be done differently now that there could be elements
-# associated with the same file
-                    if ($element and ($new_element->{'doc_nr'} != $element->{'doc_nr'}) and @foot_lines and !$Texi2HTML::Config::SEPARATED_FOOTNOTES)
-                    { # note that this can only happen if $Texi2HTML::Config::SPLIT
-                        &$Texi2HTML::Config::foot_section (\@foot_lines);
-                        push @section_lines, @foot_lines;
-                        @foot_lines = ();
-                        $relative_foot_num = 0;
-                    }
                     # print the element that just finished
                     $Texi2HTML::THIS_SECTION = \@section_lines;
                     $Texi2HTML::THIS_HEADER = \@head_lines;
                     if ($element)
                     {
-                        #$FH = finish_element($FH, $element, $new_element, $first_section);
                         finish_element($FH, $element, $new_element, $first_section);
                         $first_section = 0;
                         @section_lines = ();
@@ -6338,9 +6204,12 @@
                     $Texi2HTML::HREF{'Index'} = href($element_chapter_index, $element->{'file'}) if (defined($element_chapter_index));
                     #print STDERR "Top ";
                     $Texi2HTML::HREF{'Top'} = href($element_top, $element->{'file'});
-                    foreach my $direction (('Up', 'Forward', 'Back', 'Next', 
-                        'Prev', 'FastForward', 'FastBack', 'This', 'NodeUp', 
-                        'NodePrev', 'NodeNext', 'Following' ))
+                    if ($Texi2HTML::Config::INLINE_CONTENTS)
+                    {
+                        $Texi2HTML::HREF{'Contents'} = href($content_element{'contents'}, $element->{'file'});
+                        $Texi2HTML::HREF{'Overview'} = href($content_element{'shortcontents'}, $element->{'file'});
+                    }
+                    foreach my $direction (@element_directions)
                     {
                         my $elem = $element->{$direction};
                         $Texi2HTML::NODE{$direction} = undef;
@@ -6365,12 +6234,11 @@
                         }
                         $Texi2HTML::NAME{$direction} = $elem->{'text'};
                         $Texi2HTML::NO_TEXI{$direction} = $elem->{'no_texi'};
-                        $Texi2HTML::UNFORMATTED{$direction} = $elem->{'unformatted'};
+                        $Texi2HTML::SIMPLE_TEXT{$direction} = $elem->{'simple_format'};
                         #print STDERR "$direction ($element->{'texi'}): \n  NO_TEXI: $Texi2HTML::NO_TEXI{$direction}\n  NAME $Texi2HTML::NAME{$direction}\n  NODE $Texi2HTML::NODE{$direction}\n  HREF $Texi2HTML::HREF{$direction}\n\n";
                     }
                     #print STDERR "\nDone hrefs for $element->{'texi'}\n";
                     $files{$element->{'file'}}->{'counter'}--;
-                    #if (! defined($FH))
                     if (!defined($previous_file) or ($element->{'file'} ne $previous_file))
                     {
                         my $file = $element->{'file'};
@@ -6384,6 +6252,7 @@
                         else
                         {
                              $FH = open_out("$docu_rdir$file");
+#print STDERR "OPEN $docu_rdir$file, $FH". scalar($FH)."\n";
                              $files{$file}->{'filehandle'} = $FH;
                              $do_page_head = 1;
                         }
@@ -6435,7 +6304,7 @@
                 s/\s+(\w+)\s*//;
                 my $name = $1;
                 close_paragraph(\$text, \@stack, \%state);
-                next if (!index_name2prefix($name) or $empty_indices{$name});
+                next if (!$index_names{$name} or $empty_indices{$name});
                 $printed_indices{$name} = 1;
                 print STDERR "print index $name($index_nr) in `$element->{'texi'}', element->{'indices'}: $element->{'indices'},\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS or $T2H_DEBUG & $DEBUG_INDEX);
                 print STDERR "element->{'indices'}->[index_nr]: $element->{'indices'}->[$index_nr] (@{$element->{'indices'}->[$index_nr]})\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS or $T2H_DEBUG & $DEBUG_INDEX);
@@ -6450,8 +6319,21 @@
                 $text = '';
                 next;
             }
-            elsif ($tag eq 'contents')
+            elsif (($tag eq 'contents') or ($tag eq 'summarycontents') or ($tag eq 'shortcontents'))
             {
+                my $element_tag = $tag;
+                $element_tag = 'shortcontents' if ($element_tag ne 'contents');
+                if ($Texi2HTML::Config::INLINE_CONTENTS and !$content_element{$element_tag}->{'aftertitlepage'})
+                {
+                    if (@stack or (defined($text) and $text ne ''))
+                    {# in pass text contents  shouldn't appear in formats
+                        close_stack(\$text, \@stack, \%state, $line_nr);
+                        push @section_lines, $text;
+                        $text = '';
+                    }
+                    my $toc_lines = &$Texi2HTML::Config::inline_contents($FH, $tag, $content_element{$element_tag});
+                    push (@section_lines, @$toc_lines) if (defined($toc_lines)) ;
+                }
                 next;
             }
         }
@@ -6474,6 +6356,7 @@
         push @section_lines, $text;
     }
     print STDERR "\n" if ($T2H_VERBOSE);
+ 
     $Texi2HTML::THIS_SECTION = \@section_lines;
     # if no sections, then simply print document as is
     if ($one_section)
@@ -6491,7 +6374,7 @@
             $element->{'node'} = 0; # otherwise Texi2HTML::Config::heading may uses the node level
             $element->{'text'} = $Texi2HTML::NAME{'Top'};
             print STDERR "[Top]" if ($T2H_VERBOSE);
-            unless ($element->{'has_heading'})
+            unless ($element->{'titlefont'} or $element->{'index_page'})
             {
                 unshift @section_lines, &$Texi2HTML::Config::heading($element);
             }
@@ -6507,9 +6390,9 @@
     ############################################################################
     # Print ToC, Overview, Footnotes
     #
-    for my $direction (('Prev', 'Next', 'Back', 'Forward', 'Up', 'NodeUp', 
-        'NodePrev', 'NodeNext', 'Following', 'This'))
+    foreach my $direction (@element_directions)
     {
+        $Texi2HTML::HREF{$direction} = undef;
         delete $Texi2HTML::HREF{$direction};
         # it is better to undef in case the references to these hash entries
         # are used, as if deleted, the
@@ -6517,7 +6400,7 @@
         # (we could do both)
         $Texi2HTML::NAME{$direction} = undef;
         $Texi2HTML::NO_TEXI{$direction} = undef;
-        $Texi2HTML::UNFORMATTED{$direction} = undef;
+        $Texi2HTML::SIMPLE_TEXT{$direction} = undef;
         $Texi2HTML::NODE{$direction} = undef;
 
         $Texi2HTML::THIS_ELEMENT = undef;
@@ -6525,65 +6408,53 @@
     if (@foot_lines)
     {
         print STDERR "# writing Footnotes in $docu_foot_file\n" if $T2H_VERBOSE;
-        #open (FILE, "> $docu_foot_file") || die "$ERROR: Can't open $docu_foot_file for writing: $!\n"
         $FH = open_out ($docu_foot_file)
             if $Texi2HTML::Config::SPLIT;
         $Texi2HTML::HREF{'This'} = $Texi2HTML::HREF{'Footnotes'};
         $Texi2HTML::HREF{'Footnotes'} = '#' . $footnote_element->{'id'};
         $Texi2HTML::NAME{'This'} = $Texi2HTML::NAME{'Footnotes'};
         $Texi2HTML::NO_TEXI{'This'} = $Texi2HTML::NO_TEXI{'Footnotes'};
-        $Texi2HTML::UNFORMATTED{'This'} = $Texi2HTML::UNFORMATTED{'Footnotes'};
+        $Texi2HTML::SIMPLE_TEXT{'This'} = $Texi2HTML::SIMPLE_TEXT{'Footnotes'};
         $Texi2HTML::THIS_SECTION = \@foot_lines;
         $Texi2HTML::THIS_HEADER = [ &$Texi2HTML::Config::anchor($footnote_element->{'id'}) . "\n" ];
-        #&$Texi2HTML::Config::print_Footnotes(\*FILE);
         &$Texi2HTML::Config::print_Footnotes($FH);
-        #close(FILE) if $Texi2HTML::Config::SPLIT;
         close_out($FH, $docu_foot_file) 
-            #|| die "$ERROR: Error occurred when closing $docu_foot_file: $!\n"
                if ($Texi2HTML::Config::SPLIT);
         $Texi2HTML::HREF{'Footnotes'} = $Texi2HTML::HREF{'This'};
     }
 
-    if (@{$Texi2HTML::TOC_LINES})
+    if (@{$Texi2HTML::TOC_LINES} and !$Texi2HTML::Config::INLINE_CONTENTS)
     {
         print STDERR "# writing Toc in $docu_toc_file\n" if $T2H_VERBOSE;
-        #open (FILE, "> $docu_toc_file") || die "$ERROR: Can't open $docu_toc_file for writing: $!\n"
         $FH = open_out ($docu_toc_file)
             if $Texi2HTML::Config::SPLIT;
         $Texi2HTML::HREF{'This'} = $Texi2HTML::HREF{'Contents'};
         $Texi2HTML::HREF{'Contents'} = "#SEC_Contents";
         $Texi2HTML::NAME{'This'} = $Texi2HTML::NAME{'Contents'};
         $Texi2HTML::NO_TEXI{'This'} = $Texi2HTML::NO_TEXI{'Contents'};
-        $Texi2HTML::UNFORMATTED{'This'} = $Texi2HTML::UNFORMATTED{'Contents'};
+        $Texi2HTML::SIMPLE_TEXT{'This'} = $Texi2HTML::SIMPLE_TEXT{'Contents'};
         $Texi2HTML::THIS_SECTION = $Texi2HTML::TOC_LINES;
         $Texi2HTML::THIS_HEADER = [ &$Texi2HTML::Config::anchor("SEC_Contents") . "\n" ];
-        #&$Texi2HTML::Config::print_Toc(\*FILE);
-        #close(FILE) if $Texi2HTML::Config::SPLIT;
         &$Texi2HTML::Config::print_Toc($FH);
         close_out($FH, $docu_toc_file) 
-        #|| die "$ERROR: Error occurred when closing $docu_toc_file: $!\n"
                if ($Texi2HTML::Config::SPLIT);
         $Texi2HTML::HREF{'Contents'} = $Texi2HTML::HREF{'This'};
     }
 
-    if (@{$Texi2HTML::OVERVIEW})
+    if (@{$Texi2HTML::OVERVIEW} and !$Texi2HTML::Config::INLINE_CONTENTS)
     {
         print STDERR "# writing Overview in $docu_stoc_file\n" if $T2H_VERBOSE;
-        #open (FILE, "> $docu_stoc_file") || die "$ERROR: Can't open $docu_stoc_file for writing: $!\n"
         $FH = open_out ($docu_stoc_file)
             if $Texi2HTML::Config::SPLIT;
         $Texi2HTML::HREF{This} = $Texi2HTML::HREF{Overview};
         $Texi2HTML::HREF{Overview} = "#SEC_Overview";
         $Texi2HTML::NAME{This} = $Texi2HTML::NAME{Overview};
         $Texi2HTML::NO_TEXI{This} = $Texi2HTML::NO_TEXI{Overview};
-        $Texi2HTML::UNFORMATTED{This} = $Texi2HTML::UNFORMATTED{Overview};
+        $Texi2HTML::SIMPLE_TEXT{This} = $Texi2HTML::SIMPLE_TEXT{Overview};
         $Texi2HTML::THIS_SECTION = $Texi2HTML::OVERVIEW;
         $Texi2HTML::THIS_HEADER = [ &$Texi2HTML::Config::anchor("SEC_Overview") . "\n" ];
-        #&$Texi2HTML::Config::print_Overview(\*FILE);
-        #close(FILE) if $Texi2HTML::Config::SPLIT;
         &$Texi2HTML::Config::print_Overview($FH);
         close_out($FH,$docu_stoc_file) 
-         #|| die "$ERROR: Error occurred when closing $docu_stoc_file: $!\n"
                if ($Texi2HTML::Config::SPLIT);
         $Texi2HTML::HREF{Overview} = $Texi2HTML::HREF{This};
     }
@@ -6591,7 +6462,6 @@
     if ($about_body = &$Texi2HTML::Config::about_body())
     {
         print STDERR "# writing About in $docu_about_file\n" if $T2H_VERBOSE;
-        #open (FILE, "> $docu_about_file") || die "$ERROR: Can't open $docu_about_file for writing: $!\n"
         $FH = open_out ($docu_about_file)
             if $Texi2HTML::Config::SPLIT;
 
@@ -6599,14 +6469,11 @@
         $Texi2HTML::HREF{About} = "#SEC_About";
         $Texi2HTML::NAME{This} = $Texi2HTML::NAME{About};
         $Texi2HTML::NO_TEXI{This} = $Texi2HTML::NO_TEXI{About};
-        $Texi2HTML::UNFORMATTED{This} = $Texi2HTML::UNFORMATTED{About};
+        $Texi2HTML::SIMPLE_TEXT{This} = $Texi2HTML::SIMPLE_TEXT{About};
         $Texi2HTML::THIS_SECTION = [$about_body];
         $Texi2HTML::THIS_HEADER = [ &$Texi2HTML::Config::anchor("SEC_About") . "\n" ];
-        #&$Texi2HTML::Config::print_About(\*FILE);
-        #close(FILE) if $Texi2HTML::Config::SPLIT;
         &$Texi2HTML::Config::print_About($FH);
         close_out($FH, $docu_stoc_file) 
-           #|| die "$ERROR: Error occurred when closing $docu_stoc_file: $!\n"
                if ($Texi2HTML::Config::SPLIT);
         $Texi2HTML::HREF{About} = $Texi2HTML::HREF{This};
     }
@@ -6615,11 +6482,10 @@
     {
         &$Texi2HTML::Config::print_page_foot($FH);
         close_out ($FH);
-          # || die "$ERROR: Error occurred when closing: $!\n";
     }
 }
 
-# print section, close file and undef FH if needed.
+# print section, close file if needed.
 sub finish_element($$$$)
 {
     my $FH = shift;
@@ -6627,13 +6493,41 @@
     my $new_element = shift;
     my $first_section = shift;
 #print STDERR "FINISH_ELEMENT($FH)($element->{'texi'})[$element->{'file'}] counter $files{$element->{'file'}}->{'counter'}\n";
+
+    # handle foot notes
+    if ($Texi2HTML::Config::SPLIT and scalar(@foot_lines) 
+        and !$Texi2HTML::Config::SEPARATED_FOOTNOTES
+        and  (! $new_element or
+        ($element and ($new_element->{'file'} ne $element->{'file'})))
+       )
+    {
+        if ($files{$element->{'file'}}->{'counter'})
+        {# there are other elements in that page we are not on its foot
+            $files{$element->{'file'}}->{'relative_foot_num'} 
+               = $relative_foot_num;
+            push @{$files{$element->{'file'}}->{'foot_lines'}},
+                @foot_lines;
+        }
+        else
+        {# we output the footnotes as we are at the file end
+             unshift @foot_lines, @{$files{$element->{'file'}}->{'foot_lines'}};
+             &$Texi2HTML::Config::foot_section (\@foot_lines);
+             push @{$Texi2HTML::THIS_SECTION}, @foot_lines;
+        }
+        if ($new_element)
+        {
+            $relative_foot_num = 
+               $files{$new_element->{'file'}}->{'relative_foot_num'};
+        }
+        @foot_lines = ();
+    }
     if ($element->{'top'})
     {
         my $top_file = $docu_top_file;
         #print STDERR "TOP $element->{'texi'}, @section_lines\n";
         print STDERR "[Top]" if ($T2H_VERBOSE);
         $Texi2HTML::HREF{'Top'} = href($element_top, $element->{'file'});
-        &$Texi2HTML::Config::print_Top($FH, $element->{'has_heading'});
+        &$Texi2HTML::Config::print_Top($FH, ($element->{'titlefont'} or $element->{'index_page'}));
         my $end_page = 0;
         if ($Texi2HTML::Config::SPLIT)
         {
@@ -6662,9 +6556,8 @@
              }
              else
              {
-                 print STDERR "counter $files{$element->{'file'}}->{'counter'} ne 0, file $element->{'file'}\n";
+                 print STDERR "counter $files{$element->{'file'}}->{'counter'} ne 0, file $element->{'file'}\n" if ($T2H_DEBUG);
              }
-             undef $FH;
         }
         elsif (!defined($new_element))
         {
@@ -6689,7 +6582,6 @@
             &$Texi2HTML::Config::end_section($FH);
         }
     }
-    return $FH;
 }
 
 # write to files with name the node name for cross manual references.
@@ -6710,12 +6602,12 @@
         my $file = "${docu_rdir}$node->{'node_file'}";
         $Texi2HTML::NODE{'This'} = $node->{'text'};
         $Texi2HTML::NO_TEXI{'This'} = $node->{'no_texi'};
-        $Texi2HTML::UNFORMATTED{'This'} = $node->{'no_texi'};
+        $Texi2HTML::SIMPLE_TEXT{'This'} = $node->{'simple_format'};
         $Texi2HTML::NAME{'This'} = $node->{'text'};
         $Texi2HTML::HREF{'This'} = "$node->{'file'}#$node->{'id'}";
-        open (NODEFILE, "> $file") || die "$ERROR Can't open $file for writing: $!\n";
-        &$Texi2HTML::Config::print_redirection_page (\*NODEFILE);
-        close NODEFILE || die "$ERROR: Can't close $file: $!\n";
+        my $NODEFILE = open_out ($file);
+        &$Texi2HTML::Config::print_redirection_page ($NODEFILE);
+        close $NODEFILE || die "$ERROR: Can't close $file: $!\n";
     }
 }
 
@@ -6743,13 +6635,11 @@
     my $name = shift;
     my $line_number = shift;
     local *FH;
-    #if ((defined($from_encoding) and open(*FH, ":encoding($from_encoding)", $name)) or  open(*FH, $name))
-    #if ((defined($from_encoding) and open(*FH, "<:$from_encoding", $name)) or  open(*FH, $name))
     if (open(*FH, "<$name"))
     { 
-        if (defined($from_encoding))
+        if (defined($Texi2HTML::Config::IN_ENCODING) and $Texi2HTML::Config::USE_UNICODE)
         {
-            binmode(*FH, ":encoding($from_encoding)");
+            binmode(*FH, ":encoding($Texi2HTML::Config::IN_ENCODING)");
         }
         my $file = { 'fh' => *FH, 
            'input_spool' => { 'spool' => [], 
@@ -6770,27 +6660,20 @@
 sub open_out($)
 {
     my $file = shift;
+    local *FILE;
     if ($file eq '-')
     {
-        binmode(STDOUT, ":encoding($to_encoding)") if (defined($to_encoding));
+        binmode(STDOUT, ":encoding($to_encoding)") if (defined($to_encoding) and $Texi2HTML::Config::USE_UNICODE);
         return \*STDOUT;
     }
-    #unless ((defined($to_encoding) and open(FILE, ">:encoding($to_encoding)", $file)) or open(FILE, "> $file"))
-    #my $open_style = 'bytes';
-    #$open_style = 'utf8' if (defined($to_encoding) and $to_encoding eq 'utf8');
-    #if (defined($to_encoding) and $to_encoding eq 'utf8')
-    #{
-    #     $open_style = 'utf8'; 
-    #     print STDERR "$open_style\n";
-    #}
-    #unless ((defined($to_encoding) and open(FILE, ">:$open_style", $file)) or open(FILE, "> $file"))
+
     unless (open(FILE, ">$file"))
     {
         die "$ERROR Can't open $file for writing: $!\n";
     }
-    if (defined($to_encoding))
+    if (defined($to_encoding) and $Texi2HTML::Config::USE_UNICODE)
     {
-        if ($to_encoding eq 'utf8')
+        if ($to_encoding eq 'utf8' or $to_encoding eq 'utf-8-strict')
         {
             binmode(FILE, ':utf8');
         }
@@ -6800,9 +6683,10 @@
         }
         binmode(FILE, ":encoding($to_encoding)");
     }
-    return \*FILE;
+    return *FILE;
 }
 
+# FIXME not used when split 
 sub close_out($;$)
 {
     my $FH = shift;
@@ -6907,7 +6791,8 @@
 sub next_tag($)
 {
     my $line = shift;
-    if ($line =~ /^\s*\@(["'~\@\}\{,\.!\?\s\*\-\^`=:\|\/])/o or $line =~ /^\s*\@([a-zA-Z]\w*)([\s\{\}\@])/ or $line =~ /^\s*\@([a-zA-Z]\w*)$/)
+    # macro_regexp
+    if ($line =~ /^\s*\@(["'~\@\}\{,\.!\?\s\*\-\^`=:\|\/])/o or $line =~ /^\s*\@([a-zA-Z][\w-]*)([\s\{\}\@])/ or $line =~ /^\s*\@([a-zA-Z][\w-]*)$/)
     {
         return ($1);
     }
@@ -7005,12 +6890,12 @@
 
 sub normalise_space($)
 {
-    return undef unless (defined ($_[0]));
-    my $text = shift;
-    $text =~ s/\s+/ /go;
-    $text =~ s/ $//;
-    $text =~ s/^ //;
-    return $text;
+   return undef unless (defined ($_[0]));
+   my $text = shift;
+   $text =~ s/\s+/ /go;
+   $text =~ s/ $//;
+   $text =~ s/^ //;
+   return $text;
 }
 
 sub normalise_node($)
@@ -7022,12 +6907,6 @@
     return $text;
 }
 
-sub do_math($;$)
-{
-    #return l2h_ToLatex("\$".$_[0]."\$");
-    return Texi2HTML::LaTeX2HTML::to_latex("\$".$_[0]."\$");
-}
-
 sub do_anchor_label($$$$)
 {
     my $command = shift;
@@ -7040,6 +6919,10 @@
 
     return '' if ($state->{'multiple_pass'});
     $anchor = normalise_node($anchor);
+    if (!exists($nodes{$anchor}) or !defined($nodes{$anchor}->{'id'}))
+    {
+        print STDERR "Bug: unknown anchor `$anchor'\n";
+    }
     return &$Texi2HTML::Config::anchor($nodes{$anchor}->{'id'});
 }
 
@@ -7054,19 +6937,13 @@
     my $enumerate_type;
     my $number;
     
-    if (defined($format) and ref($format) eq "HASH")
-    {
-         $command = $format->{'command'};
-         $command = '' if (!defined($command));
-         $paragraph_number = \$format->{'paragraph_number'};
-         $format_name =  $format->{'format'};
-         $term = 1 if ($format->{'term'}); #This should never happen
-         $item_nr = $format->{'item_nr'};
-         $enumerate_type =  $format->{'spec'};
-         $number = $format->{'number'};
-    }
-    return ($format_name, $command, $paragraph_number, $term, $item_nr, 
-        $enumerate_type, $number);
+    $command = $format->{'command'} if (defined($format->{'command'}));
+    $format_name =  $format->{'format'} if (defined($format->{'format'}));
+    $term = 1 if ($format->{'term'}); #This should never happen
+
+    return ($format_name,$command,\$format->{'paragraph_number'},$term,
+        $format->{'item_nr'}, $format->{'spec'},  $format->{'number'},
+        $format->{'stack_at_beginning'});
 }
 
 sub do_paragraph($$)
@@ -7074,15 +6951,24 @@
     my $text = shift;
     my $state = shift;
     my ($format, $paragraph_command, $paragraph_number, $term, $item_nr, 
-        $enumerate_type, $number) = get_format_command ($state->{'paragraph'});
-    delete $state->{'paragraph'};
+        $enumerate_type, $number,$stack_at_beginning) 
+         = get_format_command ($state->{'paragraph_context'});
+    delete $state->{'paragraph_context'};
+
+    my $indent_style = '';
+    if (exists($state->{'paragraph_indent'}))
+    {
+        $indent_style = $state->{'paragraph_indent'};
+        $state->{'paragraph_indent'} = undef;
+        delete $state->{'paragraph_indent'};
+    }
     my $paragraph_command_formatted;
     $state->{'paragraph_nr'}--;
     (print STDERR "Bug text undef in do_paragraph", return '') unless defined($text);
     my $align = '';
     $align = $state->{'paragraph_style'}->[-1] if ($state->{'paragraph_style'}->[-1]);
     
-    if (exists($style_map_ref->{$paragraph_command}) and
+    if (exists($::style_map_ref->{$paragraph_command}) and
        !exists($Texi2HTML::Config::special_list_commands{$format}->{$paragraph_command}))
     { 
         if ($format eq 'itemize')
@@ -7092,44 +6978,52 @@
             $text = $text . "\n";
         }
     }
-    elsif (exists($things_map_ref->{$paragraph_command}))
+    elsif (exists($::things_map_ref->{$paragraph_command}))
     {
         $paragraph_command_formatted = do_simple($paragraph_command, '', $state);
     }
-    return &$Texi2HTML::Config::paragraph($text, $align, $paragraph_command, $paragraph_command_formatted, $paragraph_number, $format, $item_nr, $enumerate_type, $number);
+    return &$Texi2HTML::Config::paragraph($text, $align, $indent_style, $paragraph_command, $paragraph_command_formatted, $paragraph_number, $format, $item_nr, $enumerate_type, $number,$state->{'command_stack'},$stack_at_beginning);
 }
 
 sub do_preformatted($$)
 {
     my $text = shift;
     my $state = shift;
-    my ($format, $leading_command, $preformatted_number, $term, $item_nr, $enumerate_type, 
-         $number) = get_format_command($state->{'preformatted_format'});
-    delete ($state->{'preformatted_format'});
+    my ($format, $leading_command, $preformatted_number, $term, $item_nr, 
+        $enumerate_type, $number,$stack_at_beginning) 
+        = get_format_command($state->{'preformatted_context'});
+    delete ($state->{'preformatted_context'});
     my $leading_command_formatted;
     my $pre_style = '';
     my $class = '';
     $pre_style = $state->{'preformatted_stack'}->[-1]->{'pre_style'} if ($state->{'preformatted_stack'}->[-1]->{'pre_style'});
     $class = $state->{'preformatted_stack'}->[-1]->{'class'};
     print STDERR "BUG: !state->{'preformatted_stack'}->[-1]->{'class'}\n" unless ($class);
-    if (exists($style_map_ref->{$leading_command}) and
+    if (exists($::style_map_ref->{$leading_command}) and
        !exists($Texi2HTML::Config::special_list_commands{$format}->{$leading_command}) and ($style_type{$leading_command} eq 'style'))
     {
         $text = do_simple($leading_command, $text, $state,[$text]) if ($format eq 'itemize');
     }
-    elsif (exists($things_map_ref->{$leading_command}))
+    elsif (exists($::things_map_ref->{$leading_command}))
     {
         $leading_command_formatted = do_simple($leading_command, '', $state);
     }
-    return &$Texi2HTML::Config::preformatted($text, $pre_style, $class, $leading_command, $leading_command_formatted, $preformatted_number, $format, $item_nr, $enumerate_type, $number);
+    return &$Texi2HTML::Config::preformatted($text, $pre_style, $class, $leading_command, $leading_command_formatted, $preformatted_number, $format, $item_nr, $enumerate_type, $number,$state->{'command_stack'},$stack_at_beginning);
 }
 
 sub do_external_href($)
 {
+    # node_id is a unique node identifier with only letters, digits, - and _
+    # node_xhtml_id is almost the same, but xhtml id can only begin with
+    # letters, so a prefix has to be appended  
     my $texi_node = shift;
     my $file = '';
+    my $node_file = '';
     my $node_id = '';
     my $node_xhtml_id = '';
+
+#print STDERR "do_external_href $texi_node\n";
+
     if ($texi_node =~ s/^\((.+?)\)//)
     {
          $file = $1;
@@ -7140,18 +7034,31 @@
          if (exists($nodes{$texi_node}) and ($nodes{$texi_node}->{'cross_manual_target'})) 
          {
                $node_id = $nodes{$texi_node}->{'cross_manual_target'};
+               if ($Texi2HTML::Config::TRANSLITERATE_NODE)
+               {
+                   $node_file = $nodes{$texi_node}->{'cross_manual_file'};
+               }
          }
          else 
          {
-               $node_id = cross_manual_line($texi_node);
+              if ($Texi2HTML::Config::TRANSLITERATE_NODE)
+              {
+                  ($node_id, $node_file) = cross_manual_line($texi_node,1);
+              }
+              else
+              {
+                  $node_id = cross_manual_line($texi_node);
+              }
          }
          $node_xhtml_id = node_to_id($node_id);
+         $node_file = $node_id unless ($Texi2HTML::Config::TRANSLITERATE_NODE);
     }
-    return &$Texi2HTML::Config::external_href($texi_node, $node_id, 
+    return &$Texi2HTML::Config::external_href($texi_node, $node_file, 
         $node_xhtml_id, $file);
 }
 
-# transform node for cross ref name to id suitable for xhtml.
+# transform node for cross ref name to id suitable for xhtml: an xhtml id
+# must begin with a letter.
 sub node_to_id($)
 {
     my $cross_ref_node_name = shift;
@@ -7174,36 +7081,46 @@
 {
     my $state = shift;
     my $line = shift;
-    return ($state->{'paragraph'} or $state->{'preformatted'} or $state->{'remove_texi'} or no_line($line) or $state->{'no_paragraph'});
+    return ($state->{'paragraph_context'} or $state->{'preformatted'} or $state->{'remove_texi'} or no_line($line) or $state->{'no_paragraph'});
 }
 
-sub automatic_preformatted($$)
+# We restart the preformatted format which was stopped 
+# by the format if in preformatted, and start a paragraph
+# for the text following the end of the format, if needed
+sub begin_paragraph_after_command($$$$)
 {
     my $state = shift;
-    my $macro = shift;
-    return ($state->{'preformatted'} and 
-        !$Texi2HTML::Config::format_in_paragraph{$macro});
+    my $stack = shift;
+    my $command = shift;
+    my $text_following = shift;
+    
+    if (($state->{'preformatted'} 
+           and !$Texi2HTML::Config::format_in_paragraph{$command})
+        or (!no_paragraph($state,$text_following)))  
+    {
+        begin_paragraph($stack, $state); 
+    }
 }
 
 # handle raw formatting, ignored regions...
-sub do_text_macro($$$$)
+sub do_text_macro($$$$$)
 {
     my $type = shift;
     my $line = shift;
     my $state = shift;
+    my $stack = shift;
     my $line_nr = shift;
     my $value;
     #print STDERR "do_text_macro $type\n";
 
-    if (not $text_macros{$type})
-    { # ignored text
-        $state->{'ignored'} = $type;
-        #print STDERR "IGNORED\n";
-    }
-    elsif ($text_macros{$type} eq 'raw' or $text_macros{$type} eq 'special')
+    if ($text_macros{$type} eq 'raw')
     {
         $state->{'raw'} = $type;
         #print STDERR "RAW\n";
+        if ($state->{'raw'})
+        {
+             push @$stack, { 'style' => $type, 'text' => '' };
+        }
     }
     elsif ($text_macros{$type} eq 'value')
     {
@@ -7211,11 +7128,22 @@
         {
             $value = $1 . $2;
             $value .= $3 if defined($3);
+            if ($state->{'ignored'})
+            {
+                if ($type eq $state->{'ignored'})
+                {
+                    $state->{'ifvalue_inside'}++;
+                }
+                # if 'ignored' we don't care about the command as long as
+                # the nesting is correct
+                return ($line,'');
+            }
+            my $open_ifvalue = 0;
             if ($type eq 'ifclear')
             {
                 if (defined($value{$2}))
                 {
-                    $state->{'ignored'} = $type;
+                    $open_ifvalue = 1;
                 }
                 else
                 {
@@ -7226,39 +7154,65 @@
             {
                 unless (defined($value{$2}))
                 {
-                    $state->{'ignored'} = $type;
+                    $open_ifvalue = 1;
                 }
                 else
                 {
                     push @{$state->{'text_macro_stack'}}, $type;
                 }
             }
+            if ($open_ifvalue)
+            {
+                $state->{'ignored'} = $type;
+                $state->{'ifvalue'} = $type;
+                $state->{'ifvalue_inside'} = 1;
+                # We add at the top of the stack to be able to close all
+                # opened comands when closing the ifset/ifclear (and ignore
+                # everything that is in those commands)
+                push @$stack, { 'style' => 'ifvalue', 'text' => '' };
+            }
+            
         }
         else
-        {
-            echo_error ("Bad $type line: $line", $line_nr);
-            #warn "$ERROR Bad $type line: $line";
+        { # we accept a lone @ifset or @ifclear if it is inside an 
+            if ($type eq $state->{'ifvalue'})
+            {
+                $state->{'ifvalue_inside'}++;
+                return ($line,'');
+            }
+            echo_error ("Bad $type line: $line", $line_nr) unless ($state->{'ignored'});
         }
     }
+    elsif (not $text_macros{$type})
+    { # ignored text
+        $state->{'ignored'} = $type;
+        #print STDERR "IGNORED\n";
+    }
     else
     {
-        push @{$state->{'text_macro_stack'}}, $type;
+        push @{$state->{'text_macro_stack'}}, $type unless($state->{'ignored'}) ;
     }
     my $text = "\@$type";
     $text .= $value if defined($value); 
     return ($line, $text);
 }
 
-# do regions handled specially, currently only tex, going throug latex2html
-sub do_special ($$)
+# do regions handled specially, currently only tex, going through latex2html
+sub init_special($$)
 {
     my $style = shift;
     my $text = shift;
-    if ($style eq 'tex')
+    if (defined($Texi2HTML::Config::command_handler{$style}) and
+       defined($Texi2HTML::Config::command_handler{$style}->{'init'}))
     {
-        # add space to the end -- tex(i2dvi) does this, as well
-        #return (l2h_ToLatex($text . " "));
-        return (Texi2HTML::LaTeX2HTML::to_latex($text . " "));
+        $special_commands{$style}->{'count'} = 0 if (!defined($special_commands{$style}));
+        if ($Texi2HTML::Config::command_handler{$style}->{'init'}($style,$text,
+               $special_commands{$style}->{'count'} +1))
+        {
+            $special_commands{$style}->{'count'}++;  
+            return "\@special_${style}_".$special_commands{$style}->{'count'}."{}";
+        }
+        return '';
     }
 }
 
@@ -7266,7 +7220,9 @@
 {
     my $state = shift;
     return '' unless @{$region_lines{'copying'}};
-    return substitute_text(duplicate_state($state), @{$region_lines{'copying'}});
+    my $insert_copying_state = duplicate_state($state);
+    $insert_copying_state->{'multiple_pass'} = 1;
+    return substitute_text($insert_copying_state, @{$region_lines{'copying'}});
 }
 
 sub get_deff_index($$$)
@@ -7275,21 +7231,22 @@
     my $line = shift;
     my $line_nr = shift;
    
-    $tag =~ s/x$// if $tag =~ /x$/;
+    $tag =~ s/x$//;
     my ($style, $category, $name, $type, $class, $arguments);
     ($style, $category, $name, $type, $class, $arguments) = parse_def($tag, $line, $line_nr); 
-    # FIXME -- --- ''... should be protected for name and maybe class
     $name = &$Texi2HTML::Config::definition_category($name, $class, $style);
-    return undef if (!$name or ($name =~ /^\s*$/));
-    return ($style, $name);
+    return ($style, '') if (!defined($name) or ($name =~ /^\s*$/));
+    return ($style, $name, $arguments);
 }
 
 sub parse_def($$$)
 {
-    my $tag = shift;
+    my $command = shift;
     my $line = shift;
     my $line_nr = shift;
 
+    my $tag = $command;
+
     if (!ref ($Texi2HTML::Config::def_map{$tag}))
     {
         # substitute shortcuts for definition commands
@@ -7298,7 +7255,7 @@
         $tag = $1;
         $line = $substituted . $line;
     }
-#print STDERR "PARSE_DEF $line";
+#print STDERR "PARSE_DEF($command,$tag) $line";
     my ($category, $name, $type, $class, $arguments);
     my @args = @{$Texi2HTML::Config::def_map{$tag}};
     my $style = shift @args;
@@ -7337,31 +7294,25 @@
         }
         else
         {
-        #    chomp ($line);
-        #    $line =~ s/\s*$//;
-        #    $arguments = $line if ($line ne '');
             last;
         }
     }
-    #return ($style, $category, $name, $type, $class, $arguments);
 #print STDERR "PARSE_DEF (style $style, category $category, name $name, type $type, class $class, line $line)\n";
     return ($style, $category, $name, $type, $class, $line);
 }
 
-#FIXME this is rather fragile.
 sub begin_deff_item($$;$)
 {
     my $stack = shift;
     my $state = shift;
     my $no_paragraph = shift;
-    return if ($state->{'cmd_line'});
     #print STDERR "DEF push deff_item for $state->{'deff'}\n";
-    push @$stack, { 'format' => 'deff_item', 'text' => '' };
+    push @$stack, { 'format' => 'deff_item', 'text' => '', 'deff_line' => $state->{'deff_line'}};
     # there is no paragraph when a new deff just follows the deff we are
     # opening
-    begin_paragraph($stack, $state) if ($state->{'preformatted'} and !$no_paragraph);
-    $state->{'deff'} = undef;
-    delete($state->{'deff'});
+    begin_paragraph($stack, $state) 
+       if ($state->{'preformatted'} and !$no_paragraph);
+    delete($state->{'deff_line'});
     #dump_stack(undef, $stack, $state);
 }
 
@@ -7376,15 +7327,20 @@
     {
         $command = $top_format;
     }
+    else
+    {
+        $command = { };
+    }
+    $command->{'stack_at_beginning'} = [ @{$state->{'command_stack'}} ];
     if ($state->{'preformatted'})
     {
         push @$stack, {'format' => 'preformatted', 'text' => '' };
-        $state->{'preformatted_format'} = $command if ($command ne '1');
+        $state->{'preformatted_context'} = $command;
         push @$stack, @{$state->{'paragraph_macros'}} if $state->{'paragraph_macros'};
         delete $state->{'paragraph_macros'};
         return;
     }
-    $state->{'paragraph'} = $command;
+    $state->{'paragraph_context'} = $command;
     $state->{'paragraph_nr'}++;
     push @$stack, {'format' => 'paragraph', 'text' => '' };
     # if there are macros which weren't closed when the previous 
@@ -7398,9 +7354,11 @@
     my $line = shift;
     my $tag = shift;
     my $command = 'asis';
-    if (($line =~ /^\s*\@([A-Za-z]\w*)(\{\})?$/ or $line =~ /^\s*\@([A-Za-z]\w*)(\{\})?\s/) and ($things_map_ref->{$1} or defined($style_map_ref->{$1})))
+    # macro_regexp
+    if (($line =~ /^\s*\@([A-Za-z][\w-]*)(\{\})?$/ or $line =~ /^\s*\@([A-Za-z][\w-]*)(\{\})?\s/) and ($::things_map_ref->{$1} or defined($::style_map_ref->{$1})))
     {
-        $line =~ s/^\s*\@([A-Za-z]\w*)(\{\})?\s*//;
+        # macro_regexp
+        $line =~ s/^\s*\@([A-Za-z][\w-]*)(\{\})?\s*//;
         $command = $1;
     }
     return ('', $command) if ($line =~ /^\s*$/);
@@ -7472,7 +7430,11 @@
     #print STDERR "END FORMAT $format\n";
     #dump_stack($text, $stack, $state);
     #sleep 1;
-    close_menu($text, $stack, $state, $line_nr) if ($format_type{$format} eq 'menu');
+    if ($format_type{$format} eq 'menu')
+    {
+        $state->{'menu'}--;
+        close_menu($text, $stack, $state, $line_nr); 
+    }
     if (($format_type{$format} eq 'list') or ($format_type{$format} eq 'table'))
     { # those functions return if they detect an inapropriate context
         add_item($text, $stack, $state, $line_nr, '', 1); # handle lists
@@ -7483,10 +7445,14 @@
 
     #print STDERR "END_FORMAT\n";
     #dump_stack($text, $stack, $state);
+
+    # set to 1 if there is a mismatch between the closed format and format
+    # opened before
+    my $format_mismatch = 0;
 	
     my $format_ref = pop @$stack;
     
-    # debug
+    ######################### debug
     if (!defined($format_ref->{'text'}))
     {
         push @$stack, $format_ref;
@@ -7494,12 +7460,15 @@
         dump_stack($text, $stack, $state);
         pop @$stack;
     }
+    ######################### end debug
     
     if (defined($Texi2HTML::Config::def_map{$format}))
     {
-        close_stack($text, $stack, $state, $line_nr, undef, 'deff_item') unless ($format_ref->{'format'} eq 'deff_item');
+        close_stack($text, $stack, $state, $line_nr, undef, 'deff_item')
+           unless ($format_ref->{'format'} eq 'deff_item');
         add_prev($text, $stack, &$Texi2HTML::Config::def_item($format_ref->{'text'}));
         $format_ref = pop @$stack; # pop deff
+        ######################################### debug
         if (!defined($format_ref->{'format'}) or !defined($Texi2HTML::Config::def_map{$format_ref->{'format'}}))
         {
              print STDERR "Bug: not a def* under deff_item\n";
@@ -7507,45 +7476,33 @@
              dump_stack($text, $stack, $state);
              pop @$stack;  
         }
+        ######################################### end debug
         elsif ($format_ref->{'format'} ne $format)
         {
+             $format_mismatch = 1;
              echo_warn ("Waiting for \@end $format_ref->{'format'}, found \@end $format", $line_nr);
         }
         add_prev($text, $stack, &$Texi2HTML::Config::def($format_ref->{'text'}));
     }
     elsif ($format_type{$format} eq 'cartouche')
     {
-        add_prev($text, $stack, &$Texi2HTML::Config::cartouche($format_ref->{'text'}));
+        add_prev($text, $stack, &$Texi2HTML::Config::cartouche($format_ref->{'text'},$state->{'command_stack'}));
     }
     elsif ($format eq 'float')
     {
-        if (!defined($state->{'float'}))
-        {
-             echo_warn ("Waiting for \@end $format_ref->{'format'}, found \@end $format", $line_nr);
-        }
-        else
-        {
-            my ($caption_lines, $shortcaption_lines) = &$Texi2HTML::Config::caption_shortcaption($state->{'float'});
-            my ($caption_text, $shortcaption_text);
-            $caption_text = substitute_text(duplicate_state($state), @$caption_lines) if (defined($caption_lines));
-            $shortcaption_text = substitute_text(duplicate_state($state), @$shortcaption_lines) if (defined($shortcaption_lines));
-            add_prev($text, $stack, &$Texi2HTML::Config::float($format_ref->{'text'}, $state->{'float'}, $caption_text, $shortcaption_text));
-            delete $state->{'float'};
-        }
-    }
-    elsif ($format_type{$format} eq 'menu')
-    {
-        if ($state->{'preformatted'})
+        unless (defined($state->{'float'}))
         {
-            # end the fake complex format
-            $state->{'preformatted'}--;
-            pop @{$state->{'preformatted_stack'}};
-            pop @$stack;
+            print STDERR "Bug: state->{'float'} not defined in float\n";
+            next;
         }
-        $state->{'menu'}--;
-        add_prev($text, $stack, &$Texi2HTML::Config::menu($format_ref->{'text'}));
+        my ($caption_lines, $shortcaption_lines) = &$Texi2HTML::Config::caption_shortcaption($state->{'float'});
+        my ($caption_text, $shortcaption_text);
+        $caption_text = substitute_text(duplicate_state($state), @$caption_lines) if (defined($caption_lines));
+        $shortcaption_text = substitute_text(duplicate_state($state), @$shortcaption_lines) if (defined($shortcaption_lines));
+        add_prev($text, $stack, &$Texi2HTML::Config::float($format_ref->{'text'}, $state->{'float'}, $caption_text, $shortcaption_text));
+        delete $state->{'float'};
     }
-    elsif ($format_type{$format} eq 'complex')
+    elsif (exists ($Texi2HTML::Config::complex_format_map->{$format}))
     {
         $state->{'preformatted'}--;
         pop @{$state->{'preformatted_stack'}};
@@ -7564,11 +7521,13 @@
     elsif (($format_type{$format} eq 'table') or ($format_type{$format} eq 'list'))
     {
 	    #print STDERR "CLOSE $format ($format_ref->{'format'})\n$format_ref->{'text'}\n";
-        pop @{$state->{'format_stack'}};
+        pop @{$state->{'table_list_stack'}};
 	#dump_stack($text, $stack, $state); 
         if ($format_ref->{'format'} ne $format)
-        {
-             echo_warn ("Waiting for \@end $format_ref->{'format'}, found \@end $format", $line_nr);
+        { # for example vtable closing a table. Cannot be known 
+          # before if in a cell
+             $format_mismatch = 1;
+             echo_warn ("Waiting for \@end $format_ref->{'format'}, found \@end $format  ", $line_nr);
         }
         if ($Texi2HTML::Config::format_map{$format})
         { # table or list has a simple format
@@ -7579,12 +7538,25 @@
             add_prev($text, $stack, &$Texi2HTML::Config::table_list($format_ref->{'format'}, $format_ref->{'text'}, $format_ref->{'command'}));
         }
     } 
+    elsif ($format_type{$format} eq 'menu')
+    {
+    # it should be short-circuited if $Texi2HTML::Config::SIMPLE_MENU
+        if ($state->{'preformatted'})
+        {
+            # end the fake complex format
+            $state->{'preformatted'}--;
+            pop @{$state->{'preformatted_stack'}};
+            pop @$stack;
+        }
+        add_prev($text, $stack, &$Texi2HTML::Config::menu($format_ref->{'text'}));
+    }
     elsif ($format eq 'quotation')
     {
         my $quotation_args = pop @{$state->{'quotation_stack'}};
-        add_prev($text, $stack, &$Texi2HTML::Config::quotation($format_ref->{'text'}, $quotation_args->{'text'}, $quotation_args->{'style_texi'}, $quotation_args->{'style_id'}));
+        #add_prev($text, $stack, &$Texi2HTML::Config::quotation($format_ref->{'text'}, $quotation_args->{'text'}, $quotation_args->{'style_texi'}, $quotation_args->{'style_id'}));
+        add_prev($text, $stack, &$Texi2HTML::Config::quotation($format_ref->{'text'}, $quotation_args->{'text'}, $quotation_args->{'text_texi'}));
     }
-    elsif ($format_type{$format} eq 'paragraph_style')
+    elsif ($Texi2HTML::Config::paragraph_style{$format})
     {
         if ($state->{'paragraph_style'}->[-1] eq $format)
         {
@@ -7594,22 +7566,25 @@
     }
     elsif (exists($Texi2HTML::Config::format_map{$format}))
     {
-        if ($format_ref->{'format'} ne $format)
-        { # FIXME hasn't that case been handled before ?
-             echo_warn ("Waiting for \@end $format_ref->{'format'}, found \@end $format", $line_nr);
-        }
         add_prev($text, $stack, end_simple_format($format_ref->{'format'}, $format_ref->{'text'}));
     }
     else
     {
         echo_warn("Unknown format $format", $line_nr);
     }
-    # We restart the preformatted format which was stopped by the format
-    # if in preformatted
-    if (automatic_preformatted($state,$format))
+    # special case for center as it is at the bottom of the stack
+    my $removed_from_stack;
+    if ($format eq 'center')
+    {
+        $removed_from_stack = shift @{$state->{'command_stack'}};
+    }
+    else
+    {
+        $removed_from_stack = pop @{$state->{'command_stack'}};
+    }
+    if ($removed_from_stack ne $format and !$format_mismatch)
     {
-	    #print STDERR "restart preformatted, $format\n";
-        begin_paragraph($stack, $state);
+        print STDERR "Bug: removed_from_stack $removed_from_stack ne format $format\n";
     }
 }
 
@@ -7618,18 +7593,8 @@
     my $text = shift;
     my $state = shift;
     return $text if ($state->{'keep_texi'});
-    if (defined($state) and !$state->{'preformatted'} and !$state->{'code_style'})
-    {
-        # in normal text `` and '' serve as quotes, --- is for a long dash 
-        # and -- for a medium dash.
-        # (see texinfo.txi, @node Conventions)
-        $text = &$Texi2HTML::Config::normal_text($text);
-    }
-    if ($state->{'no_protection'})
-    {
-        return $text;
-    }
-    return &$Texi2HTML::Config::protect_text($text);
+    my $remove_texi = 1 if ($state->{'remove_texi'} and !$state->{'simple_format'});
+    return (&$Texi2HTML::Config::normal_text($text, $remove_texi, $state->{'preformatted'}, $state->{'code_style'},$state->{'command_stack'}));
 }
 
 sub end_simple_format($$)
@@ -7649,10 +7614,10 @@
     my $line_nr = shift;
     if ($state->{'menu_comment'})
     {
-	    #print STDERR "close MENU_COMMENT Before close_stack\n";
-	    #dump_stack($text, $stack, $state);
+        #print STDERR "close MENU_COMMENT\n";
+        #dump_stack($text, $stack, $state);
         close_stack($text, $stack, $state, $line_nr, undef, 'menu_comment');
-        # close_paragraph isn't needed in most cases, but A preformatted may 
+        # close_paragraph isn't needed in most cases, but a preformatted may 
         # appear after close_stack if we closed a format, as formats reopen
         # preformatted. However it is empty and close_paragraph will remove it
         close_paragraph($text, $stack, $state); 
@@ -7663,8 +7628,11 @@
             dump_stack($text, $stack, $state);
         }
         add_prev($text, $stack, &$Texi2HTML::Config::menu_comment($menu_comment->{'text'}));
-        pop @{$state->{'preformatted_stack'}};
-        $state->{'preformatted'}--;
+        unless ($Texi2HTML::Config::SIMPLE_MENU)
+        {
+            pop @{$state->{'preformatted_stack'}};
+            $state->{'preformatted'}--;
+        }
         $state->{'menu_comment'}--;
     }
     if ($state->{'menu_entry'})
@@ -7672,12 +7640,12 @@
         close_stack($text, $stack,$state, $line_nr, undef, 'menu_description');
         my $descr = pop(@$stack);
         print STDERR "# close_menu: close description\n" if ($T2H_DEBUG & $DEBUG_MENU);
-        add_prev($text, $stack, menu_description($descr->{'text'}, $state));
+        add_prev($text, $stack, do_menu_description($descr->{'text'}, $state));
         delete $state->{'menu_entry'};
     }
 }
 
-# Format menu link, the  
+# Format menu link
 sub do_menu_link($$;$)
 {
     my $state = shift;
@@ -7686,91 +7654,90 @@
     my $menu_entry = $state->{'menu_entry'};
     my $file = $state->{'element'}->{'file'};
     my $node_name = normalise_node($menu_entry->{'node'});
-    
+
     my $substitution_state = duplicate_state($state);
     my $name = substitute_line($menu_entry->{'name'}, $substitution_state);
-    my $node = substitute_line($menu_entry->{'node'}, $substitution_state);
-
-    if (($name ne '') and !$state->{'preformatted'} and $Texi2HTML::Config::AVOID_MENU_REDUNDANCY)
-    {
-        $name = '' unless (clean_text(remove_texi($menu_entry->{'name'}))
-            ne clean_text(remove_texi($menu_entry->{'node'})))
-    }
+    my $node_formatted = substitute_line($menu_entry->{'node'}, $substitution_state);
 
     my $entry = '';
     my $href;
     my $element = $nodes{$node_name};
+
+    # menu points to an unknown node
+    if (!$element->{'seen'})
+    {
+        if ($menu_entry->{'node'} =~ /^\s*\(.*\)/o or $novalidate)
+        {
+            # menu entry points to another info manual or invalid nodes
+            # and novalidate is set
+            #$href = $nodes{$node_name}->{'file'};
+            $href = do_external_href($node_name);
+        }
+        else
+        {
+            echo_error ("Unknown node in menu entry `$node_name'", $line_nr);
+            # try to find an equivalent node
+            my @equivalent_nodes = equivalent_nodes($node_name);
+            my $node_seen;
+            foreach my $equivalent_node (@equivalent_nodes)
+            {
+                if ($nodes{$equivalent_node}->{'seen'})
+                {
+                    $node_seen = $equivalent_node;
+                    last;
+                }
+            }
+            if (defined($node_seen))
+            {
+                echo_warn (" ---> but equivalent node `$node_seen' found");
+                $element = $nodes{$node_seen};
+            }
+        }
+    }
+
+    # the original node or an equivalent node was seen
     if ($element->{'seen'})
     {
-        if ($element->{'with_section'})
+        if ($element->{'reference_element'})
         {
-            $element = $element->{'with_section'};
+            $element = $element->{'reference_element'};
         }
     
-        #print STDERR "SUBHREF in menu for $element->{'texi'}\n";
+        #print STDERR "SUBHREF in menu for `$element->{'texi'}'\n";
         $href = href($element, $file);
         if (! $element->{'node'})
         {
-            $entry = $element->{'text'}; # this is the section name without number
-            $entry = $element->{'name'} if (!$Texi2HTML::Config::NUMBER_SECTIONS);
+            $entry = $element->{'text'}; # this is the section/node name
             $entry = "$Texi2HTML::Config::MENU_SYMBOL $entry" if (($entry ne '') and (!defined($element->{'number'}) or ($element->{'number'} =~ /^\s*$/)) and $Texi2HTML::Config::UNNUMBERED_SYMBOL_IN_MENU);
         }
     }
-    elsif ($menu_entry->{'node'} =~ /^\s*\(.*\)/ or $novalidate)
-    {#FIXME this is wrong for $novalidate
-        # menu entry points to another info manual
-        #$href = $nodes{$node_name}->{'file'};
-        $href = do_external_href($node_name);
-    }
-    else
-    {
-        echo_error ("Unknown node in menu entry `$node_name'", $line_nr);
-    }
-    return &$Texi2HTML::Config::menu_link($entry, $state, $href, $node, $name, $menu_entry->{'ending'}) unless ($simple);
-    return &$Texi2HTML::Config::simple_menu_link($entry, $state->{'preformatted'}, $href, $node, $name, $menu_entry->{'ending'});
+    # save the element used for the href for the description
+    $menu_entry->{'menu_reference_element'} = $element;
+
+    return &$Texi2HTML::Config::menu_link($entry, $substitution_state, $href, $node_formatted, $name, $menu_entry->{'ending'}) unless ($simple);
+    return &$Texi2HTML::Config::simple_menu_link($entry, $state->{'preformatted'}, $href, $node_formatted, $name, $menu_entry->{'ending'});
 }
 
-sub menu_description($$)
+sub do_menu_description($$)
 {
     my $descr = shift;
     my $state = shift;
     my $menu_entry = $state->{'menu_entry'};
-    my $node_name = normalise_node($menu_entry->{'node'});
 
-    my $element = $nodes{$node_name};
-    if ($element->{'seen'})
-    {
-        if ($element->{'with_section'})
-        {
-            $element = $element->{'with_section'};
-        }
-        if ($Texi2HTML::Config::AVOID_MENU_REDUNDANCY && ($descr ne '') && !$state->{'preformatted'})
-        {
-            $descr = '' if (clean_text($element->{'name'}) eq clean_text($descr));
-        }
-    }
-    return &$Texi2HTML::Config::menu_description($descr, $state);
-}
+    my $element = $menu_entry->{'menu_reference_element'};
 
-sub clean_text($)
-{
-    my $text = shift;
-    $text =~ s/[^\w]//g;
-    return $text;
+    return &$Texi2HTML::Config::menu_description($descr, duplicate_state($state),$element->{'text_nonumber'});
 }
 
 sub do_xref($$$$)
 {
     my $macro = shift;
-    #my $text = shift;
     my $args = shift;
     my $style_stack = shift;
     my $state = shift;
     my $line_nr = shift;
 
     my $result = '';
-    #$text =~ s/\s+/ /gos; # remove useless spaces and newlines
-    #my @args = split(/\s*,\s*/, $text);
     my @args = @$args;
     #print STDERR "DO_XREF: $macro\n";
     my $j = 0;
@@ -7779,7 +7746,6 @@
          $args[$j] = normalise_space($args[$j]);
     #     print STDERR " ($j)$args[$j]\n";
     }
-    #$args[0] = normalise_space($args[0]);
     $args[0] = '' if (!defined($args[0]));
     my $node_texi = normalise_node($args[0]);
     # a ref to a node in an info manual
@@ -7855,9 +7821,9 @@
         my $element = $nodes{$node_texi};
         if ($element and $element->{'seen'})
         {
-            if ($element->{'with_section'})
+            if ($element->{'reference_element'})
             {
-                $element = $element->{'with_section'};
+                $element = $element->{'reference_element'};
             }
             my $file = '';
             if (defined($state->{'element'}))
@@ -7867,12 +7833,12 @@
             else
             {
                 echo_warn ("\@$macro not in text (in anchor, node, section...)", $line_nr);
-                # if Texi2HTML::Config::SPLIT the file is '' which ensures a href with the file
-                # name. if ! Texi2HTML::Config::SPLIT the 2 file will be the same thus there
-                # won't be the file name
+                # if Texi2HTML::Config::SPLIT the file is '' which ensures 
+                # a href with the file name. if ! Texi2HTML::Config::SPLIT 
+                # the 2 file will be the same thus there won't be the file name
                 $file = $element->{'file'} unless ($Texi2HTML::Config::SPLIT);
             }
-	    #print STDERR "SUBHREF in ref `$node_texi': $_";
+	    #print STDERR "SUBHREF in ref to node `$node_texi': $_";
             my $href = href($element, $file);
             my $section = $args[2];
             $section = $args[1] if ($section eq '');
@@ -7880,7 +7846,10 @@
             my $short_name = $section;
             if ($section eq '')
             {
-                $name = $element->{'name'};
+                # FIXME maybe one should use 'text' instead of 'text_nonumber'
+                # However the real fix would be to have an internal_ref call
+                # with more informations 
+                $name = $element->{'text_nonumber'};
                 $short_name = $args[0];
             }
             $result = &$Texi2HTML::Config::internal_ref ($macro, $href, $short_name, $name, $element->{'section'});
@@ -7919,7 +7888,7 @@
 
     my $explanation_lines;
     my $explanation_text;
-    my $explanation_unformatted;
+    my $explanation_simple_format;
 
     if (defined($explanation))
     {
@@ -7933,7 +7902,7 @@
     return '' if ($acronym_texi eq '');
     
     my $with_explanation = 0;
-    my $normalized_text =  cross_manual_line (normalise_node($acronym_texi));
+    my $normalized_text =  cross_manual_line(normalise_node($acronym_texi));
     if (defined($explanation))
     {
         $with_explanation = 1;
@@ -7954,13 +7923,12 @@
               $text .= $line
          }
          $text =~ s/ $//;
-         my $unformatted_state = duplicate_state($state);
-         $unformatted_state->{'unformatted'} = 1;
-         $explanation_unformatted = substitute_line($text, $unformatted_state);
+         my $simple_format_state = duplicate_state($state);
+         $explanation_simple_format = simple_format($simple_format_state,$text);
          $explanation_text = substitute_line($text, duplicate_state($state));
     }
-    return &$Texi2HTML::Config::acronym_like($command, $acronym_texi, substitute_line ($acronym_texi, duplicate_state($state)), 
-       $with_explanation, $explanation_lines, $explanation_text, $explanation_unformatted);
+    return &$Texi2HTML::Config::acronym_like($command, $acronym_texi, substitute_line($acronym_texi, duplicate_state($state)), 
+       $with_explanation, $explanation_lines, $explanation_text, $explanation_simple_format);
 }
 
 sub do_caption_shortcaption($$$$$)
@@ -7984,6 +7952,8 @@
     return '';
 }
 
+# function called when a @float is encountered. Don't do any output
+# but prepare $state->{'float'}
 sub do_float_line($$$$$)
 {
     my $command = shift;
@@ -7998,18 +7968,20 @@
     $style_texi = undef if (defined($style_texi) and $style_texi=~/^\s*$/);
     $label_texi = undef if (defined($label_texi) and $label_texi=~/^\s*$/);
     if (defined($label_texi))
-    {
-         #my $id = cross_manual_line($label_texi);
+    { # the float is considered as a node as it may be a target for refs.
+      # it was entered as a node in the pass_structure and the float
+      # line was parsed at that time
          $state->{'float'} = $nodes{normalise_node($label_texi)};
          #print STDERR "float: $state->{'float'}, $state->{'float'}->{'texi'}\n";
     }
     else 
-    {
+    { # a float without label. It can't be the target for refs.
          $state->{'float'} = { 'float' => 1 };
          if (defined($style_texi))
          {
               $state->{'float'}->{'style_texi'} = normalise_space($style_texi);
-              $state->{'float'}->{'style_id'} = cross_manual_line($style_texi);
+              $state->{'float'}->{'style_id'} = 
+                  cross_manual_line($state->{'float'}->{'style_texi'});
               $state->{'float'}->{'style'} = substitute_line($style_texi);
          }
          #print STDERR "float: (no label) $state->{'float'}\n";
@@ -8022,32 +7994,21 @@
     my $command = shift;
     my $args = shift;
     my @args = @$args;
-    my $style_texi = shift @args;
     my $text_texi = shift @args;
     my $style_stack = shift;
     my $state = shift;
     my $line_nr = shift;
     my $text;
 
-    $style_texi = undef if (defined($style_texi) and $style_texi=~/^\s*$/);
     $text_texi = undef if (defined($text_texi) and $text_texi=~/^\s*$/);
-    if (defined($style_texi) and !defined($text_texi))
-    {
-         $text_texi = $style_texi;
-         $style_texi = undef;
-    }
     if (defined($text_texi))
     {
          $text = substitute_line($text_texi, duplicate_state($state));
          $text =~ s/\s*$//;
     }
-    my $quotation_args = { 'style_texi' => $style_texi, 'text' => $text, 'text_texi' => $text_texi };
-    if (defined($style_texi))
-    {
-         $quotation_args->{'style_id'} = cross_manual_line(normalize_space($style_texi));
-    }
+    my $quotation_args = { 'text' => $text, 'text_texi' => $text_texi };
     push @{$state->{'quotation_stack'}}, $quotation_args;
-    $state->{'prepend_text'} = &$Texi2HTML::Config::quotation_prepend_text($style_texi, $text_texi);
+    $state->{'prepend_text'} = &$Texi2HTML::Config::quotation_prepend_text($text_texi);
     return '';
 }
 
@@ -8061,7 +8022,7 @@
     my $state = shift;
     my $line_nr = shift;
 
-    $state->{'deff'}->{'arguments'} = $arguments;
+    $state->{'deff_line'}->{'arguments'} = $arguments;
     return '';
 }
 
@@ -8085,7 +8046,7 @@
         $from_file = $state->{'element'}->{'file'};
     }
     my %state;
-    initialise_state (\%state); 
+    initialise_state(\%state); 
     if ($Texi2HTML::Config::SEPARATED_FOOTNOTES)
     {
         $state{'element'} = $footnote_element;
@@ -8127,42 +8088,29 @@
     $args[3] = '' if (!defined($args[3]));
     my $image;
     my $file_name;
-    $image = locate_include_file("$base.$args[4]") if (defined($args[4]) and ($args[4] ne ''));
-    if (defined($image))
-    {
-         $file_name = "$base.$args[4]";
-    }
-    elsif ($image = locate_include_file("$base.png"))
-    {
-         $file_name = "$base.png";
-    }
-    elsif ($image = locate_include_file("$base.jpg"))
+    my @file_names = &$Texi2HTML::Config::image_files($base,$args[4]);
+#    $image = locate_include_file("$base.$args[4]") if ($args[4] ne '');
+    foreach my $file (@file_names)
     {
-         $file_name = "$base.jpg";
-    }
-    elsif ($image = locate_include_file("$base.gif"))
-    {
-         $file_name = "$base.gif";
+         if ($image = locate_include_file($file))
+         {
+              $file_name = $file;
+              last;
+         }
     }
-    else 
-    {
-        $image = "$base.jpg";
-        $image = "$base.$args[4]" if (defined($args[4]) and ($args[4] ne ''));
-        $file_name = $image;
-        echo_error ("no image file for $base, (using $image)", $line_nr); 
-        #warn "$ERROR no image file for $base, (using $image) : $text\n"; 
-    } # FIXME use full file name for alt instead of base when there is no
-      # alttext ?
+    $image = '' if (!defined($image));
+    
+    my $alt; 
     if ($args[3] =~ /\S/)
     {
-        # FIXME makeinfo don't do that.
-        $args[3] = do_text($args[3]);
-        $base = $args[3] if ($args[3] =~ /\S/);
-    }
-    return &$Texi2HTML::Config::image(
-    &$Texi2HTML::Config::protect_text($path_to_working_dir . $image),
-    &$Texi2HTML::Config::protect_text($base), 
-    $state->{'preformatted'}, &$Texi2HTML::Config::protect_text($file_name));
+        # makeinfo don't do that. Maybe it should be remove_texi or
+        # simple_format... The raw alt is also given in argument
+        $alt = do_text($args[3]);
+        $alt = $alt if ($alt =~ /\S/);
+    }
+    return &$Texi2HTML::Config::image($path_to_working_dir . $image, $base, 
+        $state->{'preformatted'}, $file_name, $alt, $args[1], $args[2], 
+        $args[3], $args[4], $path_to_working_dir, $image);
 }
 
 sub duplicate_state($)
@@ -8173,7 +8121,12 @@
            'code_style' => $state->{'code_style'}, 
            'keep_texi' => $state->{'keep_texi'}, 
            'keep_nr' => $state->{'keep_nr'}, 
-           'preformatted_stack' => $state->{'preformatted_stack'} 
+           'preformatted_stack' => $state->{'preformatted_stack'},
+           'multiple_pass' => $state->{'multiple_pass'},
+# this is needed for preformatted
+           'command_stack' => [ @{$state->{'command_stack'}}  ],
+           'preformatted_context' => 
+                {'stack_at_beginning' => [ @{$state->{'command_stack'}}  ] }
     };
     return $new_state;
 }
@@ -8186,15 +8139,20 @@
     my $line_nr = shift;
     my $state = shift;
 
+    # we dont expand macros when in ignored environment.
+    return if ($state->{'ignored'});
     my $index = 0;
     foreach my $arg (@$args)
-    { # expand @macros in arguments
+    { # expand @macros in arguments. It is complicated because we must be
+      # carefull not to expand macros in @ignore section or the like, and 
+      # still keep every single piece of text (including the @ignore macros).
         $args->[$index] = substitute_text({'texi' => 1, 'arg_expansion' => 1}, split_lines($arg));
         $index++;
     }
-    my $macrobody = $macros->{$name}->{'Body'};
-    my $formal_args = $macros->{$name}->{'Args'};
-    my $args_index =  $macros->{$name}->{'Args_index'};
+    # retrieve the macro definition
+    my $macrobody = $macros->{$name}->{'body'};
+    my $formal_args = $macros->{$name}->{'args'};
+    my $args_index =  $macros->{$name}->{'args_index'};
     my $i;
     
     die "Bug end_line not defined" if (!defined($end_line));
@@ -8205,7 +8163,6 @@
         print STDERR "# arg($i): $args->[$i]\n" if ($T2H_DEBUG & $DEBUG_MACROS);
     }
     echo_error ("too much arguments for macro $name", $line_nr) if (defined($args->[$i + 1]));
-    #warn "$ERROR too much arguments for macro $name" if (defined($args->[$i + 1]));
     my $result = '';
     while ($macrobody)
     {
@@ -8238,9 +8195,9 @@
         $result .= $macrobody;
         last;
     }
-    #$result .= $end_line;
     my @result = split(/^/m, $result);
-    #my $first_line = shift (@result);
+    # Add the result of the macro expansion back to the input_spool.
+    # Set the macro name if in the outer macro
     if ($state->{'arg_expansion'})
     {
         unshift @{$state->{'spool'}}, (@result, $end_line);
@@ -8260,56 +8217,49 @@
         }
         print STDERR "# macro expansion result end\n";
     }
-    #return $first_line;
 }
 
 sub do_index_summary_file($)
 {
     my $name = shift;
-    my ($Pages, $Entries) = get_index($name);
+    my ($pages, $entries) = get_index($name);
     &$Texi2HTML::Config::index_summary_file_begin ($name, $printed_indices{$name});
-    #open(FHIDX, ">$docu_rdir$docu_name" . "_$name.idx")
-    #   || die "Can't open > $docu_rdir$docu_name" . "_$name.idx for writing: $!\n";
-    #print STDERR "# writing $name index summary in $docu_rdir$docu_name" . "_$name.idx...\n" if $T2H_VERBOSE;
     print STDERR "# writing $name index summary\n" if $T2H_VERBOSE;
 
-    foreach my $key (sort keys %$Entries)
+    foreach my $key (sort keys %$entries)
     {
-        #print FHIDX "$key\t$Entries->{$key}->{href}\n";
-        my $entry = $Entries->{$key};
-        my $label = $entry->{'element'};
-        my $entry_element = $label;
+        my $entry = $entries->{$key};
+        my $indexed_element = $entry->{'element'};
+        my $entry_element = $indexed_element;
         # notice that we use the section associated with a node even when 
         # there is no with_section, i.e. when there is another node preceding
         # the sectionning command.
         # However when it is the Top node, we use the node instead.
-        # (for the Top node, 'section_ref' is himself, and 'as_section' is 
-        # true)
-        $entry_element = $entry_element->{'section_ref'} if ($entry_element->{'node'} and $entry_element->{'section_ref'} and !$entry_element->{'section_ref'}->{'as_section'});
+        # (for the Top node, 'top_as_section' is true)
+        $entry_element = $entry_element->{'section_ref'} if ($entry_element->{'section_ref'} and !$entry_element->{'top_as_section'});
         my $origin_href = $entry->{'file'};
-   #print STDERR "$entry $entry->{'entry'}, real elem $label->{'texi'}, section $entry_element->{'texi'}, real $label->{'file'}, entry file $entry->{'file'}\n";
+   #print STDERR "$entry $entry->{'entry'}, real elem $indexed_element->{'texi'}, section $entry_element->{'texi'}, real $indexed_element->{'file'}, entry file $entry->{'file'}\n";
         if ($entry->{'label'})
         { 
              $origin_href .= '#' . $entry->{'label'};
         }
         else
         {
-            # If the $label element and the $index entry are on the same
-            # file the label is prefered. If they aren't on the same file
-            # the entry id is choosed as it means that the label element
+            # If the $indexed_element element and the $index entry are on 
+            # the same
+            # file the real element is prefered. If they aren't on the same file
+            # the entry id is choosed as it means that the real element
             # and the index entry are separated by a printindex.
-            print STDERR "id undef ($entry) entry: $entry->{'entry'}, label: $label->{'text'}\n"  if (!defined($entry->{'id'}));
-            if ($entry->{'file'} eq $label->{'file'})
+            print STDERR "id undef ($entry) entry: $entry->{'entry'}, label: $indexed_element->{'text'}\n"  if (!defined($entry->{'id'}));
+            if ($entry->{'file'} eq $indexed_element->{'file'})
             {
-                $origin_href .= '#' . $label->{'id'};
+                $origin_href .= '#' . $indexed_element->{'id'};
             }
             else
             {
                 $origin_href .= '#' . $entry->{'id'} ;
             }
         }
-        #print STDERR "SUBHREF in index summary file for $entry_element->{'texi'}\n";
-        #print FHIDX '' . 
         &$Texi2HTML::Config::index_summary_file_entry ($name,
           $key, $origin_href, 
           substitute_line($entry->{'entry'}), $entry->{'entry'},
@@ -8345,7 +8295,7 @@
         my $file = '';
         $file .= $index_element->{'file'} if ($index_element->{'file'} ne $element->{'file'});
         my $index = 0;
-        for my $letter (@{$index_element_item->{'page'}->{Letters}})
+        for my $letter (@{$index_element_item->{'page'}->{'letters'}})
         {
             if ($letter =~ /^[A-Za-z]/)
             {
@@ -8369,44 +8319,44 @@
  
     my $letters = '';
     my $index = 0;
-    for my $letter (@{$page->{'Letters'}})
+    foreach my $letter (@{$page->{'letters'}})
     {
        my $entries = '';
-       for my $entry (@{$page->{'EntriesByLetter'}->{$letter}})
+       foreach my $entry (@{$page->{'entries_by_letter'}->{$letter}})
        {
-           my $label = $entry->{'element'};
-           my $entry_element = $label;
+           my $indexed_element = $entry->{'element'};
+           my $entry_element = $indexed_element;
            # notice that we use the section associated with a node even when 
            # there is no with_section, i.e. when there is another node preceding
            # the sectionning command.
            # However when it is the Top node, we use the node instead.
-           # (for the Top node, 'section_ref' is himself, and 'as_section' is 
-           # true)
-           $entry_element = $entry_element->{'section_ref'} if ($entry_element->{'node'} and $entry_element->{'section_ref'} and !$entry_element->{'section_ref'}->{'as_section'});
+           # (for the Top node, 'top_as_section' is true)
+           $entry_element = $entry_element->{'section_ref'} if ($entry_element->{'section_ref'} and !$entry_element->{'top_as_section'});
            my $origin_href = '';
            $origin_href = $entry->{'file'} if ($Texi2HTML::Config::SPLIT and $entry->{'file'} ne $element->{'file'});
-	   #print STDERR "$entry $entry->{'entry'}, real elem $label->{'texi'}, section $entry_element->{'texi'}, real $label->{'file'}, entry file $entry->{'file'}\n";
+	   #print STDERR "$entry $entry->{'entry'}, real elem $indexed_element->{'texi'}, section $entry_element->{'texi'}, real $indexed_element->{'file'}, entry file $entry->{'file'}\n";
            if ($entry->{'label'})
            { 
                $origin_href .= '#' . $entry->{'label'};
            }
 	   else
            {
-               # If the $label element and the $index entry are on the same
-               # file the label is prefered. If they aren't on the same file
-               # the entry id is choosed as it means that the label element
-               # and the index entry are separated by a printindex.
-               print STDERR "id undef ($entry) entry: $entry->{'entry'}, label: $label->{'text'}\n"  if (!defined($entry->{'id'}));
-               if ($entry->{'file'} eq $label->{'file'})
+               # If the $indexed_element element and the $index entry are 
+               # in the same file the indexed_element is prefered. If they 
+               # aren't in the same file the entry id is choosed as it means 
+               # that the indexed_element element and the index entry are 
+               # separated by a printindex.
+               print STDERR "id undef ($entry) entry: $entry->{'entry'}, label: $indexed_element->{'text'}\n"  if (!defined($entry->{'id'}));
+               if ($entry->{'file'} eq $indexed_element->{'file'})
                {
-                   $origin_href .= '#' . $label->{'id'};
+                   $origin_href .= '#' . $indexed_element->{'id'};
                }
                else
                {
                    $origin_href .= '#' . $entry->{'id'} ;
                }
            }
-	   #print STDERR "SUBHREF in index for $entry_element->{'texi'}\n";
+	   #print STDERR "SUBHREF in index entry `$entry->{'entry'}' for `$entry_element->{'texi'}'\n";
            $entries .= &$Texi2HTML::Config::index_entry ($origin_href, 
                      substitute_line($entry->{'entry'}),
                      href($entry_element, $element->{'file'}),
@@ -8423,22 +8373,25 @@
 # Doesn't protect html
 sub remove_texi(@)
 {
-    return substitute_text ({ 'remove_texi' => 1, 'no_protection' => 1 }, @_);
+    return substitute_text ({ 'remove_texi' => 1}, @_);
 }
 
 # Same as remove texi but protect text and use special maps for @-commands
-sub unformatted_text($@)
+sub simple_format($@)
 {
     my $state = shift;
     $state = {} if (!defined($state));
     $state->{'remove_texi'} = 1;
-    $simple_map_texi_ref = \%Texi2HTML::Config::unformatted_text_simple_map_texi;
-    $style_map_texi_ref = \%Texi2HTML::Config::unformatted_text_style_map_texi;
-    $texi_map_ref = \%Texi2HTML::Config::unformatted_text_texi_map;
-    my $text = substitute_text ($state, @_);
-    $simple_map_texi_ref = \%Texi2HTML::Config::simple_map_texi;
-    $style_map_texi_ref = \%Texi2HTML::Config::style_map_texi;
-    $texi_map_ref = \%Texi2HTML::Config::texi_map;
+    $state->{'simple_format'} = 1;
+    # WARNING currently it is only used for lines. It may change in the future.
+    $state->{'no_paragraph'} = 1;
+    $::simple_map_texi_ref = \%Texi2HTML::Config::simple_format_simple_map_texi;
+    $::style_map_texi_ref = \%Texi2HTML::Config::simple_format_style_map_texi;
+    $::texi_map_ref = \%Texi2HTML::Config::simple_format_texi_map;
+    my $text = substitute_text($state, @_);
+    $::simple_map_texi_ref = \%Texi2HTML::Config::simple_map_texi;
+    $::style_map_texi_ref = \%Texi2HTML::Config::style_map_texi;
+    $::texi_map_ref = \%Texi2HTML::Config::texi_map;
     return $text;
 }
 
@@ -8457,8 +8410,8 @@
          my $item = pop @$stack;
          my $element = $state->{'element'};
          $element = $state->{'node_ref'} unless ($element);
-         #print STDERR "enter_table_index_entry $item->{'text'}";
-         enter_index_entry($index, $line_nr, $item->{'text'}, $state->{'place'}, $element, 0);
+         enter_index_entry($index, $line_nr, $item->{'text'}, 
+            $state->{'place'}, $element, 0, $state->{'table_stack'}->[-1]);
          add_prev($text, $stack, "\@$macro" . $item->{'text'});
     }
 }
@@ -8478,58 +8431,35 @@
     {
         # scan_texi
         #print STDERR "WHILE:$_";
+        #print STDERR "ARG_EXPANSION: $state->{'arg_expansion'}\n" if ($state->{'arg_expansion'});
         #dump_stack($text, $stack, $state);
+        #print STDERR "ifvalue_inside $state->{'ifvalue_inside'}\n";
 
-        # In ignored region
-        if ($state->{'ignored'})
-        {
-            my $line;
-            if (s/^(.*?\@end\s+$state->{'ignored'})//)
-            {
-                 $line = $1;
-                 if (s/^$// or s/(\s+)//)
-                 {
-                     $line = $line . $1 if (defined($1));
-                 }
-                 elsif (/[^\@]/)
-                 {
-                      $_ .= $line;
-                      $line = undef;
-                 }
-            }
-            if (defined($line))
-            {
-                 delete $state->{'ignored'};
-                 #dump_stack($text, $stack, $state);
-                 # MACRO_ARG => keep ignored text
-                 if ($state->{'arg_expansion'})
-                 {
-                     #add_prev ($text, $stack, $1);
-                     add_prev ($text, $stack, $line);
-                     next;
-                 }
-                 return if /^\s*$/o;
-                 next;
-            }
-            add_prev ($text, $stack, $_) if ($state->{'arg_expansion'});
-            return;
-        }
+
+        # first we handle special cases:
+        # macro definition: $state->{'macro_inside'}
+        # macro arguments:  $state->{'macro_name'}
+        # raw format:       $state->{'raw'}
+        # @verb:            $state->{'verb'}
+        # ignored:          $state->{'ignored'}
+        # and then the remaining text/macros.
 
         # in macro definition
-        if (defined($state->{'macro'}))
+        if ($state->{'macro_inside'})
         {
             if (s/^([^\\\@]*\\)//)
-            {# I believe it is correct, although makeinfo don't do that.
-                 $state->{'macro'}->{'Body'} .= $1;
+            {# protected character or @end macro
+                 $state->{'macro'}->{'body'} .= $1 unless ($state->{'ignored'});
                  if (s/^\\//)
                  {
-                      $state->{'macro'}->{'Body'} .= '\\';
+                      $state->{'macro'}->{'body'} .= '\\' unless ($state->{'ignored'});
                       next;
                  }
+                 # I believe it is correct, although makeinfo don't do that.
                  elsif (s/^(\@end\sr?macro)$//o or s/^(\@end\sr?macro\s)//o
                       or s/^(\@r?macro\s+\w+\s*.*)//o) 
                  {
-                      $state->{'macro'}->{'Body'} .= $1;
+                      $state->{'macro'}->{'body'} .= $1 unless ($state->{'ignored'});
                       next;
                  }
             }
@@ -8537,14 +8467,14 @@
             if (s/^(\@end\sr?macro)$//o or s/^(\@end\sr?macro\s+)//o)
             {
                  $state->{'macro_inside'}--;
+                 next if ($state->{'ignored'});
                  if ($state->{'macro_inside'})
                  {
-                     $state->{'macro'}->{'Body'} .= $1;
+                     $state->{'macro'}->{'body'} .= $1;
                      next;
                  }
-                 #$state->{'macro'}->{'Body'} .= $1 if defined($1) ;
-                 chomp $state->{'macro'}->{'Body'};
-                 print STDERR "# end macro def. Body:\n$state->{'macro'}->{'Body'}"
+                 chomp $state->{'macro'}->{'body'};
+                 print STDERR "# end macro def. Body:\n$state->{'macro'}->{'body'}"
                      if ($T2H_DEBUG & $DEBUG_MACROS);
                  delete $state->{'macro'};
                  return if (/^\s*$/);
@@ -8552,44 +8482,49 @@
             }
             elsif(/^(\@r?macro\s+\w+\s*.*)/)
             {
-                 $state->{'macro'}->{'Body'} .= $_;
+                 $state->{'macro'}->{'body'} .= $_ unless ($state->{'ignored'});
                  $state->{'macro_inside'}++;
                  return;
             }
             elsif (s/^\@(.)//)
             {
-                 $state->{'macro'}->{'Body'} .= '@' . $1;
+                 $state->{'macro'}->{'body'} .= '@' . $1 unless ($state->{'ignored'});
                  next;
             }
             elsif (s/^\@//)
             {
-                 $state->{'macro'}->{'Body'} .= '@';
+                 $state->{'macro'}->{'body'} .= '@' unless ($state->{'ignored'});
                  next;
             }
             else
             {
                  s/([^\@\\]*)//;
-                 $state->{'macro'}->{'Body'} .= $1 if (defined($1));
+                 if ($state->{'ignored'})
+                 {
+                     return if (/^$/);
+                     next;
+                 }
+                 $state->{'macro'}->{'body'} .= $1 if (defined($1));
                  if (/^$/)
                  {
-                      $state->{'macro'}->{'Body'} .= $_;
+                      $state->{'macro'}->{'body'} .= $_;
                       return;
                  }
                  next;
-                 #$state->{'macro'}->{'Body'} .= $_ if defined($_) ;
-                 #return;
             }
         }
-        # in macro arguments parsing/expansion
+        # in macro arguments parsing/expansion. Here \ { } and , if this is a
+        # multi args macro have a signification, the remaining is passed 
+        # unmodified
         if (defined($state->{'macro_name'}))
         {
             my $special_chars = quotemeta ('\{}');
             my $multi_args = 0;
-            my $formal_args = $macros->{$state->{'macro_name'}}->{'Args'};
+            my $formal_args = $macros->{$state->{'macro_name'}}->{'args'};
             $multi_args = 1 if ($#$formal_args >= 1);
             $special_chars .= quotemeta(',') if ($multi_args);
             if ($state->{'macro_args'}->[-1] eq '')
-            {
+            {# remove space at the very beginning
                 s/^\s*//o;
             }
             if (s/^([^$special_chars]*)([$special_chars])//)
@@ -8609,10 +8544,17 @@
                     }
                 }
                 elsif ($2 eq ',')
-                { # separate args
-                    print STDERR "# macro call: new arg\n" if ($T2H_DEBUG & $DEBUG_MACROS);
-                    s/^\s*//o;
-                    push @{$state->{'macro_args'}}, '';
+                { # in texinfo 4.8.90 a comma in braces is protected
+                    if ($state->{'macro_depth'} > 1)
+                    {
+                        $state->{'macro_args'}->[-1] .= ',';
+                    }
+                    else
+                    { # separate args
+                        print STDERR "# macro call: new arg\n" if ($T2H_DEBUG & $DEBUG_MACROS);
+                        s/^\s*//o;
+                        push @{$state->{'macro_args'}}, '';
+                    }
                 }
                 elsif ($2 eq '}')
                 { # balanced } ends the macro call, otherwise it is in the arg
@@ -8644,7 +8586,6 @@
             $state->{'macro_args'}->[-1] .= $_;
             return;
         }
-
         # in a raw format, verbatim, tex or html
         if ($state->{'raw'}) 
         {
@@ -8660,21 +8601,27 @@
             }
 	    
             if (s/^(.*?)(\@end\s$tag)$// or s/^(.*?)(\@end\s$tag\s)//)
-            {
+            {# we add it even if 'ignored', it'll be discarded when there is
+             # the @end
                 add_prev ($text, $stack, $1);
                 my $end = $2;
                 my $style = pop @$stack;
                 if ($style->{'text'} !~ /^\s*$/ or $state->{'arg_expansion'})
-                {
+                # FIXME if 'arg_expansion' and also 'ignored' is true, 
+                # theoretically we should keep
+                # what is in the raw format however
+                # it will be removed later anyway 
+                {# ARG_EXPANSION
                     my $after_macro = '';
                     $after_macro = ' ' unless (/^\s*$/);
-                    add_prev ($text, $stack, $style->{'text'} . $end . $after_macro);
+                    add_prev ($text, $stack, $style->{'text'} . $end . $after_macro) unless ($state->{'ignored'});
                     delete $state->{'raw'};
                 }
                 next;
             }
             else
-            {
+            {# we add it even if 'ignored', it'll be discarded when there is 
+             # the @end
                  add_prev ($text, $stack, $_);
                  last;
             }
@@ -8683,27 +8630,74 @@
         # in a @verb{ .. } macro
         if (defined($state->{'verb'}))
         {
+            #dump_stack($text, $stack, $state);
             my $char = quotemeta($state->{'verb'});
+            #print STDERR "VERB $char\n";
             if (s/^(.*?)$char\}/\}/)
-            {
+            {# we add it even if 'ignored', it'll be discarded when closing
                  add_prev($text, $stack, $1 . $state->{'verb'});
                  $stack->[-1]->{'text'} = $state->{'verb'} . $stack->[-1]->{'text'};
                  delete $state->{'verb'};
                  next;
             }
             else
-            {
+            {# we add it even if 'ignored', it'll be discarded when closing
                  add_prev($text, $stack, $_);
                  last;
             }
         }
+        # In ignored region
+        if ($state->{'ignored'})
+        {
+            #print STDERR "IGNORED(ifvalue($state->{'ifvalue_inside'})): $state->{'ignored'}\n";
+            if (/^.*?\@end(\s+)([a-zA-Z]\w+)/)
+            {
+                if ($2 eq $state->{'ignored'})
+                {
+                    s/^(.*?\@end)(\s+)([a-zA-Z]\w+)//; 
+                    my $end_ignore = $1.$2.$3;
+                    if (($state->{'ifvalue_inside'}) and $state->{'ignored'} eq $state->{'ifvalue'})
+                    {
+                         if ($state->{'ifvalue_inside'} == 1)
+                         {# closing still opened @-commands with braces
+                             pop (@$stack) while (@$stack and $stack->[-1]->{'style'} ne 'ifvalue')
+                         }
+                         pop (@$stack);
+                         $state->{'ifvalue_inside'}--;
+                    }
+                    $state->{'ignored'} = undef;
+                    delete $state->{'ignored'};
+                    # We are stil in the ignored ifset or ifclear section
+                    $state->{'ignored'} = $state->{'ifvalue'} if ($state->{'ifvalue_inside'});
+                    #dump_stack($text, $stack, $state);
+                    # MACRO_ARG => keep ignored text
+                    if ($state->{'arg_expansion'})
+                    {# this may not be very usefull as it'll be remove later
+                        add_prev ($text, $stack, $end_ignore);
+                        next;
+                    }
+                    return if /^\s*$/o;
+                    next;
+                }
+            }
+            add_prev ($text, $stack, $_) if ($state->{'arg_expansion'});
+            # we could theoretically continue for ignored commands other
+            # than ifset or ifclear, however it isn't usefull.
+            return unless ($state->{'ifvalue_inside'} and ($state->{'ignored'} eq $state->{'ifvalue'}));
+        }
+
 	
         # an @end tag
-        if (s/^([^{}@]*)\@end(\s+)([a-zA-Z]\w*)//)
+        # macro_regexp
+        if (s/^([^{}@]*)\@end(\s+)([a-zA-Z][\w-]*)//)
         {
-            add_prev($text, $stack, $1);
+            my $leading_text = $1;
             my $space = $2;
             my $end_tag = $3;
+            # when 'ignored' we don't open environments that aren't associated
+            # with ignored regions, so we don't need to close them.
+            next if ($state->{'ignored'});# ARG_EXPANSION
+            add_prev($text, $stack, $leading_text);
             if (defined($state->{'text_macro_stack'})
                and @{$state->{'text_macro_stack'}}
                and ($end_tag eq $state->{'text_macro_stack'}->[-1]))
@@ -8726,25 +8720,26 @@
                 echo_error ("\@end $end_tag without corresponding element", $line_nr);
             }
             else
-            {
+            {# ARG_EXPANSION
                 add_prev($text, $stack, "\@end${space}$end_tag");
             }
             next;
         }
-        elsif (s/^([^{}@]*)\@(["'~\@\}\{,\.!\?\s\*\-\^`=:\|\/])//o or s/^([^{}@]*)\@([a-zA-Z]\w*)([\s\{\}\@])/$3/o or s/^([^{}@]*)\@([a-zA-Z]\w*)$//o)
-        {
-            add_prev($text, $stack, $1);
+        # macro_regexp
+        elsif (s/^([^{}@]*)\@(["'~\@\}\{,\.!\?\s\*\-\^`=:\|\/])//o or s/^([^{}@]*)\@([a-zA-Z][\w-]*)([\s\{\}\@])/$3/o or s/^([^{}@]*)\@([a-zA-Z][\w-]*)$//o)
+        {# ARG_EXPANSION
+            add_prev($text, $stack, $1) unless $state->{'ignored'};
             my $macro = $2;
 	    #print STDERR "MACRO $macro\n";
-            $state->{'bye'} = 1 if ($macro eq 'bye');
+            # handle skipped @-commands
+            $state->{'bye'} = 1 if ($macro eq 'bye' and !$state->{'ignored'} and !$state->{'arg_expansion'});
             if (defined($Texi2HTML::Config::misc_command{$macro}) and 
                  !$Texi2HTML::Config::misc_command{$macro}->{'texi'}
                  and $macro ne 'documentencoding')
-            {
+            {# ARG_EXPANSION
                  my ($line, $args);
                  ($_, $line, $args) = preserve_command($_, $macro);
-                 add_prev ($text, $stack, $line); 
-                 next;
+                 add_prev ($text, $stack, "\@$macro" . $line) unless $state->{'ignored'}; 
             }
             # pertusus: it seems that value substitution are performed after
             # macro argument expansions: if we have 
@@ -8755,133 +8750,156 @@
             # in macro definitions
 
             # track variables
-            my $value_macro = 1;
-            if ($macro eq 'set' and  s/^(\s+)($VARRE)(\s+)(.*)$//o)
+            elsif($macro eq 'set' or $macro eq 'clear')
             {
-                if ($state->{'arg_expansion'})
+                if ($macro eq 'set')
                 {
-                    my $line = "\@$macro" . $1.$2.$3;
-                    $line .= $4 if (defined($4));
-                    add_prev($text, $stack, $line); 
-                    next;
+                    if (s/^(\s+)($VARRE)(\s+)(.*)$//o)
+                    {
+                        if ($state->{'arg_expansion'})
+                        {
+                            my $line = "\@$macro" . $1.$2.$3;
+                            $line .= $4 if (defined($4));
+                            add_prev($text, $stack, $line); 
+                            next;
+                        }
+                        next if $state->{'ignored'};
+                        $value{$2} = $4;
+                    }
+                    else
+                    {
+                        echo_warn ("Missing argument for \@$macro", $line_nr);
+                    }
                 }
-                $value{$2} = $4;
-            }
-            elsif ($macro eq 'clear' and s/^(\s+)($VARRE)//o)
-            {
-                if ($state->{'arg_expansion'})
+                elsif ($macro eq 'clear')
                 {
-                    add_prev($text, $stack, "\@$macro" . $1 . $2);
-                    next; 
+                    if (s/^(\s+)($VARRE)//o)
+                    {
+                        if ($state->{'arg_expansion'})
+                        {
+                            add_prev($text, $stack, "\@$macro" . $1 . $2);
+                            next; 
+                        }
+                        next if $state->{'ignored'};
+                        delete $value{$2};
+                    }
+                    else
+                    {
+                        echo_warn ("Missing argument for \@$macro", $line_nr);
+                    }
                 }
-                delete $value{$2};
-            }
-            else
-            {
-                 $value_macro = 0;
-            }
-            if ($value_macro)
-            {
                 return if (/^\s*$/);
-                next;
-            }
-	    
-            if ($macro =~ /^r?macro$/)
+	    }
+            elsif ($macro =~ /^r?macro$/)
             { #FIXME what to do if 'arg_expansion' is true (ie within another
-              # macro call arguments ?
-                if (/^\s+(\w+)\s*(.*)/)
+              # macro call arguments?
+                if (/^\s+(\w[\w-]*)\s*(.*)/)
                 {
                     my $name = $1;
-                    if (exists($macros->{$name}))
+                    unless ($state->{'ignored'})
                     {
-                         echo_warn ("macro `$name' allready defined " . 
-                             format_line_number($macros->{$name}->{'line_nr'}) . " redefined", $line_nr);
+                         if (exists($macros->{$name}))
+                         {
+                             echo_warn ("macro `$name' allready defined " . 
+                                 format_line_number($macros->{$name}->{'line_nr'}) . " redefined", $line_nr);
+                         }
+                         
                     }
                     $state->{'macro_inside'} = 1;
+                    next if ($state->{'ignored'});
+                    # if in 'arg_expansion' we really want to take into account
+                    # that we are in an ignored ifclear.
                     my @args = ();
                     @args = split(/\s*,\s*/ , $1)
                        if ($2 =~ /^\s*{\s*(.*?)\s*}\s*/);
                     # keep the context information of the definition
                     $macros->{$name}->{'line_nr'} = { 'file_name' => $line_nr->{'file_name'}, 
                          'line_nr' => $line_nr->{'line_nr'}, 'macro' => $line_nr->{'macro'} } if (defined($line_nr));
-                    $macros->{$name}->{'Args'} = \@args;
+                    $macros->{$name}->{'args'} = \@args;
                     my $arg_index = 0;
                     my $debug_msg = '';
                     foreach my $arg (@args)
                     { # when expanding macros, the argument index is retrieved
-                      # with Args_index
-                        $macros->{$name}->{'Args_index'}->{$arg} = $arg_index;
+                      # with args_index
+                        $macros->{$name}->{'args_index'}->{$arg} = $arg_index;
                         $debug_msg .= "$arg($arg_index) ";
                         $arg_index++;
                     }
-                    $macros->{$name}->{'Body'} = '';
+                    $macros->{$name}->{'body'} = '';
                     $state->{'macro'} = $macros->{$name};
                     print STDERR "# macro def $name: $debug_msg\n"
-                     if ($T2H_DEBUG & $DEBUG_MACROS);
+                         if ($T2H_DEBUG & $DEBUG_MACROS);
                 }
                 else
-                {
-                    echo_error ("Bad macro defintion $_", $line_nr);
-                    #warn "$ERROR Bad macro defintion $_";
+                {# it means we have a macro without a name
+                    echo_error ("Macro definition without macro name $_", $line_nr)
+                        unless ($state->{'ignored'});
                 }
                 return;
             }
             elsif (defined($text_macros{$macro}))
             {
                 my $tag;
-                ($_, $tag) = do_text_macro ($macro, $_, $state, $line_nr);
+                ($_, $tag) = do_text_macro($macro, $_, $state, $stack, $line_nr); 
                 # if it is a raw formatting command or a menu command
-                # we must keep it for later
+                # we must keep it for later, unless we are in an 'ignored'.
+                # if in 'arg_expansion' we keep everything.
                 my $macro_kept;
-                if ($state->{'raw'} or (($macro eq 'menu') and $text_macros{'menu'}) or (exists($region_lines{$macro})) or $state->{'arg_expansion'})
+                if ((($state->{'raw'} or (($macro eq 'menu') and $text_macros{'menu'}) or (exists($region_lines{$macro}))) and !$state->{'ignored'}) or $state->{'arg_expansion'})
                 {
                     add_prev($text, $stack, $tag);
                     $macro_kept = 1;
                 }
-                if ($state->{'raw'})
-                {
-                    push @$stack, { 'style' => $macro, 'text' => '' };
-                }
-                next if $macro_kept;
                 #dump_stack ($text, $stack, $state);
+                next if $macro_kept;
                 return if (/^\s*$/);
             }
-            elsif ($macro eq 'value')
+            elsif ($macro eq 'documentencoding')
             {
-                if (s/^{($VARRE)}//)
-                {
-                    if ($state->{'arg_expansion'})
-                    {
-                        add_prev($text, $stack, "\@$macro" . '{' . $1 . '}');
-                        next;
-                    }
-                    $_ = get_value($1) . $_;
-                }
-                else
+                my $spaces = '';
+                my $encoding = '';
+                if (s/(\s+)([0-9\w\-]+)//)
                 {
-                    if ($state->{'arg_expansion'})
-                    {
-                        add_prev($text, $stack, "\@$macro");
-                        next;
+                    $spaces = $1;
+                    $encoding = $2;
+                    next if ($state->{'ignored'});
+                    if (!$state->{'arg_expansion'} and !$state->{'ignored'})
+                    {
+                        $Texi2HTML::Config::DOCUMENT_ENCODING = $encoding;
+                        my $from_encoding = encoding_alias($encoding);
+                        $Texi2HTML::Config::IN_ENCODING = $from_encoding if
+                            defined($from_encoding);
+                        if (defined($from_encoding) and $Texi2HTML::Config::USE_UNICODE)
+                        {
+                            foreach my $file (@fhs)
+                            {
+                                binmode($file->{'fh'}, ":encoding($from_encoding)");
+                            }
+                        }
                     }
-                    echo_error ("bad \@value macro", $line_nr);
-                    #warn "$ERROR bad \@value macro";
-                }
+                }# ARG_EXPANSION
+                add_prev($text, $stack, "\@$macro" . $spaces . $encoding) unless ($state->{'ignored'});
             }
             elsif ($macro eq 'definfoenclose')
             {
+                # FIXME if 'ignored' or 'arg_expansion' maybe we could parse
+                # the args anyway and don't take away the whole line?
+
+                # as in the makeinfo doc 'definfoenclose' may override
+                # texinfo @-commands like @i. It is what we do here.
                 if ($state->{'arg_expansion'})
                 {
                     add_prev($text, $stack, "\@$macro" . $_);
                     return;
                 }
+                return if ($state->{'ignored'});
                 if (s/^\s+([a-z]+)\s*,\s*([^\s]+)\s*,\s*([^\s]+)//)
                 {
-                     $info_enclose{$1} = [ $2, $3 ];
+                    $info_enclose{$1} = [ $2, $3 ];
                 }
                 else
                 {
-                     echo_error("Bad \@$macro", $line_nr);
+                    echo_error("Bad \@$macro", $line_nr);
                 }
                 return if (/^\s*$/);
                 s/^\s*//;
@@ -8893,10 +8911,13 @@
                     add_prev($text, $stack, "\@$macro" . $_);
                     return;
                 }
+                return if ($state->{'ignored'});
                 #if (s/^\s+([\/\w.+-]+)//o)
                 if (s/^(\s+)(.*)//o)
                 {
-                    my $file = locate_include_file($2);
+                    my $file_name = $2;
+                    $file_name =~ s/\s*$//;
+                    my $file = locate_include_file($file_name);
                     if (defined($file))
                     {
                         open_file($file, $line_nr);
@@ -8904,52 +8925,72 @@
                     }
                     else
                     {
-                        echo_error ("Can't find $2, skipping", $line_nr);
-                        #warn "$ERROR Can't find $1, skipping\n";
+                        echo_error ("Can't find $file_name, skipping", $line_nr);
                     }
                 }
                 else
                 {
                     echo_error ("Bad include line: $_", $line_nr);
                     return;
-                } # makeinfo remove the @include but not the end of line
-                # FIXME verify if it is right
-                #return if (/^\s*$/);
+                } 
+                return;
             }
-            elsif ($macro eq 'documentencoding')
+            elsif ($macro eq 'value')
             {
-                if (s/(\s+)([0-9\w\-]+)//)
+                if (s/^{($VARRE)}//)
                 {
-                    my $encoding = $2;
-                    $Texi2HTML::Config::DOCUMENT_ENCODING = $encoding;
-                    $from_encoding = set_encoding($encoding);
-                    if (defined($from_encoding))
+                    my $value = $1;
+                    if ($state->{'arg_expansion'})
                     {
-                        foreach my $file (@fhs)
-                        {
-                            binmode($file->{'fh'}, ":encoding($from_encoding)");
-                        }
+                        add_prev($text, $stack, "\@$macro" .'{'. $value .'}');
+                        next;
+                    }
+                    next if ($state->{'ignored'});
+                    my $expansion = "No value for $value";
+                    $expansion = $value{$value} if (defined($value{$value}));
+                    $_ = $expansion . $_;
+                }
+                else
+                {
+                    if ($state->{'arg_expansion'})
+                    {
+                        add_prev($text, $stack, "\@$macro");
+                        next;
                     }
+                    next if ($state->{'ignored'});
+                    echo_error ("bad \@value macro", $line_nr);
                 }
-                add_prev($text, $stack, "\@$macro" . $1 . $2);
             }
             elsif ($macro eq 'unmacro')
             { #FIXME with 'arg_expansion' should it be passed unmodified ?
-                delete $macros->{$1} if (s/^\s+(\w+)//);
+                if ($state->{'ignored'})
+                {
+                    s/^\s+(\w+)//;
+                }
+                else
+                {
+                    delete $macros->{$1} if (s/^\s+(\w+)//);
+                }
                 return if (/^\s*$/);
                 s/^\s*//;
             }
             elsif (exists($macros->{$macro}))
-            {
-                my $ref = $macros->{$macro}->{'Args'};
+            {# it must be before the handling of {, otherwise it is considered
+             # to be regular texinfo @-command. Maybe it could be placed higher
+             # if we want user defined macros to override texinfo @-commands
+
+             # in 'ignored' we parse macro defined args anyway as it removes 
+             # some text, but we don't expand the macro
+
+                my $ref = $macros->{$macro}->{'args'};
                 # we remove any space/new line before the argument
                 if (s/^\s*{\s*//)
-                {
+                { # the macro has args
                     $state->{'macro_args'} = [ "" ];
                     $state->{'macro_name'} = $macro;
                     $state->{'macro_depth'} = 1;
                 }
-                elsif ($#$ref >= 1)
+                elsif (($#$ref >= 1) or ($#$ref <0))
                 { # no brace -> no arg
                     $_ = expand_macro ($macro, [], $_, $line_nr, $state);
                     return;
@@ -8964,14 +9005,18 @@
             elsif ($macro eq ',')
             {# the @, causes problems when `,' separates things (in @node, @ref)
                 $_ = "\@m_cedilla" . $_;
-            }
+            } # handling of @, must be done before handling of {
             elsif (s/^{//)
-            {
+            {# we add nested commands in a stack. verb is also on the stack
+             # but handled specifically.
+             # we add it the comands even in 'ignored' as their result is 
+             # discarded when the closing brace appear, or the ifset or 
+             # iclear is closed.
                 if ($macro eq 'verb')
                 {
                     if (/^$/)
                     {
-                        echo_error ("verb at end of line", $line_nr);
+                        echo_error ("without associated character", $line_nr);
                         #warn "$ERROR verb at end of line";
                     }
                     else
@@ -8984,22 +9029,29 @@
             }
             else
             {
-                add_prev($text, $stack, "\@$macro");
+                add_prev($text, $stack, "\@$macro") unless($state->{'ignored'});
             }
             next;
         }
         #elsif(s/^([^{}@]*)\@(.)//o)
         elsif(s/^([^{}@]*)\@([^\s\}\{\@]*)//o)
-        {
-            # No need to warn here it is done later
-            add_prev($text, $stack, $1 . "\@$2");
+        {# ARG_EXPANSION
+            # No need to warn here for @ followed by a character that
+            # is not in any @-command and it is done later
+            add_prev($text, $stack, $1 . "\@$2") unless($state->{'ignored'});
             next;
         }
         elsif (s/^([^{}]*)([{}])//o)
         {
-            add_prev($text, $stack, $1);
+         # in ignored section we cannot be sure that there is an @-command
+         # allready opened so we must discard the text.
+         # ARG_EXPANSION
+            add_prev($text, $stack, $1) unless($state->{'ignored'});
             if ($2 eq '{')
             {
+              # this empty style is for a lone brace.
+              # we add it even in 'ignored' as it is discarded when the closing
+              # brace appear, or the ifset or iclear is closed.
                 push @$stack, { 'style' => '', 'text' => '' };
             }
             else
@@ -9010,42 +9062,111 @@
                     my $result;
                     if (($style->{'style'} ne '') and exists($info_enclose{$style->{'style'}}) and !$state->{'arg_expansion'})
                     {
-                         $result = $info_enclose{$style->{'style'}}->[0] . $style->{'text'} . $info_enclose{$style->{'style'}}->[1];      
+                        $result = $info_enclose{$style->{'style'}}->[0] . $style->{'text'} . $info_enclose{$style->{'style'}}->[1];      
                     }              
                     elsif ($style->{'style'} ne '')
                     {
-                         $result = '@' . $style->{'style'} . '{' . $style->{'text'} . '}';
+                        $result = '@' . $style->{'style'} . '{' . $style->{'text'} . '}';
                     }
                     else
                     {
                         $result = '{' . $style->{'text'};
                         # don't close { if we are closing stack as we are not 
-                        # sure this is a licit { ... } construct.
+                        # sure this is a { ... } construct. i.e. we are
+                        # not sure that the user properly closed the matching
+                        # brace, so we don't close it ourselves
                         $result .= '}' unless ($state->{'close_stack'} or $state->{'arg_expansion'});
                     }
+                    if ($state->{'ignored'})
+                    {# ARG_EXPANSION
+                        print STDERR "# Popped `$style->{'style'}' in ifset/ifclear\n" if ($T2H_DEBUG);
+                        next;
+                    }
                     add_prev ($text, $stack, $result);
                     #print STDERR "MACRO end $style->{'style'} remaining: $_";
                     next;
                 }
                 else
-                {
-                    # we warn in the last pass
-                    #echo_error ("'}' without opening '{', before: $_", $line_nr);
-                    #warn "$ERROR '}' without opening '{' line: $line";
-                    add_prev ($text, $stack, '}');
+                {# ARG_EXPANSION
+                    # we warn in the last pass that there is a } without open
+                    add_prev ($text, $stack, '}') unless($state->{'ignored'});
                 }
             }
         }
         else
-        {
+        {# ARG_EXPANSION
             #print STDERR "END_LINE $_";
-            add_prev($text, $stack, $_);
+            add_prev($text, $stack, $_) unless($state->{'ignored'});
             last;
         }
     }
+    return undef if ($state->{'ignored'});
     return 1;
 }
 
+sub close_structure_command($$$$)
+{
+    my $cmd_ref = shift;
+    my $state = shift;
+    my $unclosed_commands = shift;
+    my $line_nr = shift;
+    my $result;
+    
+    if ($cmd_ref->{'style'} eq 'anchor')
+    {
+        my $anchor = $cmd_ref->{'text'};
+        $anchor = normalise_node($anchor);
+        if ($nodes{$anchor})
+        {
+            echo_error ("Duplicate node for anchor found: $anchor", $line_nr);
+            return '';
+        }
+        $anchor_num++;
+        $nodes{$anchor} = { 'anchor' => 1, 'seen' => 1, 'texi' => $anchor, 'id' => 'ANC' . $anchor_num};
+        push @{$state->{'place'}}, $nodes{$anchor};
+    }
+    elsif ($cmd_ref->{'style'} eq 'footnote')
+    {
+        if ($Texi2HTML::Config::SEPARATED_FOOTNOTES)
+        {
+            $state->{'element'} = $state->{'footnote_element'};
+            $state->{'place'} = $state->{'footnote_place'};
+        }
+    }
+    elsif ($cmd_ref->{'style'} eq 'caption' or $cmd_ref->{'style'}
+       eq 'shortcaption' and $state->{'float'})
+    {
+        my @texi_lines = map {$_ = $_."\n"} split (/\n/, $cmd_ref->{'text'});
+        $state->{'float'}->{$cmd_ref->{'style'} . "_texi"} = \@texi_lines;
+    }
+    if (($cmd_ref->{'style'} eq 'titlefont') and ($cmd_ref->{'text'} =~ /\S/))
+    {
+        $state->{'element'}->{'titlefont'} = $cmd_ref->{'text'} unless ((exists($state->{'region_lines'}) and ($state->{'region_lines'}->{'format'} eq 'titlepage')) or defined($state->{'element'}->{'titlefont'})) ;
+    }
+    if (defined($Texi2HTML::Config::command_handler{$cmd_ref->{'style'}}))
+    {
+        $result = init_special($cmd_ref->{'style'},$cmd_ref->{'text'});
+        if ($unclosed_commands)
+        {
+            $result .= "\n"; # the end of line is eaten by init_special
+            echo_error("Closing specially handled \@-command $cmd_ref->{'style'}",$line_nr);
+        }
+    }
+    elsif ($cmd_ref->{'style'})
+    {
+        $result = '@' . $cmd_ref->{'style'} . '{' . $cmd_ref->{'text'};
+        $result .= '}' unless ($unclosed_commands);
+    }
+    else
+    {
+        $result = '{' . $cmd_ref->{'text'};
+        # don't close { if we are closing stack as we are not
+        # sure this is a licit { ... } construct.
+        $result .= '}' unless ($unclosed_commands);
+    }
+    return $result;
+}
+
 sub scan_structure($$$$;$)
 {
     my $line = shift;
@@ -9058,7 +9179,7 @@
     local $_ = $line;
     #print STDERR "SCAN_STRUCTURE: $line";
     #dump_stack ($text, $stack, $state); 
-    if (!$state->{'raw'} and !$state->{'special'} and (!exists($state->{'region_lines'})))
+    if (!$state->{'raw'} and (!exists($state->{'region_lines'})))
     { 
         if (!$state->{'verb'} and $state->{'menu'} and /^\*/o)
         {
@@ -9080,7 +9201,7 @@
                 menu_entry_texi(normalise_node($node), $state, $line_nr);
             }
         }
-        if (/\S/ and !no_line($_))
+        unless (no_line($_))
         {
             delete $state->{'after_element'};
         }
@@ -9089,7 +9210,7 @@
     while(1)
     {
         # scan structure
-	#print STDERR "WHILE\n";
+	#print STDERR "WHILE (s):$_";
 	#dump_stack($text, $stack, $state);
 
         # as texinfo 4.5
@@ -9117,10 +9238,10 @@
         #
         # see more examples in formatting directory
 
-        if ($state->{'raw'} or $state->{'special'}) 
+        if ($state->{'raw'}) 
         {
             my $tag = $state->{'raw'};
-            $tag = $state->{'special'} unless $tag;
+            ################# debug 
             if (! @$stack or ($stack->[-1]->{'style'} ne $tag))
             {
                 print STDERR "Bug: raw or special: $tag but not on top of stack\n";
@@ -9128,16 +9249,17 @@
                 dump_stack($text, $stack, $state);
                 exit 1;
             }
+            ################# end debug 
             if (s/^(.*?)\@end\s$tag$// or s/^(.*?)\@end\s$tag\s//)
             {
                 add_prev ($text, $stack, $1);
+                delete $state->{'raw'};
                 my $style = pop @$stack;
-                if ($state->{'special'})
-                {
-                    delete $state->{'special'};
+                if (defined($Texi2HTML::Config::command_handler{$tag})) 
+                { # replace the special region by what init_special give
                     if ($style->{'text'} !~ /^\s*$/)
                     {
-                        add_prev ($text, $stack, do_special($style->{'style'}, $style->{'text'}));
+                        add_prev ($text, $stack, init_special($style->{'style'}, $style->{'text'}));
                     }
                     
                 }
@@ -9145,8 +9267,7 @@
                 {
                     my $after_macro = '';
                     $after_macro = ' ' unless (/^\s*$/);
-                    add_prev ($text, $stack, $style->{'text'} . "\@end $state->{'raw'}" . $after_macro);
-                    delete $state->{'raw'};
+                    add_prev ($text, $stack, $style->{'text'} . "\@end $tag" . $after_macro);
                 }
                 unless (no_line($_))
                 {
@@ -9157,8 +9278,8 @@
             else
             {
                 add_prev ($text, $stack, $_);
-                last unless ($state->{'special'}); 
-                return;
+                return if (defined($Texi2HTML::Config::command_handler{$tag})); 
+                last;
             }
         }
 	
@@ -9183,10 +9304,12 @@
         {
             delete $state->{'after_element'};
         }
-        if (s/^([^{}@]*)\@end\s+([a-zA-Z]\w*)//)
+        # macro_regexp
+        if (s/^([^{}@]*)\@end\s+([a-zA-Z][\w-]*)//)
         {
             add_prev($text, $stack, $1);
             my $end_tag = $2;
+            #print STDERR "END STRUCTURE $end_tag\n";
             $state->{'detailmenu'}-- if ($end_tag eq 'detailmenu' and $state->{'detailmenu'});
             if (defined($state->{'text_macro_stack'}) 
                and @{$state->{'text_macro_stack'}} 
@@ -9194,19 +9317,13 @@
             {
                 pop @{$state->{'text_macro_stack'}};
                 if (exists($region_lines{$end_tag}))
-                {
+                { # end a region_line macro, like documentdescription, copying
                      print STDERR "Bug: end_tag $end_tag ne $state->{'region_lines'}->{'format'}" 
                          if ( $end_tag ne $state->{'region_lines'}->{'format'});
                      $state->{'region_lines'}->{'number'}--;
                      if ($state->{'region_lines'}->{'number'} == 0)
-                     {
-                         $state->{'after_element'} = 1;
-                         delete $state->{'after_element'} unless 
-                             ($state->{'region_lines'}->{'after_element'});
-                         delete $state->{'region_lines'}->{'number'};
-                         delete $state->{'region_lines'}->{'format'};
-                         delete $state->{'region_lines'}->{'after_element'};
-                         delete $state->{'region_lines'};
+                     { 
+                         close_region($state);
                      }
 		     #dump_stack($text, $stack, $state); 
                 }
@@ -9244,7 +9361,8 @@
             next;
         }
         #elsif (s/^([^{}@]*)\@([a-zA-Z]\w*|["'~\@\}\{,\.!\?\s\*\-\^`=:\/])//o)
-        elsif (s/^([^{}@]*)\@(["'~\@\}\{,\.!\?\s\*\-\^`=:\|\/])//o or s/^([^{}@]*)\@([a-zA-Z]\w*)([\s\{\}\@])/$3/o or s/^([^{}@]*)\@([a-zA-Z]\w*)$//o)
+        # macro_regexp
+        elsif (s/^([^{}@]*)\@(["'~\@\}\{,\.!\?\s\*\-\^`=:\|\/])//o or s/^([^{}@]*)\@([a-zA-Z][\w-]*)([\s\{\}\@])/$3/o or s/^([^{}@]*)\@([a-zA-Z][\w-]*)$//o)
         {
             add_prev($text, $stack, $1);
             my $macro = $2;
@@ -9254,44 +9372,24 @@
                  my $line;
                  ($_, $line) = misc_command_structure($_, $macro, $state, 
                        $line_nr);
-                 add_prev ($text, $stack, $line); 
+                 add_prev ($text, $stack, "\@$macro".$line); 
                  next;
             }
 
             if ($macro =~ /^(\w+?)index/ and ($1 ne 'print') and ($1 ne 'syncode') and ($1 ne 'syn') and ($1 ne 'def') and ($1 ne 'defcode'))
             {
                 my $index_prefix = $1;
-                if (/^\s+(.*)/)
-                {
-                    my $key = $1;
-                    $_ = substitute_texi_line($_);
-                    my $index_entry = enter_index_entry($index_prefix, $line_nr, $key, $state->{'place'}, $state->{'element'}, $state->{'after_element'});
-                    if ($index_entry)
-                    {
-                        add_prev ($text, $stack, "\@$macro" .  $_);
-                        last;
-                    }
-                    elsif (!defined($index_entry))
-                    {
-                        echo_warn ("Bad index entry: $_", $line_nr);
-                        #warn "$WARN Bad index entry: $_";
-                    }
-                }
-                else
-                {
-                     echo_warn ("empty index entry", $line_nr);
-                     #warn "$WARN empty index entry\n";
-                }
-                return;
+                my $key = $_;
+                $key =~ s/^\s*//;
+                $_ = substitute_texi_line($_);
+                enter_index_entry($index_prefix, $line_nr, $key, $state->{'place'}, $state->{'element'}, $state->{'after_element'}, $macro);
+                add_prev ($text, $stack, "\@$macro" .  $_);
+                last;
             }
             elsif (defined($text_macros{$macro}))
             {
-		    #print STDERR "TEXT_MACRO: $macro\n";
-                if ($text_macros{$macro} eq 'special')
-                {
-                     $state->{'special'} = $macro;
-                }
-                elsif ($text_macros{$macro} eq 'raw')
+                #print STDERR "TEXT_MACRO: $macro\n";
+                if ($text_macros{$macro} eq 'raw')
                 {
                     $state->{'raw'} = $macro;
                     #print STDERR "RAW\n";
@@ -9307,30 +9405,32 @@
                 {
                     if (exists($state->{'region_lines'}) and ($state->{'region_lines'}->{'format'} ne $macro))
                     {
-                         echo_error("\@$macro not allowed within $state->{'region_lines'}->{'format'}", $line_nr);
-                         next;
+                        echo_error("\@$macro not allowed within $state->{'region_lines'}->{'format'}", $line_nr);
+                        next;
                     }
                     if (!exists($state->{'region_lines'}))
                     {
-                         $state->{'region_lines'}->{'format'} = $macro;
-                         $state->{'region_lines'}->{'number'} = 1;
-                         $state->{'region_lines'}->{'after_element'} = 1 if ($state->{'after_element'});
+                        $state->{'region_lines'}->{'format'} = $macro;
+                        $state->{'region_lines'}->{'number'} = 1;
+                        $state->{'region_lines'}->{'after_element'} = 1 if ($state->{'after_element'});
+                        $state->{'region_lines'}->{'kept_place'} = $state->{'place'};
+                        $state->{'place'} = $region_place;
                     }
                     else
                     {
-                         $state->{'region_lines'}->{'number'}++;
+                        $state->{'region_lines'}->{'number'}++;
                     }
                     push @{$state->{'text_macro_stack'}}, $macro;
                 }
                 # if it is a raw formatting command or a menu command
                 # we must keep it for later
-                my $macro_kept;
-                if ($state->{'raw'} or ($macro eq 'menu'))
+                my $macro_kept; 
+                if (($state->{'raw'} and (!defined($Texi2HTML::Config::command_handler{$macro}))) or ($macro eq 'menu'))
                 {
                     add_prev($text, $stack, "\@$macro");
                     $macro_kept = 1;
                 }
-                if ($state->{'raw'} or $state->{'special'})
+                if ($state->{'raw'})
                 {
                     push @$stack, { 'style' => $macro, 'text' => '' };
                 }
@@ -9338,13 +9438,65 @@
                 #dump_stack ($text, $stack, $state);
                 return if (/^\s*$/);
             }
+            elsif ($macro eq 'float')
+            { 
+                my ($style_texi, $label_texi) = split(/,/, $_);
+                $style_texi = normalise_space($style_texi);
+                $label_texi = undef if (defined($label_texi) and ($label_texi =~ /^\s*$/));
+                if (defined($label_texi))
+                { # The float may be a target for refs if it has a label
+                    $label_texi = normalise_node($label_texi);
+                    if (exists($nodes{$label_texi}) and defined($nodes{$label_texi})
+                         and $nodes{$label_texi}->{'seen'})
+                    {
+                        echo_error ("Duplicate label found: $label_texi", $line_nr);
+                        while ($_ =~ /,/)
+                        {
+                            $_ =~ s/,.*$//;
+                        }
+                    }
+                    else
+                    {
+                        my $float = { };
+                        if (exists($nodes{$label_texi}) and defined($nodes{$label_texi}))
+                        { # float appeared in a menu
+                            $float = $nodes{$label_texi};
+                        }
+                        else
+                        {
+                            $nodes{$label_texi} = $float;
+                        }
+                        $float->{'float'} = 1;
+                        $float->{'tag'} = 'float';
+                        $float->{'texi'} = $label_texi;
+                        $float->{'seen'} = 1;
+                        $float->{'id'} = $label_texi;
+#print STDERR "FLOAT: $float $float->{'texi'}, place $state->{'place'}\n";
+                        push @{$state->{'place'}}, $float;
+                        $float->{'element'} = $state->{'element'};
+                        $state->{'float'} = $float;
+                        $float->{'style_texi'} = $style_texi;
+                        push @floats, $float;
+                    }
+                }
+                add_prev($text, $stack, "\@$macro" . $_);
+                last;
+            }
             elsif (defined($Texi2HTML::Config::def_map{$macro}))
             {
                 #We must enter the index entries
-                my ($prefix, $entry) = get_deff_index($macro, $_, $line_nr);
-                enter_index_entry($prefix, $line_nr, $entry, $state->{'place'}, $state->{'element'}, 0) if ($prefix and defined($entry));
+                my ($prefix, $entry, $argument) = get_deff_index($macro, $_, $line_nr);
+                # use deffn instead of deffnx for @-command record 
+                # associated with index entry
+                my $idx_macro = $macro;
+                $idx_macro =~ s/x$//;
+                enter_index_entry($prefix, $line_nr, $entry, $state->{'place'},
+                   $state->{'element'}, 0, $idx_macro) if ($prefix);
                 s/(.*)//;
                 add_prev($text, $stack, "\@$macro" . $1);
+                # the text is discarded but we must handle correctly bad
+                # texinfo with 2 @def-like commands on the same line
+                substitute_text({'structure' => 1, 'place' => $state->{'place'} },($argument));
             }
             elsif ($macro =~ /^itemx?$/)
             {
@@ -9414,55 +9566,8 @@
                 {
                     my $style = pop @$stack;
                     my $result;
-                    if ($style->{'style'} eq 'anchor')
-                    {
-                        my $anchor = $style->{'text'};
-                        $anchor = normalise_node($anchor);
-                        if ($nodes{$anchor})
-                        {
-                            echo_error ("Duplicate node for anchor found: $anchor", $line_nr);
-                            next;
-                        }
-                        $anchor_num++;
-                        $nodes{$anchor} = { 'anchor' => 1, 'seen' => 1, 'texi' => $anchor, 'id' => 'ANC' . $anchor_num};
-                        push @{$state->{'place'}}, $nodes{$anchor};
-                    }
-                    elsif ($style->{'style'} eq 'footnote')
-                    {
-                        if ($Texi2HTML::Config::SEPARATED_FOOTNOTES)
-                        {
-                            $state->{'element'} = $state->{'footnote_element'};
-                            $state->{'place'} = $state->{'footnote_place'};
-                        }
-                    }
-                    elsif ($style->{'style'} eq 'math' and $Texi2HTML::Config::L2H)
-                    {
-                        add_prev ($text, $stack, do_math($style->{'text'}));
-                        next;
-                    }
-                    elsif ($style->{'style'} eq 'caption' or $style->{'style'}
-eq 'shortcaption' and $state->{'float'})
-                    {
-                         my @texi_lines = map {$_ = $_."\n"} split (/\n/, $style->{'text'});
-                         $state->{'float'}->{$style->{'style'} . "_texi"} = \@texi_lines;
-                    }
-                    if (($style->{'style'} eq 'titlefont') and ($style->{'text'} =~ /\S/))
-                    {
-                        $state->{'element'}->{'titlefont'} = $style->{'text'} unless ((exists($state->{'region_lines'}) and ($state->{'region_lines'}->{'format'} eq 'titlepage')) or defined($state->{'element'}->{'titlefont'})) ;
-                    }
-                    if ($style->{'style'})
-                    {
-                         $result = '@' . $style->{'style'} . '{' . $style->{'text'} . '}';
-                    }
-                    else
-                    {
-                        $result = '{' . $style->{'text'};
-                        # don't close { if we are closing stack as we are not
-                        # sure this is a licit { ... } construct.
-                        $result .= '}' unless $state->{'close_stack'};
-                    }
-                    add_prev ($text, $stack, $result);
-                    #print STDERR "MACRO end $style->{'style'} remaining: $_";
+                    add_prev ($text, $stack, close_structure_command($style,
+                         $state, 0, $line_nr));
                     next;
                 }
                 else
@@ -9495,7 +9600,7 @@
 
     die "stack not an array ref"  unless (ref($stack) eq "ARRAY");
     local $_ = $line;
-    #print STDERR "SCAN_LINE: $line";
+    #print STDERR "SCAN_LINE (@{$state->{'command_stack'}}): $line";
     #dump_stack($text, $stack,  $state );
     my $new_menu_entry; # true if there is a new menu entry
     my $menu_description_in_format; # true if we are in a menu description 
@@ -9506,159 +9611,143 @@
         $state->{'prepend_text'} = undef;
         delete $state->{'prepend_text'};
     }
-    if (defined($state->{'end_of_line_protected'}))
-    {
-        #print STDERR "END_OF_LINE_PROTECTED, $_";
-        #dump_stack($text, $stack, $state);
-        delete $state->{'end_of_line_protected'};
-    }
-    if (!$state->{'raw'} and !$state->{'verb'} and $state->{'menu'})
-    { # new menu entry
-        my ($node, $name, $ending);
-        if (s/^\*(\s+$NODERE)(::)//o)
-        {
-            $node = $1;
-            $ending = $2;
-        }
-        elsif (s/^\*(\s+[^:]+):(\s*[^\t,\.\n]+)([\t,\.\n])//o)
-        {
-            $name = $1;
-            $node = $2;
-            $ending = $3;
-        }
-        if ($node)
-        {
-            my $top_stack = top_stack($stack);
-            if ($top_stack and $top_stack->{'format'} and 
-                (
-                 ($top_stack->{'format'} eq 'menu_description') or
-                 ($top_stack->{'format'} eq 'menu') or
-                 (($top_stack->{'format'} eq 'preformatted') and (stack_order($stack, 'preformatted', 'menu_comment'))) or
-                 ($top_stack->{'format'} eq 'menu_preformatted') or
-                 ($top_stack->{'format'} eq 'menu_comment')
-                )
-               )
-            { # we are in a normal menu state.
-                close_menu($text, $stack, $state, $line_nr);
-                $new_menu_entry = 1;
-                $state->{'menu_entry'} = { 'name' => $name, 'node' => $node,
-                   'ending' => $ending };
-                add_prev ($text, $stack, do_menu_link($state, $line_nr));
-                print STDERR "# New menu entry: $node\n" if ($T2H_DEBUG & $DEBUG_MENU);
-                push @$stack, {'format' => 'menu_description', 'text' => ''};
-            }
-            else
-            { # we are within a macro or a format. In that case we use
-              # a simplified formatting of menu which should be right whatever
-              # the context
-                my $menu_entry = $state->{'menu_entry'};
-                $state->{'menu_entry'} = { 'name' => $name, 'node' => $node,
-                   'ending' => $ending };
-                add_prev ($text, $stack, do_menu_link($state, $line_nr, 1));
-                $state->{'menu_entry'} = $menu_entry;
-            }
-        }
-    }
-    # we're in a menu entry description
-    if ($state->{'menu_entry'} and !$new_menu_entry)
-    {
-        my $top_stack = top_stack($stack);
-        if (/^\s+\S.*$/ or (!$top_stack->{'format'} or ($top_stack->{'format'} ne 'menu_description')))
-        { # description continues
-            $menu_description_in_format = 1 if ($top_stack->{'format'} and ($top_stack->{'format'} ne 'menu_description'));
-            print STDERR "# Description continues\n" if ($T2H_DEBUG & $DEBUG_MENU);
-	    #dump_stack ($text, $stack, $state);
-        }
-        else
-        { # enter menu comment after menu entry
-            if (!$top_stack->{'format'} or ($top_stack->{'format'} ne 'menu_description'))
+
+    unless ($state->{'end_of_line_protected'} and $state->{'deff_line'})
+    { # end of lines are really protected only for @def*
+        if (!$state->{'raw'} and !$state->{'verb'} and $state->{'menu'})
+        { # new menu entry
+            my ($node, $name, $ending);
+            if (s/^\*(\s+$NODERE)(::)//o)
             {
-                print STDERR "Bug: begin menu comment but previous isn't menu_description\n";
-                dump_stack ($text, $stack, $state);
+                $node = $1;
+                $ending = $2;
             }
-            print STDERR "# Menu comment begins\n" if ($T2H_DEBUG & $DEBUG_MENU);
-	    #dump_stack ($text, $stack, $state);
-            my $descr = pop(@$stack);
-            add_prev ($text, $stack, menu_description($descr->{'text'}, $state));
-            delete $state->{'menu_entry'};
-            unless (/^\s*\@end\s+menu\b/)
-            {
-                $state->{'menu_comment'}++;
-                push @$stack, {'format' => 'menu_comment', 'text' => ''};
-                push @{$state->{'preformatted_stack'}}, {'pre_style' => $Texi2HTML::Config::MENU_PRE_STYLE, 'class' => 'menu-comment' };
-                $state->{'preformatted'}++;
-                begin_paragraph($stack, $state);
+            elsif (s/^\*(\s+[^:]+):(\s*[^\t,\.\n]+)([\t,\.\n])//o)
+            {
+                $name = $1;
+                $node = $2;
+                $ending = $3;
             }
-	    #dump_stack ($text, $stack, $state);
-        }
-    }
-    if ($state->{'open_paragraph'} and !$state->{'no_paragraph'})
-    {
-         delete $state->{'open_paragraph'};
-         if ($state->{'preformatted'} or !no_paragraph($state,$_))
-         {
-             begin_paragraph($stack, $state);
-         }
-    }
-    if (($state->{'menu_entry'} and !$menu_description_in_format) or $state->{'raw'} or $state->{'preformatted'}  or $state->{'no_paragraph'} or $state->{'keep_texi'} or $state->{'remove_texi'})
-    { # empty lines are left unmodified
-        if (/^\s*$/)
-        {
-             add_prev($text, $stack, $_);
-             return;
-        }
-        else
-        {
-            my $next_tag = next_tag($_);
-            if ($state->{'deff'} and !defined($Texi2HTML::Config::def_map{$next_tag}))
+            if ($node)
             {
-                 begin_deff_item($stack, $state);
+                my $top_stack = top_stack($stack);
+                if ($top_stack and $top_stack->{'format'} and 
+                    (
+                     ($top_stack->{'format'} eq 'menu_description') or
+                     ($top_stack->{'format'} eq 'menu') or
+                     (($top_stack->{'format'} eq 'preformatted') and (stack_order($stack, 'preformatted', 'menu_comment'))) or
+                     ($top_stack->{'format'} eq 'menu_preformatted') or
+                     ($top_stack->{'format'} eq 'menu_comment')
+                    )
+                   )
+                { # we are in a normal menu state.
+                    close_menu($text, $stack, $state, $line_nr);
+                    $new_menu_entry = 1;
+                    $state->{'menu_entry'} = { 'name' => $name, 'node' => $node,
+                       'ending' => $ending };
+                    add_prev ($text, $stack, do_menu_link($state, $line_nr));
+                    print STDERR "# New menu entry: $node\n" if ($T2H_DEBUG & $DEBUG_MENU);
+                    push @$stack, {'format' => 'menu_description', 'text' => ''};
+                }
+                else
+                { # we are within a macro or a format. In that case we use
+                  # a simplified formatting of menu which should be right whatever
+                  # the context
+                    my $menu_entry = $state->{'menu_entry'};
+                    $state->{'menu_entry'} = { 'name' => $name, 'node' => $node,
+                       'ending' => $ending };
+                    add_prev ($text, $stack, do_menu_link($state, $line_nr, 1));
+                    $state->{'menu_entry'} = $menu_entry;
+                }
             }
         }
-    }
-    else
-    { #FIXME @syncodeindex cp fn
-      # on a line should also end paragraphs.	    
-        if (/^\s*$/)
+        # we're in a menu entry description
+        if ($state->{'menu_entry'} and !$new_menu_entry)
         {
-            #ignore the line if it just follows a deff
-            return if ($state->{'deff'});
-                    
-            if ($state->{'paragraph'})
-            { # An empty line ends a paragraph
-                close_paragraph($text, $stack, $state, $line_nr);
-                add_prev($text, $stack, &$Texi2HTML::Config::empty_line($_));
-		return 1;
+            my $top_stack = top_stack($stack);
+            if (/^\s+\S.*$/ or (!$top_stack->{'format'} or ($top_stack->{'format'} ne 'menu_description')))
+            { # description continues
+                $menu_description_in_format = 1 if ($top_stack->{'format'} and ($top_stack->{'format'} ne 'menu_description'));
+                print STDERR "# Description continues\n" if ($T2H_DEBUG & $DEBUG_MENU);
             }
             else
+            { # enter menu comment after menu entry
+                ################################ begin debug
+                if (!$top_stack->{'format'} or ($top_stack->{'format'} ne 'menu_description'))
+                {
+                    print STDERR "Bug: begin menu comment but previous isn't menu_description\n";
+                    dump_stack ($text, $stack, $state);
+                }
+                print STDERR "# Menu comment begins\n" if ($T2H_DEBUG & $DEBUG_MENU);
+                ################################ end debug
+                my $descr = pop(@$stack);
+            
+                add_prev ($text, $stack, do_menu_description($descr->{'text'}, $state));
+                delete $state->{'menu_entry'};
+                unless (/^\s*\@end\s+menu\b/)
+                {
+                    $state->{'menu_comment'}++;
+                    push @$stack, {'format' => 'menu_comment', 'text' => ''};
+                    unless ($Texi2HTML::Config::SIMPLE_MENU)
+                    {
+                        push @{$state->{'preformatted_stack'}}, {'pre_style' => $Texi2HTML::Config::MENU_PRE_STYLE, 'class' => 'menu-comment' };
+                        $state->{'preformatted'}++;
+                        begin_paragraph($stack, $state);
+                    }
+                }
+            }
+        }
+        if (($state->{'menu_entry'} and !$menu_description_in_format) or $state->{'raw'} or $state->{'preformatted'}  or $state->{'no_paragraph'} or $state->{'keep_texi'} or $state->{'remove_texi'})
+        { # empty lines are left unmodified
+            if (/^\s*$/)
+            {
+                add_prev($text, $stack, $_);
+                return;
+            }
+            elsif (!$state->{'raw'})
             {
-                add_prev($text, $stack, &$Texi2HTML::Config::empty_line($_));
-		return 1;
+                my $next_tag = next_tag($_);
+                if ($state->{'deff_line'} and !defined($Texi2HTML::Config::def_map{$next_tag}))
+                {
+                    begin_deff_item($stack, $state);
+                }
             }
         }
         else
         {
-            #print STDERR "a line not empty and not in no paragraph format\n";
-            my $next_tag = next_tag($_);
-            if ($state->{'deff'} and !defined($Texi2HTML::Config::def_map{$next_tag}))
-            { # finish opening the deff, as this is not a deff tag, it can't be 
-              # a deff macro with x
-                begin_deff_item($stack, $state);
-            }
-            #print STDERR "NEXT_TAG $next_tag:$_";
-            if (!no_paragraph($state,$_))
-            { # index entries, @html and @* don't trigger new paragraph beginning
-              # otherwise we begin a new paragraph
-	        #print STDERR "begin paragraph\n";
-                begin_paragraph($stack, $state);
+            if (/^\s*$/)
+            {
+                if ($state->{'paragraph_context'})
+                { # An empty line ends a paragraph
+                    close_paragraph($text, $stack, $state, $line_nr);
+                }
+                add_prev($text, $stack, &$Texi2HTML::Config::empty_line($_,$state));
+                return 1;
+           }
+           else
+           {
+               #print STDERR "a line not empty and not in no paragraph format\n";
+                my $next_tag = next_tag($_);
+                if ($state->{'deff_line'} and !defined($Texi2HTML::Config::def_map{$next_tag}))
+                { # finish opening the deff, as this is not a deff tag, it can't be 
+                  # a deff macro with x
+                    begin_deff_item($stack, $state);
+                }
+                if (!no_paragraph($state,$_))
+                { # open a paragraph, unless the line begins with a macro that
+                  # shouldn't trigger a paragraph opening
+                    begin_paragraph($stack, $state);
+                }
             }
         }
     }
+    delete $state->{'end_of_line_protected'} 
+       if ($state->{'end_of_line_protected'});
 
     while(1)
     {
         # scan_line
-        #print STDERR "WHILE: $_";
+        #print STDERR "WHILE (l): $_|";
         #dump_stack($text, $stack, $state);
         # we're in a raw format (html, tex if !L2H, verbatim)
         if (defined($state->{'raw'})) 
@@ -9672,13 +9761,13 @@
                 my $style = pop @$stack;
                 if ($style->{'text'} !~ /^\s*$/)
                 {
-                    if ($state->{'remove_texi'})
+                    if ($state->{'keep_texi'})
                     {
-                        add_prev ($text, $stack, $style->{'text'});
+                        add_prev ($text, $stack, $style->{'text'} . "\@end $state->{'raw'}");
                     }
-                    elsif ($state->{'keep_texi'})
+                    elsif ($state->{'remove_texi'})
                     {
-                        add_prev ($text, $stack, $style->{'text'} . "\@end $state->{'raw'}");
+                        add_prev ($text, $stack, &$Texi2HTML::Config::raw_no_texi($style->{'style'}, $style->{'text'}));
                     }
                     else
                     { 
@@ -9733,20 +9822,34 @@
             }
         }
 
+        # a special case for @ followed by an end of line in deff
+        # FIXME this is similar with makeinfo, but shouldn't that
+        # be done for @floats and @quotations too? and @item, @center?
+        # this piece of code is required, to avoid the 'cmd_line' to be 
+        # closed below 
+        if ($state->{'end_of_line_protected'} and $state->{'deff_line'})
+        { 
+            print STDERR "Bug: 'end_of_line_protected' with text following: $_\n" 
+                unless /^$/;
+            return;
+        }
+
         # We handle now the end tags 
-        if ($state->{'keep_texi'} and s/^([^{}@]*)\@end\s+([a-zA-Z]\w*)//)
+        # macro_regexp
+        if ($state->{'keep_texi'} and s/^([^{}@]*)\@end\s+([a-zA-Z][\w-]*)//)
         {
             my $end_tag = $2;
             add_prev($text, $stack, $1 . "\@end $end_tag");
             next;
         }
-        elsif ($state->{'remove_texi'} and s/^([^{}@]*)\@end\s+([a-zA-Z]\w*)//)
+        # macro_regexp
+        elsif ($state->{'remove_texi'} and s/^([^{}@]*)\@end\s+([a-zA-Z][\w-]*)//)
         {
             add_prev($text, $stack, $1);
             next;
         }
-	
-        if (s/^([^{}@,]*)\@end\s+([a-zA-Z]\w*)\s// or s/^([^{}@,]*)\@end\s+([a-zA-Z]\w*)$//)
+	# macro_regexp
+        if (s/^([^{}@,]*)\@end\s+([a-zA-Z][\w-]*)\s//o or s/^([^{}@,]*)\@end\s+([a-zA-Z][\w-]*)$//o)
         {
             add_prev($text, $stack, do_text($1, $state));
             my $end_tag = $2;
@@ -9755,13 +9858,16 @@
             
             # First we test if the stack is not empty.
             # Then we test if the end tag is a format tag.
-            # If so, we close the styles.
             # We then close paragraphs and preformatted at top of the stack.
             # We handle the end tag (even when it was not the tag which appears
             # on the top of the stack; in that case we close anything 
             # until that element)
             $state->{'detailmenu'}-- if ($end_tag eq 'detailmenu' and $state->{'detailmenu'});
-            # FIXME handle in sub skip
+            # FIXME handle below (look for misc_command) to let the user 
+            # keep that end tag. On the other hand it is only used for 
+            # end detailmenu, so maybe it should just go and detailmenu
+            # could be handled like a normal format. Last there could be 
+            # something similar than what is done for other misc_commands.
             next if (defined($Texi2HTML::Config::misc_command{"end $end_tag"}));
             my $top_stack = top_stack($stack);
             if (!$top_stack)
@@ -9779,7 +9885,8 @@
                 next;
             }
             unless ($Texi2HTML::Config::format_in_paragraph{$end_tag})
-            {
+            { # If the $end_tag is wrong we may be keeping paragraph 
+              # for a format with paragraphs on the stack
                 close_paragraph($text, $stack, $state, $line_nr); 
             }
 
@@ -9788,6 +9895,7 @@
             {
                 echo_error ("\@end $end_tag without corresponding opening element", $line_nr);
                 add_prev($text, $stack, "\@end $end_tag");
+                dump_stack ($text, $stack, $state) if ($T2H_DEBUG);
                 next;
             }
             # Warn if the format on top of stack is not compatible with the 
@@ -9834,6 +9942,19 @@
                 )
                )
             {
+                # this is not the right format. We try to close other
+                # formats to find the format we are searching for.
+                # First we close paragraphs, as with a wrong $end_format
+                # they may not be closed properly.
+                close_paragraph($text, $stack, $state, $line_nr);
+                $top_stack = top_stack($stack);
+                if (!$top_stack or (!defined($top_stack->{'format'})))
+                {
+                    echo_error ("\@end $end_tag without corresponding opening element", $line_nr);
+                    add_prev($text, $stack, "\@end $end_tag");
+                    dump_stack ($text, $stack, $state) if ($T2H_DEBUG);
+                    next;
+                }
                 my $waited_format = $top_stack->{'format'};
                 $waited_format = $fake_format{$top_stack->{'format'}} if ($format_type{$top_stack->{'format'}} eq 'fake');
                 echo_error ("waiting for end of $waited_format, found \@end $end_tag", $line_nr);
@@ -9851,28 +9972,32 @@
             if (defined($format_type{$end_tag}) and $format_type{$end_tag} ne 'fake')
             {
                 end_format($text, $stack, $state, $end_tag, $line_nr);
+                begin_paragraph_after_command($state,$stack,$end_tag,$_);
             }
             else 
             { # this is a fake format, ie a format used internally, inside
               # a real format. We do nothing, hoping the real format will
               # get closed, closing the fake internal formats
-		    #print STDERR "FAKE \@end $end_tag\n";
-		    #add_prev($text, $stack, "\@end $end_tag");
+              #print STDERR "FAKE \@end $end_tag\n";
             }
             next;
         }
         # This is a macro
 	#elsif (s/^([^{}@]*)\@([a-zA-Z]\w*|["'~\@\}\{,\.!\?\s\*\-\^`=:\/])//o)
-        elsif (s/^([^{},@]*)\@(["'~\@\}\{,\.!\?\s\*\-\^`=:\|\/])//o or s/^([^{}@,]*)\@([a-zA-Z]\w*)([\s\{\}\@])/$3/o or s/^([^{},@]*)\@([a-zA-Z]\w*)$//o)
+        # macro_regexp
+        elsif (s/^([^{},@]*)\@(["'~\@\}\{,\.!\?\s\*\-\^`=:\|\/])//o or s/^([^{}@,]*)\@([a-zA-Z][\w-]*)([\s\{\}\@])/$3/o or s/^([^{},@]*)\@([a-zA-Z][\w-]*)$//o)
         {
             add_prev($text, $stack, do_text($1, $state));
             my $macro = $2;
 	    #print STDERR "MACRO $macro\n";
+	    #print STDERR "LINE $_";
 	    #dump_stack ($text, $stack, $state);
             # This is a macro added by close_stack to mark paragraph end
             if ($macro eq 'end_paragraph')
             {
+                s/^\{\}//;
                 my $top_stack = top_stack($stack);
+                #################################### debug
                 if (!$top_stack or !$top_stack->{'format'} 
                     or ($top_stack->{'format'} ne 'paragraph'))
                 {
@@ -9880,6 +10005,7 @@
                     dump_stack ($text, $stack, $state);
                     next;
                 }
+                #################################### end debug
                 s/^\s//;
                 my $paragraph = pop @$stack;
                 add_prev ($text, $stack, do_paragraph($paragraph->{'text'}, $state));
@@ -9888,7 +10014,10 @@
             # Handle macro added by close_stack to mark preformatted region end
             elsif ($macro eq 'end_preformatted')
             {
+                #print STDERR "END_PREFORMATTED\n";
+                s/^\{\}//;
                 my $top_stack = top_stack($stack);
+                #################################### debug
                 if (!$top_stack or !$top_stack->{'format'} 
                     or ($top_stack->{'format'} ne 'preformatted'))
                 {
@@ -9896,6 +10025,7 @@
                     dump_stack ($text, $stack, $state);
                     next;
                 }
+                #################################### end debug
                 my $paragraph = pop @$stack;
                 s/^\s//;
                 add_prev ($text, $stack, do_preformatted($paragraph->{'text'}, $state));
@@ -9903,70 +10033,31 @@
             }
             if (defined($Texi2HTML::Config::misc_command{$macro}))
             {
-                # This strange condition is there because for an argument
-                # appearing on an @itemize line, appended to an @item 
-                # we don't want to keep @c or @comment as otherwise it eats
-                # the line. Other commands could do that too but then the user
-                # deserves what he gets.
-                if (($state->{'keep_texi'} and 
-                       (!$state->{'check_item'} or ($macro ne 'c' and $macro ne 'comment'))) 
-                     or $state->{'remove_texi'})
+                # The strange condition associated with 'keep_texi' is 
+                # there because for an argument appearing on an @itemize 
+                # line (we're in 'check_item'), meant to be prepended to an 
+                # @item we don't want to keep @c or @comment as otherwise it 
+                # eats the @item line. Other commands could do that too but 
+                # then the user deserves what he gets.
+                if ($state->{'keep_texi'} and 
+                           (!$state->{'check_item'} or ($macro ne 'c' and $macro ne 'comment'))) 
                 {
                     my ($line, $args);
                     ($_, $line, $args) = preserve_command($_, $macro);
-                    if ($state->{'keep_texi'})
-                    {
-                        add_prev($text, $stack, $line);
-                    }
+                    add_prev($text, $stack, "\@$macro". $line);
                     next;
                 }
-                my $keep = $Texi2HTML::Config::misc_command{$macro}->{'keep'};
+
+                # Handle the misc command
                 $_ = misc_command_text($_, $macro, $stack, $state, $text, $line_nr);
                 return unless (defined($_));
-                unless ($keep)
+                unless ($Texi2HTML::Config::misc_command{$macro}->{'keep'})
                 {
                      begin_paragraph($stack, $state) if 
                        (!no_paragraph($state,$_));
                      next;
                 }
             }
-#            if ($macro eq 'sp')
-#            {
-#                my ($space1, $sp_number, $space2);
-#                if (s/^(\s+)(\d+)(\s*)//)
-#                {
-#                    $space1 = $1;
-#                    $sp_number = $2;
-#                    $space2 = $3;
-#                }
-#                elsif (s/(\s*)$//)
-#                {
-#                    $space1 = $1;
-#                    $sp_number = '';
-#                    $space2 = '';
-#                }
-#                else
-#                {
-#                    next if ($state->{'remove_texi'});
-#                    if ($state->{'keep_texi'})
-#                    {
-#                        add_prev($text, $stack, "\@$macro");
-#                        next;
-#                    }
-#                    echo_error ("\@$macro needs a numeric arg or no arg", $line_nr);
-#                    next;
-#                }
-#                next if ($state->{'remove_texi'});
-#                if ($state->{'keep_texi'})
-#                {
-#                    add_prev($text, $stack, "\@$macro" . $space1 . $sp_number . $space2);
-#                    next;
-#                }
-#                $sp_number = 1 if ($sp_number eq '');
-#                add_prev($text, $stack, &$Texi2HTML::Config::sp($sp_number, $state->{'preformatted'}));
-#                next;
-#            }
-            #if ($macro eq 'verbatiminclude' or $macro eq 'listoffloats')
             if ($macro eq 'listoffloats')
             {
                 if ($state->{'keep_texi'})
@@ -9982,53 +10073,29 @@
                 if (s/^(\s+)(.*)//o)
                 {
                     my $arg = $2;
-#                    if ($macro eq 'verbatiminclude')
-#                    {
-#                        my $file = locate_include_file($arg);
-#                        if (defined($file))
-#                        {
-#                            if (!open(VERBINCLUDE, $file))
-#                            {
-#                                echo_warn ("Can't read file $file: $!",$line_nr);
-#                            }
-#                            else
-#                            {
-#                                my $verb_text = '';
-#                                while (my $line = <VERBINCLUDE>)
-#                                {
-#                                    $verb_text .= $line;
-#                                }
-#                                add_prev($text, $stack, &$Texi2HTML::Config::raw('verbatim',$verb_text));
-#                                close VERBINCLUDE;
-#                            }
-#                        }
-#                        else
-#                        {
-#                            echo_error ("Can't find $arg, skipping", $line_nr);
-#                        }
-#                    }
-#                    elsif ($macro eq 'listoffloats')
-#                    {
-                         my $style_id = cross_manual_line (normalise_space($arg));
-                         my $style = substitute_line (&$Texi2HTML::Config::listoffloats_style($arg));
-                         if (exists ($floats{$style_id}))
+                    my $style_id = cross_manual_line(normalise_space($arg));
+                    my $style = substitute_line (&$Texi2HTML::Config::listoffloats_style($arg));
+                    if (exists ($floats{$style_id}))
+                    {
+                         close_paragraph($text, $stack, $state, $line_nr);
+                         my @listoffloats_entries = ();
+                         foreach my $float (@{$floats{$style_id}->{'floats'}})
                          {
-                              close_paragraph($text, $stack, $state, $line_nr);
-                              my @listoffloats_entries = ();
-                              foreach my $float (@{$floats{$style_id}->{'floats'}})
-                              {
-                                   my $float_style = substitute_line(&$Texi2HTML::Config::listoffloats_float_style($arg, $float));
-                                   my $caption_lines = &$Texi2HTML::Config::listoffloats_caption($float);
-                                   my $caption = substitute_text({ 'multiple_pass' => 1 }, @$caption_lines);
-                                   push @listoffloats_entries, &$Texi2HTML::Config::listoffloats_entry($arg, $float, $float_style, $caption, href($float, $state->{'element'}->{'file'}));
-                              }
-                              add_prev($text, $stack, &$Texi2HTML::Config::listoffloats($arg, $style, \@listoffloats_entries));
+                              my $float_style = substitute_line(&$Texi2HTML::Config::listoffloats_float_style($arg, $float));
+                              my $caption_lines = &$Texi2HTML::Config::listoffloats_caption($float);
+                              # we set 'multiple_pass' such that index entries
+                              # and anchors are not handled one more time;
+                              # the caption has allready been formatted, 
+                              # and these have been handled at the right place
+                              my $caption = substitute_text({ 'multiple_pass' => 1 }, @$caption_lines);
+                              push @listoffloats_entries, &$Texi2HTML::Config::listoffloats_entry($arg, $float, $float_style, $caption, href($float, $state->{'element'}->{'file'}));
                          }
-                         else
-                         {
-                              echo_warn ("Unknown float style $arg", $line_nr); 
-                         }
-#                    }
+                         add_prev($text, $stack, &$Texi2HTML::Config::listoffloats($arg, $style, \@listoffloats_entries));
+                    }
+                    else
+                    {
+                         echo_warn ("Unknown float style $arg", $line_nr); 
+                    }
                 }
                 else
                 {
@@ -10038,7 +10105,8 @@
             }
             # This is a @macroname{...} construct. We add it on top of stack
             # It will be handled when we encounter the '}'
-            if (s/^{//)
+            # There is a special case for def macros as @deffn{def} is licit
+            if (!$Texi2HTML::Config::def_map{$macro} and s/^{//)
             {
                 if ($macro eq 'verb')
                 {
@@ -10052,19 +10120,29 @@
                         s/^(.)//;
                         $state->{'verb'} = $1;
                     }
-                } #FIXME what to do if remove_texi and anchor/ref/footnote ?
+                } 
                 elsif ($macro eq 'm_cedilla' and !$state->{'keep_texi'})
                 {
                     $macro = ',';
                 }
+                # currently if remove_texi and anchor/ref/footnote
+                # the text within the command is ignored
+                # see t2h_remove_command in texi2html.init
                 push (@$stack, { 'style' => $macro, 'text' => '', 'arg_nr' => 0 });
                 $state->{'no_paragraph'}++ if ($no_paragraph_macro{$macro});
                 open_arg($macro, 0, $state);
-                push (@{$state->{'style_stack'}}, $macro) if (defined($style_type{$macro}) and (($style_type{$macro} eq 'style') or ($style_type{$macro} eq 'accent')));
+                if (defined($style_type{$macro}) and (($style_type{$macro} eq 'style') or ($style_type{$macro} eq 'accent')))
+                {
+                     push (@{$state->{'command_stack'}}, $macro);
+                     #print STDERR "# Stacked $macro (@{$state->{'command_stack'}})\n" if ($T2H_DEBUG); 
+                }
                 next;
             }
 
-            # special case if we are checking items
+            # special case if we are checking itemize line. In that case
+            # we want to make sure that there is no @item on the @itemize
+            # line, otherwise it will be added on the front of another @item,
+            # leading to an infinite loop...
 
             if ($state->{'check_item'} and ($macro =~ /^itemx?$/ or $macro eq 'headitem'))
             {
@@ -10078,11 +10156,11 @@
                 # We treat specially formats accepting {} on command line
                 if ($macro eq 'multitable' or defined($Texi2HTML::Config::def_map{$macro}))
                 {
-                     add_prev($text, $stack, "\@$macro" . $_);
-                     $_ = '';
-                     next;
+                    add_prev($text, $stack, "\@$macro" . $_);
+                    $_ = '';
+                    next;
                 }
-                # @ at the end of line may protect te end of line even when
+                # @ at the end of line may protect the end of line even when
                 # keeping texi
                 if ($macro eq "\n")
                 {
@@ -10098,8 +10176,10 @@
                 }
                 next;
             }
+
             # If we are removing texi, the following macros are not removed 
-            # as is but modified
+            # as is but modified. So they are collected first, as if we were
+            # in normal text
 
             # a raw macro beginning
             if ($text_macros{$macro} and $text_macros{$macro} eq 'raw')
@@ -10117,6 +10197,7 @@
             # An accent macro
             if (exists($Texi2HTML::Config::accent_map{$macro}))
             {
+                push (@{$state->{'command_stack'}}, $macro);
                 if (s/^(\S)//o)
                 {
                     add_prev($text, $stack, do_simple($macro, $1, $state, [ $1 ], $line_nr));
@@ -10125,15 +10206,16 @@
                 { # The accent is at end of line
                     add_prev($text, $stack, do_text($macro, $state));
                 }
+                pop @{$state->{'command_stack'}};
             }
             # an @-command which should be like @command{}. We handle it...
-            elsif ($things_map_ref->{$macro})
+            elsif ($::things_map_ref->{$macro})
             {
                 echo_warn ("$macro requires {}", $line_nr);
                 add_prev($text, $stack, do_simple($macro, '', $state));
             }
             # an @-command like @command
-            elsif (defined($simple_map_ref->{$macro}))
+            elsif (defined($::simple_map_ref->{$macro}))
             {
                 add_prev($text, $stack, do_simple($macro, '', $state));
             }
@@ -10147,15 +10229,11 @@
                    ($no_line_macros{$macro} and !no_paragraph($state,$_));
                 next;
             }
-            # the following macros are not modified but just ignored 
-            # if we are removing texi
-            if ($macro =~ /^tex_(\d+)$/o)
-            {
-                add_prev($text, $stack, Texi2HTML::LaTeX2HTML::do_tex($1));
-                next;
-            }
+            # the following macros are modified or ignored if we are 
+            # removing texi, and they are not handled like macros in text
             if ($state->{'remove_texi'})
             {
+                 # handle specially some macros
                  if ((($macro =~ /^(\w+?)index$/) and ($1 ne 'print')) or 
                       ($macro eq 'itemize') or ($macro =~ /^(|v|f)table$/)
                       or ($macro eq 'multitable') or ($macro eq 'quotation'))
@@ -10173,29 +10251,28 @@
                  {
                      my ($style, $category, $name, $type, $class, $arguments);
                      ($style, $category, $name, $type, $class, $arguments) = parse_def($macro, $_, $line_nr); 
-                     # FIXME maybe a call to substitute_line with state would
-                     # be better ?
+                     # FIXME -- --- ''... lead to simple text in texi2html
+                     # while they are kept as is in html coments by makeinfo
                      $category = remove_texi($category) if (defined($category));
-                     # FIXME -- --- ''... should be protected (not by makeinfo)
                      $name = remove_texi($name) if (defined($name));
-                     # FIXME -- --- ''... should be protected (not by makeinfo)
                      $type = remove_texi($type) if (defined($type));
-                     # FIXME -- --- ''... should be protected (not by makeinfo)
                      $class = remove_texi($class) if (defined($class));
-                     # FIXME -- --- ''... should be protected 
                      $arguments = remove_texi($arguments) if (defined($arguments));
                      chomp($arguments);
                      add_prev($text, $stack, &$Texi2HTML::Config::def_line_no_texi($category, $name, $type, $arguments));
                      return;
                 }
+
+                # ignore other macros
                 next;
             }
+
+            # handle the other macros, in the context of some normal text
             if (($macro =~ /^(\w+?)index$/) and ($1 ne 'print'))
             {
-                add_prev($text, $stack, do_index_entry_label($state,$line_nr));
+                add_prev($text, $stack, do_index_entry_label($macro,$state,$line_nr));
                 return;
             }
-            # a macro which triggers paragraph closing
             if ($macro eq 'insertcopying')
             {
                 close_paragraph($text, $stack, $state, $line_nr);
@@ -10204,29 +10281,29 @@
                 begin_paragraph ($stack, $state) if ($state->{'preformatted'});
                 return;
             }
-            if ($macro =~ /^itemx?$/ or ($macro eq 'headitem'))
+            if ($macro =~ /^itemx?$/o or ($macro eq 'headitem'))
             {
 		    #print STDERR "ITEM: $_";
 		    #dump_stack($text, $stack, $state);
-                # these functions return true if the context was their own
                 abort_empty_preformatted($stack, $state);
                 # FIXME let the user be able not to close the paragraph
                 close_paragraph($text, $stack, $state, $line_nr);
+                # these functions return the format if in the right context
                 my $format;
                 if ($format = add_item($text, $stack, $state, $line_nr, $_))
                 { # handle lists
                 }
                 elsif ($format = add_term($text, $stack, $state, $line_nr))
-                {# handle table
+                {# handle table @item line
                 }
                 elsif ($format = add_line($text, $stack, $state, $line_nr)) 
-                {# handle table
+                {# handle table text
                 }
                 if ($format)
                 {
-                    if (defined($format->{'appended'}))
+                    if (defined($format->{'prepended'}))
                     { 
-                        $_ = $format->{'appended'} . ' ' . $_ if ($format->{'appended'} ne '');
+                        $_ = $format->{'prepended'} . ' ' . $_ if ($format->{'prepended'} ne '');
                     }
                     if (defined($format->{'command'}))
                     { 
@@ -10246,10 +10323,7 @@
                     push @$stack, {'format' => 'cell', 'text' => ''};
                     $format->{'cell'} = 1;
                     
-                    if (!no_paragraph($state,$_) or automatic_preformatted($state,$macro))
-                    {
-                        begin_paragraph($stack, $state);
-                    }
+                    begin_paragraph_after_command($state,$stack,$macro,$_);
                 }
                 else
                 {
@@ -10259,27 +10333,24 @@
             }
             if ($macro eq 'tab')
             {
-                # FIXME let the user be able not to close the paragraph
                 abort_empty_preformatted($stack, $state);
+                # FIXME let the user be able not to close the paragraph
                 close_paragraph($text, $stack, $state, $line_nr);
                 my $format = add_cell ($text, $stack, $state);
                 #print STDERR "tab, $format->{'cell'}, max $format->{'max_columns'}\n";
                 if (!$format)
                 {
-                    echo_warn ("\@tab outside of multitable", $line_nr);
-                    #warn "$WARN \@tab outside of multitable\n";
+                    echo_warn ("\@$macro outside of multitable", $line_nr);
                 }
                 elsif (!$format->{'max_columns'})
                 {
                     echo_warn ("\@$macro in empty multitable", $line_nr);
-                    #warn "$WARN \@$macro in empty multitable\n";
                     push @$stack, {'format' => 'null', 'text' => ''};
                     next;
                 }
                 elsif ($format->{'cell'} > $format->{'max_columns'})
                 {
                     echo_warn ("too much \@$macro (multitable has only $format->{'max_columns'} column(s))", $line_nr);
-                    #warn "$WARN cell over table width\n";
                     push @$stack, {'format' => 'null', 'text' => ''};
                     next;
                 }
@@ -10287,10 +10358,7 @@
                 {
                     push @$stack, {'format' => 'cell', 'text' => ''};
                 }
-                if (!no_paragraph($state,$_) or automatic_preformatted($state,$macro))
-                {
-                    begin_paragraph($stack, $state);
-                }
+                begin_paragraph_after_command($state,$stack,$macro,$_);
                 next;
             }
             # Macro opening a format (table, list, deff, example...)
@@ -10300,79 +10368,73 @@
                 {
                     close_paragraph($text, $stack, $state, $line_nr);
                 }
-                #print STDERR "begin $macro\n";
+                push (@{$state->{'command_stack'}}, $macro);
+                if ($format_type{$macro} eq 'menu')
+                {
+                    close_menu($text, $stack, $state, $line_nr);
+                    $state->{'menu'}++;
+                }
                 # A deff like macro
                 if (defined($Texi2HTML::Config::def_map{$macro}))
                 {
-                    if ($state->{'deff'} and ("$state->{'deff'}->{'command'}x" eq $macro))
+                    my $top_format = top_format($stack);
+                    if (defined($top_format) and ("$top_format->{'format'}x" eq $macro))
                     {
+                      # the @DEFx macro has been put at the top of the 
+                      # command_stack, although there is no real format opening
+                         pop @{$state->{'command_stack'}};
                          $macro =~ s/x$//o;
+                         if (!$state->{'deff_line'})
+                         {# DEFx macro within a DEF paragraph
+                              close_stack($text, $stack, $state, $line_nr, undef, 'deff_item');
+                              my $format_ref = pop @$stack;
+                              add_prev($text, $stack, &$Texi2HTML::Config::def_item($format_ref->{'text'}));
+			 }
                          #print STDERR "DEFx $macro\n";
                     }
                     else
                     {
                          # The previous @def command isn't the same @def
                          # command. We begin the item for the previous @def
-                         # command and immediatly open the new one.
-                         begin_deff_item($stack, $state, 1) if ($state->{'deff'});
+                         # command and immediately open the new one.
+                         begin_deff_item($stack, $state, 1) if ($state->{'deff_line'});
                          $macro =~ s/x$//o;
+                         # we remove what is on the stack and put it back,
+                         # to make sure that it is the form without x.
+                         pop @{$state->{'command_stack'}};
+                         push @{$state->{'command_stack'}}, $macro;
                          #print STDERR "DEF begin $macro\n";
                          push @$stack, { 'format' => $macro, 'text' => '' };
                     }
                     #print STDERR "BEGIN_DEFF $macro\n";
                     #dump_stack ($text, $stack, $state);
-                    $state->{'deff'}->{'command'} = $macro;
+                    $state->{'deff_line'}->{'command'} = $macro;
                     my ($style, $category, $name, $type, $class, $arguments);
-                    #($style, $category, $name, $type, $class, $arguments) = parse_def($macro, $_, $line_nr); 
                     ($style, $category, $name, $type, $class, $_) = parse_def($macro, $_, $line_nr); 
                     #print STDERR "AFTER parse_def $_";
-                    # duplicate_state ?
-                    #$category = substitute_line($category) if (defined($category));
-                    $state->{'deff'}->{'style'} = $style;
-                    $state->{'deff'}->{'category'} = substitute_line($category) if (defined($category));
-                    # FIXME -- --- ''... should be protected (not by makeinfo)
-                    #$name = substitute_line($name) if (defined($name));
-                    $state->{'deff'}->{'name'} = substitute_line($name) if (defined($name));
-                    # FIXME -- --- ''... should be protected (not by makeinfo)
-                    #$type = substitute_line($type) if (defined($type));
-                    $state->{'deff'}->{'type'} = substitute_line($type) if (defined($type));
-                    # FIXME -- --- ''... should be protected (not by makeinfo)
-                    #$class = substitute_line($class) if (defined($class));
-                    $state->{'deff'}->{'class'} = substitute_line($class) if (defined($class));
-                    # FIXME -- --- ''... should be protected 
+                    # duplicate_state?
+                    $state->{'deff_line'}->{'style'} = $style;
+                    $state->{'deff_line'}->{'category'} = substitute_line($category) if (defined($category));
+                    $state->{'deff_line'}->{'category'} = '' if (!defined($category));
+                    # FIXME -- --- ''... are transformed to entities by 
+                    # makeinfo. It may be wrong.
+                    $state->{'deff_line'}->{'name'} = substitute_line($name) if (defined($name));
+                    $state->{'deff_line'}->{'name'} = '' if (!defined($name));
+                    $state->{'deff_line'}->{'type'} = substitute_line($type) if (defined($type));
+                    $state->{'deff_line'}->{'class'} = substitute_line($class) if (defined($class));
+                    # the remaining of the line (the argument)
+                    #print STDERR "DEFF: open_cmd_line do_def_line $_";
                     open_cmd_line($stack, $state, ['keep'], \&do_def_line);
                     next;
-                    #$arguments = substitute_line($arguments) if (defined($arguments));
-                    #$category = &$Texi2HTML::Config::definition_category($category, $class, $style);
-                    #if (! $category) # category cannot be 0
-                    #{
-                    #    echo_warn("Bad definition line $_", $line_nr);
-                    #    return;
-                    #}
-                    #my $index_label = main::do_index_entry_label ($state) if ($name ne '');
-                    #add_prev ($text, $stack, &$Texi2HTML::Config::def_line($category, $name, $type, $arguments, $index_label));
-                    #return;
-                }
-                elsif ($format_type{$macro} eq 'menu')
-                {
-                    # if we are allready in a menu we must close it first
-                    # in order to close the menu comments and entries
-                    close_menu($text, $stack, $state, $line_nr);
-                    $state->{'menu'}++;
-                    push @$stack, { 'format' => $macro, 'text' => '' };
-                    if ($state->{'preformatted'})
-                    {
-                    # Start a fake complex format in order to have a given pre style
-                        $state->{'preformatted'}++;
-                        push @$stack, { 'format' => 'menu_preformatted', 'text' => '', 'pre_style' => $Texi2HTML::Config::MENU_PRE_STYLE };
-                        push @{$state->{'preformatted_stack'}}, {'pre_style' => $Texi2HTML::Config::MENU_PRE_STYLE, 'class' => 'menu-preformatted' };
-                    }
                 }
                 elsif (exists ($Texi2HTML::Config::complex_format_map->{$macro}))
-                {
+                { # handle menu if SIMPLE_MENU. see texi2html.init
                     $state->{'preformatted'}++;
-                    my $format = { 'format' => $macro, 'text' => '', 'pre_style' => $Texi2HTML::Config::complex_format_map->{$macro}->{'pre_style'} };
-                    push @{$state->{'preformatted_stack'}}, {'pre_style' =>$Texi2HTML::Config::complex_format_map->{$macro}->{'pre_style'}, 'class' => $macro };
+                    my $complex_format =  $Texi2HTML::Config::complex_format_map->{$macro};
+                    my $format = { 'format' => $macro, 'text' => '', 'pre_style' => $complex_format->{'pre_style'} };
+                    my $class = $macro;
+                    $class = $complex_format->{'class'} if (defined($complex_format->{'class'}));
+                    push @{$state->{'preformatted_stack'}}, {'pre_style' =>$complex_format->{'pre_style'}, 'class' => $class };
                     push @$stack, $format;
                     unless ($Texi2HTML::Config::format_in_paragraph{$macro})
                     {
@@ -10381,30 +10443,52 @@
                 }
                 elsif ($Texi2HTML::Config::paragraph_style{$macro})
                 {
-                    # if there are only spaces after the @center, then the end 
-                    # of line has allready been removed and the code triggered
-                    # by end of line for @center closing won't be called.
-                    # thus we don't open it (opening @center means pushing it
-                    # on the paragraph_style stack)
-                    next if (($macro eq 'center') and /^\s*$/); 
-                    push @{$state->{'paragraph_style'}}, $macro;
-                    push (@$stack, { 'format' => $macro, 'text' => '' }) unless ($macro eq 'center');
-                    if (!no_paragraph($state,$_) or automatic_preformatted($state,$macro))
+                    push (@$stack, { 'format' => $macro, 'text' => '' });
+                    begin_paragraph_after_command($state,$stack,$macro,$_);
+                    push @{$state->{'paragraph_style'}}, $macro;
+                    if ($macro eq 'center')
+                    {
+                        # @center may be in a weird state with regard with
+                        # nesting, so we put it on the bottom of the stack
+                        pop @{$state->{'command_stack'}};
+                        unshift @{$state->{'command_stack'}}, $macro;
+                        # for similar reasons, we may have a bad stack nesting
+                        # which results in } after a closing. For example
+                        # @center @samp{something @center end of samp}
+                        # results to samp being kept in the 'command_stack'
+
+                        # we keep the end of line for @center, to
+                        # avoid the return in case there is only spaces
+                        # which occurs for all the format commmands followed by 
+                        # spaces only
+                        next;
+                    }
+                }
+                elsif ($format_type{$macro} eq 'menu')
+                {
+                    # if $Texi2HTML::Config::SIMPLE_MENU we won't get there
+                    # as the menu is a complex format in that case, so it 
+                    # is handled above
+                    push @$stack, { 'format' => $macro, 'text' => '' };
+                    if ($state->{'preformatted'})
                     {
-                        begin_paragraph($stack, $state);
+                    # Start a fake complex format in order to have a given pre style
+                        $state->{'preformatted'}++;
+                        push @$stack, { 'format' => 'menu_preformatted', 'text' => '', 'pre_style' => $Texi2HTML::Config::MENU_PRE_STYLE };
+                        push @{$state->{'preformatted_stack'}}, {'pre_style' => $Texi2HTML::Config::MENU_PRE_STYLE, 'class' => 'menu-preformatted' };
                     }
                 }
                 elsif (($format_type{$macro} eq 'list') or ($format_type{$macro} eq 'table'))
                 {
                     my $format;
-		    #print STDERR "BEGIN $macro\n";
+		    #print STDERR "LIST_TABLE $macro\n";
 		    #dump_stack($text, $stack, $state);
                     if (($macro eq 'itemize') or ($macro =~ /^(|v|f)table$/))
                     {
                         my $command;
-                        my $appended;
-                        ($appended, $command) = parse_format_command($_,$macro);
-                        $format = { 'format' => $macro, 'text' => '', 'command' => $command, 'appended' => $appended, 'term' => 0 };
+                        my $prepended;
+                        ($prepended, $command) = parse_format_command($_,$macro);
+                        $format = { 'format' => $macro, 'text' => '', 'command' => $command, 'prepended' => $prepended, 'term' => 0 };
                         $_ = '';
                     }
                     elsif ($macro eq 'enumerate')
@@ -10420,7 +10504,6 @@
                         if (!$max_columns)
                         {
                             echo_warn ("empty multitable", $line_nr);
-			    #warn "$WARN empty multitable\n";
                             $max_columns = 0;
                         }
                         $format = { 'format' => $macro, 'text' => '', 'max_columns' => $max_columns, 'cell' => 1 };
@@ -10428,7 +10511,7 @@
                     $format->{'first'} = 1;
                     $format->{'paragraph_number'} = 0;
                     push @$stack, $format;
-                    push @{$state->{'format_stack'}}, $format;
+                    push @{$state->{'table_list_stack'}}, $format;
                     if ($macro =~ /^(|v|f)table$/)
                     {
                         push @$stack, { 'format' => 'line', 'text' => ''};
@@ -10452,11 +10535,8 @@
                     {
                         push @$stack, { 'format' => 'item', 'text' => ''};
                     }
-                    if (($macro ne 'multitable') and 
-                          !no_paragraph($state,$_) or automatic_preformatted($state,$macro))
-                    {
-                        begin_paragraph($stack, $state);
-                    }
+                    begin_paragraph_after_command($state,$stack,$macro,$_)
+                       if ($macro ne 'multitable');
                     return if ($format_type{$macro} eq 'table' or $macro eq 'itemize');
                 }
                 elsif ($macro eq 'float' or $macro eq 'quotation')
@@ -10468,9 +10548,8 @@
                     }
                     elsif ($macro eq 'quotation')
                     {
-                         open_cmd_line($stack, $state, ['keep','keep'], \&do_quotation_line);
+                         open_cmd_line($stack, $state, ['keep'], \&do_quotation_line);
                     }
-                    #print STDERR "Begin cmd_line\n";
                     #dump_stack($text, $stack, $state);
                     next;
                 }
@@ -10479,10 +10558,7 @@
                 elsif (defined($Texi2HTML::Config::format_map{$macro}) or ($format_type{$macro} eq 'cartouche'))
                 {
                     push @$stack, { 'format' => $macro, 'text' => '' };
-                    if (!no_paragraph($state,$_) or automatic_preformatted($state,$macro))
-                    {
-                        begin_paragraph($stack, $state); 
-                    }
+                    begin_paragraph_after_command($state,$stack,$macro,$_);
                 }
                 return if (/^\s*$/);
                 next;
@@ -10494,161 +10570,132 @@
         { # A macro with a character which shouldn't appear in macro name
             add_prev($text, $stack, do_text($1, $state));
             $_ = do_unknown ($2, $_, $text, $stack, $state, $line_nr);
-            #add_prev($text, $stack, do_text($1 ."\@$2", $state));
             next;
         }
-        elsif (s/^([^{},]*)([{}])//o or ($state->{'cmd_line'} and /^([^{},]*)$/))
+        elsif (s/^([^{},]*)([{}])//o or (@$stack and 
+             defined($stack->[-1]->{'style'}) and
+             ($stack->[-1]->{'style'} eq 'cmd_line') and /^([^{},]*)$/o))
         {
             my $leading_text = $1;
             my $brace = $2;
-            if (!defined($brace))#in a command line
+            add_prev($text, $stack, do_text($leading_text, $state));
+            if (defined($brace) and ($brace eq '{'))
             {
-                if (/^$/ and $state->{'end_of_line_protected'} and $state->{'deff'})
+                add_prev($text, $stack, do_text('{',$state));
+                unless ($state->{'keep_texi'} or $state->{'remove_texi'})
                 {
-                     return;
+                    echo_error ("'{' without macro. Before: $_", $line_nr);
                 }
-                chomp $leading_text;
-            }
-            # a brace closed, at the end of line. If in cmd_line we remove
-            # the end of line, such that the end of line is detected
-            elsif ($state->{'cmd_line'} and /^$/)
-            {
-                chomp $_;
             }
-            add_prev($text, $stack, do_text($leading_text, $state));
-#if ($state->{'cmd_line'}){print STDERR "CMD_LINE\n"; dump_stack($text, $stack, $state);}
-            if (defined($brace) and ($brace eq '{'))
+            elsif (defined($brace) and ($brace eq '}') and 
+                    (!@$stack or (!defined($stack->[-1]->{'style'}))
+            # a non empty stack, but with 'cmd_line' as first item on the stack
+            # is like an empty stack
+                       or ($stack->[-1]->{'style'} eq 'cmd_line')))
             {
-                add_prev($text, $stack, '{');
-                unless ($state->{'keep_texi'} or $state->{'remove_texi'})
+                if ($state->{'keep_texi'})
                 {
-                    echo_error ("'{' without macro before: $_", $line_nr);
+                    add_prev($text, $stack, '}');
+                }
+                else
+                {
+                    echo_error("'}' without opening '{' before: $_", $line_nr);
                 }
             }
             else
-            { # A @macroname{ ...} is closed
-                if (@$stack and defined($stack->[-1]->{'style'}))
+            { # A @-command{ ...} is closed
+                my $style = pop @$stack;
+                my $command = $style->{'style'};
+                my $result;
+                if (ref($::style_map_ref->{$command}) eq 'HASH')
+                {
+                    push (@{$style->{'args'}}, $style->{'text'});
+                    $style->{'fulltext'} .= $style->{'text'};
+                    #my $number = 0;
+                    #foreach my $arg(@{$style->{'args'}})
+                    #{
+                         #print STDERR "  $number: $arg\n";
+                    #     $number++;
+                    #}
+                    $style->{'text'} = $style->{'fulltext'};
+                    $state->{'keep_texi'} = 0 if (
+                        ($::style_map_ref->{$command}->{'args'}->[$style->{'arg_nr'}] eq 'keep') 
+                        and ($state->{'keep_nr'} == 1));
+                }
+                $state->{'no_paragraph'}-- if ($no_paragraph_macro{$command});
+                if ($command)
                 {
-                    my $macro = $stack->[-1]->{'style'};
-                    if (($macro eq 'cmd_line') and  $brace and ($brace eq '}'))
+                    $style->{'no_close'} = 1 if ($state->{'no_close'});
+                    if ($::style_map_ref->{$command} and (defined($style_type{$command})) and ((!$style->{'no_close'} and ($style_type{$command} eq 'style')) or ($style_type{$command} eq 'accent')))
                     {
-                         add_prev($text, $stack, '}');
-                         unless ($state->{'keep_texi'} or $state->{'remove_texi'})
-                         {
-                             echo_error ("A '}' without opening '{' before: $_", $line_nr);
-                         }
-                         next;
-                    }
-                    my $style = pop @$stack;
-                    my $result;
-                    if (ref($style_map_ref->{$macro}) eq 'HASH')
-                    {
-                         push (@{$style->{'args'}}, $style->{'text'});
-                         $style->{'fulltext'} .= $style->{'text'};
-                         my $number = 0;
-                         #foreach my $arg(@{$style->{'args'}})
-                         #{
-                              #print STDERR "  $number: $arg\n";
-                         #     $number++;
-                         #}
-                         $style->{'text'} = $style->{'fulltext'};
-                         $state->{'keep_texi'} = 0 if (#$state->{'keep_texi'} 
-                             ($style_map_ref->{$macro}->{'args'}->[$style->{'arg_nr'}] eq 'keep') 
-                             and ($state->{'keep_nr'} == 1));
-                    }
-                    $state->{'no_paragraph'}-- if ($no_paragraph_macro{$macro});
-                    if ($macro)
-                    {
-                        $style->{'no_close'} = 1 if ($state->{'no_close'});
-                        if ($state->{'keep_texi'})
-                        { # don't expand macros in anchor and ref
-                            close_arg ($macro, $style->{'arg_nr'}, $state);
-                            $result = '@' . $macro . '{' . $style->{'text'} . '}';
-                        }
-                        else
+                        my $style_command = pop @{$state->{'command_stack'}};
+                        if ($style_command ne $command)
                         {
-                            if ($style_map_ref->{$macro} and !$style->{'no_close'} and (defined($style_type{'$macro'})) and (($style_type{'$macro'} eq 'style') or ($style_type{'$macro'} eq 'accent')))
-                            {
-                                my $style = pop @{$state->{'style_stack'}};
-                                print STDERR "Bug: $style on 'style_stack', not $macro\n" if ($style ne $macro);
-                            }
-                            $result = do_simple($macro, $style->{'text'}, $state, $style->{'args'}, $line_nr, $style->{'no_open'}, $style->{'no_close'});
-                            if ($state->{'code_style'} < 0)
-                            {
-                                echo_error ("Bug: negative code_style: $state->{'code_style'}, line:$_", $line_nr);
-                            }
+                            print STDERR "Bug: $style_command on 'command_stack', not $command\n";
+                            push @$stack, $style;
+                            push @{$state->{'command_stack'}}, $style_command;
+                            print STDERR "Stacks before pop top:\n";
+                            dump_stack($text, $stack, $state);
+                            pop @$stack;
                         }
                     }
-                    else
-                    {
-                        #$result = $style->{'text'} . '}';
-                        print STDERR "Bug: empty style in pass_text\n";
+                    if ($state->{'keep_texi'})
+                    { # don't expand @-commands in anchor, refs...
+                        close_arg ($command, $style->{'arg_nr'}, $state);
+                        $result = '@' . $command . '{' . $style->{'text'} . '}';
                     }
-                    add_prev($text, $stack, $result);
-                    if ($state->{'cmd_line'} and ($style->{'style'} eq 'cmd_line'))
+                    else
                     {
-                        if ($state->{'deff'})
+                        $result = do_simple($command, $style->{'text'}, $state, $style->{'args'}, $line_nr, $style->{'no_open'}, $style->{'no_close'});
+                        if ($state->{'code_style'} < 0)
                         {
-#print STDERR "DO DEFF $state->{'deff'}->{'command'} $state->{'deff'}->{'arguments'}\n";
-                             my $def_style = $state->{'deff'}->{'style'};
-                             my $category = $state->{'deff'}->{'category'};
-                             my $class = $state->{'deff'}->{'class'};
-                             my $type = $state->{'deff'}->{'type'};
-                             my $name = $state->{'deff'}->{'name'};
-                             #my $arguments = $state->{'deff'}->{'arguments'};
-                             my $arguments; 
-                             $arguments = substitute_line($state->{'deff'}->{'arguments'}) if (defined($state->{'deff'}->{'arguments'}));
-
-                             $category = &$Texi2HTML::Config::definition_category($category, $class, $def_style);
-                             if (! $category) # category cannot be 0
-                             {
-                                  echo_warn("Bad definition line $_", $line_nr);
-                                  delete $state->{'cmd_line'};
-                                  return '';
-                             }
-                             my $index_label = do_index_entry_label ($state,$line_nr) if ($name ne '');
-                             add_prev($text, $stack, &$Texi2HTML::Config::def_line($category, $name, $type, $arguments, $index_label));
+                            echo_error ("Bug: negative code_style: $state->{'code_style'}, line:$_", $line_nr);
                         }
-                        else
-                        # we've got to mark paragraph here as the following
-                        # line will determine whether or not we open a paragraph
-                        {
-                             $state->{'open_paragraph'} = 1; 
-                        }
-                        delete $state->{'cmd_line'};
-                        $state->{'no_paragraph'}--;
-                        return;
                     }
-                    next;
                 }
                 else
                 {
-                    echo_error("'}' without opening '{' before: $_", $line_nr);
-                    # we cannot be in cmd_line as the stack is empty
-                    if ($state->{'cmd_line'})
+                    print STDERR "Bug: empty style in pass_text\n";
+                }
+                add_prev($text, $stack, $result);
+                if ($command eq 'cmd_line')
+                {
+                    if ($state->{'deff_line'})
                     {
-                        print STDERR "Bug: state->{'cmd_line'} true but stack empty\n";
-                        dump_stack($text, $stack, $state);
-                        delete $state->{'cmd_line'};
+#print STDERR "DO DEFF $state->{'deff_line'}->{'command'} $state->{'deff_line'}->{'arguments'}\n";
+                         my $command = $state->{'deff_line'}->{'command'};
+                         my $def_style = $state->{'deff_line'}->{'style'};
+                         my $category = $state->{'deff_line'}->{'category'};
+                         my $class = $state->{'deff_line'}->{'class'};
+                         my $type = $state->{'deff_line'}->{'type'};
+                         my $name = $state->{'deff_line'}->{'name'};
+                         #my $arguments = $state->{'deff'}->{'arguments'};
+                         my $arguments; 
+                         $arguments = substitute_line($state->{'deff_line'}->{'arguments'}) if (defined($state->{'deff_line'}->{'arguments'}));
+
+                         $category = &$Texi2HTML::Config::definition_category($category, $class, $def_style);
+                         my $index_label = do_index_entry_label($command, $state,$line_nr);
+                         add_prev($text, $stack, &$Texi2HTML::Config::def_line($category, $name, $type, $arguments, $index_label));
+                    }
+                    elsif ($state->{'preformatted'})
+                    { # inconditionally begin a preformatted section for 
+                      # non @def* commands (currently @float and @quotation)
+                      # for @def* it is done in begin_deff_item
+                        begin_paragraph($stack, $state);
                     }
-                    add_prev($text, $stack, '}') if ($state->{'keep_texi'});
+                    $state->{'no_paragraph'}--;
+                    return;
                 }
             }
         }
-        elsif (s/^([^,]*)([,])//o)
+        elsif (s/^([^,]*)[,]//o)
         {
              add_prev($text, $stack, do_text($1, $state));
-             my $comma = $2;
-             if ($state->{'cmd_line'} and !@$stack)
-             {
-                 print STDERR "Bug: state->{'cmd_line'} = $state->{'cmd_line'} but no stack\n";
-                 dump_stack($text, $stack, $state);
-             }
              if (@$stack and defined($stack->[-1]->{'style'})
-                  and (ref($style_map_ref->{$stack->[-1]->{'style'}}) eq 'HASH'))
+                  and (ref($::style_map_ref->{$stack->[-1]->{'style'}}) eq 'HASH'))
              {
                   my $macro = $stack->[-1]->{'style'};
-                  my $style_args = $style_map_ref->{$macro}->{'args'};
+                  my $style_args = $::style_map_ref->{$macro}->{'args'};
                   if (defined($style_args->[$stack->[-1]->{'arg_nr'} + 1]))
                   {
                        push (@{$stack->[-1]->{'args'}}, $stack->[-1]->{'text'});
@@ -10665,17 +10712,37 @@
         else
         { # no macro nor '}', but normal text
             add_prev($text, $stack, do_text($_, $state));
-            #print STDERR "END LINE: $_";
+            #print STDERR "END LINE:$_!!!\n";
             #dump_stack($text, $stack, $state);
             
             # @item line is closed by end of line
             add_term($text, $stack, $state, $line_nr);
-            # FIXME test @center @item and @item @center 
-            if ($state->{'paragraph_style'}->[-1] eq 'center' and !$state->{'close_stack'})
-            {
-                close_paragraph($text, $stack, $state, $line_nr);
-                pop @{$state->{'paragraph_style'}};
-                #$_ = $/ if (chomp($_));
+
+            # @center is closed at the end of line. When a @-command which 
+            # keeps the texi as is happens on the @center line, the @center
+            # is closed at the end of line appearing after the @-command
+            # closing (for example @ref, @footnote).
+
+            # when 'closing_center' is true we don't retry to close 
+            # the @center line.
+            if ($state->{'paragraph_style'}->[-1] eq 'center' 
+               and !$state->{'closing_center'} and !$state->{'keep_texi'})
+            {
+                $state->{'closing_center'} = 1;
+                unless ($Texi2HTML::Config::format_in_paragraph{'center'})
+                {
+                    close_paragraph($text, $stack, $state, $line_nr); 
+                }
+                close_stack($text, $stack, $state, $line_nr, undef, 'center');
+                delete $state->{'closing_center'};
+                my $center = pop @$stack;
+                add_prev($text, $stack, &$Texi2HTML::Config::paragraph_style_command('center',$center->{'text'}));
+                my $top_paragraph_style = pop @{$state->{'paragraph_style'}};
+                # center is at the bottom of the comand_stack because it 
+                # may be nested in many way
+                my $bottom_command_stack = shift @{$state->{'command_stack'}};
+                print STDERR "Bug: closing center, top_paragraph_style: $top_paragraph_style, bottom_command_stack: $bottom_command_stack.\n"
+                   if ($bottom_command_stack ne 'center' or $top_paragraph_style ne 'center');
                 $_ = '';
                 next;
             }
@@ -10690,9 +10757,9 @@
     my $macro = shift;
     my $arg_nr = shift;
     my $state = shift;
-    if (ref($style_map_ref->{$macro}) eq 'HASH')
+    if (ref($::style_map_ref->{$macro}) eq 'HASH')
     {
-         my $arg = $style_map_ref->{$macro}->{'args'}->[$arg_nr];
+         my $arg = $::style_map_ref->{$macro}->{'args'}->[$arg_nr];
          if ($arg eq 'code' and !$state->{'keep_texi'})
          {
              $state->{'code_style'}++;
@@ -10714,9 +10781,9 @@
     my $macro = shift;
     my $arg_nr = shift;
     my $state = shift;
-    if (ref($style_map_ref->{$macro}) eq 'HASH')
+    if (ref($::style_map_ref->{$macro}) eq 'HASH')
     {
-         my $arg = $style_map_ref->{$macro}->{'args'}->[$arg_nr];
+         my $arg = $::style_map_ref->{$macro}->{'args'}->[$arg_nr];
          if ($arg eq 'code' and !$state->{'keep_texi'})
          {
              $state->{'code_style'}--;
@@ -10734,6 +10801,8 @@
     }
 }
 
+# add a special style on the top of the stack. This is used for commands
+# that extend until the end of the line
 sub open_cmd_line($$$$)
 {
     my $stack = shift;
@@ -10741,23 +10810,16 @@
     my $args = shift;
     my $function = shift;
     push @$stack, {'style' => 'cmd_line', 'text' => '', 'arg_nr' => 0};
-    foreach my $hash (\%Texi2HTML::Config::style_map, \%Texi2HTML::Config::style_map_pre, \%Texi2HTML::Config::style_map_texi, \%Texi2HTML::Config::unformatted_text_style_map_texi)
+    foreach my $hash (\%Texi2HTML::Config::style_map, \%Texi2HTML::Config::style_map_pre, \%Texi2HTML::Config::style_map_texi, \%Texi2HTML::Config::simple_format_style_map_texi)
     {
          $hash->{'cmd_line'}->{'args'} = $args;
          $hash->{'cmd_line'}->{'function'} = $function;
     }
     $state->{'no_paragraph'}++;
     open_arg ('cmd_line', 0, $state);
-    $state->{'cmd_line'} = 1;
 }
 
-sub get_value($)
-{
-    my $value = shift;
-    return $value{$value} if ($value{$value});
-    return "No value for $value";
-} 
-
+# finish @item line in @*table
 sub add_term($$$$;$)
 {
     my $text = shift;
@@ -10765,51 +10827,44 @@
     my $state = shift;
     my $line_nr = shift;
     my $end = shift;
-    return unless (exists ($state->{'format_stack'}));
-    my $format = $state->{'format_stack'}->[-1];
+    return unless (exists ($state->{'table_list_stack'}));
+    my $format = $state->{'table_list_stack'}->[-1];
     return unless (($format_type{$format->{'format'}} eq 'table') and ($format->{'format'} ne 'multitable' ) and $format->{'term'});
     #print STDERR "ADD_TERM\n";
     # we set 'term' = 0 early such that if we encounter an end of line
     # during close_stack we don't try to do the term once more
-    $state->{'format_stack'}->[-1]->{'term'} = 0;
+    $state->{'table_list_stack'}->[-1]->{'term'} = 0;
+    # it is the first paragraph for the term.
     $format->{'paragraph_number'} = 0;
-    # no <pre> allowed in <dt>, thus it is possible there is a @t added
-    # to have teletype in preformatted.
-    if ($state->{'preformatted'} and $stack->[-1]->{'style'} and ($stack->[-1]->{'style'} eq 't'))
-    {
-        my $style = pop @$stack;
-        add_prev($text, $stack, do_simple($style->{'style'}, $style->{'text'}, $state, [$style->{'text'}]));
-    }
 
     #dump_stack($text, $stack, $state);
     close_stack($text, $stack, $state, $line_nr, undef, 'term');
     my $term = pop @$stack;
     my $command_formatted;
     chomp ($term->{'text'});
-    if (exists($style_map_ref->{$format->{'command'}}) and 
+    if (exists($::style_map_ref->{$format->{'command'}}) and 
        !exists($Texi2HTML::Config::special_list_commands{$format->{'format'}}->{$format->{'command'}}) and ($style_type{$format->{'command'}} eq 'style'))
     {
          my $leading_spaces = '';
          my $trailing_spaces = '';
-         $term->{'text'}  =~ s/^(\s*)//;
+         $term->{'text'}  =~ s/^(\s*)//o;
          $leading_spaces = $1 if (defined($1));
-         $term->{'text'}  =~ s/(\s*)$//;
+         $term->{'text'}  =~ s/(\s*)$//o;
          $trailing_spaces = $1 if (defined($1));
          $term->{'text'} = do_simple($format->{'command'}, $term->{'text'}, $state, [$term->{'text'}]); 
          $term->{'text'} = $leading_spaces. $term->{'text'} .$trailing_spaces;
     }
-    elsif (exists($things_map_ref->{$format->{'command'}}))
+    elsif (exists($::things_map_ref->{$format->{'command'}}))
     {
         $command_formatted = do_simple($format->{'command'}, '', $state);
     }
     my $index_label;
-    if ($format->{'format'} =~ /^(f|v)/)
+    if ($format->{'format'} =~ /^(f|v)/o)
     {
-        $index_label = do_index_entry_label($state,$line_nr);
+        $index_label = do_index_entry_label($format->{'format'}, $state,$line_nr);
         print STDERR "Bug: no index entry for $text" unless defined($index_label);
     }
-    add_prev($text, $stack, &$Texi2HTML::Config::table_item($term->{'text'}, $index_label,$format->{'format'},$format->{'command'}, $command_formatted));
-    #add_prev($text, $stack, &$Texi2HTML::Config::table_item($term->{'text'}, $index_entry, $state));
+    add_prev($text, $stack, &$Texi2HTML::Config::table_item($term->{'text'}, $index_label,$format->{'format'},$format->{'command'}, $command_formatted,$state->{'command_stack'}));
     unless ($end)
     {
         push (@$stack, { 'format' => 'line', 'text' => '' });
@@ -10824,7 +10879,7 @@
     my $stack = shift;
     my $state = shift;
     my $line_nr = shift;
-    my $format = $state->{'format_stack'}->[-1];
+    my $format = $state->{'table_list_stack'}->[-1];
     return unless ($format->{'format'} eq 'multitable');
     if ($format->{'cell'} > $format->{'max_columns'})
     {
@@ -10861,7 +10916,7 @@
     my $stack = shift;
     my $state = shift;
     my $line_nr = shift;
-    my $format = $state->{'format_stack'}->[-1];
+    my $format = $state->{'table_list_stack'}->[-1];
     return unless ($format->{'format'} eq 'multitable');
     if ($format->{'cell'} <= $format->{'max_columns'})
     {
@@ -10882,7 +10937,7 @@
     my $state = shift;
     my $line_nr = shift;
     my $end = shift;
-    my $format = $state->{'format_stack'}->[-1]; 
+    my $format = $state->{'table_list_stack'}->[-1]; 
     return unless ($format_type{$format->{'format'}} eq 'table' and ($format->{'format'} ne 'multitable') and ($format->{'term'} == 0));
     #print STDERR "ADD_LINE\n";
     #dump_stack($text, $stack, $state);
@@ -10898,8 +10953,8 @@
     {
         $format->{'first'} = 0;
         # we must have <dd> or <dt> following <dl> thus we do a 
-        # &$Texi2HTML::Config::table_line here too, although it could have been nice to
-        # have a normal paragraph.
+        # &$Texi2HTML::Config::table_line here too, although it could have
+        # been a normal paragraph.
         add_prev($text, $stack, &$Texi2HTML::Config::table_line($line->{'text'})) if ($line->{'text'} =~ /\S/o);
     }
     else
@@ -10909,15 +10964,12 @@
     unless($end)
     {
         push (@$stack, { 'format' => 'term', 'text' => '' });
-        # we cannot have a preformatted in table term (no <pre> in <dt>)
-        # thus we set teletyped style @t if there is no pre_style
-        push (@$stack, { 'style' => 't', 'text' => '' }) if ($state->{'preformatted'} and (!$state->{'preformatted_stack'}->[-1]->{'pre_style'}));
-        #push (@$stack, { 'style' => $format->{'command'}, 'text' => $format->{'appended'} });
     }
     $format->{'term'} = 1;
     return $format;
 }
 
+# finish @enumerate or @itemize @item
 sub add_item($$$$;$)
 {
     my $text = shift;
@@ -10926,7 +10978,7 @@
     my $line_nr = shift;
     my $line = shift;
     my $end = shift;
-    my $format = $state->{'format_stack'}->[-1];
+    my $format = $state->{'table_list_stack'}->[-1];
     return unless ($format_type{$format->{'format'}} eq 'list');
     #print STDERR "ADD_ITEM: \n";
     # as in pre the end of line are kept, we must explicitely abort empty
@@ -10936,25 +10988,25 @@
     $format->{'paragraph_number'} = 0;
     if ($format->{'format'} eq 'enumerate')
     {
-         $format->{'number'} = '';
-         my $spec = $format->{'spec'};
-         $format->{'item_nr'}++;
-         if ($spec =~ /^[0-9]$/)
-         {
-              $format->{'number'} = $spec + $format->{'item_nr'} - 1;
-         }
-         else
-         {
-              my $base_letter = ord('a');
-              $base_letter = ord('A') if (ucfirst($spec) eq $spec);
+        $format->{'number'} = '';
+        my $spec = $format->{'spec'};
+        $format->{'item_nr'}++;
+        if ($spec =~ /^[0-9]$/)
+        {
+            $format->{'number'} = $spec + $format->{'item_nr'} - 1;
+        }
+        else
+        {
+            my $base_letter = ord('a');
+            $base_letter = ord('A') if (ucfirst($spec) eq $spec);
 
-              my @letter_ords = decompose(ord($spec) - $base_letter + $format->{'item_nr'} - 1, 26);
-              foreach my $ord (@letter_ords)
-              {#FIXME? we go directly to 'ba' after 'z', and not 'aa'
-               #because 'ba' is 1,0 and 'aa' is 0,0.
-                   $format->{'number'} = chr($base_letter + $ord) . $format->{'number'};
-              }
-         }
+            my @letter_ords = decompose(ord($spec) - $base_letter + $format->{'item_nr'} - 1, 26);
+            foreach my $ord (@letter_ords)
+            {# WARNING we go directly to 'ba' after 'z', and not 'aa'
+             #because 'ba' is 1,0 and 'aa' is 0,0.
+                $format->{'number'} = chr($base_letter + $ord) . $format->{'number'};
+            }
+        }
     }
     
     #dump_stack ($text, $stack, $state);
@@ -10966,9 +11018,9 @@
     if (!$format->{'first'} or ($item->{'text'} =~ /\S/o))
     {
         my $formatted_command;
-        if (defined($format->{'command'}) and exists($things_map_ref->{$format->{'command'}}))
+        if (defined($format->{'command'}) and exists($::things_map_ref->{$format->{'command'}}))
         {
-             $formatted_command = do_simple($format->{'command'}, '', $state);
+            $formatted_command = do_simple($format->{'command'}, '', $state);
         }
 	#chomp($item->{'text'});
         add_prev($text, $stack, &$Texi2HTML::Config::list_item($item->{'text'},$format->{'format'},$format->{'command'}, $formatted_command, $format->{'item_nr'}, $format->{'spec'}, $format->{'number'}));
@@ -10997,110 +11049,135 @@
     my $line_nr = shift;
     my $no_open = shift;
     my $no_close = shift;
-    my $result;
     
     my $arg_nr = 0;
     $arg_nr = @$args - 1 if (defined($args));
     
 #print STDERR "DO_SIMPLE $macro $arg_nr $args @$args\n" if (defined($args));
-    if (defined($simple_map_ref->{$macro}))
+    if (defined($::simple_map_ref->{$macro}))
     {
         # \n may in certain circumstances, protect end of lines
         if ($macro eq "\n")
         {
-             $state->{'end_of_line_protected'} = 1;
-             #print STDERR "PROTECTING END OF LINE\n";
+            $state->{'end_of_line_protected'} = 1;
+            #print STDERR "PROTECTING END OF LINE\n";
         }
         if ($state->{'keep_texi'})
         {
-             return "\@$macro";
+            return "\@$macro";
         }
         elsif ($state->{'remove_texi'})
         {
 #print STDERR "DO_SIMPLE remove_texi $macro\n";
-             return  $simple_map_texi_ref->{$macro};
+            return  $::simple_map_texi_ref->{$macro};
         }
         elsif ($state->{'preformatted'})
         {
-             return $simple_map_pre_ref->{$macro};
+            return $::simple_map_pre_ref->{$macro};
         }
         else
         {
-             return $simple_map_ref->{$macro};
+            return $::simple_map_ref->{$macro};
         }
     }
-    if (defined($things_map_ref->{$macro}))
+    if (defined($::things_map_ref->{$macro}))
     {
+        my $result;
         if ($state->{'keep_texi'})
         {
-             $result = "\@$macro" . '{}';
+            $result = "\@$macro" . '{}';
         }
         elsif ($state->{'remove_texi'})
         {
-             $result =  $texi_map_ref->{$macro};
+            $result =  $::texi_map_ref->{$macro};
 #print STDERR "DO_SIMPLE remove_texi texi_map $macro\n";
         }
         elsif ($state->{'preformatted'})
         {
-             $result = $pre_map_ref->{$macro};
+            $result = $::pre_map_ref->{$macro};
         }
         else 
         {
-             $result = $things_map_ref->{$macro};
+            $result = $::things_map_ref->{$macro};
         }
         return $result . $text;
     }
-    elsif (defined($style_map_ref->{$macro}))
+    elsif (defined($::style_map_ref->{$macro}))
     {
         if ($state->{'keep_texi'})
         {
-             $result = "\@$macro" . '{' . $text . '}';
+            return "\@$macro" . '{' . $text . '}';
         }
         else 
         {
-             my $style;
-             if ($state->{'remove_texi'})
-             {
+            my $style;
+            my $result;
+            if ($state->{'remove_texi'})
+            {
 #print STDERR "REMOVE $macro, $style_map_texi_ref->{$macro}, fun $style_map_texi_ref->{$macro}->{'function'} remove cmd " . \&Texi2HTML::Config::t2h_remove_command . " ascii acc " . \&t2h_default_ascii_accent;
-                  $style = $style_map_texi_ref->{$macro};
-             }
-             elsif ($state->{'preformatted'})
-             {
-                  $style = $style_map_pre_ref->{$macro};
-             }
-             else
-             {
-                  $style = $style_map_ref->{$macro};
-             }
-             if (defined($style))
-             {                           # known style
-                  $result = &$Texi2HTML::Config::style($style, $macro, $text, $args, $no_close, $no_open, $line_nr, $state, $state->{'style_stack'});
-             }
-             if (!$no_close)
-             { 
-                  close_arg($macro,$arg_nr, $state);
-             }
+                $style = $::style_map_texi_ref->{$macro};
+            }
+            elsif ($state->{'preformatted'})
+            {
+                $style = $::style_map_pre_ref->{$macro};
+            }
+            else
+            {
+                $style = $::style_map_ref->{$macro};
+            }
+            if (defined($style))
+            {                           # known style
+                $result = &$Texi2HTML::Config::style($style, $macro, $text, $args, $no_close, $no_open, $line_nr, $state, $state->{'command_stack'});
+            }
+            if (!$no_close)
+            { 
+                close_arg($macro,$arg_nr, $state);
+            }
+            return $result;
+        }
+    }
+    elsif ($macro =~ /^special_(\w+)_(\d+)$/o)
+    {
+        my $style = $1;
+        my $count = $2;
+        print STDERR "Bug? text in \@$macro not empty.\n" if ($text ne '');  
+        if ($state->{'keep_texi'})
+        {# text should be empty
+            return "\@$macro" . '{' . $text . '}';
+        }
+        if (defined($Texi2HTML::Config::command_handler{$style}) and
+          defined($Texi2HTML::Config::command_handler{$style}->{'expand'}))
+        {
+            my $struct_count = 1+ $special_commands{$style}->{'max'} - $special_commands{$style}->{'count'};
+            if (($count != $struct_count) and $T2H_DEBUG)
+            {
+                print STDERR "count $count in \@special $style and structure $struct_count differ\n";
+            }
+            $special_commands{$style}->{'count'}--;  
         }
+        my $result = $Texi2HTML::Config::command_handler{$style}->{'expand'}
+              ($style,$count,$state,$text);
+        $result = '' if (!defined($result));
         return $result;
     }
     # Unknown macro
-    $result = '';
-    my ($done, $result_text, $message) = &$Texi2HTML::Config::unknown_style($macro, $text);
+    my $result = '';
+    my ($done, $result_text, $message) = &$Texi2HTML::Config::unknown_style($macro, $text,$state);
     if ($done)
     {
-         echo_warn($message, $line_nr) if (defined($message));
-         if (defined($result_text))
-         {
-             $result = $result_text;
-         }
+        echo_warn($message, $line_nr) if (defined($message));
+        if (defined($result_text))
+        {
+            $result = $result_text;
+        }
     }
     else 
     { 
         unless ($no_open)
         { # we warn only if no_open is true, i.e. it is the first time we 
           # close the macro for a multiline macro
-             echo_warn ("Unknown command with braces `\@$macro'", $line_nr);
-             $result = do_text("\@$macro") . "{";
+            echo_warn ("Unknown command with braces `\@$macro'", $line_nr);
+            $result = do_text("\@$macro") . "{";
         }
         $result .= $text;
         $result .= '}' unless ($no_close);
@@ -11116,7 +11193,8 @@
     my $stack = shift;
     my $state = shift;
     my $line_nr = shift;
-    my ($result_line, $result, $result_text, $message) = &$Texi2HTML::Config::unknown($macro, $line);
+    #print STDERR "do_unknown: $macro ::: $line"; 
+    my ($result_line, $result, $result_text, $message) = &$Texi2HTML::Config::unknown($macro, $line,$stack,$state);
     if ($result)
     {
          add_prev ($text, $stack, $result_text) if (defined($result_text));
@@ -11194,6 +11272,8 @@
 
     return undef unless (@$stack or $state->{'raw'} or $state->{'macro'} or $state->{'macro_name'} or $state->{'ignored'});
 
+    #print STDERR "close_stack_texi_structure\n";
+    #dump_stack ($text, $stack, $state);
     my $stack_level = $#$stack + 1;
     my $string = '';
     
@@ -11226,7 +11306,7 @@
         }
         if ($string ne '')
         {
-            #print STDERR "scan_texi ($string)\n";
+            #print STDERR "close_stack scan_texi ($string)\n";
             scan_texi ($string, $text, $stack, $state, $line_nr);
             $string = '';
         }
@@ -11238,39 +11318,45 @@
 
     while ($stack_level--)
     {
-          my $stack_text = $stack->[$stack_level]->{'text'};
-          $stack_text = '' if (!defined($stack_text));
-          if ($stack->[$stack_level]->{'format'})
-          {
-               my $format = $stack->[$stack_level]->{'format'};
-               if ($format eq 'index_item')
-               {
-                    enter_table_index_entry($text, $stack, $state, $line_nr);
-                    next;
-               }
-               elsif (!defined($format_type{$format}) or ($format_type{$format} ne 'fake'))
-               {
-                    $stack_text = "\@$format\n" . $stack_text;
-               }
-          }
-          elsif (defined($stack->[$stack_level]->{'style'}))
-          {
-              my $style = $stack->[$stack_level]->{'style'};
-              if ($style ne '')
-              {
-                   $stack_text = "\@$style\{" . $stack_text;
-              }
-              else
-              {
-                   $stack_text = "\{" . $stack_text;
-              }
-         }
-         pop @$stack;
-         add_prev($text, $stack, $stack_text);
+        my $stack_text = $stack->[$stack_level]->{'text'};
+        $stack_text = '' if (!defined($stack_text));
+        if ($stack->[$stack_level]->{'format'})
+        {
+            my $format = $stack->[$stack_level]->{'format'};
+            if ($format eq 'index_item')
+            {
+                enter_table_index_entry($text, $stack, $state, $line_nr);
+                next;
+            }
+            elsif (!defined($format_type{$format}) or ($format_type{$format} ne 'fake'))
+            {
+                $stack_text = "\@$format\n" . $stack_text;
+            }
+        }
+        elsif (defined($stack->[$stack_level]->{'style'}))
+        {
+            if ($state->{'structure'})
+            {
+                $stack_text = close_structure_command($stack->[$stack_level],
+                   $state,1,$line_nr)
+            }
+            else
+            {
+                my $style = $stack->[$stack_level]->{'style'};
+                if ($style ne '')
+                {
+                    $stack_text = "\@$style\{" . $stack_text;
+                }
+                else
+                {# this is a lone opened brace. We readd it there.
+                    $stack_text = "\{" . $stack_text;
+                }
+            }
+        }
+        pop @$stack;
+        add_prev($text, $stack, $stack_text);
     }
     $stack = [ ];
-    $stack_level = 0;
-    #return ($text, [ ], $state);
 
     $state->{'close_stack'} = 1;
     if ($string ne '')
@@ -11289,19 +11375,32 @@
     delete $state->{'close_stack'};
 }
 
+# close region like @insertcopying, titlepage...
+# restore $state->{'after_element'} and delete the structure
+sub close_region($)
+{
+    my $state = shift;
+    $state->{'after_element'} = 1;
+    delete $state->{'after_element'} unless 
+          ($state->{'region_lines'}->{'after_element'});
+    $state->{'place'} = $state->{'region_lines'}->{'kept_place'};
+    delete $state->{'region_lines'}->{'number'};
+    delete $state->{'region_lines'}->{'format'};
+    delete $state->{'region_lines'}->{'after_element'};
+    delete $state->{'region_lines'}->{'kept_place'};
+    delete $state->{'region_lines'};
+}
 
 # close the stack, closing macros and formats left open.
 # the precise behavior of the function depends on $close_paragraph:
 #  undef   -> close everything
-#  defined -> remove empty paragraphs, close until the first format or paragraph.
-#      1          -> don't close styles, duplicate stack of styles not closed
-# FIXME never used
-#      ''         -> close styles, don't duplicate
+#  defined -> remove empty paragraphs, close until the first format or 
+#          paragraph. don't close styles, duplicate stack of styles not closed
 
 # if a $format is given the stack is closed according to $close_paragraph but
 # if $format is encountered the closing stops
 
-sub close_stack($$$$;$$$)
+sub close_stack($$$$;$$)
 {
     my $text = shift;
     my $stack = shift;
@@ -11309,12 +11408,8 @@
     my $line_nr = shift;
     my $close_paragraph = shift;
     my $format = shift;
-    # FIXME this is not used
-    my $search_style = shift;
     my $new_stack;
     
-    # cancel paragraph states
-    $state->{'paragraph_style'} = [ '' ] unless (defined($close_paragraph) or defined($format));
     #print STDERR "sub_close_stack\n";
     return $new_stack unless (@$stack);
     
@@ -11345,11 +11440,11 @@
             # We silently close paragraphs, preformatted sections and fake formats
             if ($stack_format eq 'paragraph')
             {
-                $string .= "\@end_paragraph ";
+                $string .= "\@end_paragraph{}";
             }
             elsif ($stack_format eq 'preformatted')
             {
-                $string .= "\@end_preformatted ";
+                $string .= "\@end_preformatted{}";
             }
             else
             {
@@ -11357,11 +11452,10 @@
                 {
                     warn "# Closing a fake format `$stack_format'\n" if ($T2H_VERBOSE);
                 }
-                else
-                {
+                elsif ($stack_format ne 'center')
+                { # we don't warn, but add an @end center
                     echo_warn ("closing `$stack_format'", $line_nr); 
                     #dump_stack ($text, $stack, $state);
-                    #warn "$WARN closing `$stack_format'\n"; 
                 }
                 $string .= "\@end $stack_format ";
             }
@@ -11369,25 +11463,34 @@
         else
         {
             my $style =  $stack->[$stack_level]->{'style'};
-            last if (defined($search_style) and $style eq $search_style);
-            # FIXME images, footnotes, xrefs, anchors with $close_paragraphs ?
+            # FIXME images, footnotes, xrefs, anchors with $close_paragraphs?
+            # seems that it is not possible, as it is triggered by 
+            # close_paragraph which shouldn't be called with keep_texi
+            # and when the arguments are expanded, there is a 
+            # substitute_line or similar with a new stack.
             if ($close_paragraph)
             { #duplicate the stack
-                if (exists($style_type{$style}) and ($style_type{$style} eq 'style') or (!exists($style_type{$style})))
+              # the !exists($style_type{$style}) condition catches the unknown 
+              # @-commands: by default they are considered as style commands
+                if ((exists($style_type{$style}) and ($style_type{$style} eq 'style')) or (!exists($style_type{$style})))
                 {
                     push @$new_stack, { 'style' => $style, 'text' => '', 'no_open' => 1, 'arg_nr' => 0 };
-                    $string .= '} ';
+                    $string .= '}';
+                }
+                elsif (($style_type{$style} eq 'simple_style') or ($style_type{$style} eq 'accent'))
+                {
+                    $string .= '}';
                 }
-                elsif (exists($style_type{$style}) and ($style_type{$style} eq 'simple'))
+                else
                 {
-                    $string .= '} ';
+                    print STDERR "$style while closing paragraph\n";
                 }
             }
             else
             {
-                dump_stack ($text, $stack, $state) if (!defined($style)); 
+                dump_stack ($text, $stack, $state) if (!defined($style)); # bug
                 $string .= '}';
-                echo_warn ("closing $style", $line_nr) if ($style); 
+                echo_warn ("closing \@-command $style", $line_nr) if ($style); 
             }
         }
     }
@@ -11402,6 +11505,13 @@
     delete $state->{'no_close'};
     delete $state->{'close_stack'};
     $state->{'verb'} = $verb if (($verb ne '') and $close_paragraph);
+    # cancel paragraph states and command_stack
+    # FIXME this seems to be unusefull, see formatting/center.texi
+    unless (defined($close_paragraph) or defined($format))
+    {
+        $state->{'paragraph_style'} = [ '' ];
+        $state->{'command_stack'} = [ '' ]; 
+    }
     return $new_stack;
 }
 
@@ -11470,7 +11580,6 @@
         add_prev($text, $stack, do_paragraph($paragraph->{'text'}, $state));
         $state->{'paragraph_macros'} = $new_stack;
         return 1;
-	#return "\@$macro ";
     }
     elsif ($top_stack and ($top_stack->{'format'} eq 'preformatted'))
     {
@@ -11478,7 +11587,6 @@
         add_prev($text, $stack, do_preformatted($paragraph->{'text'}, $state));
         $state->{'paragraph_macros'} = $new_stack;
         return 1;
-	#return "\@$macro ";
     }
     return;
 }
@@ -11492,9 +11600,7 @@
        and ($stack->[-1]->{'text'} !~ /\S/))
     {
         pop @$stack;
-        return 1;
     }
-    return 0;
 }
 
 # for debugging
@@ -11512,12 +11618,21 @@
     {
         print STDERR "text: UNDEF\n";
     }
-    print STDERR "state: ";
+    my $in_remove = 0;
+    my $in_simple_format = 0;
+    my $in_keep = 0;
+    $in_keep = 1 if ($state->{'keep_texi'});
+    if (!$in_keep)
+    {
+        $in_simple_format = 1 if ($state->{'simple_format'});
+        $in_remove = 1 if ($state->{'remove_texi'}  and !$in_simple_format);
+    }
+    print STDERR "state(k${in_keep}s${in_simple_format}r${in_remove}): ";
     foreach my $key (keys(%$state))
     {
         my $value = 'UNDEF';
         $value = $state->{$key} if (defined($state->{$key}));
-        print STDERR "$key: $value ";
+        print STDERR "$key: $value " if (!ref($value));
     }
     print STDERR "\n";
     my $stack_level = $#$stack + 1;
@@ -11533,15 +11648,32 @@
         }
         print STDERR "\n";
     }
-    if (defined($state->{'format_stack'}))
+    if (defined($state->{'table_list_stack'}))
     {
-        print STDERR "format_stack: ";
-        foreach my $format (@{$state->{'format_stack'}})
+        print STDERR "table_list_stack: ";
+        foreach my $format (@{$state->{'table_list_stack'}})
         {
             print STDERR "$format->{'format'} ";
         }
         print STDERR "\n";
     }
+    if (defined($state->{'command_stack'})) 
+    {
+        print STDERR "command_stack: ";
+        foreach my $style (@{$state->{'command_stack'}})
+        {
+            print STDERR "($style) ";
+        }
+        print STDERR "\n";
+    }
+    if (defined($state->{'region_lines'}))
+    {
+        print STDERR "region_lines($state->{'region_lines'}->{'number'}): $state->{'region_lines'}->{'format'}\n";
+    }
+    if (defined($state->{'text_macro_stack'}) and @{$state->{'text_macro_stack'}})
+    {
+        print STDERR "text_macro_stack: (@{$state->{'text_macro_stack'}})\n";
+    }
 }
 
 # for debugging 
@@ -11574,7 +11706,8 @@
     my $state = shift;
     $state = {} if (!defined($state));
     $state->{'no_paragraph'} = 1;
-    return unformatted_text($state, $line) if ($state->{'unformatted'});
+    # this is usefull when called from &$I
+    return simple_format($state, $line) if ($state->{'simple_format'});
     return substitute_text($state, $line);
 }
 
@@ -11641,9 +11774,13 @@
     return $result . $text;
 }
 
+# this function does the second pass formatting. It is not obvious that 
+# it is usefull as in that pass the collected things 
 sub substitute_texi_line($)
 {
     my $text = shift;  
+    return $text if $text =~ /^\s*$/;
+    #print STDERR "substitute_texi_line $text\n";
     my @text = substitute_text({'structure' => 1}, $text);
     my @result = ();
     while (@text)
@@ -11679,21 +11816,30 @@
     return $cnt;
 }
 
-sub do_index_entry_label($$)
+sub do_index_entry_label($$$)
 {
+    my $command = shift;
     my $state = shift;
     my $line_nr = shift;
-    my $entry = shift @index_labels;
     return '' if ($state->{'multiple_pass'});
+    my $entry = shift @index_labels;
     if (!defined($entry))
     {
         echo_warn ("Not enough index entries !", $line_nr);
         return '';
     }
+    if ($command ne $entry->{'command'})
+    {
+        # happens with bad texinfo with a line like
+        # @deffn func aaaa args  @defvr c--ategory d--efvr_name
+        echo_warn ("Waiting for index cmd \@$entry->{'command'}, got \@$command", $line_nr);
+    }
     
-    print STDERR "[(index) $entry->{'entry'} $entry->{'label'}]\n"
+    print STDERR "[(index $command) $entry->{'entry'} $entry->{'label'}]\n"
         if ($T2H_DEBUG & $DEBUG_INDEX);
-    return &$Texi2HTML::Config::index_entry_label ($entry->{'label'}, $state->{'preformatted'}, substitute_line($entry->{'entry'}), $index_properties->{$entry->{'prefix'}}->{'name'}); 
+    return &$Texi2HTML::Config::index_entry_label ($entry->{'label'}, $state->{'preformatted'}, substitute_line($entry->{'entry'}), 
+      $index_prefix_to_name{$prefix},
+       $command); 
 }
 
 # decompose a decimal number on a given base. The algorithm looks like
@@ -11743,8 +11889,83 @@
 }
     
 open_file($docu, $texi_line_number);
-Texi2HTML::LaTeX2HTML::init($docu_name, $docu_rdir, $T2H_DEBUG & $DEBUG_L2H)
- if ($Texi2HTML::Config::L2H);
+#Texi2HTML::LaTeX2HTML::init() if ($Texi2HTML::Config::L2H);
+if ($Texi2HTML::Config::L2H)
+{
+   push @Texi2HTML::Config::command_handler_init, \&Texi2HTML::LaTeX2HTML::init;
+   push @Texi2HTML::Config::command_handler_process, \&Texi2HTML::LaTeX2HTML::latex2html;
+   push @Texi2HTML::Config::command_handler_finish, \&Texi2HTML::LaTeX2HTML::finish;
+   $Texi2HTML::Config::command_handler{'math'} = 
+     { 'init' => \&Texi2HTML::LaTeX2HTML::to_latex, 
+       'expand' => \&Texi2HTML::LaTeX2HTML::do_tex
+     };
+   $Texi2HTML::Config::command_handler{'tex'} = 
+     { 'init' => \&Texi2HTML::LaTeX2HTML::to_latex, 
+       'expand' => \&Texi2HTML::LaTeX2HTML::do_tex
+     };
+}
+foreach my $handler(@Texi2HTML::Config::command_handler_init)
+{
+    &$handler;
+}
+
+my @css_import_lines;
+my @css_rule_lines;
+
+# process css files
+foreach my $file (@Texi2HTML::Config::CSS_FILES)
+{
+    my $css_file_fh;
+    my $css_file;
+    if ($file eq '-')
+    {
+        $css_file_fh = \*STDIN;
+        $css_file = '-';
+    }
+    else
+    {
+         $css_file = locate_init_file ($file);
+         unless (defined($css_file))
+         {
+             warn "css file $file not found\n";
+             next;
+         }
+         unless (open (CSSFILE, "$css_file"))
+         {
+             warn "Cannot open ${css_file}: $!";
+             next;
+        }
+        $css_file_fh = \*CSSFILE;
+    }
+    my ($import_lines, $rules_lines);
+    ($import_lines, $rules_lines) = process_css_file ($css_file_fh, $css_file);
+    push @css_import_lines, @$import_lines;
+    push @css_rule_lines, @$rules_lines;
+}
+
+$Texi2HTML::THISDOC{'css_import_lines'} = \@css_import_lines;
+$Texi2HTML::THISDOC{'css_lines'} = \@css_rule_lines;
+
+if ($T2H_DEBUG & $DEBUG_USER)
+{
+    if (@css_import_lines)
+    {
+        print STDERR "# css import lines\n";
+        foreach my $line (@css_import_lines)
+        {
+            print STDERR "$line";
+        }
+    }
+    if (@css_rule_lines)
+    {
+        print STDERR "# css rule lines\n";
+        foreach my $line (@css_rule_lines)
+        {
+            print STDERR "$line";
+        }
+    }
+}
+
 pass_texi();
 dump_texi(\@lines, 'texi', \@lines_numbers) if ($T2H_DEBUG & $DEBUG_TEXI);
 if (defined($Texi2HTML::Config::MACRO_EXPAND))
@@ -11764,8 +11985,21 @@
     }
 }
 exit(0) if ($Texi2HTML::Config::DUMP_TEXI or defined($Texi2HTML::Config::MACRO_EXPAND));
+
+foreach my $style (keys(%special_commands))
+{
+  $special_commands{$style}->{'max'} = $special_commands{$style}->{'count'};
+}
+
 rearrange_elements();
 do_names();
+
+#Texi2HTML::LaTeX2HTML::latex2html();
+foreach my $handler(@Texi2HTML::Config::command_handler_process)
+{
+    &$handler;
+}
+
 if (@{$region_lines{'documentdescription'}} and (!defined($Texi2HTML::Config::DOCUMENT_DESCRIPTION)))
 {
     my $documentdescription = remove_texi(@{$region_lines{'documentdescription'}}); 
@@ -11778,36 +12012,43 @@
         $Texi2HTML::Config::DOCUMENT_DESCRIPTION .= ' ' . $line;
     }
 }
-# do copyright notice inserted in comment at the begining of the files
+# do copyright notice inserted in comment at the beginning of the files
 if (@{$region_lines{'copying'}})
 {
     $copying_comment = &$Texi2HTML::Config::copying_comment($region_lines{'copying'});
-    #$copying_comment = remove_texi(@{$region_lines{'copying'}});
-    #$copying_comment = &$Texi2HTML::Config::comment($copying_comment);
 }
 &$Texi2HTML::Config::toc_body(\@elements_list);
-#&$Texi2HTML::Config::toc_body(\@elements_list, $do_contents, $do_scontents);
-&$Texi2HTML::Config::css_lines(\@css_import_lines, \@css_rule_lines);
 $sec_num = 0;
-#$Texi2HTML::Config::L2H = l2h_FinishToLatex() if ($Texi2HTML::Config::L2H);
-#$Texi2HTML::Config::L2H = l2h_ToHtml()        if ($Texi2HTML::Config::L2H);
-#$Texi2HTML::Config::L2H = l2h_InitFromHtml()  if ($Texi2HTML::Config::L2H);
-Texi2HTML::LaTeX2HTML::latex2html();
+
+
+&$Texi2HTML::Config::css_lines(\@css_import_lines, \@css_rule_lines);
+
 pass_text();
-#do_node_files() if ($Texi2HTML::Config::SPLIT ne 'node' and $Texi2HTML::Config::NODE_FILES);
+print STDERR "BUG: " . scalar(@index_labels) . " index entries pending\n" 
+   if (scalar(@index_labels));
+foreach my $special (keys(%special_commands))
+{
+    my $count = $special_commands{$special}->{'count'};
+    if (($count != 0) and $T2H_VERBOSE)
+    {
+         echo_warn ("$count special \@$special were not processed.\n");
+    }
+}
 if ($Texi2HTML::Config::IDX_SUMMARY)
 {
-    foreach my $entry (keys(%$index_properties))
+    foreach my $entry (keys(%index_names))
     {
-         my $name = $index_properties->{$entry}->{'name'};
-         do_index_summary_file($name) 
-            unless ($empty_indices{$name});
+         do_index_summary_file($entry) unless ($empty_indices{$entry});
     }
 }
 do_node_files() if ($Texi2HTML::Config::NODE_FILES);
 #l2h_FinishFromHtml() if ($Texi2HTML::Config::L2H);
 #l2h_Finish() if($Texi2HTML::Config::L2H);
-Texi2HTML::LaTeX2HTML::finish();
+#Texi2HTML::LaTeX2HTML::finish();
+foreach my $handler(@Texi2HTML::Config::command_handler_finish)
+{
+    &$handler;
+}
 &$Texi2HTML::Config::finish_out();
 print STDERR "# that's all folks\n" if $T2H_VERBOSE;
 
--- tetex-src-3.0/utils/texi2html/texi2html.spec.texi176	2008-01-06 15:02:50.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/texi2html.spec	2007-06-05 06:17:12.000000000 +0200
@@ -1,18 +1,27 @@
 Name: texi2html
-Version: 1.76
+Version: 1.78
 Release: 1
-Epoch: 0
+#Epoch: 0
 License: GPL
 Group: Applications/Text
 Summary: A highly customizable texinfo to HTML and other formats translator
-Source0: %{name}-%{version}.tar.bz2
-#Source: http://texi2html.cvshome.org/servlets/ProjectDownloadList
-URL: http://texi2html.cvshome.org/
-
-Requires: perl >= 5.004
-Prefix: %{_prefix}
+Source: http://savannah.nongnu.org/download/texi2html/%{name}-%{version}.tar.gz
+URL: http://www.nongnu.org/texi2html/
+BuildArch: noarch
 BuildRoot:  %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
+# You may want to uncomment the following
+#BuildRequires: perl
+# perl is picked up automatically in most cases and the package may have 
+# a different name so it is better not to require it. Moreover such old perl
+# is unlikely to show up in a rpm based distribution.
+#Requires: perl >= 5.004
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+# uncomment this if you want to build a relocatable package
+#Prefix: %{_prefix}
+
 %description
 The basic purpose of texi2html is to convert Texinfo documents into HTML, 
 and other formats.  Configuration files written in perl provide fine degree 
@@ -24,7 +33,6 @@
 
 %build
 %configure
-make clean
 make %{?_smp_mflags}
 
 %install
@@ -38,28 +46,25 @@
 rm -rf $RPM_BUILD_ROOT
 
 %post
-/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir 2>/dev/null || :
+/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || :
 
 %preun
 if [ $1 = 0 ]; then
-  /sbin/install-info --delete %{_infodir}/%{name}.info \
-    %{_infodir}/dir 2>/dev/null || :
+  /sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir || :
 fi
 
 %files
 %defattr(-,root,root)
-%doc AUTHORS NEWS README ChangeLog TODO %{name}.init
+%doc AUTHORS NEWS README ChangeLog %{name}.init
 %{_bindir}/%{name}
 %{_datadir}/texinfo/html/%{name}.html
 %{_mandir}/man*/%{name}*
 %{_infodir}/%{name}.info*
-%dir %{_datadir}/%{name}
-%{_datadir}/%{name}/*.init
-%dir %{_datadir}/%{name}/i18n/
-%{_datadir}/%{name}/i18n/*
-%dir %{_datadir}/%{name}/images/
-%{_datadir}/%{name}/images/*
+%{_datadir}/%{name}/
 
 %changelog
+* Mon Nov 14 2005 Patrice Dumas <pertusus@free.fr> 1.77-1
+- cleanups
+
 * Mon Mar 23 2004 Patrice Dumas <pertusus@free.fr> 0:1.69-0.fdr.1
 - Initial build.
--- tetex-src-3.0/utils/texi2html/Makefile.am.texi176	2005-02-01 17:12:19.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/Makefile.am	2007-06-05 06:16:08.000000000 +0200
@@ -10,25 +10,28 @@
 TEXINFO_TEX = doc/texinfo.tex
 
 bin_SCRIPTS = texi2html
-texi2html_SOURCES = \
+texi2html_additional_scripts = \
 	MySimple.pm \
 	T2h_i18n.pm \
 	texi2html.init \
-	texi2html.pl \
-	translations.pl
+	translations.pl \
+	l2h.init \
+	T2h_l2h.pm
+
+texi2html_sources = texi2html_configured.pl $(texi2html_additional_scripts)
 
-noinst_SCRIPTS = manage_i18n.pl
-man_MANS = texi2html.1
+noinst_SCRIPTS = manage_i18n.pl buildt2h.sh
 
 EXTRA_DIST = \
-	INTRODUCTION \
 	MySimple.pod \
 	autogen.sh \
-	manage_i18n.pl \
+	$(noinst_SCRIPTS) \
 	missing-texi2html \
-	l2h.init \
+	texi2html.pl \
 	texi2html.spec \
-	$(texi2html_SOURCES)
+	texi2html.spec.in \
+	texi2html.pl \
+	$(texi2html_additional_scripts)
 
 dist_pkgdata_DATA = l2h.init \
 	examples/makeinfo.init \
@@ -39,87 +42,128 @@
 	examples/inlinestyle.init \
 	examples/utf8.init \
 	examples/chm.init \
-	examples/roff.init	
+	examples/roff.init \
+	examples/tex4ht.init \
+	examples/my-bib-macros.texi \
+	examples/bib-example.texi \
+	examples/glossary.texi 
 
-dist_i18n_DATA = i18n/en \
-	i18n/de \
+i18n_files = i18n/de \
 	i18n/es \
 	i18n/fr \
 	i18n/nl \
 	i18n/no \
-	i18n/pt 
+	i18n/pt \
+	i18n/pt_BR \
+	i18n/ja
+
+dist_i18n_DATA = i18n/en \
+	$(i18n_files)
 
-dist_images_DATA = images/a_begin.gif \
-	images/a_begin_na.gif \
-	images/a_document.gif \
-	images/a_document_na.gif \
-	images/a_empty.gif \
-	images/a_end.gif \
-	images/a_end_na.gif \
-	images/a_help.gif \
-	images/a_help_na.gif \
-	images/a_index.gif \
-	images/a_index_na.gif \
-	images/a_leftdouble.gif \
-	images/a_leftdouble_na.gif \
-	images/a_left.gif \
-	images/a_left_na.gif \
-	images/a_page.gif \
-	images/a_page_na.gif \
-	images/a_rightdouble.gif \
-	images/a_rightdouble_na.gif \
-	images/a_right.gif \
-	images/a_right_na.gif \
-	images/a_searchdoc.gif \
-	images/a_searchdoc_na.gif \
-	images/a_search.gif \
-	images/a_search_na.gif \
-	images/a_tableofcon.gif \
-	images/a_tableofcon_na.gif \
-	images/a_top.gif \
-	images/a_top_na.gif \
-	images/a_up.gif \
-	images/a_up_na.gif \
+dist_images_DATA = images/a_begin.png \
+	images/a_begin_na.png \
+	images/a_document.png \
+	images/a_document_na.png \
+	images/a_empty.png \
+	images/a_end.png \
+	images/a_end_na.png \
+	images/a_help.png \
+	images/a_help_na.png \
+	images/a_index.png \
+	images/a_index_na.png \
+	images/a_leftdouble.png \
+	images/a_leftdouble_na.png \
+	images/a_left.png \
+	images/a_left_na.png \
+	images/a_page.png \
+	images/a_page_na.png \
+	images/a_rightdouble.png \
+	images/a_rightdouble_na.png \
+	images/a_right.png \
+	images/a_right_na.png \
+	images/a_searchdoc.png \
+	images/a_searchdoc_na.png \
+	images/a_search.png \
+	images/a_search_na.png \
+	images/a_tableofcon.png \
+	images/a_tableofcon_na.png \
+	images/a_top.png \
+	images/a_top_na.png \
+	images/a_up.png \
+	images/a_up_na.png \
 	images/bg.jpg \
-	images/bg_left.gif \
-	images/bg_right.gif \
-	images/blue_dir.gif \
-	images/blue_down.gif \
-	images/blue_grab.gif \
-	images/blue_help.gif \
-	images/blue_next.gif \
-	images/blue_nnext.gif \
-	images/blue_pprev.gif \
-	images/blue_prev.gif \
-	images/blue_readme.gif \
-	images/blue_top.gif \
-	images/blue_up.gif \
-	images/blue_uup.gif \
-	images/contents_motif.gif \
+	images/bg_left.png \
+	images/bg_right.png \
+	images/blue_dir.png \
+	images/blue_down.png \
+	images/blue_grab.png \
+	images/blue_help.png \
+	images/blue_next.png \
+	images/blue_nnext.png \
+	images/blue_pprev.png \
+	images/blue_prev.png \
+	images/blue_readme.png \
+	images/blue_top.png \
+	images/blue_up.png \
+	images/blue_uup.png \
+	images/contents_motif.png \
 	images/COPYING \
-	images/index_motif.gif \
-	images/Mybg.gif \
-	images/next_motif.gif \
-	images/next_motif_gr.gif \
-	images/previous_motif.gif \
-	images/previous_motif_gr.gif \
-	images/spacer3.gif \
-	images/xy_contents.gif \
-	images/xy_foot.gif \
-	images/xy_next.gif \
-	images/xy_next_gr.gif \
-	images/xy_nextsection.gif \
-	images/xy_nextsection_gr.gif \
-	images/xy_previous.gif \
-	images/xy_previous_gr.gif \
-	images/xy_previoussection.gif \
-	images/xy_previoussection_gr.gif \
-	images/xy_up.gif \
-	images/xy_up_gr.gif
-
-texi2html: $(texi2html_SOURCES)
-
-
-translations.pl: texi2html.pl texi2html.init T2h_i18n.pm examples/roff.init \
- examples/noheaders.init i18n/de i18n/nl i18n/es i18n/no i18n/pt i18n/fr
-	$(PERL) $(srcdir)/manage_i18n.pl all
+	images/COPYING.Attribution-ShareAlike \
+	images/GPL \
+	images/README \
+	images/index_motif.png \
+	images/Mybg.png \
+	images/next_motif.png \
+	images/next_motif_gr.png \
+	images/previous_motif.png \
+	images/previous_motif_gr.png \
+	images/spacer3.png \
+	images/xy_contents.png \
+	images/xy_foot.png \
+	images/xy_next.png \
+	images/xy_next_gr.png \
+	images/xy_nextsection.png \
+	images/xy_nextsection_gr.png \
+	images/xy_previous.png \
+	images/xy_previous_gr.png \
+	images/xy_previoussection.png \
+	images/xy_previoussection_gr.png \
+	images/xy_up.png \
+	images/xy_up_gr.png
+
+#texi2html: $(texi2html_sources)
+#	sed -e "/@MYSIMPLE@/r $(srcdir)/MySimple.pm" \
+#	    -e "/@INIT@/r $(srcdir)/texi2html.init" \
+#	    -e "/@T2H_TRANSLATIONS_FILE@/r $(srcdir)/translations.pl" \
+#	    -e "/@T2H_L2H_INIT@/r $(srcdir)/l2h.init" \
+#	    -e "/@T2H_I18N@/r $(srcdir)/T2h_i18n.pm" \
+#	    -e "/@T2H_L2H@/r $(srcdir)/T2h_l2h.pm" $< >$@
+#	chmod a+x $@
+texi2html: $(texi2html_sources)
+	$(SHELL) $(srcdir)/buildt2h.sh $@ $^ 
+	chmod a+x $@
+
+texi2html.spec: texi2html.spec.in configure
+	@echo Generating $@...
+	@sed -e "s/[@]PACKAGE_VERSION[@]/$(PACKAGE_VERSION)/" \
+	     -e "s/[@]PACKAGE_TARNAME[@]/$(PACKAGE_TARNAME)/" $< >texi2html.tmp
+	@cp texi2html.tmp $(srcdir)/$@
+	-@rm texi2html.tmp
+
+i18n/en: texi2html.pl texi2html.init T2h_i18n.pm examples/roff.init \
+                 examples/noheaders.init
+	$(PERL) $(top_builddir)/manage_i18n.pl -d i18n -I . -I $(srcdir) template $^
+
+#i18n/de i18n/nl i18n/es i18n/no i18n/pt i18n/fr: i18n/en
+
+$(i18n_files): i18n/en
+	$(PERL) $(top_builddir)/manage_i18n.pl -d i18n -I . -I $(srcdir) update
+
+#translations.pl: i18n/de i18n/nl i18n/es i18n/no i18n/pt i18n/fr i18n/en
+translations.pl: $(dist_i18n_DATA) 
+	$(PERL) $(top_builddir)/manage_i18n.pl -d i18n -o $@ -I . -I $(srcdir) merge
+
+html-local: texi2html
+
+clean-local:
+	-rm -f texi2html
--- tetex-src-3.0/utils/texi2html/texi2html.spec.in.texi176	2004-03-25 16:08:56.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/texi2html.spec.in	2007-02-18 00:35:19.000000000 +0100
@@ -1,18 +1,27 @@
 Name: @PACKAGE_TARNAME@
 Version: @PACKAGE_VERSION@
 Release: 1
-Epoch: 0
+#Epoch: 0
 License: GPL
 Group: Applications/Text
 Summary: A highly customizable texinfo to HTML and other formats translator
-Source0: %{name}-%{version}.tar.bz2
-#Source: http://texi2html.cvshome.org/servlets/ProjectDownloadList
-URL: http://texi2html.cvshome.org/
-
-Requires: perl >= 5.004
-Prefix: %{_prefix}
+Source: http://savannah.nongnu.org/download/texi2html/%{name}-%{version}.tar.gz
+URL: http://www.nongnu.org/texi2html/
+BuildArch: noarch
 BuildRoot:  %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
+# You may want to uncomment the following
+#BuildRequires: perl
+# perl is picked up automatically in most cases and the package may have 
+# a different name so it is better not to require it. Moreover such old perl
+# is unlikely to show up in a rpm based distribution.
+#Requires: perl >= 5.004
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+# uncomment this if you want to build a relocatable package
+#Prefix: %{_prefix}
+
 %description
 The basic purpose of texi2html is to convert Texinfo documents into HTML, 
 and other formats.  Configuration files written in perl provide fine degree 
@@ -24,7 +33,6 @@
 
 %build
 %configure
-make clean
 make %{?_smp_mflags}
 
 %install
@@ -38,28 +46,25 @@
 rm -rf $RPM_BUILD_ROOT
 
 %post
-/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir 2>/dev/null || :
+/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || :
 
 %preun
 if [ $1 = 0 ]; then
-  /sbin/install-info --delete %{_infodir}/%{name}.info \
-    %{_infodir}/dir 2>/dev/null || :
+  /sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir || :
 fi
 
 %files
 %defattr(-,root,root)
-%doc AUTHORS NEWS README ChangeLog TODO %{name}.init
+%doc AUTHORS NEWS README ChangeLog %{name}.init
 %{_bindir}/%{name}
 %{_datadir}/texinfo/html/%{name}.html
 %{_mandir}/man*/%{name}*
 %{_infodir}/%{name}.info*
-%dir %{_datadir}/%{name}
-%{_datadir}/%{name}/*.init
-%dir %{_datadir}/%{name}/i18n/
-%{_datadir}/%{name}/i18n/*
-%dir %{_datadir}/%{name}/images/
-%{_datadir}/%{name}/images/*
+%{_datadir}/%{name}/
 
 %changelog
+* Mon Nov 14 2005 Patrice Dumas <pertusus@free.fr> 1.77-1
+- cleanups
+
 * Mon Mar 23 2004 Patrice Dumas <pertusus@free.fr> 0:1.69-0.fdr.1
 - Initial build.
--- tetex-src-3.0/utils/texi2html/install-sh.texi176	2001-04-29 09:23:12.000000000 +0200
+++ tetex-src-3.0/utils/texi2html/install-sh	2005-07-07 23:26:58.000000000 +0200
@@ -1,19 +1,38 @@
 #!/bin/sh
-#
 # install - install a program, script, or datafile
-# This comes from X11R5 (mit/util/scripts/install.sh).
+
+scriptversion=2005-02-02.21
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
 #
-# Copyright 1991 by the Massachusetts Institute of Technology
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #
-# Permission to use, copy, modify, distribute, and sell this software and its
-# documentation for any purpose is hereby granted without fee, provided that
-# the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission.  M.I.T. makes no representations about the
-# suitability of this software for any purpose.  It is provided "as is"
-# without express or implied warranty.
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
 #
 # Calling this script install-sh is preferred over install.sh, to prevent
 # `make' implicit rules from creating a file called install from it
@@ -23,13 +42,11 @@
 # from scratch.  It can only install one file at a time, a restriction
 # shared with many OS's install programs.
 
-
 # set DOITPROG to echo to test this script
 
 # Don't use :- since 4.3BSD and earlier shells don't like it.
 doit="${DOITPROG-}"
 
-
 # put in absolute paths if you don't have them in your path; or use env. vars.
 
 mvprog="${MVPROG-mv}"
@@ -41,211 +58,266 @@
 rmprog="${RMPROG-rm}"
 mkdirprog="${MKDIRPROG-mkdir}"
 
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
 chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
+chowncmd=
+chgrpcmd=
+stripcmd=
 rmcmd="$rmprog -f"
 mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
-    case $1 in
-	-c) instcmd="$cpprog"
-	    shift
-	    continue;;
-
-	-d) dir_arg=true
-	    shift
-	    continue;;
-
-	-m) chmodcmd="$chmodprog $2"
-	    shift
-	    shift
-	    continue;;
-
-	-o) chowncmd="$chownprog $2"
-	    shift
-	    shift
-	    continue;;
-
-	-g) chgrpcmd="$chgrpprog $2"
-	    shift
-	    shift
-	    continue;;
-
-	-s) stripcmd="$stripprog"
-	    shift
-	    continue;;
-
-	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
-	    shift
-	    continue;;
-
-	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
-	    shift
-	    continue;;
-
-	*)  if [ x"$src" = x ]
-	    then
-		src=$1
-	    else
-		# this colon is to work around a 386BSD /bin/sh bug
-		:
-		dst=$1
-	    fi
-	    shift
-	    continue;;
-    esac
-done
-
-if [ x"$src" = x ]
-then
-	echo "install:	no input file specified"
-	exit 1
-else
-	true
-fi
-
-if [ x"$dir_arg" != x ]; then
-	dst=$src
-	src=""
-	
-	if [ -d $dst ]; then
-		instcmd=:
-		chmodcmd=""
-	else
-		instcmd=mkdir
-	fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad 
-# if $src (and thus $dsttmp) contains '*'.
-
-	if [ -f $src -o -d $src ]
-	then
-		true
-	else
-		echo "install:  $src does not exist"
-		exit 1
-	fi
-	
-	if [ x"$dst" = x ]
-	then
-		echo "install:	no destination specified"
-		exit 1
-	else
-		true
-	fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
-	if [ -d $dst ]
-	then
-		dst="$dst"/`basename $src`
-	else
-		true
-	fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-#  this part is taken from Noah Friedman's mkinstalldirs script
+src=
+dst=
+dir_arg=
+dstarg=
+no_target_directory=
+
+usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+-c         (ignored)
+-d         create directories instead of installing files.
+-g GROUP   $chgrpprog installed files to GROUP.
+-m MODE    $chmodprog installed files to MODE.
+-o USER    $chownprog installed files to USER.
+-s         $stripprog installed files.
+-t DIRECTORY  install into DIRECTORY.
+-T         report an error if DSTFILE is a directory.
+--help     display this help and exit.
+--version  display version info and exit.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+"
+
+while test -n "$1"; do
+  case $1 in
+    -c) shift
+        continue;;
+
+    -d) dir_arg=true
+        shift
+        continue;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+        shift
+        shift
+        continue;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) chmodcmd="$chmodprog $2"
+        shift
+        shift
+        continue;;
+
+    -o) chowncmd="$chownprog $2"
+        shift
+        shift
+        continue;;
+
+    -s) stripcmd=$stripprog
+        shift
+        continue;;
 
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='	
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
+    -t) dstarg=$2
+	shift
+	shift
+	continue;;
 
-while [ $# -ne 0 ] ; do
-	pathcomp="${pathcomp}${1}"
+    -T) no_target_directory=true
 	shift
+	continue;;
 
-	if [ ! -d "${pathcomp}" ] ;
-        then
-		$mkdirprog "${pathcomp}"
-	else
-		true
-	fi
+    --version) echo "$0 $scriptversion"; exit $?;;
 
-	pathcomp="${pathcomp}/"
+    *)  # When -d is used, all remaining arguments are directories to create.
+	# When -t is used, the destination is already specified.
+	test -n "$dir_arg$dstarg" && break
+        # Otherwise, the last argument is the destination.  Remove it from $@.
+	for arg
+	do
+          if test -n "$dstarg"; then
+	    # $@ is not empty: it contains at least $arg.
+	    set fnord "$@" "$dstarg"
+	    shift # fnord
+	  fi
+	  shift # arg
+	  dstarg=$arg
+	done
+	break;;
+  esac
 done
-fi
-
-if [ x"$dir_arg" != x ]
-then
-	$doit $instcmd $dst &&
-
-	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
-	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
-	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
-	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
-	if [ x"$transformarg" = x ] 
-	then
-		dstfile=`basename $dst`
-	else
-		dstfile=`basename $dst $transformbasename | 
-			sed $transformarg`$transformbasename
-	fi
-
-# don't allow the sed command to completely eliminate the filename
-
-	if [ x"$dstfile" = x ] 
-	then
-		dstfile=`basename $dst`
-	else
-		true
-	fi
-
-# Make a temp file name in the proper directory.
-
-	dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
 
-	$doit $instcmd $src $dsttmp &&
-
-	trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing.  If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
-	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
-	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
-	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
-	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
-	$doit $rmcmd -f $dstdir/$dstfile &&
-	$doit $mvcmd $dsttmp $dstdir/$dstfile 
+if test -z "$1"; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call `install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
 
-fi &&
+for src
+do
+  # Protect names starting with `-'.
+  case $src in
+    -*) src=./$src ;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    src=
+
+    if test -d "$dst"; then
+      mkdircmd=:
+      chmodcmd=
+    else
+      mkdircmd=$mkdirprog
+    fi
+  else
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dstarg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+
+    dst=$dstarg
+    # Protect names starting with `-'.
+    case $dst in
+      -*) dst=./$dst ;;
+    esac
 
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+	echo "$0: $dstarg: Is a directory" >&2
+	exit 1
+      fi
+      dst=$dst/`basename "$src"`
+    fi
+  fi
+
+  # This sed command emulates the dirname command.
+  dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
+
+  # Make sure that the destination directory exists.
+
+  # Skip lots of stat calls in the usual case.
+  if test ! -d "$dstdir"; then
+    defaultIFS='
+	 '
+    IFS="${IFS-$defaultIFS}"
+
+    oIFS=$IFS
+    # Some sh's can't handle IFS=/ for some reason.
+    IFS='%'
+    set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+    shift
+    IFS=$oIFS
+
+    pathcomp=
+
+    while test $# -ne 0 ; do
+      pathcomp=$pathcomp$1
+      shift
+      if test ! -d "$pathcomp"; then
+        $mkdirprog "$pathcomp"
+	# mkdir can fail with a `File exist' error in case several
+	# install-sh are creating the directory concurrently.  This
+	# is OK.
+	test -d "$pathcomp" || exit
+      fi
+      pathcomp=$pathcomp/
+    done
+  fi
+
+  if test -n "$dir_arg"; then
+    $doit $mkdircmd "$dst" \
+      && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
+      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
+      && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
+      && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
+
+  else
+    dstfile=`basename "$dst"`
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+    trap '(exit $?); exit' 1 2 13 15
+
+    # Copy the file name to the temp name.
+    $doit $cpprog "$src" "$dsttmp" &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
+      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
+      && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
+      && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
+
+    # Now rename the file to the real destination.
+    { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
+      || {
+	   # The rename failed, perhaps because mv can't rename something else
+	   # to itself, or perhaps because mv is so ancient that it does not
+	   # support -f.
+
+	   # Now remove or move aside any old file at destination location.
+	   # We try this two ways since rm can't unlink itself on some
+	   # systems and the destination file might be busy for other
+	   # reasons.  In this case, the final cleanup might fail but the new
+	   # file should still install successfully.
+	   {
+	     if test -f "$dstdir/$dstfile"; then
+	       $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
+	       || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+	       || {
+		 echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+		 (exit 1); exit 1
+	       }
+	     else
+	       :
+	     fi
+	   } &&
+
+	   # Now rename the file to the real destination.
+	   $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+	 }
+    }
+  fi || { (exit 1); exit 1; }
+done
 
-exit 0
+# The final little trick to "correctly" pass the exit status to the exit trap.
+{
+  (exit 0); exit 0
+}
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
--- tetex-src-3.0/utils/texi2html/ChangeLog.texi176	2005-02-04 01:16:50.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/ChangeLog	2007-06-03 02:26:07.000000000 +0200
@@ -0,0 +1,676 @@
+2007-06-01  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* doc/texi2html.texi: update copyright years, clarify that the
+	license in comment is the license for texi2html, not for the
+	manual.
+
+2007-04-07  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.init, texi2html.pl: when INLINE_CONTENTS is set, 
+	the table of contents and short table of contents are output 
+	where they are defined, except if setcontentsaftertitlepage is set.
+	If setcontentsaftertitlepage is set the contents is associated
+	with the title.
+	Handle @setcontentsaftertitlepage and @setshortcontentsaftertitlepage.
+	Don't output a navigation panel nor an about page when not SPLIT and no
+	SECTION_NAVIGATION.
+	* Tests/contents*: new tests for contents
+	* examples/book.init,noheaders.init: update
+	* doc/*: update
+
+2007-04-06  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.init: Texi2HTML::THIS_SECTION is always defined, 
+	it is empty when it has no elements.
+	Print table of contents when there is no top node content
+	and no Overview.
+	Don't add the section title to the html title when the 
+	document isn't split.
+	* Tests/*: regenerate
+
+2007-02-17  Derek Price  <derek@ximbiot.com>
+
+	* doc/texi2html.texi: Clean out some old, commented-out cruft.
+
+2007-02-05  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.init: set default out encoding to utf8. This could
+	help with translations.
+	* Makefile.am, manage_i18n.pl.in: add japanese translations, 
+	from fedora.
+	* doc/Makefile.am: call perl with -x when called directly on 
+	texi2html.pl
+
+2007-01-08  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl: correctly set node filenames even if NODE_FILES
+	isn't set.
+	Handle right 2 @def-like commands on a line.
+	Collect split and mono entry in htmlxref.cnf.
+	* texi2html.init: take into account when a target is split
+	in crossref. When there is a split and a mono entry, chose
+	based on split.
+	* examples/book.init: update to new use of directions.
+	* Tests/*: new tests for htmlxref.cnf file use.
+	New test for double @deffn on the same line.
+	* */Makefile.in, aclocal.m4, configure: use automake 1.10 and
+	autoconf 2.61.
+
+2006-08-06  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl, texi2html.init: accept - in @-command names.
+	ignore @allow-recursion and @quote-arg.
+	In macro args parsing, a comma in brace is protected.
+	Rewrite index names handling to be simpler and
+	accept more than one prefix for an index name. The main 
+	hash has now index names as key instead of prefixes.
+	* Tests/*: add the tar manual.
+	add macros/quote-args.txi from the makeinfo test suite.
+
+2006-08-05  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl, texi2html.init: use the same code for file 
+	name determination with NODE_FILES than with the traditional 
+	scheme. node_file_name is now used only to change the node 
+	file name, not for the determination of the html page file 
+	name anymore.
+	With this change the top file isn't necessarily index.html, 
+	even if it is the node_file_name it is index.html only if 
+	explicitly set.
+	* texi2html.pl: simplify index handling code.
+	when NODE_FILES is true, use the node file name for the html
+	files whenever possible.
+	* Tests/*: Regenerate
+	* NEWS, doc/*: document the api node_file_name api change
+
+2006-08-04  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl: fixes for split indices.
+	Fix detection of allready present heading.
+	Don't split top element accross pages because of split indices.
+	Simplify the file name determination.
+	* Tests/*: add a test case for split indices in chapter
+	and more tests for split indices.
+	Put index_nodes result in a directory.
+	Regenerate.
+
+2006-06-07  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl: Accept empty value set by @set (bug #16774).
+	Don't eat the line after a macro without arg (bug #16773).
+	* Tests/*: test for those issues.
+
+2006-05-17  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl, texi2html.init: rework image formatting,
+	more is done in the formatting functions.
+	Redundancy between menu entry and menu description is 
+	handled in the formatting functions.
+	* texi2html.pl:
+	Close correctly the @-commands in pass_structure.
+	Remove unneeded error messages for formats not matching when
+	it cannot happen.
+	Use the same element in menu description and menu links.
+	Try to close paragraph when searching for the right format
+	to close.
+	Remove unclosed accent commands from the 'command_stack'.
+	Indentation fixes.
+	* T2h_l2h.pm: use the document name in the perl cache name.
+	* Tests/*: more tests for unclosed @-commands.
+
+2006-05-17  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl, texi2html.init: teletype style is set in 
+	table item formatting in texi2html.init, not in the main
+	program.
+	Add the formats to the 'command_stack' ('style_stack' is renamed
+	to 'command_stack').
+	Clean the 'cmd_line' related code.
+	End of lines are removed in formatting function related with
+	'cmd_line', not in the main program.
+	Commands surrounding paragraphs aren't handled in the 
+	main program anymore, but using 2 'command_stack', one at the
+	beginning of the paragraph and one at the end of the paragraph.
+	rename 'name' of element to 'text_nonumber'.
+	call heading_texi even for nodes.
+	give more information to index_element_heading_texi such that
+	it is easier to customize those headings.
+	Handle NUMBER_SECTIONS in heading_texi and not in the main program
+	styles considered to be simple may be customized.
+	indentation cleanups.
+	* texi2html.pl: handle @center like a regular format. Many
+	fixes for @center.
+	rename some hash keys to avoid hash keys name clashes.
+	revert a change in merge_element_before_anything such that it is
+	only done for the first node.
+	more duplicate_stack when giving the state to a formatting
+	function. This has the added benefit that it sets the command_stack
+	at preformatted beginning to the current command_stack, which is right
+	in thoses case (it is done by begin_paragraph in other cases).
+	protect end of lines with @
+	only for deff, and in that case protect it better.
+	remove unneeded spaces added during close_stack.
+	use begin_paragraph_after_command to generalize reopening of paragraph
+	after a commmand, replace automatic_preformatted.
+	Use iso entities in titles (in simple_format).
+	* Tests/formatting/def_cmds.texi: test file only for def stuff 
+	(excerpted from formatting.texi with additional tests).
+	* Tests/formatting/center.texi: test file only for center 
+	(excerpted from verbatim_html.texi with addtional tests).
+	* Tests/formatting/tables.texi: test file with tests for tables.
+	* doc/texi2html.texi: update.
+
+2006-04-23  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl, texi2html.init, T2h_l2h.pm: handle @tex,
+	@verbatim and @verbatiminclude in @copying comments (with 
+	'remove_texi').
+	Handle @float and @need at the right place.
+	* texi2html.init: More cleanings of -- in html comments.
+	* Tests/*: add test for @tex and @float in @copying, for
+	@node in @copying.
+
+2006-04-17  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl, texi2html.init: hanldle rightly centerchap.
+	Footnote really appear at the foot of the file when there are
+	different nodes in one file.
+	* texi2html.pl, MySimple.pm: avoid Getopt::Long warning when
+	trying obsolete options.
+	* texi2html.pl: handle more sanely some special @-commands
+	(@anchor, @*index) in @copying and similar regions, by associating
+	them with top element and ignoring them during expansions that
+	are done more than once.
+	Set titlefont if @titlefont appears before any sectionning command.
+	Collect the @-command associated with index entries.
+	Collect all the index entries even the wrong ones, during 
+	pass_structure, but don't add the wrong ones to the per index hash.
+	* Tests/*: test @centerchap.
+	Better tests for not separated footnotes.
+
+2006-04-10  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl: use nodes for refs with USE_NODES.
+	Handle right footnotes at the end of the document and 
+	SEPARATED_FOOTNOTES false.
+	* Tests: test for footnotes  at the end of the document and 
+	SEPARATED_FOOTNOTES false. More tests.
+
+2006-04-09  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.init: really use roman type for @r.
+	Format @key more in line with what is done in texinfo, and makes
+	more sense.
+	* texi2html.pl, texi2html.init: use a function reference to define
+	the numbered heading texinfo, and the index page headings texinfo.
+	* texi2html.pl: don't take into account new indices with 
+	index name clashing with existing indices, or with file extensions
+	(because texi2dvi uses the index name as file extension).
+
+2006-04-08  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl: take into account the equivalent nodes (after
+	@-commands removal) when a node isn't found.
+	* texi2html.pl, texi2html.init: new variable $TOP_NODE_UP used
+	for the top node up node name with automatic top node directions.
+	Another variable $USE_MENU_DIRECTIONS. When unset the missing
+	node directions are not set using the information given by menus.
+	Use entities for OPEN_QUOTE_SYMBOL and CLOSE_QUOTE_SYMBOL with
+	$USE_ISO.
+	Use sectionprev, sectionnext and sectionup for section directions.
+	next, prev are set more sanely. up still means the same.
+	* texi2html.pl: Remove element_next, element_prev and 
+	element_up. They were duplicating sectionup or useless.
+	Homogeneize and clean the coding style, remove comments.
+	Don't reset %Texi2HTML::NAME/NO_TEXI... such that a ref to those
+	structures is valid.
+	* Tests/formatting/equivalent_nodes.texi: test equivalent nodes.
+	* Tests/*: test for different quotes. Test for more directions.
+
+2006-03-27  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl,texi2html.init: if $TRANSLITERATE_NODE is set
+	transliterate the non ascii characters in node names as 
+	discussed on the texinfo list. Optionally Use Text::Unidecode
+	to do more transliteration that what is available through the
+	maps ($USE_UNIDECODE set).
+	Some changes for better node targets generation.
+	Really put more than one node in a file if needed.
+	* configure.ac: Text::Unidecode detection.
+	* Tests/formatting/node_*translit*: test for node names
+	transliteration.
+
+2006-03-27  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* examples/chm.init: set the encoding conditionnaly on OUT_ENCODING
+	being defined.
+	* texi2html.pl,texi2html.init: add $USE_NUMERIC_ENTITY variable,
+	set to true in the default case. Use numeric entities for accented
+	letters if this variable is true.
+	Use numeric entity for @l{} and @L{} instead of /l and /L.
+	* examples/chm.init: use numerical entities instead of textual
+	entities for @oe, @OE and @euro, some viewers have trouble with
+	the corresponding textual entities.
+
+2006-03-26  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.init,texi2html.pl: clean the encoding related code by 
+	adding more variables associated with the different encodings.
+	Remove unneeded conversion code, given that the text is allready
+	in the perl internal encoding.
+	* doc/, NEWS: document the changes.
+	* texi2html.pl: put explicitely the ref on hashes in the main 
+	namespace such that they are usable in init files.
+	* Tests/: new tests for the utf8.init file, tests for doubly accented
+	characters.
+	* examples/chm.init: don't try to output utf8 encoded files, as
+	htmlhelp 1.x doesn't seems to be utf8 aware.
+	* examples/utf8.init: encode characters in preformatted environments.
+
+2006-03-25  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.init: handle @indent. Remove an empty line
+	generated by @indent and @noindent.
+	Add an end of line after a complex format.
+	* texi2html.init,texi2html.pl,examples/roff.init: add an indent 
+	information to the paragraph command.
+	* doc/, NEWS: document the changes.
+	* T2h_l2h.pm: merge init_to_latex() into init().
+
+2006-01-28  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl,Makefile.am,buildt2h.sh: move latex2html stuff
+	out of texi2html.pl, to T2h_l2h.pm.
+
+2006-01-27  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl: don't remove spaces around @-commands in xhtml
+	refs.
+	add back caching of html generated by latex2html. More accurate
+	counts and error messages for latex2html and other cleanings.
+	Cleaner interface for debug and verbose with main namespace.
+	* Tests/formatting/at_commands_in_refs.texi: test for @-commands
+	in external ref.
+
+2005-11-30  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl, texi2html.init, examples/tex4ht.init, doc/*: 
+	allows customization of CSS_FILES in init_handler and adding to 
+	css lines by the process handler.
+	* Tests/singular: use png images.
+	* i18n/,translation.pl: updated pt translations from Jorge Barros 
+	de Abreu.
+
+2005-11-29  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl, texi2html.init: add a possibility to
+	set the user and date with the USER and DATE variables.
+
+2005-11-27  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* i18n/,translation.pl,manage_i18n.pl.in: update pt and add 
+	pt_BR translation, from Jorge Barros de Abreu.
+
+2005-11-14  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl: remove the @special_regions array. Special 
+	regions are parsed like raw regions but are handled especially.
+	* texi2html.init: add a space after <!-- for comments.
+	* NEWS, examples/tex4ht.init: new init file. With this init file 
+	httex or htlatex from tex4ht is used to process @tex and @math.
+	* texi2html.spec.in: cleanups.
+	* Tests/*: add forgotten files to cvs. regenerate.
+	* doc/*: document the handling of raw regions as special regions.
+
+2005-08-28  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl: better interface for the handling of @commands 
+	and special regions. Use that interface for LaTeX2HTML.
+	It fixes a bug with a space added after @math or @end tex with
+	l2h. 
+	Fix handling of unknwown commands.
+	* doc/* NEWS: document that feature
+	* Tests/formatting_res/*: update. Test for unknown commands
+	handling.
+
+2005-08-24  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.init: better redirection pages formatting. 
+	* Makefile.am: use a variable for the i18n files
+	* */Makefile.in: regenerate
+	* Tests/*: commit forgotten files and update.
+	* Tests: remove duplicate manuals and rcs tags in manuals.
+
+2005-08-23  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.init: don't use ucfirst as it relies on the current
+	locale language, not the document language, instead set first 
+	uppercase character in description.
+	Translate button names.
+	* texi2html.pl, texi2html.init: cleanings. Correct overprotection 
+	of alt text for images. Avoid calling protect_text in the main 
+	program for raw text, left it to the formatting functions, but
+	call it for formatted and simply formated text. 
+	More formatting of normal text is done outside of the main program,
+	more context information is given to normal_text and normal_text
+	has to protect whatever needs to be. 
+	properly remove closed @-commands from the style_stack. 
+	unformatted and UNFORMATTED are replaced by simple_format and
+	SIMPLE_TEXT. Still not documented as it may change.
+	Change images formatting function call.
+	Handle @sc in normal_text to avoid upper-casing html entity 
+	characters.
+	Use entities for ``, '', --- and -- if USE_ISO is set.
+	* examples/roff.init: update.
+	* doc/texi2html.texi: update.
+	* Tests/formatting/*: test for translations with icons.
+	
+
+2005-08-22  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl, texi2html.init: use node_file_name for the top
+	element too. Honor $TOP_FILE in node_file_name.
+	don't set $TOP_FILE and $TOC_FILE if not set by the user. The elements
+	file names are in the hash reference $Texi2HTML::THISDOC{'filename'}
+	for use in init files.
+	* doc/texi2html.texi: document $Texi2HTML::THISDOC{'filename'}.
+	* examples/chm.init: update to the new interface.
+	* examples/makeinfo.init: format the menus like makeinfo do. set
+	NODE_FILES true.
+	* Tests/*: rearrange, update. Test for novalidate split and unsplit.
+
+2005-08-22  Derek Price  <derek@ximbiot.com>
+
+	* examples/mediawiki.init (mediawiki_simple_menu_link): New function.
+
+2005-08-22  Derek Price  <derek@ximbiot.com>
+
+	* texi2html.init (t2h_default_simple_menu_link): Don't add &nbsp; when
+	in preformatted mode.
+
+2005-08-21  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl, texi2html.init, doc/texi2html.texi:
+	add the possibility, with SIMPLE_MENU to have a menu simply enclosed
+	in a preformatted environment. Maybe fixes bug #14233. 
+	* Tests/formatting*, Tests/test.sh: more tests for menus, SIMPLE_MENU. 
+
+2005-08-19  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl: Add support for nested ifset and ifclear. Re-add check 
+	option for backward compatibility. Just exit if this option is set.
+	Handle @tie.
+	* Tests/*: more tests, especially for ifset and macros.
+	* doc/texi2html.texi: add a section about differences with 
+	other texinfo interpreters.
+	add a section about the incompatibilities with previous versions.
+	* examples: add my-bib-macros.texi bib-example.texi and glossary.texi.
+	* texi2html.spec: remove the Epoch tag.
+
+2005-08-16  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* images/COPYING: replace with the Singular COPYING. Move to ...
+	* images/COPYING.Attribution-ShareAlike: ... add
+	* images/README,images/GPL: add these files to have a double licencing
+	for the images. This close #14052.
+	* Makefile.am: distribute and install the added files.
+
+2005-08-12  Derek Price  <derek@ximbiot.com>
+
+	* examples/mediawiki.init: Really override use of <samp> with <code>,
+	correcting commit from the 3rd.
+
+2005-08-09  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl,README,configure.ac,Tests/*_res/,doc: 
+	refer to the web pages and mailing lists at savannah/nongnu.org.
+
+2005-08-09  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl: remove section_next as it is not used. Use
+	next when determining what is the following node for a
+	section using up elements. Avoid infinite loops. 
+	Report on bbdb.texinfo from ?. This close bug #13825. 
+	Never set the menu_up when in detailmenu.
+
+2005-08-09  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* Tests/floats_res/*: Add test results for floats with @-commands.
+
+2005-08-08  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl,texi2html.init: don't handle quotation second arg
+	as quotation don't have a second arg.
+	* Tests/formatting/quotation.texi: add tests with ,
+	* doc/texi2html.texi: update
+
+2005-08-08  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl: set the file name to the default file name if it 
+	is undefined after the possible call to element_file_name. 
+	Set the type to "top" for the top element.
+	Never add an extension to TOC_FILE and TOP_FILE.
+	* examples/book.init: update
+	* doc/texi2html.texi: update
+
+2005-08-03  Derek Price  <derek@ximbiot.com>
+
+	* examples/mediawiki.init: Override use of <samp> with <code> since
+	MediaWiki don't like it.
+
+2005-07-28  Derek Price  <derek@ximbiot.com>
+
+	* Makefile.am (dist_images_DATA): Restore reference to images/*,
+	reversing change from 2005-07-19.
+
+2005-07-28  Derek Price  <derek@ximbiot.com>
+
+	* NEWS: Note file name override, mediawiki example, and empty file
+	name extension fix.
+
+2005-07-28  Derek Price  <derek@ximbiot.com>
+
+	* images/*.png: Restore these files, reversing change from 2005-07-19,
+	since RMS has declared that any free license is OK for image files and
+	other data that is a secondary part of a program.
+	* NEWS: Remove note about images/* removal.
+
+2005-07-25  Derek Price  <derek@ximbiot.com>
+
+	* examples/mediawiki.init: New file.
+
+2005-07-25  Derek Price  <derek@ximbiot.com>
+
+	* texi2html.pl: Allow substitution of all document file names.
+
+2005-07-19  Derek Price  <derek@ximbiot.com>
+
+	* Makefile.am (dist_images_DATA): Don't reference missing image files.
+
+2005-07-19  Derek Price  <derek@ximbiot.com>
+
+	* texi2html.pl: Don't add the file extension when it is empty.  Some
+	cleanup.
+
+2005-07-19  Derek Price  <derek@ximbiot.com>
+
+	* images/*: Remove these files since they are distributed under a
+	license incompatible with the GPL.
+	* NEWS: Note images/* removal.  Repair some grammar.
+	s/Automake 1.9.3/1.9.5/.
+
+2005-07-12  Derek Price  <derek@ximbiot.com>
+
+	* T2h_i18n.pm, check_texinfo.pl.in, manage_i18n.pl.in,
+	missing-texi2html, texi2html.pl, doc/stamp-vti, doc/texi2html.1.in,
+	doc/texi2html.html, doc/texi2html.texi, doc/version.texi,
+	images/COPYING: Replace FSF copyright notices.
+
+2005-07-08  Derek Price  <derek@ximbiot.com>
+
+	* images/*.gif: Convert all these files to...
+	* images/*.png: PNG format.
+	* images/COPYING: Paste in full text of Creative Commons License.
+
+2005-07-07  Derek Price  <derek@ximbiot.com>
+
+	* COPYING, T2h_i18n.pm, check_texinfo.pl.in, manage_i18n.pl.in,
+	texi2html.pl, missing-texi2html, doc/texi2html.texi: Update FSF address
+	in Copyright notice and Copyright years.
+	* INSTALL, install-sh, mdate-sh, missing, mkinstalldirs, doc/mdate-sh,
+	doc/texinfo.tex: Update from Automake 1.9.5.
+	* Makefile.in, aclocal.m4, doc/Makefile.in: Regenerated with
+	Automake 1.9.5.
+
+2005-05-03  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl: use Cwd in package Texi2HTML::LaTeX2HTML;
+
+2005-03-29  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* examples/chm.init: Protect attributes on generated HHC and HHK.
+	patch from jrfonseca (Jose Fonseca). Issue #12.
+	* texi2html.pl: @CONF_DIRS is global.
+
+2005-03-21  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.init,texi2html.pl: new option --conf-dir to specify
+	directory for config and init files.
+
+2005-03-09  Derek Price  <derek@ximbiot.com>
+
+	* texi2html: Use the Cwd module for cross-platform portability.
+	(Thanks to a report from Vincent LaBella <VLaBella@uamail.albany.edu>.)
+
+2005-03-07  Derek Price  <derek@ximbiot.com>
+
+	* texi2html.pl:  Comment end of Texi2HTML::Config package.
+
+2005-02-27  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.init,texi2html.pl: handle @frenchspacing.
+	* Tests/formatting/comments.texi: test for @frenchspacing.
+
+2005-02-13  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* README,doc/texi2html.texi: update.
+	* buildt2h.sh: add this script, a simple wrapper around the sed 
+	one-liner that builds the texi2html script. The arguments are the 
+	files concatenated, determined by make.
+	* Makefile.am: handle buildt2h.sh.
+
+2005-02-13  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* INTRODUCTION: remove and merge content in...
+	* README: ...merge with INTRODUCTION content and update.
+	* Makefile.am,doc/Makefile.am: protect @ in sed one-liners
+	such that configure doesn't replace the variables in the
+	Makefile.
+	* doc/texi2html.1.in: update and add explanation for more 
+	command line options.
+
+2005-02-12  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl: handle def command with x (like @deffnx) within
+	deff command paragraph (construct is in octave manual).
+	* Tests/*: test for deffnx within deff command paragraph.
+
+2005-02-12  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl,texi2html.init: accept first arg for def like
+	commands. 
+	handle construct like @deffn{something} (bug report found on the 
+	web about the octave manual from Nelson H. F. Beebe).
+	* Makefile.am: remove dist-local: texi2html, as texi2html is not
+	distributed.
+	* Tests/*: test for more deffnx constructs.
+
+2005-02-06  Derek Price  <derek@ximbiot.com>
+
+	* Makefile.am (texi2html_SOURCES): Rename to...
+	(texi2html_sources): ...this to avoid an Automake 1.9.4 warning.
+
+2005-02-06  Derek Price  <derek@ximbiot.com>
+
+	* texi2html.pl (#!): Let `perl texi2html.pl' work.
+	* missing-texi2html: Handle `perl texi2html.pl' rather than a single
+	script.
+	* doc/Makefile.am (texi2html.html): Call `$PERL texi2html.pl' to avoid
+	dependency on texi2html.
+
+2005-02-06  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* Makefile.am: manage_i18n.pl is created by ./configure therefore
+	at $(top_builddir).
+	add html-local and dist-local such that the texi2html script is
+	built with make html or make dist.
+	* doc/Makefile.am: texi2html.html depends on the texi2html sources, 
+	not on the script.
+	* README, doc/texi2html.texi: advertise the required perl version
+	and the modules used in the scripts.
+
+2005-02-06  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* texi2html.pl: fix broken detection of USE_UNICODE.
+
+2005-02-06  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* manage_i18n.pl: remove and replace with...
+	* manage_i18n.pl.in: ... added
+	* configure.ac, manage_i18n.pl.in: detect whether it is possible to 
+	do the translations buildup (--enable-translations).
+	* doc/Makefile.am: rebuild texi2html as a dependency for the manual.
+	(trick from Derek).
+	* doc/texi2html.texi: sync.
+	* Makefile.am,manage_i18n.pl.in: add command line arguments to
+	manage_i18n.pl.in such that it is possible to build from outside of 
+	the source dir.
+	* Makefile.am: have texi2html depend on $(texi2html_SOURCES) otherwise
+	the texi2html isn't rebuild when out of date.
+
+2005-02-05  Derek Price  <derek@ximbiot.com>
+
+	* NEWS: Note use of Automake 1.9.3.
+
+2005-02-05  Derek Price  <derek@ximbiot.com>
+
+	* .cvsignore: Remove texi2html.1 and add texi2html_configure.pl.
+	* Makefile.am: Some reformatting.
+	(EXTRA_DIST): Add texi2html.spec.in.
+	(texi2html): Make target executable.
+	(texi2html.spec): New target.
+	(man_MANS): Move to...
+	* doc/Makefile.am (man_MANS): ...here.
+	* configure.ac: Don't generate texi2html.1 or texi2html.spec.  Remove
+	old comments.
+	* texi2html.1.in: Move to...
+	* doc/texi2html.1.in: ...here.
+	* doc/.cvsignore: Add texi2html.1.
+
+2005-02-05  Patrice Dumas  <dumas@centre-cired.fr>
+
+	* Makefile.am,configure.ac: don't rely on configure to build the
+	texi2html script, paste the different perl source files in make,
+	with a sed one liner.
+
+2005-02-04  Derek Price  <derek@ximbiot.com>
+
+	* .cvsignore: Remove translations.pl.
+	* translations.pl: New file.
+
+2005-02-04  Derek Price  <derek@ximbiot.com>
+
+	* .cvsignore: Add *.zip & translations.pl.
+	* Makefile.am: Make sure translations.pl is built in srcdir.
+
+2005-02-04  Derek Price  <derek@ximbiot.com>
+
+	* configure.ac: Make .zip archives as part of `make dist'.
+	* doc/Makefile.am (texi2html.html): Depend on files in srcdir, not
+	builddir.
+
+2005-02-03  Derek Price  <derek@ximbiot.com>
+
+	* configure.ac: Update to dev version 1.77.
+	* NEWS: Add section 1.78.
+
@@ -7 +683 @@
-	* Tests/*: remove some $Id: ChangeLog,v 1.179 2005/02/04 00:14:39 pertusus Exp $ rcs tags
+	* Tests/*: remove some $ Id : ChangeLog,v 1.191 2005/02/07 05:10:11 dprice Exp $ rcs tags
--- tetex-src-3.0/utils/texi2html/T2h_i18n.pm.texi176	2005-02-04 01:16:50.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/T2h_i18n.pm	2007-02-18 00:35:18.000000000 +0100
@@ -2,7 +2,10 @@
 #
 # T2h_i18n.pm: Internationalization for texi2html
 #
-#    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
+#    Copyright (C) 1999-2005  Patrice Dumas <dumas@centre-cired.fr>,
+#                             Derek Price <derek@ximbiot.com>,
+#                             Adrian Aichner <adrian@xemacs.org>,
+#                           & others.
 #
 #    This program is free software; you can redistribute it and/or modify
 #    it under the terms of the GNU General Public License as published by
@@ -16,7 +19,7 @@
 #
 #    You should have received a copy of the GNU General Public License
 #    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 #
 #-##############################################################################
 
@@ -48,6 +51,9 @@
 # To redefine one word, simply do:
 # $T2h_i18n::T2H_LANGUAGES->{<language>}->{<word>} = 'whatever' in your personal init file.
 #
+
+# Those hashes are obsolete but retained here for reference
+
 my $T2H_WORDS_EN =
 {
  # titles  of pages
@@ -324,49 +330,42 @@
         }
     }
     return main::substitute_line($string, $state) unless (defined($arguments) or !keys(%$arguments));
+    # if there are arguments, we must protect the %{arg} constructs before
+    # doing substitute_line. So there is a first pass here to change %{arg} 
+    # to %@{arg@}
     my $result = '';
-    while ($string)
+    if (!$state->{'keep_texi'})
     {
-        if ($string =~ s/^([^%]*)%//)
+        while ($string)
         {
-            $result .= $1 if (defined($1));
-            $result .= '%';
-            if ($string =~ s/^%//)
+            if ($string =~ s/^([^%]*)%//)
             {
-                 $result .= '%';
+                $result .= $1 if (defined($1));
+                $result .= '%';
+                if ($string =~ s/^%//)
+                {
+                     $result .= '%';
+                }
+                elsif ($string =~ /^\{(\w+)\}/ and exists($arguments->{$1}))
+                {
+                     $string =~ s/^\{(\w+)\}//;
+                     $result .= "\@\{$1\@\}";
+                }
+                else
+                {
+                     $result .= '%';
+                }
+                next;
             }
-            elsif ($string =~ /^\{(\w+)\}/ and exists($arguments->{$1}))
-            {
-                 $string =~ s/^\{(\w+)\}//;
-                 if (!$state->{'keep_texi'})
-                 {
-                      $result .= "\@\{$1\@\}";
-                 }
-                 else
-                 {
-                      $result .= "\{$1\}";
-                 }
+            else 
+            {   
+                $result .= $string;
+                last;
             }
-            else
-            {
-                 $result .= '%';
-            }
-            next;
-        }
-        else 
-        {   
-            $result .= $string;
-            last;
         }
+        $string = main::substitute_line($result, $state);
     }
-    if (!$state->{'keep_texi'})
-    {
-         $string = main::substitute_line($result, $state);
-    }
-    else
-    {
-         $string = $result;
-    }
+    # now we substitute the arguments 
     $result = '';
     while ($string)
     {
--- tetex-src-3.0/utils/texi2html/images/COPYING.Attribution-ShareAlike.texi176	2008-01-06 15:21:11.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/images/COPYING.Attribution-ShareAlike	2005-08-16 19:49:24.000000000 +0200
@@ -0,0 +1,248 @@
+                        SINGULAR version 3-0-0
+
+                     University of Kaiserslautern
+
+      Department of Mathematics and  Centre for Computer Algebra
+
+           Authors: G.-M. Greuel, G. Pfister, H. Schoenemann
+
+                        Copyright (C) 1986-2001
+
+
+These images are licensed under the Creative Commons Attribution-ShareAlike 
+License, the text of which follows.  The original source of this license
+is at http://creativecommons.org/licenses/by-sa/1.0/ or you may obtain a copy
+by sending a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, 
+California 94305, USA.
+
+
+Attribution-ShareAlike 1.0
+
+CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL
+SERVICES.  DISTRIBUTION OF THIS DRAFT LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT
+RELATIONSHIP.  CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS.
+CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND
+DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.
+
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
+COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE").  THE WORK IS PROTECTED BY
+COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
+AUTHORIZED UNDER THIS LICENSE IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE
+BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS
+CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
+CONDITIONS.
+
+
+1. Definitions
+
+   1. "Collective Work" means a work, such as a periodical issue, anthology or
+      encyclopedia, in which the Work in its entirety in unmodified form, along
+      with a number of other contributions, constituting separate and
+      independent works in themselves, are assembled into a collective whole.
+      A work that constitutes a Collective Work will not be considered a
+      Derivative Work (as defined below) for the purposes of this License.
+   2. "Derivative Work" means a work based upon the Work or upon the Work and
+      other pre-existing works, such as a translation, musical arrangement,
+      dramatization, fictionalization, motion picture version, sound recording,
+      art reproduction, abridgment, condensation, or any other form in which
+      the Work may be recast, transformed, or adapted, except that a work that
+      constitutes a Collective Work will not be considered a Derivative Work
+      for the purpose of this License.
+   3. "Licensor" means the individual or entity that offers the Work under the
+      terms of this License.
+   4. "Original Author" means the individual or entity who created the Work.
+   5. "Work" means the copyrightable work of authorship offered under the terms
+      of this License.
+   6. "You" means an individual or entity exercising rights under this License
+      who has not previously violated the terms of this License with respect to
+      the Work, or who has received express permission from the Licensor to
+      exercise rights under this License despite a previous violation.
+
+
+2. Fair Use Rights.
+
+Nothing in this license is intended to reduce, limit, or restrict any rights
+arising from fair use, first sale or other limitations on the exclusive rights
+of the copyright owner under copyright law or other applicable laws.
+
+
+3. License Grant.
+
+Subject to the terms and conditions of this License, Licensor hereby grants You
+a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the
+applicable copyright) license to exercise the rights in the Work as stated
+below:
+
+   1. to reproduce the Work, to incorporate the Work into one or more
+      Collective Works, and to reproduce the Work as incorporated in the
+      Collective Works;
+   2. to create and reproduce Derivative Works;
+   3. to distribute copies or phonorecords of, display publicly, perform
+      publicly, and perform publicly by means of a digital audio transmission
+      the Work including as incorporated in Collective Works;
+   4. to distribute copies or phonorecords of, display publicly, perform
+      publicly, and perform publicly by means of a digital audio transmission
+      Derivative Works;
+
+The above rights may be exercised in all media and formats whether now known or
+hereafter devised.  The above rights include the right to make such
+modifications as are technically necessary to exercise the rights in other
+media and formats.  All rights not expressly granted by Licensor are hereby
+reserved.
+
+
+4. Restrictions.
+
+The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
+
+
+   1. You may distribute, publicly display, publicly perform, or publicly
+      digitally perform the Work only under the terms of this License, and You
+      must include a copy of, or the Uniform Resource Identifier for, this
+      License with every copy or phonorecord of the Work You distribute,
+      publicly display, publicly perform, or publicly digitally perform.  You
+      may not offer or impose any terms on the Work that alter or restrict the
+      terms of this License or the recipients' exercise of the rights granted
+      hereunder. You may not sublicense the Work.  You must keep intact all
+      notices that refer to this License and to the disclaimer of warranties.
+      You may not distribute, publicly display, publicly perform, or publicly
+      digitally perform the Work with any technological measures that control
+      access or use of the Work in a manner inconsistent with the terms of this
+      License Agreement.  The above applies to the Work as incorporated in a
+      Collective Work, but this does not require the Collective Work apart from
+      the Work itself to be made subject to the terms of this License.  If You
+      create a Collective Work, upon notice from any Licensor You must, to the
+      extent practicable, remove from the Collective Work any reference to such
+      Licensor or the Original Author, as requested.  If You create a
+      Derivative Work, upon notice from any Licensor You must, to the extent
+      practicable, remove from the Derivative Work any reference to such
+      Licensor or the Original Author, as requested.
+   2. You may distribute, publicly display, publicly perform, or publicly
+      digitally perform a Derivative Work only under the terms of this License,
+      and You must include a copy of, or the Uniform Resource Identifier for,
+      this License with every copy or phonorecord of each Derivative Work You
+      distribute, publicly display, publicly perform, or publicly digitally
+      perform.  You may not offer or impose any terms on the Derivative Works
+      that alter or restrict the terms of this License or the recipients'
+      exercise of the rights granted hereunder, and You must keep intact all
+      notices that refer to this License and to the disclaimer of warranties.
+      You may not distribute, publicly display, publicly perform, or publicly
+      digitally perform the Derivative Work with any technological measures
+      that control access or use of the Work in a manner inconsistent with the
+      terms of this License Agreement.  The above applies to the Derivative
+      Work as incorporated in a Collective Work, but this does not require the
+      Collective Work apart from the Derivative Work itself to be made subject
+      to the terms of this License.
+   3. If you distribute, publicly display, publicly perform, or publicly
+      digitally perform the Work or any Derivative Works or Collective Works,
+      You must keep intact all copyright notices for the Work and give the
+      Original Author credit reasonable to the medium or means You are
+      utilizing by conveying the name (or pseudonym if applicable) of the
+      Original Author if supplied; the title of the Work if supplied; in the
+      case of a Derivative Work, a credit identifying the use of the Work in
+      the Derivative Work (e.g., "French translation of the Work by Original
+      Author," or "Screenplay based on original Work by Original Author").
+      Such credit may be implemented in any reasonable manner; provided,
+      however, that in the case of a Derivative Work or Collective Work, at a
+      minimum such credit will appear where any other comparable authorship
+      credit appears and in a manner at least as prominent as such other
+      comparable authorship credit.
+
+
+5. Representations, Warranties and Disclaimer
+
+   1. By offering the Work for public release under this License, Licensor
+      represents and warrants that, to the best of Licensor's knowledge after
+      reasonable inquiry:
+         1. Licensor has secured all rights in the Work necessary to grant the
+            license rights hereunder and to permit the lawful exercise of the
+            rights granted hereunder without You having any obligation to pay
+            any royalties, compulsory license fees, residuals or any other
+            payments;
+         2. The Work does not infringe the copyright, trademark, publicity
+            rights, common law rights or any other right of any third party or
+            constitute defamation, invasion of privacy or other tortious injury
+            to any third party.
+   2. EXCEPT AS EXPRESSLY STATED IN THIS LICENSE OR OTHERWISE AGREED IN WRITING
+      OR REQUIRED BY APPLICABLE LAW, THE WORK IS LICENSED ON AN "AS IS" BASIS,
+      WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES REGARDING THE CONTENTS OR ACCURACY OF
+      THE WORK.
+
+
+6. Limitation on Liability.
+
+EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, AND EXCEPT FOR DAMAGES ARISING
+FROM LIABILITY TO A THIRD PARTY RESULTING FROM BREACH OF THE WARRANTIES IN
+SECTION 5, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
+ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING
+OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGES.
+
+
+7. Termination
+
+   1. This License and the rights granted hereunder will terminate
+      automatically upon any breach by You of the terms of this License.
+      Individuals or entities who have received Derivative Works or Collective
+      Works from You under this License, however, will not have their licenses
+      terminated provided such individuals or entities remain in full
+      compliance with those licenses.  Sections 1, 2, 5, 6, 7, and 8 will
+      survive any termination of this License.
+   2. Subject to the above terms and conditions, the license granted here is
+      perpetual (for the duration of the applicable copyright in the Work).
+      Notwithstanding the above, Licensor reserves the right to release the
+      Work under different license terms or to stop distributing the Work at
+      any time; provided, however that any such election will not serve to
+      withdraw this License (or any other license that has been, or is required
+      to be, granted under the terms of this License), and this License will
+      continue in full force and effect unless terminated as stated above.
+
+
+8. Miscellaneous
+
+   1. Each time You distribute or publicly digitally perform the Work or a
+      Collective Work, the Licensor offers to the recipient a license to the
+      Work on the same terms and conditions as the license granted to You under
+      this License.
+   2. Each time You distribute or publicly digitally perform a Derivative Work,
+      Licensor offers to the recipient a license to the original Work on the
+      same terms and conditions as the license granted to You under this
+      License.
+   3. If any provision of this License is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this License, and without further action by the
+      parties to this agreement, such provision shall be reformed to the
+      minimum extent necessary to make such provision valid and enforceable.
+   4. No term or provision of this License shall be deemed waived and no breach
+      consented to unless such waiver or consent shall be in writing and signed
+      by the party to be charged with such waiver or consent.
+   5. This License constitutes the entire agreement between the parties with
+      respect to the Work licensed here.  There are no understandings,
+      agreements or representations with respect to the Work not specified
+      here.  Licensor shall not be bound by any additional provisions that may
+      appear in any communication from You.  This License may not be modified
+      without the mutual written agreement of the Licensor and You.
+
+Creative Commons is not a party to this License, and makes no warranty
+whatsoever in connection with the Work.  Creative Commons will not be liable to
+You or any party on any legal theory for any damages whatsoever, including
+without limitation any general, special, incidental or consequential damages
+arising in connection to this license.  Notwithstanding the foregoing two (2)
+sentences, if Creative Commons has expressly identified itself as the Licensor
+hereunder, it shall have all rights and obligations of Licensor.
+
+Except for the limited purpose of indicating to the public that the Work is
+licensed under the CCPL, neither party will use the trademark "Creative
+Commons" or any related trademark or logo of Creative Commons without the prior
+written consent of Creative Commons.  Any permitted use will be in compliance
+with Creative Commons' then-current trademark usage guidelines, as may be
+published on its website or otherwise made available upon request from time to
+time.
+
+Creative Commons may be contacted at http://creativecommons.org/.
--- tetex-src-3.0/utils/texi2html/images/README.texi176	2008-01-06 15:21:23.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/images/README	2005-08-16 19:49:24.000000000 +0200
@@ -0,0 +1,8 @@
+These images are licenced under a double CC-SA (Creative Commons 
+Attribution ShareAlike) and GPL licence (see file COPYING in that 
+directory). These licences are such that when combined with other 
+works the whole work should be under the GPL or CC-SA. So you cannot combine 
+the images with other materials, for example a manual text if the manual 
+text is under a licence that doesn't allows to be relicenced under the 
+conditions of the GPL or the CC-SA. For example a manual licenced under 
+the GFDL or the artlibre licence cannot be combined with the image.
--- tetex-src-3.0/utils/texi2html/images/COPYING.texi176	2003-09-08 19:21:58.000000000 +0200
+++ tetex-src-3.0/utils/texi2html/images/COPYING	2005-08-22 16:32:42.000000000 +0200
@@ -1,6 +1,90 @@
-Copyright (C) 2003 Free Software Foundation, Inc.
-These images are licensed under the Creative Commons Attribution-ShareAlike 
-License. To view a copy of this license, visit 
-http://creativecommons.org/licenses/by-sa/1.0/ 
-or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, 
-California 94305, USA.
+This is the COPYING file taken from the Singular project. It covers the image
+files in that directory (see the file GPL for the full text of the licence). 
+
+The files are also covered under the same copyright by the Creative Commons
+Attribution ShareAlike (see the file COPYING.Attribution-ShareAlike for the
+full test of the licence).
+
+
+                        SINGULAR version 3-0-0
+
+                     University of Kaiserslautern
+
+      Department of Mathematics and  Centre for Computer Algebra
+
+           Authors: G.-M. Greuel, G. Pfister, H. Schoenemann
+
+                        Copyright (C) 1986-2001
+
+
+
+                               *NOTICE*
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation ( version 2 of the License );
+with the following additional restrictions
+(which override any conflicting restrictions in the GPL):
+
+The following software used with SINGULAR have their own copyright: the
+omalloc library, the readline library, the Gnu Multiple Precision
+Library (GMP), the Multi Protocol library (MP), the Singular-Factory
+library, the Singular-libfac library, and, for the Windows 9X/NT
+distributions the Cygwin DLL and the Cygwin tools (Cygwin), and the
+XEmacs editor (XEmacs).
+
+Their copyrights and licences can be found in the accompanying files
+which are distributed along with these packages.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+59 Temple Place, Suite 330, Boston, MA  02111-1307  USA (see GPL)
+
+Please send any comments or bug reports to
+<singular@mathematik.uni-kl.de>.
+
+Please register yourself as a SINGULAR user by sending email to
+<singular@mathematik.uni-kl.de> with the subject line `register'.
+
+If you use Singular or parts thereof in a project and/or publish
+results that were partly obtained using SINGULAR, we ask you to cite
+SINGULAR and inform us thereof - see
+`http://www.singular.uni-kl.de/how_to_cite.html', for information on
+how to cite Singular.
+
+Availability
+============
+
+The latest information about SINGULAR is always available from
+`http://www.singular.uni-kl.de'.
+
+Acknowledgements
+================
+
+The development of SINGULAR is directed and coordinated by Gert-Martin
+Greuel, Gerhard Pfister, and Hans Scho"nemann.
+
+Currently, the SINGULAR team has the following members: Olaf Bachmann,
+Anne Fru"bis-Kru"ger, Thomas Keilen, Kai Kru"ger, Christoph Lossen,
+Victor Levandovskyy, Wilfred Pohl, Mathias Schulze, Eric Westenberger,
+and Tim Wichmann.
+
+Past members of the SINGULAR team are: Hubert Grassmann, Wolfgang
+Neumann, Jens Schmidt, Ru"diger Stobbe.
+
+Further contributions to SINGULAR were made by: Thomas Bayer, Isabelle
+Bermejo, Stephan Endrass, Jose Ignacio Farran Martin, Wolfram Decker,
+Philippe Gimenez, Christian Gorzel, Agnes Heydtmann, Dietmar Hillebrand,
+Tobias Hirsch, Martin Lamm, Bernd Martin, Michael Messollen, Thomas
+Nu"ssler, Moritz Wenk.
+
+We should like to acknowledge the financial support given by the
+Volkswagen-Stiftung, the Deutsche Forschungsgemeinschaft and the
+Stiftung fu"r Innovation des Landes Rheinland-Pfalz to the SINGULAR
+project.
+
--- tetex-src-3.0/utils/texi2html/images/GPL.texi176	2008-01-06 15:21:18.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/images/GPL	2008-01-06 15:21:18.000000000 +0100
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
--- tetex-src-3.0/utils/texi2html/Tests/Makefile.in.texi176	2005-02-04 01:16:52.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/Tests/Makefile.in	2007-06-05 06:16:36.000000000 +0200
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004  Free Software Foundation, Inc.
+# 2003, 2004, 2005  Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -77,10 +77,13 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+REQUIRE_DATA_DUMPER = @REQUIRE_DATA_DUMPER@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
+USE_DATA_DUMPER = @USE_DATA_DUMPER@
 USE_UNICODE = @USE_UNICODE@
+USE_UNIDECODE = @USE_UNIDECODE@
 VERSION = @VERSION@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__leading_dot = @am__leading_dot@
@@ -116,7 +119,12 @@
 target_alias = @target_alias@
 SUBDIR_TESTS = GermanNodeTest xemacs texinfo sectionning ccvs viper \
      viper_monolithic texi2html xemacs_frame index_table formatting macros \
-     nodes_texinfo singular floats
+     nodes_texinfo singular floats node_translit node_translit_no_unicode \
+     node_translit_no_unidecode node_utf8_translit \
+     node_utf8_translit_no_unidecode index_split_nodes \
+     more_before_top_section node_footnote node_in_chapter_index_split \
+     index_nodes tar htmlxref htmlxref-only_mono htmlxref-only_split \
+     contents contents_book contents_inline
 
 all: all-am
 
@@ -273,9 +281,12 @@
 #	$(srcdir)/test.sh
 
 regenerate:
-	for dir in ${SUBDIR_TESTS}; do \
+	-for dir in ${SUBDIR_TESTS}; do \
 	[ -d $${dir}_res ] && cp $$dir/*.passfirst $$dir/*.html $$dir/*.htm $$dir/*.2 $$dir/*.passtexi $${dir}_res;\
 	done
+	-rm -f formatting_res/*_l2h.html formatting_res/tex.2 \
+          formatting_res/tex_in_copying.2 formatting_res/math_not_closed.2
+	-rm -f singular_res/*_l2h.html singular_res/sing.2
 
 clean-local:
 	for dir in ${SUBDIR_TESTS}; do \
@@ -286,7 +297,7 @@
 	*_?.png *_??.png *_???.png *_l2h_img?.old *_l2h_img??.old *_l2h_img???.old \
 	*_l2h_img?.png *_l2h_img??.png *_l2h_img???.png \
 	 *_l2h.tex *_l2h.css *_l2h_images.pl *_l2h_images.tex \
-	*_l2h_labels.pl l2h_cache.pm; fi) ; \
+	*_l2h_labels.pl *-l2h_cache.pm l2h_cache.pm *.out; fi) ; \
 	done
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
--- tetex-src-3.0/utils/texi2html/Tests/Makefile.am.texi176	2004-12-29 16:32:31.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/Tests/Makefile.am	2007-06-03 02:26:07.000000000 +0200
@@ -1,15 +1,23 @@
 SUBDIR_TESTS = GermanNodeTest xemacs texinfo sectionning ccvs viper \
      viper_monolithic texi2html xemacs_frame index_table formatting macros \
-     nodes_texinfo singular floats
+     nodes_texinfo singular floats node_translit node_translit_no_unicode \
+     node_translit_no_unidecode node_utf8_translit \
+     node_utf8_translit_no_unidecode index_split_nodes \
+     more_before_top_section node_footnote node_in_chapter_index_split \
+     index_nodes tar htmlxref htmlxref-only_mono htmlxref-only_split \
+     contents contents_book contents_inline
 
 
 #check-local:
 #	$(srcdir)/test.sh
 
 regenerate:
-	for dir in ${SUBDIR_TESTS}; do \
+	-for dir in ${SUBDIR_TESTS}; do \
 	[ -d $${dir}_res ] && cp $$dir/*.passfirst $$dir/*.html $$dir/*.htm $$dir/*.2 $$dir/*.passtexi $${dir}_res;\
 	done
+	-rm -f formatting_res/*_l2h.html formatting_res/tex.2 \
+          formatting_res/tex_in_copying.2 formatting_res/math_not_closed.2
+	-rm -f singular_res/*_l2h.html singular_res/sing.2
 
 clean-local:
 	for dir in ${SUBDIR_TESTS}; do \
@@ -20,5 +28,5 @@
 	*_?.png *_??.png *_???.png *_l2h_img?.old *_l2h_img??.old *_l2h_img???.old \
 	*_l2h_img?.png *_l2h_img??.png *_l2h_img???.png \
 	 *_l2h.tex *_l2h.css *_l2h_images.pl *_l2h_images.tex \
-	*_l2h_labels.pl l2h_cache.pm; fi) ; \
+	*_l2h_labels.pl *-l2h_cache.pm l2h_cache.pm *.out; fi) ; \
 	done
--- tetex-src-3.0/utils/texi2html/README.texi176	2004-12-29 16:44:20.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/README	2005-08-12 23:15:25.000000000 +0200
@@ -1,23 +1,121 @@
-This is the README file for the GNU texi2html distribution.
+This is the README file for the texi2html distribution.
 The primary distribution point is
-http://texi2html.cvshome.org/servlets/ProjectDownloadList
+http://savannah.nongnu.org/download/texi2html/
+
+Installation
+============
 
 For generic installation instructions on compiling and installing this
 Automake-based distribution, please read the file `INSTALL'.
 Installation notes specific to Texi2html:
 * Installation is fairly simple, no compilers are required.
-* You need to have perl version 5 or higher installed on your system
-  to run 'texi2html'.
-* To generate Makefile.in etc., run `./autogen.sh'
+* You need to have perl version 5.00405, or higher installed 
+  on your system to run 'texi2html'. To play nice with encodings you 
+  need the Encode and Unicode::Normalize modules. It is likely that an
+  older perl 5 version also works if File::Spec is present.
+* To generate Makefile.in etc., run `./autogen.sh' or autoreconf
+
+Getting Started with texi2html
+==============================
+
+'texi2html' converts texinfo documents to HTML.
+
+Texinfo is the official documentation format of the GNU project. It
+uses a single source file to produce both on-line information and
+printed output. For more details about texinfo, see
+http://www.texinfo.org. 
+
+In contrast to the HTML produced by 'makeinfo --html' (the 'makeinfo'
+program is part of the Texinfo distribution), the HTML output of
+'texi2html' is highly configurable. Among others, with 'texi2html' you 
+can customize your entire page layout (like headers, footers, style
+sheets, etc), split documents at various levels and use 'latex2html' to
+convert @tex sections.
+
+'texi2html' should reasonably convert all Texinfo 4.8 constructs. If
+not, please send a bug report to 'texi2html-bug@nongnu.org'.
+
+To create HTML of texinfo documents
+===================================
+
+Make sure that you have 'texi2html' correctly installed on your
+system. The general synopsis of 'texi2html' is
+
+    texi2html [options] texinfo-source-file
+
+Without any options, this will create the file <docname>.html where 
+<docname> is the basename of your texinfo files.
+
+Run 'texi2html -h' for a short overview of the most important options,
+or have a look at the texi2html man page. For more in-depth information
+see the texi2html texinfo manual.
+
+Customizing texi2html
+=====================
+
+Initialisation options are read first from
+'/usr/local/etc/texi2html/Config' (the exact location being changeable with
+the '--sysconfdir=dir' option to the configure script), then from
+$HOME/.texi2html/Config, then any command-line options including -init-file
+options; with later settings overriding earlier ones.
+
+The default initialisation options are defined in the
+'texi2html.init' file contained in the Texi2html distribution (in
+fact, a sed script pastes this file into the beginning of the perl
+file generated by `./configure' from texi2html.pl and generates the 
+actual 'texi2html' script this way.).
+
+To customize 'texi2html' it is best if you copy the appropriate
+sections from the 'texi2html.init' file into an appropriate local
+initialization file, make the necessary changes there, and then have
+'texi2html' read this initialisation file by one of the means described
+above.
+
+For an example on what you can produce with 'texi2html' have a look
+at the following sites:
+
+* http://www.singular.uni-kl.de/Manual/html/
+
+(Please send me your sites, if you'd like to have them listed here).
+
+Documentation of texi2html
+==========================
+
+The texi2html Texinfo manual should be rather complete. In addition,
+you might want to have a look at the comments in the 'texi2html.init' 
+file for explanations about customizable parameters and at the (not 
+up-to-date) texi2html man page for an overview of texi2html's synopsis.
+
+More information
+================
+
+Texi2html's home page can be found at http://www.nongnu.org/texi2html/
+The home for development is at savannah at
+http://savannah.nongnu.org/projects/texi2html
+
+The newest version of Texi2html can be obtained from
+http://savannah.nongnu.org/download/texi2html/
+or, via anonymous cvs (see
+http://savannah.nongnu.org/cvs/?group=texi2html for instructions).
+
+Send email to texi2html@nongnu.org for enhancement suggestions, 
+authoring questions and general discussion.
+
+Send email to texi2html-bug@nongnu.org for bug reports, patches, 
+discussions about code.
+
+To subscribe to these mailinglists, visit
+  http://savannah.nongnu.org/mail/?group=texi2html
+There are no corresponding newsgroups. 
+
+Files
+=====
 
 This distribution includes the following files, among others:
     README                      This file.
 
     NEWS                        Summary of new features by release.
 
-    INTRODUCTION                Brief introduction to texi2html and
-                                its usage.
-
     INSTALL			Generic installation instructions.
 
     TODO			Things which are yet to be done.
@@ -25,21 +123,24 @@
 Texi2html source files:
 
     texi2html                   Actual script to run. Generated by
-                                'configure' from texi2html.pl,
+                                make and `buildt2h.pl' from texi2html.pl,
                                 texi2html.init, MySimple.pm, T2h_i18n.pm,
                                 l2h.init and translations.pl.
 
     texi2html.pl                Main source file of the converter.
 
+    texi2html_configured.pl     File generated by `./configure' from
+                                texi2html.pl.
+
     texi2html.init              Default values of configurable
-                                parameters.  `configure' inserts this
-                                file into texi2html.pl when it generates
-                                the actual `texi2html' script.
+                                parameters. `buildt2h.sh' inserts this
+                                file into texi2html_configured.pl when 
+                                it generates the actual `texi2html' script.
 
     MySimple.pm                 Perl module which handles the
                                 processing of command-line options. 
-                                `configure' inserts this file into
-                                texi2html.pl when it generates 
+                                `buildt2h.sh' inserts this file into
+                                texi2html_configured.pl when it generates 
                                 the actual `texi2html' script.
 
     T2h_i18n.pm                 Code used to handle strings
@@ -61,10 +162,14 @@
                                 from the source files and the files in the
                                 `i18n/' directory.
 
+    buildt2h.sh                 Helper script used to regenerate the texi2html
+                                script. A simple wrapper around a sed 
+                                one-liner.
+                                
+
 Documentation files:
 
-   texi2html.texi               Texinfo manual of texi2html. This
-                                manual is currently under construction.
+   texi2html.texi               Texinfo manual of texi2html. 
 
    texi2html.1.in               Template for generation of man pages
                                 of texi2html (`texi2html.1').  This man 
@@ -77,7 +182,7 @@
                                 `makeinfo' executable, or a C sources
                                 distribution.
 
-    configure.in                This is a template for creating 
+    configure.ac                This is a template for creating 
                                 `configure' using Autoconf.
 
     Makefile.in                 This is a template for `configure' 
@@ -87,19 +192,8 @@
     Makefile.am                 This is a template for Automake
                                 to use to make a Makefile.in.
 
-
-WWW home page:
-http://texi2html.cvshome.org
-
-Mailing lists:
-- users@texi2html.cvshome.org for enhancement suggestions, 
-  authoring questions and general discussion.
-  to subscribe to this mailinglist, visit
-  http://texi2html.cvshome.org/servlets/ProjectMailingListList
-  or send mail to users-subscribe@texi2html.cvshome.org .
-- dev@texi2html.cvshome.org for bug reports, patches, discussions
-  about code.
-There are no corresponding newsgroups. 
+Reporting bugs
+==============
 
 For bug reports, please include enough information for the maintainers
 to reproduce the problem.  Generally speaking, that means:
@@ -111,3 +205,5 @@
 Patches are most welcome; if possible, please make them against the
 source files (e.g., against texi2html.pl, or texi2html.init) with
 `diff -c' or `diff -u' and include ChangeLog entries.
+
+Good luck and enjoy !!
--- tetex-src-3.0/utils/texi2html/missing.texi176	2001-05-01 23:33:44.000000000 +0200
+++ tetex-src-3.0/utils/texi2html/missing	2005-07-07 23:26:58.000000000 +0200
@@ -1,6 +1,10 @@
 #! /bin/sh
 # Common stub for a few missing GNU programs while installing.
-# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
+
+scriptversion=2005-02-08.22
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
+#   Free Software Foundation, Inc.
 # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
@@ -18,6 +22,11 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 # 02111-1307, USA.
 
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
 if test $# -eq 0; then
   echo 1>&2 "Try \`$0 --help' for more information"
   exit 1
@@ -25,18 +34,32 @@
 
 run=:
 
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
 case "$1" in
 --run)
   # Try to run requested program, and just exit if it succeeds.
   run=
   shift
   "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
   ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case "$1" in
 
   -h|--h|--he|--hel|--help)
     echo "\
@@ -61,11 +84,15 @@
   lex          create \`lex.yy.c', if possible, from existing .c
   makeinfo     touch the output file
   tar          try tar, gnutar, gtar, then tar without non-portable flags
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake@gnu.org>."
+    exit $?
     ;;
 
   -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-    echo "missing 0.3 - GNU automake"
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
     ;;
 
   -*)
@@ -74,10 +101,45 @@
     exit 1
     ;;
 
-  aclocal)
+esac
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case "$1" in
+  lex|yacc)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  tar)
+    if test -n "$run"; then
+       echo 1>&2 "ERROR: \`tar' requires --run"
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       exit 1
+    fi
+    ;;
+
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case "$1" in
+  aclocal*)
     echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-         you modified \`acinclude.m4' or \`configure.in'.  You might want
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
          to install the \`Automake' and \`Perl' packages.  Grab them from
          any GNU archive site."
     touch aclocal.m4
@@ -85,8 +147,8 @@
 
   autoconf)
     echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-         you modified \`configure.in'.  You might want to install the
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
          \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
          archive site."
     touch configure
@@ -94,11 +156,11 @@
 
   autoheader)
     echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-         you modified \`acconfig.h' or \`configure.in'.  You might want
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
          to install the \`Autoconf' and \`GNU m4' packages.  Grab them
          from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in`
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
     test -z "$files" && files="config.h"
     touch_files=
     for f in $files; do
@@ -111,10 +173,10 @@
     touch $touch_files
     ;;
 
-  automake)
+  automake*)
     echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-         you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'.
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
          You might want to install the \`Automake' and \`Perl' packages.
          Grab them from any GNU archive site."
     find . -type f -name Makefile.am -print |
@@ -122,9 +184,32 @@
 	   while read f; do touch "$f"; done
     ;;
 
+  autom4te)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo "#! /bin/sh"
+	echo "# Created by GNU Automake missing as a replacement of"
+	echo "#  $ $@"
+	echo "exit 0"
+	chmod +x $file
+	exit 1
+    fi
+    ;;
+
   bison|yacc)
     echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
+WARNING: \`$1' $msg.  You should only need it if
          you modified a \`.y' file.  You may need the \`Bison' package
          in order for those modifications to take effect.  You can get
          \`Bison' from any GNU archive site."
@@ -154,7 +239,7 @@
 
   lex|flex)
     echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
+WARNING: \`$1' is $msg.  You should only need it if
          you modified a \`.l' file.  You may need the \`Flex' package
          in order for those modifications to take effect.  You can get
          \`Flex' from any GNU archive site."
@@ -177,7 +262,7 @@
 
   help2man)
     echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
+WARNING: \`$1' is $msg.  You should only need it if
 	 you modified a dependency of a manual page.  You may need the
 	 \`Help2man' package in order for those modifications to take
 	 effect.  You can get \`Help2man' from any GNU archive site."
@@ -197,48 +282,48 @@
 
   makeinfo)
     echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
+WARNING: \`$1' is $msg.  You should only need it if
          you modified a \`.texi' or \`.texinfo' file, or any other file
          indirectly affecting the aspect of the manual.  The spurious
          call might also be the consequence of using a buggy \`make' (AIX,
          DU, IRIX).  You might want to install the \`Texinfo' package or
          the \`GNU make' package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
     file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
     if test -z "$file"; then
-      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
     fi
     touch $file
     ;;
 
   tar)
     shift
-    if test -n "$run"; then
-      echo 1>&2 "ERROR: \`tar' requires --run"
-      exit 1
-    fi
 
     # We have already tried tar in the generic part.
     # Look for gnutar/gtar before invocation to avoid ugly error
     # messages.
     if (gnutar --version > /dev/null 2>&1); then
-       gnutar ${1+"$@"} && exit 0
+       gnutar "$@" && exit 0
     fi
     if (gtar --version > /dev/null 2>&1); then
-       gtar ${1+"$@"} && exit 0
+       gtar "$@" && exit 0
     fi
     firstarg="$1"
     if shift; then
 	case "$firstarg" in
 	*o*)
 	    firstarg=`echo "$firstarg" | sed s/o//`
-	    tar "$firstarg" ${1+"$@"} && exit 0
+	    tar "$firstarg" "$@" && exit 0
 	    ;;
 	esac
 	case "$firstarg" in
 	*h*)
 	    firstarg=`echo "$firstarg" | sed s/h//`
-	    tar "$firstarg" ${1+"$@"} && exit 0
+	    tar "$firstarg" "$@" && exit 0
 	    ;;
 	esac
     fi
@@ -252,10 +337,10 @@
 
   *)
     echo 1>&2 "\
-WARNING: \`$1' is needed, and you do not seem to have it handy on your
-         system.  You might have modified some files without having the
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
          proper tools for further handling them.  Check the \`README' file,
-         it often tells you about the needed prerequirements for installing
+         it often tells you about the needed prerequisites for installing
          this package.  You may also peek at any GNU archive site, in case
          some other package would contain this missing \`$1' program."
     exit 1
@@ -263,3 +348,10 @@
 esac
 
 exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
--- tetex-src-3.0/utils/texi2html/examples/noheaders.init.texi176	2004-02-06 18:48:35.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/examples/noheaders.init	2007-06-03 02:26:08.000000000 +0200
@@ -63,7 +63,7 @@
     my $has_top_heading = shift;
 
     &$print_head_navigation($fh,[]);
-    if ($Texi2HTML::THIS_SECTION)
+    if (@$Texi2HTML::THIS_SECTION)
     {
         # if top-level node has content, then print it with extra header
         #print $fh "<h1>$Texi2HTML::NAME{Top}</h1>\n"
@@ -82,6 +82,11 @@
              my $nw = main::print_lines($fh, $Texi2HTML::OVERVIEW);
              print $fh "</blockquote>\n";
         }
+        elsif (@{$Texi2HTML::TOC_LINES})
+        {
+             print $fh '<h1> ' . &$I('Table of contents') . "</h1>\n";
+             my $nw = main::print_lines($fh, $Texi2HTML::TOC_LINES);
+        }
     }
 }
 
@@ -119,7 +124,7 @@
 sub T2H_NOHEAD_end_section($)
 {
     my $fh = shift;
-    print $fh "$MIDDLE_RULE\n";
+    print $fh "$BIG_RULE\n";
 }
 
 ###################################################################
--- tetex-src-3.0/utils/texi2html/examples/glossary.texi.texi176	2008-01-06 15:18:22.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/examples/glossary.texi	2005-08-22 18:37:20.000000000 +0200
@@ -0,0 +1,47 @@
+\input texinfo.tex
+
+@setfilename glossary
+
+@macro glossarytext
+@table @asis
+@end macro
+
+@macro glossary
+@glossarytext
+@end table
+
+@end macro
+
+@macro gentry {id, name, text}
+@ifhtml
+@ref{\id\,\name\}
+@end ifhtml
+@ifnothtml
+\name\ (@pxref{\id\})
+@end ifnothtml
+@unmacro expandglossary
+@macro expandglossary{glossary}
+@unmacro glossarytext
+@macro glossarytext
+\\glossary\\
+@item \name\ @anchor{\id\}
+\text\
+@end macro
+@end macro
+@expandglossary {@glossarytext}
+@end macro
+
+@node Top
+@top Top
+
+@menu 
+* glossary::
+@end menu
+
+The @gentry{id1, name1, text1\, arg1 } is used in many cases while
+@gentry{id2, name2, text2} is quite specific
+
+@node glossary
+@chapter glossary
+@glossary
+
--- tetex-src-3.0/utils/texi2html/examples/chm.init.texi176	2005-02-01 22:38:33.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/examples/chm.init	2007-02-18 00:36:24.000000000 +0100
@@ -162,6 +162,7 @@
 
 foreach my $key (keys(%unicode_accents))
 {
+#    $chm_style_map{$key}->{'function'} = \&t2h_utf8_accent;
     $chm_style_map_texi{$key}->{'function'} = \&t2h_utf8_accent;
 }
 
@@ -169,21 +170,54 @@
 {
     if (exists($unicode_map{$key}) and ($unicode_map{$key} ne ''))
     {
+#        $chm_things_map{$key} = chr(hex($unicode_map{$key}));
         $chm_texi_map{$key} = chr(hex($unicode_map{$key}));
     }
 }
 
 $chm_simple_map_texi{"\n"} = ' ';
 
+# at least kchmviewer has trouble with the corresponding textual entities
+foreach my $thing ('OE', 'oe', 'euro')
+{
+     $things_map{$thing} = $numeric_entity_map{$thing};
+     $pre_map{$thing} = $numeric_entity_map{$thing};
+     $simple_format_texi_map{$thing} = $numeric_entity_map{$thing};
+}
+
 my $hhp_lines = '';
 
 sub chm_init_out()
 {
-    my $encoding = &$default_init_out();
-    $TOC_FILE = $Texi2HTML::THISDOC{'file_base_name'}.'.hhc';
+    &$default_init_out();
+# Setting out file encoding to utf8 doesn't work. Seen on the web that 
+# htmlhelp 1.x isn't utf8 aware
+#   $OUT_ENCODING = 'utf8';
+
+# there is a special treatment for @l and @L, as there is no 
+# entity, but they could be readble anyway
+#    if ($USE_UNICODE and defined($OUT_ENCODING) and $OUT_ENCODING ne '')
+#    {
+#         foreach my $thing ('l', 'L')
+#         {
+#              my $encoded_char = 
+#                Encode::encode($OUT_ENCODING,chr(hex($unicode_map{$thing})), Encode::FB_QUIET);
+#              if ($encoded_char ne '')
+#              {
+#                  $things_map{$thing} = $encoded_char;
+#                  $pre_map{$thing} = $encoded_char;
+#                  $simple_format_texi_map{$thing} = $encoded_char;
+#              }
+#         }
+#    } 
     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";
+    open (IDXFILE, ">$hhk_file") or
+        die "Can't open $hhk_file for writing: $!\n";
+    if ($USE_UNICODE and defined($OUT_ENCODING) and $OUT_ENCODING ne '')
+    {
+        binmode(IDXFILE, ":encoding($OUT_ENCODING)");
+    }
+    
     print "# writing HTML Help index in $hhk_file...\n" if $VERBOSE;
     print IDXFILE "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n<HTML>\n";
     print IDXFILE "<HEAD>\n<meta name=\"GENERATOR\" content=\"$Texi2HTML::THISDOC{program}\">\n";
@@ -198,22 +232,26 @@
 
     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 
+    open (HHPFILE, ">$hhp_file") or
         die "Can't open $hhp_file for writing: $!\n";
+    if ($USE_UNICODE and defined($OUT_ENCODING) and $OUT_ENCODING ne '')
+    {
+        binmode(HHPFILE, ":encoding($OUT_ENCODING)");
+    }
     my $language = $chm_languages{'en'};
     if (exists ($chm_languages{$LANG}))
     {
         $language = $chm_languages{$LANG};
     }
-    my $title = to_utf8($Texi2HTML::THISDOC{'title_texi'});
-
+    my $title = main::remove_texi($Texi2HTML::THISDOC{'title_texi'});
+    my $top_file = $Texi2HTML::THISDOC{'filename'}->{'top'};
     print HHPFILE <<EOT;
 [OPTIONS]
 Compatibility=1.1 or later
 Compiled file=$Texi2HTML::THISDOC{'file_base_name'}.chm
 Contents file=$Texi2HTML::THISDOC{'file_base_name'}.hhc
 Default Window=Default
-Default topic=$TOP_FILE
+Default topic=$top_file
 Display compile progress=No
 Full-text search=Yes
 Index file=$Texi2HTML::THISDOC{'file_base_name'}.hhk
@@ -221,12 +259,12 @@
 Title=$title
 
 [WINDOWS]
-Default=,"$Texi2HTML::THISDOC{'file_base_name'}.hhc","$Texi2HTML::THISDOC{'file_base_name'}.hhk","$TOP_FILE","$TOP_FILE",,,,,0x22520,,0x384e,,,,,,,,0
+Default=,"$Texi2HTML::THISDOC{'file_base_name'}.hhc","$Texi2HTML::THISDOC{'file_base_name'}.hhk","$top_file","$top_file",,,,,0x22520,,0x384e,,,,,,,,0
 
 [FILES]
 EOT
-    return $encoding;
 }
+
 sub chm_print_page_foot($)
 {
     my $fh = shift;
@@ -239,23 +277,26 @@
 EOT
 }
 
-# Convert texi to string with utf8
-sub to_utf8($)
+# Convert texi to string
+sub chm_text($)
 {
     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;
+    return main::simple_format(undef,$text);
+
+# the following doesn't work as html 1.x doesn't accept utf8
+    $::simple_map_texi_ref = \%chm_simple_map_texi;
+    $::style_map_texi_ref = \%chm_style_map_texi;
+    $::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;
+    $::simple_map_texi_ref = \%simple_map_texi;
+    $::style_map_texi_ref = \%style_map_texi;
+    $::texi_map_ref = \%texi_map;
+    return &$protect_text($text);
 }
 
 
@@ -288,7 +329,7 @@
              $text .= $element->{'number'} . " ";
              
         }
-        $text .= to_utf8($element->{'texi'});
+        $text .= chm_text($element->{'texi'});
         $text =~ s/^\s*//;
         push (@hhc_lines, "<LI> <OBJECT type=\"text/sitemap\">\n<param name=\"Name\" value=\"$text\">\n<param name=\"Local\" value=\"$element->{'file'}#$element->{'id'}\">\n</OBJECT> </LI>\n");
         if (!$chm_files{$element->{'file'}})
@@ -322,7 +363,7 @@
     my $element_href = shift;
     my $element_text = shift;
     my $is_printed = shift;
-    $entry = to_utf8($texi_entry);
+    $entry = chm_text($texi_entry);
     print IDXFILE "<LI> <OBJECT type=\"text/sitemap\">\n<param name=\"Name\" value=\"$entry\">\n<param name=\"Local\" value=\"$origin_href\">\n</OBJECT> </LI>\n";
 }
 
@@ -344,8 +385,12 @@
     print IDXFILE "</BODY>\n</HTML>\n";
     close (IDXFILE);
     my $hhc_file = "$Texi2HTML::THISDOC{'destination_directory'}$Texi2HTML::THISDOC{'file_base_name'}.hhc";
-    open (HHCFILE, ">:encoding(utf8)", $hhc_file) or 
+    open (HHCFILE, ">$hhc_file") or
         die "Can't open $hhc_file for writing: $!\n";
+    if ($USE_UNICODE and defined($OUT_ENCODING) and $OUT_ENCODING ne '')
+    {
+        binmode(HHCFILE, ":encoding($OUT_ENCODING)");
+    }
     
     print HHCFILE "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n<HTML>\n";
     print HHCFILE "<HEAD>\n<meta name=\"GENERATOR\" content=\"$Texi2HTML::THISDOC{program}\">\n";
--- tetex-src-3.0/utils/texi2html/examples/makeinfo.init.texi176	2004-12-29 16:32:44.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/examples/makeinfo.init	2007-02-18 00:36:24.000000000 +0100
@@ -7,6 +7,8 @@
 
 $SPLIT = 'node';
 
+$NODE_FILES = 1;
+
 $SECTION_NAVIGATION = 1;
 
 $SHORT_REF = 1;
@@ -25,7 +27,7 @@
 
 @SECTION_BUTTONS =
     (
-     \"node: ", \$Texi2HTML::NODE{This}, [ 'NodeNext', \$Texi2HTML::NODE{Next} ] , \",", [ 'NodePrev', \$Texi2HTML::NODE{Prev} ], \",", [ 'NodeUp', \$Texi2HTML::NODE{NodeUp} ], 'Following'
+     \"node: ", \$Texi2HTML::NODE{This}, [ 'NodeNext', \$Texi2HTML::NODE{NodeNext} ] , \",", [ 'NodePrev', \$Texi2HTML::NODE{NodePrev} ], \",", [ 'NodeUp', \$Texi2HTML::NODE{NodeUp} ], 'Following'
     );
 
 my $default_init_out = $init_out;
@@ -33,9 +35,8 @@
 
 sub makeinfo_like_init_out()
 {
-   my $encoding = &$default_init_out();
+   &$default_init_out();
    $NAVIGATION_TEXT{'Following'} = ' &gt; ';
-   return $encoding;
 }
 
 
@@ -50,6 +51,10 @@
 $print_index        = \&makeinfo_like_print_index;
 $listoffloats       = \&makeinfo_like_listoffloats;
 $listoffloats_entry = \&makeinfo_like_listoffloats_entry;
+$menu_link          = \&makeinfo_like_menu_link;
+$menu_description   = \&makeinfo_like_menu_description;
+$menu_comment       = \&makeinfo_like_menu_comment;
+$menu               = \&makeinfo_like_menu;
 
 sub makeinfo_like_foot_line_and_ref($$$$$$$$)
 {
@@ -145,3 +150,97 @@
     }
     return $result . "</ul>\n";
 }
+
+# a whole menu
+#
+# argument:
+# the whole menu text (entries and menu comments)
+#
+# argument:
+# whole menu text.
+sub makeinfo_like_menu($)
+{
+    my $text = shift;
+    if ($text =~ /\S/)
+    {
+        return "<ul>\n" 
+        . $text . "</ul>\n";
+    }
+}
+
+# formats a menu entry link pointing to a node or section 
+#
+# arguments:
+# the entry text
+# the state, a hash reference holding informations about the context, with a 
+#     usefull entry, 'preformatted', true if we are in a preformatted format
+#     (a format keeping space between words). In that case a function
+#     of the main program, main::do_preformatted($text, $state) might 
+#     be used to format the text with the current format style.
+# href is optionnal. It is the reference to the section or the node anchor
+#     which should be used to make the link (typically it is the argument 
+#     of a href= attribute in a <a> element).
+sub makeinfo_like_menu_link($$$$$$)
+{
+    my $entry = shift;
+    my $state = shift;
+    my $href = shift;
+    my $node = shift;
+    my $name = shift;
+    my $ending = shift;
+    if (($entry eq '') or $NODE_NAME_IN_MENU or $state->{'preformatted'})
+    {
+        $name .= ':' if ($name ne '');
+        $entry = "$name$node";
+    }
+    $entry = &$anchor ('', $href, $entry) if (defined($href));
+    return $entry if ($SIMPLE_MENU); 
+#    if ($state->{'preformatted'})
+#    {
+#        return '<li>' . main::do_preformatted($entry . $ending, $state);
+#    }
+    return "<li> $entry";
+}
+
+# formats a menu entry description, ie the text appearing after the node
+# specification in a menu entry an spanning until there is another
+# menu entry, an empty line or some text at the very beginning of the line
+# (we consider that text at the beginning of the line begins a menu comment) 
+#
+# arguments:
+# the description text
+# the state. See menu_entry.
+sub makeinfo_like_menu_description($$)
+{
+    my $text = shift;
+    my $state = shift;
+    return $text if ($SIMPLE_MENU); 
+#    if ($state->{'preformatted'})
+#    {
+#        return main::do_preformatted($text, $state) . '</td></tr>';
+#    }
+    return "$text</li>\n";
+}
+
+# a menu comment (between menu lines)
+# formats the container of a menu comment. A menu comment is any text 
+# appearing between menu lines, either separated by an empty line from
+# the preceding menu entry, or a text beginning at the first character
+# of the line (text not at the very beginning of the line is considered to
+# be the continuation of a menu entry description text).
+#
+# The text itself is considered to be in a preformatted environment
+# with name 'menu-commment' and with style $MENU_PRE_STYLE.
+#
+# argument
+# text contained in the menu comment.
+sub makeinfo_like_menu_comment($)
+{
+   my $text = shift;
+   return $text if ($SIMPLE_MENU); 
+   if ($text =~ /\S/)
+   {
+       return "</ul>$text<ul>";
+   }
+   return '';
+}
--- tetex-src-3.0/utils/texi2html/examples/tex4ht.init.texi176	2008-01-06 15:18:43.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/examples/tex4ht.init	2005-12-01 09:38:41.000000000 +0100
@@ -0,0 +1,217 @@
+# -*-perl-*-
+
+# To customize the command and the options, you could set
+# $Texi2HTML::TeX4HT::STYLE to latex
+# and/or change
+# $Texi2HTML::TeX4HT::tex4ht_command and $Texi2HTML::TeX4HT::tex4ht_options
+
+
+push @command_handler_init, \&Texi2HTML::TeX4HT::tex4ht_init;
+push @command_handler_process, \&Texi2HTML::TeX4HT::tex4ht_process;
+push @command_handler_finish, \&Texi2HTML::TeX4HT::tex4ht_finish;
+
+$command_handler{'math'} =
+     { 'init' => \&Texi2HTML::TeX4HT::tex4ht_to_latex,
+       'expand' => \&Texi2HTML::TeX4HT::tex4ht_do_tex
+     };
+$command_handler{'tex'} =
+     { 'init' => \&Texi2HTML::TeX4HT::tex4ht_to_latex,
+       'expand' => \&Texi2HTML::TeX4HT::tex4ht_do_tex
+     };
+
+{
+use Cwd;
+
+package Texi2HTML::TeX4HT;
+
+$STYLE = 'tex' if (!defined($STYLE));
+
+if (!defined($tex4ht_command))
+{
+   $tex4ht_command = 'httex';
+   $tex4ht_command = 'htlatex' if ($STYLE eq 'latex');
+}
+
+my $tex4ht_initial_dir;
+my $tex4ht_out_dir;
+my $tex4ht_basename;
+my $tex4ht_latex_basefile;
+my $tex4ht_html_basefile;
+my $tex4ht_latex_rfile;
+my $tex4ht_latex_failed = 0;
+
+sub tex4ht_init
+{
+  # set file names
+  $tex4ht_initial_dir = Cwd::abs_path;
+  $tex4ht_out_dir = "$Texi2HTML::THISDOC{'out_dir'}";
+  $tex4ht_out_dir = './' if (!defined($tex4ht_out_dir) or $tex4ht_out_dir =~ /^\s*$/);
+  $tex4ht_basename = "$Texi2HTML::THISDOC{'file_base_name'}_tex4ht";
+  $tex4ht_latex_basefile = "$tex4ht_basename.tex";
+  $tex4ht_html_basefile = "$tex4ht_basename.html";
+  $tex4ht_latex_rfile = $tex4ht_out_dir . $tex4ht_latex_basefile;
+
+  # begin tex file
+  unless (open (TEX4HT_TEXFILE, ">$tex4ht_latex_rfile"))  
+  {
+     warn "* tex4ht error opening $tex4ht_latex_rfile: $!\n";
+     $tex4ht_latex_failed = 1;
+     return;
+  }
+  print TEX4HT_TEXFILE "% Automatically generated\n";
+  if ($STYLE eq 'latex')
+  {
+     print TEX4HT_TEXFILE "\\documentstyle{article}\n\\begin{document}\n";
+  }
+  else
+  {
+     print TEX4HT_TEXFILE "\\csname tex4ht\\endcsname\n";
+  }
+}
+
+my $tex4ht_counter = 0;
+
+sub tex4ht_to_latex
+{
+  my $command = shift;
+  my $text = shift;
+  my $counter = shift;
+  # write to tex file
+  print TEX4HT_TEXFILE "\\HCode{\\Hnewline <!-- tex4ht_begin $tex4ht_basename $command $counter -->\\Hnewline}\n";
+  if ($command eq 'tex')
+  {
+     print TEX4HT_TEXFILE $text;
+  }
+  elsif ($command eq 'math')
+  {
+     print TEX4HT_TEXFILE "\\IgnorePar \$" . $text . "\$";
+  }
+  print TEX4HT_TEXFILE "\n\\HCode{\\Hnewline <!-- tex4ht_end $tex4ht_basename $command $counter -->\\Hnewline}\n";
+  $tex4ht_counter++;
+  return 1;
+}
+
+my %tex4ht_results;
+
+sub tex4ht_process
+{
+  return if ($tex4ht_latex_failed or (!$tex4ht_counter));
+  # finish the tex file
+  if ($STYLE eq 'latex')
+  {
+     print TEX4HT_TEXFILE "\\end{document}\n";
+  }
+  else
+  {
+     print TEX4HT_TEXFILE "\n\\bye\n";
+  }
+  close (TEX4HT_TEXFILE);
+
+  # now run tex4th
+  unless (chdir $tex4ht_out_dir)
+  {
+     warn "chdir to $tex4ht_out_dir failed\n";
+     $tex4ht_latex_failed = 1;
+     return;
+  }
+  print STDERR "cwd($tex4ht_out_dir):" . cwd() ."\n" if ($VERBOSE);
+  $tex4ht_options = '' if (!defined($tex4ht_options));
+  my $cmd = "$tex4ht_command $tex4ht_latex_basefile $tex4ht_options";
+  print STDERR "$cmd" if ($VERBOSE);
+  if (system($cmd))
+  {
+     warn "* tex4ht command: $cmd failed";
+     tex4ht_return_to_dir();
+     $tex4ht_latex_failed = 1;
+     return;
+  }
+
+  # extract the html from the file created by tex4ht
+  unless (open (TEX4HT_HTMLFILE, $tex4ht_html_basefile))
+  {
+     warn "* tex4ht error opening $tex4ht_html_basefile: $!\n";
+     tex4ht_return_to_dir();
+     $tex4ht_latex_failed = 1;
+     return;
+  }
+  my $got_count = 0;
+  my $line;
+  while ($line = <TEX4HT_HTMLFILE>)
+  {
+     #print STDERR "while $line";
+     if ($line =~ /^<!-- tex4ht_begin $tex4ht_basename (\w+) (\d+) -->\s*$/)
+     {
+        my $command = $1;
+        my $count = $2;
+        my $text = '';
+        my $end_found = 0;
+        while ($line = <TEX4HT_HTMLFILE>)
+        {
+           #print STDERR "while search $command $count $line";
+           if ($line =~ /^<!-- tex4ht_end $tex4ht_basename $command $count -->\s*$/)
+           {
+              $got_count++;
+              chomp($text);
+              $tex4ht_results{"${command}_$count"} = $text;
+              $end_found = 1;
+              last;
+           }
+           else
+           {
+              $text .= $line;
+           }
+        }
+        unless ($end_found)
+        {
+           warn "* tex4ht: end of $command $count not found\n";
+        }
+     }
+  }
+  if ($got_count != $tex4ht_counter and ($Texi2HTML::Config::VERBOSE))
+  {
+     warn "* tex4ht: got $got_count for $tex4ht_counter items entered\n";
+  }
+  close (TEX4HT_HTMLFILE);
+
+  push @{$Texi2HTML::THISDOC{'css_import_lines'}}, "\@import \"$tex4ht_basename.css\";\n";
+
+  tex4ht_return_to_dir();
+}
+
+sub tex4ht_return_to_dir
+{
+  unless (chdir $tex4ht_initial_dir)
+  {
+     die "* tex4ht unable to return to the initial dir\n";
+  }
+}
+
+my $tex4ht_output_counter = 0;
+
+sub tex4ht_do_tex
+{
+  my $command = shift;
+  my $counter = shift;
+  # return the resulting html 
+  if (exists ($tex4ht_results{"${command}_$counter"}) and defined($tex4ht_results{"${command}_$counter"}))
+  {
+     $tex4ht_output_counter++;
+     return $tex4ht_results{"${command}_$counter"};
+  }
+  else
+  {
+    warn "tex4ht: cannot find text to output for $command number $counter\n";
+    return '';
+  }
+}
+
+sub tex4ht_finish
+{ 
+  if (($tex4ht_output_counter != $tex4ht_counter) and ($Texi2HTML::Config::VERBOSE))
+  {
+     warn "* tex4ht: output $tex4ht_output_counter for $tex4ht_counter items entered\n";
+  }
+}
+
+}
+1;  
--- tetex-src-3.0/utils/texi2html/examples/bib-example.texi.texi176	2008-01-06 15:18:13.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/examples/bib-example.texi	2005-08-22 18:37:20.000000000 +0200
@@ -0,0 +1,59 @@
+\input texinfo   @c -*-texinfo-*-
+@c % Copyright (C) 2004  Aaron S. Hawley
+
+@c % Author: Aaron S. Hawley <ashawley@gnu.uvm.edu>
+@c % Keywords: docs, texinfo, extensions, bib
+
+@c % This file is free software; you can redistribute it and/or modify
+@c % it under the terms of the GNU General Public License as published by
+@c % the Free Software Foundation; either version 2, or (at your option)
+@c % any later version.
+
+@c % This file is distributed in the hope that it will be useful,
+@c % but WITHOUT ANY WARRANTY; without even the implied warranty of
+@c % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+@c % GNU General Public License for more details.
+
+@c % You should have received a copy of the GNU General Public License
+@c % along with texi2html; see the file COPYING.  If not, write to
+@c % the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+@c % Boston, MA 02111-1307, USA.
+
+@comment %**start of header
+@setfilename my-file-with-bib.info
+@settitle Texinfo with a Bibliography and References
+
+@include my-bib-macros.texi
+@mybibuselist{References}
+
+@comment %**end of header
+
+@node Top
+@top Top
+
+@menu
+* Introduction::
+* @mybibnode{}::
+
+@end menu
+
+@node Introduction
+@chapter Introduction
+
+The ability of a documentation format to make cross references to a
+bibliography, a feature of LaTeX @mybibcite{LaTeX2e}, isn't
+currently supported in Texinfo.
+
+@node @mybibnode{}
+@chapter References
+
+@itemize @asis
+
+@mybibitem{LaTeX2e} Leslie Lamport, LaTeX User's Guide and
+Reference Manual, 2nd edition, Addison-Wesley, Reading,
+Massachusetts, 1994.
+
+@end itemize
+
+@bye
+
--- tetex-src-3.0/utils/texi2html/examples/book.init.texi176	2004-04-30 13:05:07.000000000 +0200
+++ tetex-src-3.0/utils/texi2html/examples/book.init	2007-06-03 02:26:08.000000000 +0200
@@ -2,6 +2,8 @@
 
 $DO_CONTENTS = 1;
 
+$INLINE_CONTENTS = 1;
+
 @SECTION_BUTTONS =
     (
      'Back', 'Forward', ' ', 'Contents', 'Index', 'About'
@@ -36,10 +38,10 @@
 #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'}))
+    if (exists($element->{'sectionnext'}))
     {
 #print STDERR "SUB_TOC next($element->{'text'}) $element->{'next'}->{'text'}\n"; 
-         $result .= print_sub_toc($parent_element, $element->{'next'});
+         $result .= print_sub_toc($parent_element, $element->{'sectionnext'});
     }
     return $result;
 }
@@ -50,10 +52,10 @@
     my $element = shift;
     my $current_element = $element;
     my @elements;
-    while (defined($current_element->{'up'}) and ($current_element->{'up'} ne $current_element))
+    while (defined($current_element->{'sectionup'}) and ($current_element->{'sectionup'} ne $current_element))
     {
-        unshift (@elements, $current_element->{'up'});
-        $current_element = $current_element->{'up'};
+        unshift (@elements, $current_element->{'sectionup'});
+        $current_element = $current_element->{'sectionup'};
     }
     #print $fh "<ul>" . &$anchor('', $Texi2HTML::HREF{Contents}, '[' . $Texi2HTML::NAME{Contents} . ']') . " <br>\n";
     foreach my $elem (@elements)
@@ -107,13 +109,16 @@
     my $has_top_heading = shift;
 
     my $buttons = \@MISC_BUTTONS;
-    &$print_head_navigation($fh, $buttons);
+    &$print_head_navigation($fh, $buttons) if ($SPLIT or $SECTION_NAVIGATION);
     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);
+    if (!$INLINE_CONTENTS and !$Texi2HTML::THISDOC{'setcontentsaftertitlepage'})
+    {
+        print $fh '<h2> ' . $Texi2HTML::NAME{'Contents'} . "</h2>\n" ;
+        main::print_lines($fh, $Texi2HTML::TOC_LINES);
+    }
 }
 
 sub book_print_Toc
@@ -133,14 +138,17 @@
 sub book_element_file_name($$$)
 {
     my $element = shift;
-    my $is_top = shift;
+    my $type = shift;
     my $prefix = shift;
 
+    return undef if ($NODE_FILES);
+    return undef if (!defined($element));
+   
     if (defined($previous_nr) and ($element->{'doc_nr'} == $previous_nr))
     {
         return $previous_file_name;
     }
-    if ($is_top)
+    if ($type eq 'top')
     {
         $previous_file_name = "${prefix}_top.html";
     }
@@ -173,7 +181,7 @@
     my $text = $element->{'text'};
     if (!$element->{'node'} and (!$NUMBER_SECTIONS))
     {
-        $text = $element->{'name'};
+        $text = $element->{'text_nonumber'};
     }
     return '' if ($text !~ /\S/);
     my $class = $element->{'tag_level'};
--- tetex-src-3.0/utils/texi2html/examples/utf8.init.texi176	2004-02-06 18:48:35.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/examples/utf8.init	2007-02-18 00:36:25.000000000 +0100
@@ -1,8 +1,6 @@
 # -*-perl-*-
 $USE_ISO = 0;
-$ENCODING = 'utf-8';
-
-# if the encoding isn't utf-8, we should convert to utf-8 characters.
+$ENCODING_NAME = 'utf-8';
 
 use Encode;
 use Unicode::Normalize;
@@ -11,6 +9,7 @@
 {
     $style_map{$key}->{'function'} = \&t2h_utf8_accent;
     $style_map_texi{$key}->{'function'} = \&t2h_utf8_accent;
+    $style_map_pre{$key}->{'function'} = \&t2h_utf8_accent;
 }
 
 foreach my $key (%things_map)
@@ -19,6 +18,7 @@
     {
         $things_map{$key} = chr(hex($unicode_map{$key}));
         $texi_map{$key} = chr(hex($unicode_map{$key}));
+        $pre_map{$key} = chr(hex($unicode_map{$key}));
     }
 }
 
--- tetex-src-3.0/utils/texi2html/examples/my-bib-macros.texi.texi176	2008-01-06 15:18:31.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/examples/my-bib-macros.texi	2005-08-22 18:37:20.000000000 +0200
@@ -0,0 +1,232 @@
+@c \input texinfo   @c -*-texinfo-*-
+@c %% my-bib-macros.texi --- Texinfo macros providing a crude
+@c %% bibliography and citation capability.
+
+@c % Copyright (C) 2004  Aaron S. Hawley
+
+@c % Author: Aaron S. Hawley <ashawley@gnu.uvm.edu>
+@c % Keywords: docs, texinfo, extensions, bib
+
+@c % This file is free software; you can redistribute it and/or modify
+@c % it under the terms of the GNU General Public License as published by
+@c % the Free Software Foundation; either version 2, or (at your option)
+@c % any later version.
+
+@c % This file is distributed in the hope that it will be useful,
+@c % but WITHOUT ANY WARRANTY; without even the implied warranty of
+@c % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+@c % GNU General Public License for more details.
+
+@c % You should have received a copy of the GNU General Public License
+@c % along with texi2html; see the file COPYING.  If not, write to
+@c % the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+@c % Boston, MA 02111-1307, USA.
+
+@c %% Commentary:
+
+@c %%% Introduction
+
+@c %% Creates references to a ``Bibliography'' or ``References''
+@c %% section of a Texinfo document, using Texinfo's
+@c %% macro system.  Although not as terse a way to cite systems as is
+@c %% found in document systems like TeX, the format is simpler and
+@c %% the rendering  is easier for non-academic readers.
+
+@c %
+
+@c %%% Usage
+
+@c %% References to cited works can be put in any section of a document.
+@c %% The cited works must be put in either a Texinfo table (for
+@c %% instance with ``@table @asis ... @end table'') or within a
+@c %% Texinfo list (something like ``@enumerate ... @end enumerate''
+@c %% or ``@itemize @bullet ... @end itemize'').  They are created
+@c %% with the command ``@mybibitem{REF-NAME}''.  To cite a reference
+@c %% with a @mybibitem use ``@mybibcite{REF-NAME}''.
+
+@c %% The beginning of a document must include (using the @include
+@c %% command) the file my-bib-macros.texi, which should be made
+@c %% available in the current directory of the parent file.  A single
+@c %% call should be made to choose to use a list or a table.  The
+@c %% command to chose is called @mybibuselist{NODE}, where NODE is
+@c %% the node containing the location where the references are listed.
+
+@c %
+
+@c %%% Example
+
+@c %% \input texinfo   @c -*-texinfo-*-
+@c %% @comment %**start of header
+@c %% @setfilename my-file-with-bib.info
+@c %% @settitle Texinfo with a Bibliography and References
+@c %%
+@c %% @include my-bib-macros.texi
+@c %% @mybibuselist{References}
+@c %%
+@c %% @comment %**end of header
+@c %%
+@c %% @node Top
+@c %% @top Top
+@c %%
+@c %% @menu
+@c %% * Introduction::
+@c %% * @mybibnode{}::
+@c %%
+@c %% @end menu
+@c %%
+@c %% @node Introduction
+@c %% @chapter Introduction
+@c %%
+@c %% The ability of a documentation format to make cross references to a
+@c %% bibliography, a feature of LaTeX @mybibcite{LaTeX2e}, isn't
+@c %% currently supported in Texinfo.
+@c %%
+@c %% @node @mybibnode{}
+@c %% @chapter References
+@c %%
+@c %% @itemize @asis
+@c %%
+@c %% @mybibitem{LaTeX2e} Leslie Lamport, LaTeX User's Guide and
+@c %% Reference Manual, 2nd edition, Addison-Wesley, Reading,
+@c %% Massachusetts, 1994.
+@c %%
+@c %% @end itemize
+@c %%
+@c %% @bye
+
+@c %%
+
+@c %% This example produces (in Info):
+
+@c %%       1 Introduction
+@c %%       **************
+@c %%
+@c %%       The ability of a documentation format to make cross
+@c %%       references to a bibliography, a feature of LaTeX (See item
+@c %%       [LaTeX2e] in *Note LaTeX2e: References.), is not currently
+@c %%       supported in Texinfo.
+@c %%
+@c %%
+@c %%       2 References
+@c %%       ************
+@c %%
+@c %%       [LaTeX2e] Leslie Lamport, LaTeX User's Guide and Reference
+@c %%       Manual, 2nd edition, Addison-Wesley, Reading,
+@c %%       Massachusetts, 1994.
+
+@c %% and (in printed output):
+
+@c %%       1 Introduction
+@c %%       **************
+@c %%
+@c %%       The ability of a documentation format to make cross
+@c %%       references to a bibliography, a feature of LaTeX (See item
+@c %%       [LaTeX2e] in Chapter 2 [References], page 3.), is not
+@c %%       currently supported in Texinfo.
+@c %%
+@c %%
+@c %%       2 References
+@c %%       ************
+@c %%
+@c %%       [LaTeX2e] Leslie Lamport, LaTeX User's Guide and Reference
+@c %%       Manual, 2nd edition, Addison-Wesley, Reading,
+@c %%       Massachusetts, 1994.
+
+@c %
+
+@c %%% Notes
+
+@c %% The pointers to references will be functional in hypertext
+@c %% documentation (info, HTML, XML and others) and properly rendered
+@c %% in print documents, because they are implemented with Texinfo's
+@c %% cross referencing capabilities (using @anchor and @ref).  Failures
+@c %% by an author to make proper references with ``my-bib-macros'' in
+@c %% their document will give cross referencing errors by Texinfo
+@c %% conversion tools.
+
+@c %% Only one ``Reference'' section is allowed per document.
+
+@c %% An improvement of this system would create cross references
+@c %% (with @xref) at each cited work to all the originating cross
+@c %% refererences.
+
+@c %
+
+@c %% Code:
+
+@c % Configuration Options
+
+@c %% @mybibsetrefnode : Defines the name of the node to contain
+@c %% references.
+
+@macro mybibsetrefnode{node}
+@set mybibrefnode \node\
+@end macro
+
+@c %% @mybibnode{} : Macro to be placed at node containing references
+@c %% and calls to @mybibcite{}
+
+@macro mybibnode{}
+@value{mybibrefnode}
+@end macro
+
+@c %% @mybibusetable : Whether each @mybibitem will be put in a
+@c %% table.
+
+@macro mybibusetable{node}
+@set mybibtable true
+@ifset mybiblist
+@clear mybiblist
+@end ifset
+@mybibsetrefnode{\node\}
+@end macro
+
+@c %% @mybibuselist : Whether each @mybibitem will be put in a
+@c %% list.
+
+@macro mybibuselist{node}
+@set mybiblist true
+@ifset mybibtable
+@clear mybibtable
+@end ifset
+@mybibsetrefnode{\node\}
+@end macro
+
+
+@c %% @mybibcite{REF} : Cites the cross reference REF.
+
+@macro mybibcite{ref}
+@ifclear mybibrefnode
+@mybibmakeref{mybibsetrefnode was not used, \ref\}
+@end ifclear
+@c %**else if
+@ifset mybibrefnode
+@mybibmakeref{@mybibnode{}, \ref\}
+@end ifset
+
+@end macro
+
+@macro mybibmakeref{node, ref}
+(See item [\ref\] in @ref{\node\, \ref\}.)
+@end macro
+
+@c %% @mybibcite{REF} : Creates a cross referenced citation REF.
+
+@macro mybibitem{ref}
+@ifclear mybiblist
+@ifclear mybibtable
+@set mybiblist true
+@end ifclear
+@end ifclear
+@ifset mybiblist
+@item
+@anchor{\ref\}[\ref\]
+@end ifset
+@c %**else if
+@ifset mybibtable
+@item @anchor{\ref\}[\ref\]
+@end ifset
+
+@end macro
+
+@c %% my-bib-macros.texi ends here
--- tetex-src-3.0/utils/texi2html/examples/inlinestyle.init.texi176	2004-12-29 16:32:44.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/examples/inlinestyle.init	2007-02-18 00:36:24.000000000 +0100
@@ -5,7 +5,9 @@
 $CSS_LINES = "";
 
 $style_map{'sansserif'} = 
-     { 'attribute' => "span style=\"$css_map{'sansserif'}\""};
+     { 'attribute' => "span style=\"$css_map{'span.sansserif'}\""};
+$style_map{'r'} = 
+     { 'attribute' => "span style=\"$css_map{'span.roman'}\""};
 
 # formatting functions
 
--- tetex-src-3.0/utils/texi2html/examples/roff.init.texi176	2004-12-29 16:32:44.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/examples/roff.init	2007-02-18 00:36:25.000000000 +0100
@@ -519,19 +519,31 @@
 {
    my $text = shift;
    $text =~ s/\\/\\e/g;
-   $text =~ s/$;---$;/\\(em/g;
-   $text =~ s/$;--$;/-/g;
-   $text =~ s/$;-$;/\\-/g;
+#   $text =~ s/$;---$;/\\(em/g;
+#   $text =~ s/$;--$;/-/g;
+#   $text =~ s/$;-$;/\\-/g;
    $text =~ s/^\./\\&./;
    $text =~ s/([\s])\./$1\\&./g;
    return $text;
 }
 
-sub t2h_roff_normal_text($)
+sub t2h_roff_normal_text($$$$)
 {
-    my $text = shift;
+   my $text = shift;
+   my $in_raw_text = shift;
+   my $in_preformatted = shift;
+   my $in_code =shift;
+   $text = &$protect_text($text) unless($in_raw_text);
+   if (! $in_code and !$in_preformatted and !$in_raw_text)
+   {
+       $text =~ s/---/\\(em/g;
+       $text =~ s/--/\\(en/g;
+       $text =~ s/-/\\-/g;
+       $text =~ s/``/\\(lq/g;
+       $text =~ s/''/\\(rq/g;
+    }
     #$text =~ s/---/\\(em/g;
-    $text =~ s/(--?-?)/$;$1$;/go;
+    #$text =~ s/(--?-?)/$;$1$;/go;
     return $text;
 }
 
@@ -762,10 +774,11 @@
 }
 
 # a paragraph
-sub t2h_roff_paragraph($$$$$$$$$)
+sub t2h_roff_paragraph($$$$$$$$$$)
 {
     my $text = shift;
     my $align = shift;
+    my $indent = shift;
     my $paragraph_command = shift;
     my $paragraph_command_formatted = shift;
     my $paragraph_number = shift;
--- tetex-src-3.0/utils/texi2html/examples/html32.init.texi176	2004-12-29 16:32:44.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/examples/html32.init	2007-02-18 00:36:24.000000000 +0100
@@ -37,6 +37,7 @@
 $things_map{'enddots'} = '<small>....</small>';
 $things_map{'euro'} = 'Euro';
 $style_map{'sansserif'} = {};
+$style_map{'r'} = {};
 
 # formatting functions
 
--- tetex-src-3.0/utils/texi2html/aclocal.m4.texi176	2005-02-04 01:16:51.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/aclocal.m4	2007-06-05 06:14:50.000000000 +0200
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.9.3 -*- Autoconf -*-
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005  Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -11,23 +11,11 @@
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
-#                                                        -*- Autoconf -*-
-# Copyright (C) 2002, 2003  Free Software Foundation, Inc.
-# Generated from amversion.in; do not edit by hand.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# Copyright (C) 2002, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
 # AM_AUTOMAKE_VERSION(VERSION)
 # ----------------------------
@@ -40,26 +28,15 @@
 # Call AM_AUTOMAKE_VERSION so it can be traced.
 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-	 [AM_AUTOMAKE_VERSION([1.9.3])])
-
-# AM_AUX_DIR_EXPAND
+	 [AM_AUTOMAKE_VERSION([1.9.6])])
 
-# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
 # $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
@@ -106,26 +83,16 @@
 am_aux_dir=`cd $ac_aux_dir && pwd`
 ])
 
-# AM_CONDITIONAL                                              -*- Autoconf -*-
-
-# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
+# AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
-# serial 6
+# serial 7
 
 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
 # -------------------------------------
@@ -149,30 +116,19 @@
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Do all the work for Automake.                            -*- Autoconf -*-
+# Do all the work for Automake.                             -*- Autoconf -*-
 
-# This macro actually does too much some checks are only needed if
-# your package does certain things.  But this isn't really a big deal.
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
 # Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# serial 12
 
-# serial 11
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
 
 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
 # AM_INIT_AUTOMAKE([OPTIONS])
@@ -274,51 +230,27 @@
 done
 echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
 
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
 # AM_PROG_INSTALL_SH
 # ------------------
 # Define $install_sh.
-
-# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
 AC_DEFUN([AM_PROG_INSTALL_SH],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
 install_sh=${install_sh-"$am_aux_dir/install-sh"}
 AC_SUBST(install_sh)])
 
-#                                                          -*- Autoconf -*-
-# Copyright (C) 2003  Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
-# serial 1
+# serial 2
 
 # Check whether the underlying file-system supports filenames
 # with a leading dot.  For instance MS-DOS doesn't.
@@ -333,28 +265,17 @@
 rmdir .tst 2>/dev/null
 AC_SUBST([am__leading_dot])])
 
-# Add --enable-maintainer-mode option to configure.
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
 # From Jim Meyering
 
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
 # Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# serial 3
+# serial 4
 
 AC_DEFUN([AM_MAINTAINER_MODE],
 [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
@@ -373,27 +294,16 @@
 
 AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
 
-#  -*- Autoconf -*-
-
-
-# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
-# serial 3
+# serial 4
 
 # AM_MISSING_PROG(NAME, PROGRAM)
 # ------------------------------
@@ -419,27 +329,16 @@
 fi
 ])
 
+# Copyright (C) 2003, 2004, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
 # AM_PROG_MKDIR_P
 # ---------------
 # Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
-
-# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
+#
 # Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
 # created by `make install' are always world readable, even if the
 # installer happens to have an overly restrictive umask (e.g. 077).
@@ -493,26 +392,15 @@
 fi
 AC_SUBST([mkdir_p])])
 
-# Helper functions for option handling.                    -*- Autoconf -*-
+# Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003  Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
-# serial 2
+# serial 3
 
 # _AM_MANGLE_OPTION(NAME)
 # -----------------------
@@ -537,28 +425,16 @@
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-#
-# Check to make sure that the build environment is sane.
-#
-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
-# serial 3
+# serial 4
 
 # AM_SANITY_CHECK
 # ---------------
@@ -601,25 +477,14 @@
 fi
 AC_MSG_RESULT(yes)])
 
-# AM_PROG_INSTALL_STRIP
-
-# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
+# AM_PROG_INSTALL_STRIP
+# ---------------------
 # One issue with vendor `install' (even GNU) is that you can't
 # specify the program used to strip binaries.  This is especially
 # annoying in cross-compiling environments, where the build's strip
@@ -642,25 +507,13 @@
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004  Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# serial 1
+# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
+# serial 2
 
 # _AM_PROG_TAR(FORMAT)
 # --------------------
--- tetex-src-3.0/utils/texi2html/missing-texi2html.texi176	2005-02-01 16:22:45.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/missing-texi2html	2005-07-12 16:54:30.000000000 +0200
@@ -1,6 +1,7 @@
 #! /bin/sh
 # Common stub for a few missing GNU programs while installing.
-# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
+# Copyright 1996, 1997, 1999, 2000, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2005 Derek Price <derek@ximbiot.com>,
 # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
@@ -15,8 +16,8 @@
 
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
 
 if test $# -eq 0; then
   echo 1>&2 "Try \`$0 --help' for more information"
@@ -64,19 +65,36 @@
     exit 1
     ;;
 
-  */texi2html)
+  */perl)
+    case "$2" in
+      */texi2html.pl)
+        ;;
+      *)
+	echo 1>&2 "\
+WARNING: \`$1 $2' is needed, and you do not seem to have it handy on your
+         system.  You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequirements for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+	exit 1
+	;;
+    esac
+
     echo 1>&2 "\
-WARNING: \`$1' is missing or broken on your system.  You should only
-         need it if you modified \`texi2html.info'.  You might want to install
-         the \`Perl' package.  Grab it from any GNU archive site."
-    if test -z "$2"; then
+WARNING: \`$1 $2' is missing or broken on your system.
+         You should only need it if you modified \`texi2html.info'.
+         You might want to install the \`Perl' package.  Grab it from
+         any GNU archive site."
+
+    if test -z "$3"; then
 	echo 1>&2 "ERROR: No output file specified!"
 	exit 1
     fi
-    while test -n "$3"; do
+    while test -n "$4"; do
       shift
     done
-    file=`echo "$2" |sed 's/\.texi$/.html/'`
+    file=`echo "$3" |sed 's/\.texi$/.html/'`
     file=`echo "$file" |sed 's/\.texinfo$/.html/'`
     touch "$file"
     ;;
--- tetex-src-3.0/utils/texi2html/manage_i18n.pl.texi176	2005-02-04 01:16:52.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/manage_i18n.pl	2007-06-05 06:16:52.000000000 +0200
@@ -3,7 +3,7 @@
 #
 # manage_i18n.pl: manage translation files
 #
-#    Copyright (C) 2003  Free Software Foundation, Inc.
+#    Copyright (C) 2003-2005  Patrice Dumas <dumas@centre-cired.fr>,
 #
 #    This program is free software; you can redistribute it and/or modify
 #    it under the terms of the GNU General Public License as published by
@@ -17,7 +17,8 @@
 #
 #    You should have received a copy of the GNU General Public License
 #    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+#    02110-1301  USA
 #
 #-##############################################################################
 
@@ -25,29 +26,96 @@
 require 5.0;
 
 use strict;
-#use vars qw(
-#           $T2H_LANGUAGES
-#);
 
 use File::Copy;
+#use Data::Dumper;
 use Data::Dumper;
+use Getopt::Long qw(GetOptions);
 
+my $USE_DATA_DUMPER = '1';
 select(STDERR);
 $| = 1;
 select(STDOUT);
 $| = 1;
 
+my $help = 0;
 my $language;
-my $i18n_dir = 'i18n'; # name of the directory containing the per language files
-my $translation_file = 'translations.pl'; # file containing all the translations
-my @known_languages = ('en', 'de', 'nl', 'es', 'no', 'pt', 'fr'); # The supported
-                                               # languages
+my $dir = 'i18n'; # name of the directory containing the per language files
+my $output; # file containing all the translations or output directory
+# = 'translations.pl'; # file containing all the translations
+my @known_languages = ('en', 'de', 'nl', 'es', 'no', 'pt', 'pt_BR', 'ja',
+  'fr'); # The supported languages
+my @searched_dirs = (); # dir searched for sources and language files
+
 #my $template = 'template';
-my $template = 'en';
-my $template_file = "$i18n_dir/$template";
-my @source_files = ('texi2html.pl', 'texi2html.init', 'T2h_i18n.pm', 
+my $template_lang = 'en';
+my @sources = ('texi2html.pl', 'texi2html.init', 'T2h_i18n.pm', 
  'examples/roff.init', 'examples/noheaders.init');
 
+GetOptions('Include=s' => \@searched_dirs, 'output=s' => \$output, 
+  'directory=s' => \$dir, 'help+' => \$help);
+
+
+if ($help)
+{
+    my $command_basename = $0;
+    $command_basename =~ s%.*/%%;
+    my $usage_text = <<EOT;
+Usage: 
+  $command_basename -h
+  $command_basename [-I <dir>][-d <i18n_dir>][-o <out_dir>] template source_files...
+  $command_basename [-I <dir>][-d <i18n_dir>][-o <out_dir>] update [ language... ]
+  $command_basename [-I <dir>][-d <i18n_dir>][-o <result_file>] merge
+
+Default languages are files in the i18n_dir without the following extensions:
+.bak,.orig,.old,.dpkg-old,.rpmnew,.rpmsave
+EOT
+    print $usage_text;
+    exit 0;
+}
+
+if (!@searched_dirs)
+{
+    @searched_dirs = ('.');
+}
+
+if (@ARGV < 1)
+{
+    die "Need a command\n";
+}
+
+my $command = shift @ARGV;
+
+my $output_dir = $dir;
+$output_dir = $output if (defined($output));
+
+my $translations_file = 'translations.pl';
+$translations_file = $output if (defined($output));
+
+sub locate_file($$)
+{
+    my $file = shift;
+    my $directories = shift;
+
+    $directories = \@searched_dirs if !defined($directories);
+
+    if ($file =~ /^\//)
+    {
+         return $file if (-e $file and -r $file);
+    }
+    else
+    {
+         foreach my $dir (@$directories)
+         {
+              next unless (-d "$dir");
+              return "$dir/$file" if (-e "$dir/$file" and -r "$dir/$file");
+         }
+    }
+    return undef;
+}
+
+my $defaults_file = "$dir/$template_lang";
+
 use vars qw(
 $LANGUAGES 
 $T2H_OBSOLETE_STRINGS
@@ -72,33 +140,40 @@
 };
 
 # Handle per language files
-$Data::Dumper::Sortkeys = 1;
-
-if (@ARGV < 1)
+if ($USE_DATA_DUMPER)
 {
-    die "Need at least one arg\n";
+   $Data::Dumper::Sortkeys = 1;
 }
 
-my $command = shift @ARGV;
-
-sub update_language_file($);
+sub update_language_file($$$$$);
 
-die "No suitable $i18n_dir directory\n" unless (-d $i18n_dir and -r $i18n_dir);
+#die "No suitable $dir directory\n" unless (-d $dir and -r $dir);
 
-sub get_languages
+sub get_languages($$)
 {
-    unless (opendir DIR, $i18n_dir)
+    my $directories = shift;
+    my $i18n_dir = shift;
+    my @languages = ();
+    foreach my $searched_dir (@$directories)
     {
-         die "Cannot open dir $i18n_dir: $!\n";
+         my $dir = "$searched_dir/$i18n_dir";
+         if (opendir DIR, $dir)
+         {
+             my @new_languages = grep {
+                 ! /^\./ &&
+                 ! /\.(bak|orig|old|dpkg-old|rpmnew|rpmsave)$/ &&
+                 ! /~$/ &&
+                 ! /^#.*#$/ &&
+                -f $dir . '/' . $_
+             } readdir DIR;
+             closedir DIR;
+             foreach my $language (@new_languages)
+             {
+                 push @languages, $language unless grep {$_ eq $language}
+                       @languages;
+             }
+         }
     }
-    my @languages = grep {
-         ! /^\./ &&
-         ! /\.(bak|orig|old|dpkg-old|rpmnew|rpmsave)$/ &&
-         ! /~$/ &&
-         ! /^#.*#$/ &&
-         -f $i18n_dir . '/' . $_
-    } readdir DIR;
-    closedir DIR;
     my @known = @known_languages;
     foreach my $lang (@languages)
     {
@@ -115,37 +190,12 @@
     return @languages;
 }
 
-sub manage_i18n_files($)
+sub merge_i18n_files($$$)
 {
-    my $command = shift;
-    if ($command eq 'update')
-    {
-        update_i18n_files();
-    }
-    elsif ($command eq 'merge')
-    {
-        merge_i18n_files();
-    }
-    elsif ($command eq 'template')
-    {
-        update_template(@source_files);
-    }
-    elsif ($command eq 'all')
-    {
-        update_template(@source_files);
-        update_i18n_files();
-        merge_i18n_files();
-    }
-    else
-    {
-        warn "Unknown i18n command: $command\n";
-    }
-    exit 0;
-}
-
-sub merge_i18n_files
-{
-    my @languages = get_languages();
+    my $directories = shift;
+    my $i18n_dir = shift;
+    my $translation_file = shift;
+    my @languages = get_languages($directories, $i18n_dir);
     die "No languages found\n" unless (@languages);
     if (-f $translation_file)
     {
@@ -158,8 +208,8 @@
     die "open $translation_file failed" unless (open (TRANSLATIONS, ">$translation_file"));
     foreach my $lang (@languages)
     {
-         my $file = "$i18n_dir/$lang";
-         next unless (-r $file);
+         my $file = locate_file("$i18n_dir/$lang", $directories);
+         next unless defined($file);
          unless (open (FILE, $file))
          {
               warn "open $file failed: $!\n";
@@ -175,25 +225,21 @@
         
 sub update_language_hash($$$)
 {
-    my $file = shift;
+    my $from_file = shift;
 	my $lang = shift;
 	my $reference = shift;
-    if (-f $file)
+
+    if (defined($from_file) and -f $from_file)
     {
-        eval { require($file) ;};
+        eval { require($from_file) ;};
         if ($@)
         {
-            warn "require $file failed: $@\n";
-            return;
-        }
-        unless (File::Copy::copy ($file, "$file.old"))
-        {
-            warn "Error copying $file to $file.old\n";
+            warn "require $from_file failed: $@\n";
             return;
         }
         if (!defined($LANGUAGES->{$lang}))
         {
-            warn "LANGUAGES->{$lang} not defined in $file\n";
+            warn "LANGUAGES->{$lang} not defined in $from_file\n";
             return;
         }
     }
@@ -231,20 +277,23 @@
 	return 1;
 }
 
-sub update_i18n_files
+# Based on the template file, update the different language files
+sub update_i18n_files($$$$@)
 {
-    die "No suitable $i18n_dir directory\n" unless (-d $i18n_dir and -w $i18n_dir);
-    #my @languages = @known_languages;
-    my @languages = get_languages();
-    if (@ARGV)
+    my $directories = shift;
+    my $i18n_dir = shift;
+    my $out_i18n_dir = shift;
+    my $template_language = shift;
+
+    my @languages = grep {$template_language ne $_} 
+         get_languages($directories, $i18n_dir);
+    if (@_)
     {
         @languages = ();
-        foreach my $lang (@ARGV)
+        foreach my $lang (@_)
         {
             unless (grep {$lang eq $_} @known_languages)
             {
-                #warn "Unsupported language `$lang'\n";
-                #next;
                 warn "Remark: you could update the known languages array for `$lang'\n";
             }
             push (@languages, $lang) unless (grep {$lang eq $_} @languages);
@@ -255,43 +304,118 @@
         warn "No languages to update\n" ;
         return;
     }
-    die "$template_file not readable\n" unless (-r $template_file);
+    
+    my $template_file = locate_file("$i18n_dir/$template_language", 
+         $directories);
+    die "No $i18n_dir/$template_language found\n" unless 
+         (defined($template_file));
     eval { require($template_file) ;};
     if ($@)
     {
         die "require $template_file failed: $@\n";
     }
-    die "LANGUAGE->{'en'} undef after require $template_file\n" unless
-         (defined($LANGUAGES) and defined($LANGUAGES->{'en'}));
+    die "LANGUAGE->{'$template_language'} undef after require $template_file\n" unless
+         (defined($LANGUAGES) and defined($LANGUAGES->{$template_language}));
     foreach my $string (keys(%$template_strings))
     {
-        die "template string $string undef" unless (defined($LANGUAGES->{'en'}->{$string}));
+        die "template string $string undef" 
+           unless (defined($LANGUAGES->{$template_language}->{$string}));
+    }
+    unless (-d $out_i18n_dir)
+    {
+        if (!mkdir($out_i18n_dir, oct(755)))
+        {
+            die "cannot mkdir $out_i18n_dir: $!\n";
+        }
     }
     foreach my $lang (@languages)
     {
-        update_language_file($lang);
+        update_language_file($directories, $i18n_dir, $out_i18n_dir, 
+            $template_language, $lang);
     }
     return 1;
 }
 
-sub update_language_file($)
+sub copy_or_touch($$)
 {
+    my $from_file = shift;
+    my $to_file = shift;
+    my $atime = time;
+    my $mtime = $atime;
+    if ($to_file eq $from_file)
+    {
+        utime $atime, $mtime, $from_file;
+        return;
+    }
+    elsif (-f $to_file)
+    {
+        my $identical_files = 1;
+        if (open(FROMFILE, $from_file))
+        {
+             if (open(TOFILE, $to_file))
+             {
+                  my $to_file_lines = '';
+                  my $from_file_lines = '';
+                  while (<FROMFILE>)
+                  {
+                       $from_file_lines .= $_;
+                  }
+                  while (<TOFILE>)
+                  {
+                       $to_file_lines .= $_;
+                  }
+                  if ($from_file_lines eq $to_file_lines) 
+                  {
+                       utime $atime, $mtime, $from_file;
+                       return;
+                  }
+             }
+        }
+        else
+        {
+             warn "Error opening $from_file\n";
+             utime $atime, $mtime, $to_file;
+        }            
+    }
+    unless (File::Copy::copy($from_file, $to_file))
+    {
+        warn "Error copying $from_file to $to_file\n";
+    }
+}
+
+sub update_language_file($$$$$)
+{
+    my $directories = shift;
+    my $i18n_dir = shift;
+    my $out_i18n_dir = shift;
+    my $template_language = shift;
     my $lang = shift;
-    #unless (grep {$lang eq $_} @known_languages)
-    #{
-    #    print STDERR "Unsupported language `$lang'\n";
-    #    return;
-    #}
-    my $file = "$i18n_dir/$lang";
+    my $from_file = locate_file("$i18n_dir/$lang", $directories);
+    my $to_file = "$out_i18n_dir/$lang";
 
-    return unless (update_language_hash($file, $lang, $LANGUAGES->{'en'}));
-	
-    unless (open (FILE, ">$file"))
+    return unless (defined($from_file));
+
+    return unless (update_language_hash($from_file, $lang,
+        $LANGUAGES->{$template_language}));
+
+    if (-f $to_file)
+    {
+        unless (File::Copy::copy($to_file, "$to_file.old"))
+        {
+            warn "Error copying $to_file to $to_file.old\n";
+            return;
+        }
+    }
+    if (!$USE_DATA_DUMPER)
+    {
+        copy_or_touch($from_file, $to_file);
+        return;
+    }
+    unless (open(FILE, ">$to_file"))
     {
-         warn "open $file failed: $!\n";
+         warn "open $to_file failed: $!\n";
          return;
     }
-
 	
     print FILE "" . Data::Dumper->Dump([$LANGUAGES->{$lang}], [ "LANGUAGES->{'$lang'}" ]);
     print FILE "\n";
@@ -301,14 +425,23 @@
     close FILE;
 }
 
-sub update_template (@)
+sub update_template($$$$@)
 {
+    my $directories = shift;
+    my $i18n_dir = shift;
+    my $template_language = shift;
+    my $out_dir = shift;
     my $source_strings = {};
-    foreach my $source_file (@_)
+    unless (@_)
+    {
+        die "No source files\n";
+    }
+    foreach my $source (@_)
     {
-        unless (-r $source_file) 
+        my $source_file = locate_file($source, $directories);
+        unless (defined($source_file))
         {
-            warn "$source_file not readable\n";
+            warn "$source_file not found\n";
             next;
         }
         unless (open (FILE, "$source_file"))
@@ -368,30 +501,84 @@
         }
         close FILE;
     }
-    foreach my $string (keys (%$template_strings))
+    foreach my $string (keys(%$template_strings))
     {
         $source_strings->{$string} = $template_strings->{$string};
     }
-    die unless(update_language_hash($template_file, 'en', $source_strings));
+    my $template_file = 
+        locate_file("$i18n_dir/$template_language",$directories);
+    die unless (update_language_hash($template_file, 
+            $template_language, $source_strings));
 	foreach my $string (keys(%$template_strings))
 	{ # use values in template_srings if it exists
-        $LANGUAGES->{'en'}->{$string} = $template_strings->{$string} if ($LANGUAGES->{'en'}->{$string} eq '');
+        my $existing_string = $LANGUAGES->{$template_language}->{$string};
+        $LANGUAGES->{$template_language}->{$string} = $template_strings->{$string} 
+          if ((!defined($existing_string)) or ($existing_string eq ''));
     }
-    unless (open (TEMPLATE, ">$template_file"))
+    unless (-d $out_dir)
     {
-        die "open $template_file failed: $!\n";
+        if (!mkdir($out_dir, oct(755)))
+        {
+            die "cannot mkdir $out_dir: $!\n";
+        }
     }
-    print TEMPLATE "" . Data::Dumper->Dump([$LANGUAGES->{'en'}], [ "LANGUAGES->{'en'}" ]);
-    print TEMPLATE "\n";
-	if (keys(%{$T2H_OBSOLETE_STRINGS->{'en'}}))
-	{
-        print TEMPLATE Data::Dumper->Dump([$T2H_OBSOLETE_STRINGS->{'en'}], [ "T2H_OBSOLETE_STRINGS->{'en'}"]);
-        print TEMPLATE "\n";
-        print TEMPLATE "\n";
+    my $out_template_file = "$out_dir/$template_language";
+    
+    if (!$USE_DATA_DUMPER)
+    {
+        return if (!defined($template_file));
+        copy_or_touch($template_file, $out_template_file);
+        return;
     }
+    unless (open(TEMPLATE, ">$out_template_file"))
+    {
+        die "open $out_template_file failed: $!\n";
+    }
+    print TEMPLATE "" . Data::Dumper->Dump([$LANGUAGES->{$template_language}], [ "LANGUAGES->{'$template_language'}" ]);
+    print TEMPLATE "\n";
+    print TEMPLATE Data::Dumper->Dump([$T2H_OBSOLETE_STRINGS->{$template_language}], [ "T2H_OBSOLETE_STRINGS->{'$template_language'}"]);
+    print TEMPLATE "\n";
+    print TEMPLATE "\n";
     close TEMPLATE;
 }
 
-manage_i18n_files($command);
+if ($command eq 'update')
+{
+    update_i18n_files(\@searched_dirs, $dir, $output_dir, 
+         $template_lang, @ARGV);
+}
+elsif ($command eq 'merge')
+{
+    merge_i18n_files(\@searched_dirs, $dir, $translations_file);
+}
+elsif ($command eq 'template')
+{
+    my @source_files = @ARGV;
+    unless (@source_files)
+    {
+         @source_files = @sources;
+    }
+    update_template(\@searched_dirs, $dir, $template_lang, $output_dir,
+          @source_files);
+}
+
+#elsif ($command eq 'all')
+#{
+#    my @source_files = @ARGV;
+#    unless (@source_files)
+#    {
+#         @source_files = @sources;
+#    }
+#    update_template(\@searched_dirs, $dir, $output_dir, $template_lang, 
+#         @source_files);
+#    update_i18n_files(\@searched_dirs, $dir, $dir,
+#          $template_lang, "$output_dir/$template_lang");
+#    merge_i18n_files(\@searched_dirs, $dir, $translations_file);
+#}
+else
+{
+    warn "Unknown i18n command: $command\n";
+}
+exit 0;
 
 1;
--- tetex-src-3.0/utils/texi2html/TODO.texi176	2005-02-01 01:34:04.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/TODO	2007-06-03 02:26:07.000000000 +0200
@@ -1,4 +1,4 @@
-This file contains a list of things yet to be done (see also in doc/IDEAS):
+This file contains a list of things yet to be done (see also in doc/TODO):
 
 * Create detailed texinfo documentation (see in doc)
 
@@ -9,6 +9,8 @@
   - xhtml with in line style
   - Singular manual style
   - How complicated could it be to get a creation of XML, what about SGML ?
+  - to LaTeX
+  - to RTF
 
 * document css classes, and have similar classes with makeinfo
 -  makeinfo classes:
@@ -43,11 +45,6 @@
 
 * Test the back path stuff for images.
 
-* Test refs with no unicode support.
-  Test for @ commands in refs, and refs in ascii 8 bit/utf8 manuals. 
-
-* add a configure switch --with-encode
-
 * don't double in title when the @top and @settitle are the same
 
 * handle right things like
@@ -64,8 +61,8 @@
 }
 
 * maybe some @-commands appearing on lines should stop paragraphs, namely
-@page. That's not sure. Maybe this should be up  to the writer to add
-a line.
+@page or @indent. That's not sure. More likely this should be up to the 
+writer to add a line.
 
 * handle better things like
 @itemize @bullet
@@ -74,6 +71,16 @@
 In the example
 @end itemize
 
+* @macro definition in @ifset is parsed but ignored. So in the following, the
+@end ifset appearing in the macro is ignored, and the macro isn't defined.
+Don't know if it's right.
+
+@ifset a
+@macro bidule
+@end ifset
+@end macro
+@end ifset
+
 * @m_cedilla appears in output with --macro-expand. That's a bug.
 
 * in chm.init (Jose Fonseca)
@@ -87,3 +94,21 @@
 option, as the Docbook XSL stylesheets do (see in
 http://docbook.sourceforge.net/release/xsl/snapshot/doc/html/rn20.html
 all the CHM related parameters one can change).
+
+* BUG?: @special in multitable extracted but ignored later.
+The real fix would be to give to multitable each header within brace 
+texi and formatted result.
+
+* handling of images should be more configurable for other formats.
+
+* add f--ile to the repository, and do a test in another directory for
+  test of missing files.
+
+* many FIXME in the code
+
+* test @printindex in diverse contexts
+
+* in index_split the section associated with indices is the numbered section
+  not the associated node where the @cindex are. Good or bad?
+
+* implement @alias
--- tetex-src-3.0/utils/texi2html/mkinstalldirs.texi176	2001-05-01 23:33:44.000000000 +0200
+++ tetex-src-3.0/utils/texi2html/mkinstalldirs	2005-07-07 23:27:01.000000000 +0200
@@ -1,40 +1,150 @@
 #! /bin/sh
 # mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain
 
-# $Id: mkinstalldirs,v 1.2 2001/05/01 21:33:44 dprice Exp $
+scriptversion=2005-02-02.21
+
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
 
 errstatus=0
+dirmode=""
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake@gnu.org>."
+
+# process command line arguments
+while test $# -gt 0 ; do
+  case $1 in
+    -h | --help | --h*)         # -h for help
+      echo "$usage"
+      exit $?
+      ;;
+    -m)                         # -m PERM arg
+      shift
+      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+      dirmode=$1
+      shift
+      ;;
+    --version)
+      echo "$0 $scriptversion"
+      exit $?
+      ;;
+    --)                         # stop option processing
+      shift
+      break
+      ;;
+    -*)                         # unknown option
+      echo "$usage" 1>&2
+      exit 1
+      ;;
+    *)                          # first non-opt arg
+      break
+      ;;
+  esac
+done
+
+for file
+do
+  if test -d "$file"; then
+    shift
+  else
+    break
+  fi
+done
+
+case $# in
+  0) exit 0 ;;
+esac
+
+# Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
+# mkdir -p a/c at the same time, both will detect that a is missing,
+# one will create a, then the other will try to create a and die with
+# a "File exists" error.  This is a problem when calling mkinstalldirs
+# from a parallel make.  We use --version in the probe to restrict
+# ourselves to GNU mkdir, which is thread-safe.
+case $dirmode in
+  '')
+    if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+      echo "mkdir -p -- $*"
+      exec mkdir -p -- "$@"
+    else
+      # On NextStep and OpenStep, the `mkdir' command does not
+      # recognize any option.  It will interpret all options as
+      # directories to create, and then abort because `.' already
+      # exists.
+      test -d ./-p && rmdir ./-p
+      test -d ./--version && rmdir ./--version
+    fi
+    ;;
+  *)
+    if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
+       test ! -d ./--version; then
+      echo "mkdir -m $dirmode -p -- $*"
+      exec mkdir -m "$dirmode" -p -- "$@"
+    else
+      # Clean up after NextStep and OpenStep mkdir.
+      for d in ./-m ./-p ./--version "./$dirmode";
+      do
+        test -d $d && rmdir $d
+      done
+    fi
+    ;;
+esac
 
 for file
 do
-   set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
-   shift
+  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+  shift
 
-   pathcomp=
-   for d
-   do
-     pathcomp="$pathcomp$d"
-     case "$pathcomp" in
-       -* ) pathcomp=./$pathcomp ;;
-     esac
-
-     if test ! -d "$pathcomp"; then
-        echo "mkdir $pathcomp"
-
-        mkdir "$pathcomp" || lasterr=$?
-
-        if test ! -d "$pathcomp"; then
-  	  errstatus=$lasterr
-        fi
-     fi
+  pathcomp=
+  for d
+  do
+    pathcomp="$pathcomp$d"
+    case $pathcomp in
+      -*) pathcomp=./$pathcomp ;;
+    esac
+
+    if test ! -d "$pathcomp"; then
+      echo "mkdir $pathcomp"
+
+      mkdir "$pathcomp" || lasterr=$?
+
+      if test ! -d "$pathcomp"; then
+	errstatus=$lasterr
+      else
+	if test ! -z "$dirmode"; then
+	  echo "chmod $dirmode $pathcomp"
+	  lasterr=""
+	  chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+	  if test ! -z "$lasterr"; then
+	    errstatus=$lasterr
+	  fi
+	fi
+      fi
+    fi
 
-     pathcomp="$pathcomp/"
-   done
+    pathcomp="$pathcomp/"
+  done
 done
 
 exit $errstatus
 
-# mkinstalldirs ends here
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
--- tetex-src-3.0/utils/texi2html/COPYING.texi176	2001-04-29 09:23:09.000000000 +0200
+++ tetex-src-3.0/utils/texi2html/COPYING	2005-07-07 23:05:29.000000000 +0200
@@ -2,7 +2,7 @@
 		       Version 2, June 1991
 
  Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
@@ -305,7 +305,7 @@
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 
 
 Also add information on how to contact you by electronic and paper mail.
--- tetex-src-3.0/utils/texi2html/NEWS.texi176	2005-02-04 02:51:37.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/NEWS	2007-06-05 06:55:08.000000000 +0200
@@ -1,5 +1,111 @@
 This file records noteworthy changes.
 
+1.78 (2007-06-05)
+
+* NEW FEATURES
+  ------------
+
+* Transliterate accented characters in file names. Use Text::Unidecode
+  if detected.
+
+* Handle @frenchspacing, @tie, @indent, @setcontentsaftertitlepage,
+  @setshortcontentsaftertitlepage and the obsolete @allow-recursion 
+  and @quote-arg.
+
+* With book style the Table of Contents is put where it is set.
+
+* Use more numeric entities, especially for accented letters.
+
+* The `examples' directory now contains an init file for Mediawiki output.
+  Mediawiki is the GPL'd wiki used by Wikipedia.
+
+* new init file tex4ht.init. With this init file, httex or htlatex from 
+  tex4ht is used to format @tex and @math.
+
+* Init files now have a chance to override all file names, rather than just
+  page names.
+
+* Put the images under a double licence by adding back their original GPL
+  licence.
+
+* If SIMPLE_MENU is true the menu is simply enclosed in a preformatted 
+  environment.
+
+* The user can bypass the texi2html functions and provide his own function
+  to do things similar that what is done for interfacing with LaTeX2HTML
+  or tex4ht.
+
+* LaTeX2HTML stuff is moved out of texi2html.pl, to T2h_l2h.pm.
+
+* Add $USER and $DATE variables to override the defaults detected for the
+  footer.
+
+* COMPATIBILITY
+  -------------
+
+* $TOP_FILE and $TOC_FILE are only set if set by the user. The elements
+  file names are in the hash reference $Texi2HTML::THISDOC{'filename'}
+  for use in init files.
+
+* The API for image, normal_text, paragraph and node_file_name has changed.
+
+* The $ENCODING variable is deprecated, replaced by $ENCODING_NAME
+  and $OUT_ENCODING.
+
+* utf8 is used as default out file encoding. This should allow for utf8
+  translations for languages which cannot use @-commands for non ascii
+  characters.
+
+* Use entities for ``, '', ---, -- and quotes used for some formatting
+  @-commands if $USE_ISO is set. 
+
+* don't set unset MENU-ENTRY-NAME if it is similar with the NODE-NAME,
+  it is useless as it is a construct that shouldn't happen.
+
+* avoid menu entry and description redundancy in the formatting function
+  and not in the main program.
+
+* accept - in @-command names (compatibility with makeinfo)
+
+* in user-defined macro arguments a comma in brace is escaped (compatibility
+  with makeinfo from texinfo 4.8.90)
+
+* don't add the section title to the html title when the document isn't split
+
+* BUG FIXES
+  ---------
+
+* When the file extension is set to the empty string, a trailing `.' will not
+  be automatically added to file names.
+
+* The texi2html script is now created by make and not configure. 
+
+* It is possible to build the translation files from outside of the 
+  build directory.
+
+* When configure detects that no Data::Dumper is present, the build scripts
+  will simply copy the files instead of breaking.
+
+* remove handling of quotation second arg, quotation has only one arg.
+
+* handle nested ifset/ifclear.
+
+* Improved handling of @sc and @centerchap.
+
+* More flexible normal_text.
+
+* style_stack really contains the formatting @-commands. 
+
+* caching of html generated by latex2html reenabled.
+
+* when not split and no section navigation is output, the about page and
+  navigation direction are not output for all the elements.
+
+* FOR DEVELOPERS
+  --------------
+
+* Standardized on Automake 1.10.0
+
 1.76 (February  3 2005)
 
 * BUG FIXES
--- tetex-src-3.0/utils/texi2html/doc/Makefile.in.texi176	2005-02-04 22:19:19.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/doc/Makefile.in	2007-06-05 06:16:36.000000000 +0200
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004  Free Software Foundation, Inc.
+# 2003, 2004, 2005  Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -60,7 +60,11 @@
 MAKEINFOHTML = $(MAKEINFO) --html
 AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
 DVIPS = dvips
-am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(texinfohtmldir)"
+am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" \
+	"$(DESTDIR)$(texinfohtmldir)"
+man1dir = $(mandir)/man1
+NROFF = nroff
+MANS = $(man_MANS)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -101,10 +105,13 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+REQUIRE_DATA_DUMPER = @REQUIRE_DATA_DUMPER@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
+USE_DATA_DUMPER = @USE_DATA_DUMPER@
 USE_UNICODE = @USE_UNICODE@
+USE_UNIDECODE = @USE_UNIDECODE@
 VERSION = @VERSION@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__leading_dot = @am__leading_dot@
@@ -152,7 +159,12 @@
 # use the script out of the distribution NOT
 # an old one which is installed on the client.
 TEXI2HTML = $(top_builddir)/texi2html
-EXTRA_DIST = texi2html.html
+man_MANS = texi2html.1
+EXTRA_DIST = \
+	texi2html.1.in \
+	texi2html.html
+
+CLEANFILES = texi2html.1
 SUFFIXES = .txt
 all: all-am
 
@@ -192,9 +204,11 @@
 	restore=: && backupdir="$(am__leading_dot)am$$$$" && \
 	am__cwd=`pwd` && cd $(srcdir) && \
 	rm -rf $$backupdir && mkdir $$backupdir && \
-	for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
-	  if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
-	done; \
+	if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+	  for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+	    if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+	  done; \
+	else :; fi && \
 	cd "$$am__cwd"; \
 	if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
 	 -o $@ $<; \
@@ -254,10 +268,11 @@
 maintainer-clean-vti:
 @MAINTAINER_MODE_TRUE@	-rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
 .dvi.ps:
+	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
 	$(DVIPS) -o $@ $<
 
 uninstall-info-am:
-	$(PRE_UNINSTALL)
+	@$(PRE_UNINSTALL)
 	@if (install-info --version && \
 	     install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
 	  list='$(INFO_DEPS)'; \
@@ -273,7 +288,7 @@
 	  relfile=`echo "$$file" | sed 's|^.*/||'`; \
 	  relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
 	  (if cd "$(DESTDIR)$(infodir)"; then \
-	     echo " rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9])"; \
+	     echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
 	     rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
 	   else :; fi); \
 	done
@@ -298,7 +313,8 @@
 	  texi2html.ky texi2html.kys texi2html.log texi2html.op \
 	  texi2html.ops texi2html.pg texi2html.pgs texi2html.tmp \
 	  texi2html.toc texi2html.tp texi2html.tps texi2html.vr \
-	  texi2html.vrs texi2html.dvi texi2html.pdf texi2html.ps
+	  texi2html.vrs texi2html.dvi texi2html.pdf texi2html.ps \
+	  texi2html.html
 
 maintainer-clean-aminfo:
 	@list='$(INFO_DEPS)'; for i in $$list; do \
@@ -306,6 +322,51 @@
 	  echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
 	  rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
 	done
+install-man1: $(man1_MANS) $(man_MANS)
+	@$(NORMAL_INSTALL)
+	test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
+	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+	for i in $$l2; do \
+	  case "$$i" in \
+	    *.1*) list="$$list $$i" ;; \
+	  esac; \
+	done; \
+	for i in $$list; do \
+	  if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+	  else file=$$i; fi; \
+	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+	  case "$$ext" in \
+	    1*) ;; \
+	    *) ext='1' ;; \
+	  esac; \
+	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
+	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+	  echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+	  $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
+	done
+uninstall-man1:
+	@$(NORMAL_UNINSTALL)
+	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+	for i in $$l2; do \
+	  case "$$i" in \
+	    *.1*) list="$$list $$i" ;; \
+	  esac; \
+	done; \
+	for i in $$list; do \
+	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+	  case "$$ext" in \
+	    1*) ;; \
+	    *) ext='1' ;; \
+	  esac; \
+	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
+	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+	  echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
+	  rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
+	done
 install-texinfohtmlDATA: $(texinfohtml_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(texinfohtmldir)" || $(mkdir_p) "$(DESTDIR)$(texinfohtmldir)"
@@ -363,9 +424,9 @@
 check-am: all-am
 	$(MAKE) $(AM_MAKEFLAGS) check-local
 check: check-am
-all-am: Makefile $(INFO_DEPS) $(DATA)
+all-am: Makefile $(INFO_DEPS) $(MANS) $(DATA)
 installdirs:
-	for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(texinfohtmldir)"; do \
+	for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(texinfohtmldir)"; do \
 	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
 	done
 install: install-am
@@ -385,6 +446,7 @@
 mostlyclean-generic:
 
 clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
@@ -412,7 +474,7 @@
 
 info-am: $(INFO_DEPS)
 
-install-data-am: install-info-am install-texinfohtmlDATA
+install-data-am: install-info-am install-man install-texinfohtmlDATA
 
 install-exec-am:
 
@@ -448,7 +510,7 @@
 	    install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
 	  done; \
 	else : ; fi
-install-man:
+install-man: install-man1
 
 installcheck-am:
 
@@ -469,33 +531,49 @@
 
 ps-am: $(PSS)
 
-uninstall-am: uninstall-info-am uninstall-texinfohtmlDATA
+uninstall-am: uninstall-info-am uninstall-man \
+	uninstall-texinfohtmlDATA
+
+uninstall-man: uninstall-man1
 
 .PHONY: all all-am check check-am check-local clean clean-generic \
 	dist-info distclean distclean-generic distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-exec install-exec-am install-info \
-	install-info-am install-man install-strip \
+	install-info-am install-man install-man1 install-strip \
 	install-texinfohtmlDATA installcheck installcheck-am \
 	installdirs maintainer-clean maintainer-clean-aminfo \
 	maintainer-clean-generic maintainer-clean-vti mostlyclean \
 	mostlyclean-aminfo mostlyclean-generic mostlyclean-vti pdf \
 	pdf-am ps ps-am uninstall uninstall-am uninstall-info-am \
-	uninstall-texinfohtmlDATA
+	uninstall-man uninstall-man1 uninstall-texinfohtmlDATA
 
 
+#texi2html.html: texi2html.texi $(srcdir)/version.texi \
+#  $(TEXI2HTML)
 texi2html.html: texi2html.texi $(srcdir)/version.texi \
-  $(top_builddir)/texi2html.pl $(top_builddir)/texi2html.init \
-  $(top_builddir)/MySimple.pm $(top_builddir)/T2h_i18n.pm \
-  $(top_builddir)/translations.pl
-	TEXINPUTS=$(srcdir)::$$TEXINPUTS \
-	  $(SHELL) $(top_srcdir)/missing-texi2html --run $(TEXI2HTML) -V $<
+  $(top_srcdir)/texi2html.pl $(top_srcdir)/texi2html.init \
+  $(top_srcdir)/MySimple.pm $(top_srcdir)/T2h_i18n.pm
+	TEXINPUTS=$(srcdir)::$$TEXINPUTS T2H_HOME=$(top_srcdir) \
+	  $(SHELL) $(top_srcdir)/missing-texi2html --run \
+	    $(PERL) -x $(top_srcdir)/texi2html.pl -V $<
+
+$(TEXI2HTML):
+	@(cd $(top_builddir) && make texi2html)
+
+texi2html.1: texi2html.1.in ../config.status
+	@echo Generating $@...
+	@sed -e "s/[@]PACKAGE_VERSION[@]/$(PACKAGE_VERSION)/" \
+	     -e "s/[@]PACKAGE_DATE[@]/$(PACKAGE_DATE)/" \
+	     -e "s#[@]sysconfdir[@]#$(sysconfdir)#" \
+	     -e "s#[@]pkgdatadir[@]#$(pkgdatadir)#" $< >texi2html.tmp
+	@mv texi2html.tmp $@
 
 txt: texi2html.txt
 
 check-local: $(TEXI2HTML) 
 	TEXINPUTS=$(srcdir)::$$TEXINPUTS \
-	   $(PERL) $(TEXI2HTML) -V $(srcdir)/texi2html.texi
+	   $(TEXI2HTML) -V $(srcdir)/texi2html.texi
 
 # texinfo based targets automake neglects to include
 .texinfo.txt:
--- tetex-src-3.0/utils/texi2html/doc/texi2html.1.in.texi176	2008-01-06 15:16:10.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/doc/texi2html.1.in	2005-08-12 23:15:36.000000000 +0200
@@ -0,0 +1,184 @@
+.TH TEXI2HTML 1 "@PACKAGE_DATE@"
+.AT 3
+.SH NAME
+texi2html \- a Texinfo to HTML converter
+.SH SYNOPSIS
+.B texi2html [options] file
+.SH DESCRIPTION
+.I Texi2html
+converts the given Texinfo file to a set of HTML files. It tries to handle
+most of the Texinfo commands. It creates hypertext links for cross-references,
+footnotes...
+.PP
+.I Texi2html
+may furthermore use latex2html to generate HTML (code and/or images) for @math
+and @iftex tags (see the 
+.B \-\-l2h
+option).
+.PP
+.I Texi2html
+creates several files depending on the contents of the Texinfo file and on
+the chosen options (see FILES).
+.PP
+The HTML files created by
+.I texi2html
+are closer to TeX than to Info.
+.SH OPTIONS
+Options may be abbreviated to th shortests unique prefix. The
+following is only an incomplete list of the available options: 
+.TP 12
+.B \-\-help [1|2]
+Print usage instructions and list the most important, all relevant,
+or all recognised (including obsolete) command-line options, and exit. 
+.TP
+.B \-\-split chapter|section|node
+Split the output into several HTML files (one per main chapter/section or node).
+.TP
+.B \-\-ifinfo \-\-iftex \-\-ifxml \-\-ifplaintext \-\-ifhtml
+Expand @ifinfo, @iftex and @tex, @ifxml and @xml, @ifplaintext, 
+@ifhtml and @html regions, and don't expand @ifnot 
+corresponding regions (default: ifhtml).
+.TP
+.B \-\-no\-ifinfo \-\-no\-iftex \-\-no\-ifxml \-\-no\-ifplaintext \-\-no\-html
+Don't expand @ifinfo, @iftex, @ifxml, @ifplaintext regions and expand
+@ifnot corresponding regions.
+.TP
+.B \-I \fIdir\fP
+Append \fIdir\fP to the directory list searched for included files.
+.TP
+.B \-P \fIdir\fP
+Prepend \fIdir\fP to the directory list searched for included files.
+.TP
+.B \-\-l2h
+Use latex2html for content of @math and @tex tags. Content must be such that 
+both, latex and tex, can translate it correctly. I.e., no tex-only constructs 
+must be used.
+.TP
+.B \-\-css\-include \fIfile\fP
+Use css file \fIfile\fP.
+.TP
+.B \-\-init\-file \fIfile\fP
+Load init file \fIfile\fP (see also FILES).
+.TP
+.B \-\-lang \fIlang\fP
+Use \fIlang\fP as document language (ISO 639 encoding).
+.TP
+.B \-\-macro\-expand \fIfile\fP
+output macro expanded source in \fIfile\fP.
+.TP
+.B \-\-no\-menu
+Don't show the Texinfo menus; by default they are shown.
+.TP
+.B \-\-no\-number
+Don't number the sections.
+.TP
+.B \-\-use\-nodes
+Use nodes for sectionning.
+.TP
+.B \-\-prefix
+Use as prefix for output files, instead of basename.
+.TP
+.B \-\-node\-files
+Produce one file per node for cross references.
+.TP
+.B \-\-l2h\-l2h \fIprog\fP  
+Use \fIprog\fP as latex2html program (default \fIlatex2html\fP). 
+Program must be executable. 
+.TP
+.B \-\-l2h\-init \fIfile\fP  
+Use \fIfile\fP as latex2html init file. \fIfile\fP should be used to specify in which way latex2html handles mathematical expressions and formulas. 
+
+.TP
+.B \-\-l2h\-tmp \fIdir\fP
+Use \fIdir\fP as tmp dir for latex2html. This directory (resp. its path) 
+must not contain a dot  (i.e., a ".").
+.TP 
+.B \-\-l2h\-clean
+remove all intermediate files generated by latex2html (prevents caching!)  
+.TP 
+.B \-\-l2h\-skip
+Do not really run latex2html. Use (kept) files of previous runs, instead.
+.TP
+.B \-\-Verbose
+Give a verbose output. 
+.TP
+.B \-\-version
+Print version and exit.
+.PP
+.SH FILES
+Initialisation options are read first from @pkgdatadir@/texi2html/Config 
+(the exact location being changeable with the
+.RI --datadir=dir
+option to the configure script), then from @sysconfdir@/texi2html/Config
+(the exact location being changeable with the
+.RI --sysconfdir=dir
+option to the configure script), then from ./Config, from 
+$HOME/.texi2html/Config, and from any command-line options including 
+\-\-init\-file options; with later settings overriding earlier ones.
+.P
+By default
+.I texi2html
+my creates the following files (foo being the name of the Texinfo file):
+.TP 16
+.B foo_toc.html
+The table of contents (if @contents is present).
+.TP
+.B foo.html
+The document's contents or the Top element.
+.TP
+.B foo_fot.html
+The footnotes (if any).
+.TP
+.B foo_abt.html
+An help section.
+.TP
+.B foo_l2h_img*
+Images generated by latex2html (if any).
+.PP
+When used with the
+.B \-\-split
+option, it creates several files (one per chapter or node), named
+.B foo_n.html
+(n being the index of the chapter or node), and the
+.B foo.html
+file contains the Top element.
+.PP
+Otherwise it creates only one file:
+.B foo.html
+.SH VERSION
+This is \fItexi2html\fP version @PACKAGE_VERSION@, @PACKAGE_DATE@.
+.SH AUTHOR
+Texi2html was originally written by is Lionel Cons, CERN IT/DIS/OSE,
+Lionel.Cons@cern.ch.  Over time, many other people around the net
+contributed to this program.  Its current maintainer is Olaf Bachmann,
+obachman@mathematik.uni-kl.de.
+.SH AVAILABILITY
+The latest version of this program, as well as support in the form of mailing
+lists with archives, bug tracking, documentation, and other tools can be found
+at:
+	 http://www.nongnu.org/texi2html/
+.SH COPYRIGHT
+Copyright \(co 1999-2005  Patrice Dumas <dumas@centre-cired.fr>,
+                        Derek Price <derek@ximbiot.com>,
+                        Adrian Aichner <adrian@xemacs.org>,
+                      & others.
+
+There is NO warranty.  You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the file named COPYING.
+.SH "SEE ALSO"
+GNU Texinfo Documentation Format
+.br
+http://texinfo.org/
+.br
+World Wide Web (WWW),
+HyperText Markup Language (HTML)
+.br
+http://www.w3.org
+.br
+LaTeX2HTML
+.br
+http://www-dsed.llnl.gov/files/programs/unix/latex2html
+.SH BUGS
+This man-page is often out-of-date. The info manual should be more up-to-date.
+.ex
--- tetex-src-3.0/utils/texi2html/doc/texi2html.texi.texi176	2005-02-01 16:18:41.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/doc/texi2html.texi	2007-06-03 02:26:08.000000000 +0200
@@ -3,25 +3,21 @@
 @c which is part of the ``texi2html'' distribution.
 @setfilename texi2html.info
 
-@c @macro copyleftnotice
 @copying
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003
-                       Free Software Foundation, Inc.
-
 @multitable @columnfractions .12 .88
 @item Portions of @command{texi2html}
 @item @tab Copyright @copyright{} 1999, 2000 Lionel Cons@*
 @item @tab Copyright @copyright{} 1999, 2000 Karl Berry@*
 @item @tab Copyright @copyright{} 1999, 2000 Olaf Bachmann@*
-@item @tab Copyright @copyright{} 2002, 2003 Patrice Dumas@*
-@item @tab Copyright @copyright{} 2001, 2002, 2003 Derek Price@*
+@item @tab Copyright @copyright{} 2002, 2003, 2004, 2005, 2006, 2007 Patrice Dumas@*
+@item @tab Copyright @copyright{} 2001, 2002, 2003, 2004, 2005, 2006 Derek Price@*
 @item @tab Copyright @copyright{} many others.@*
 @item @tab
 @item @tab
 @item Portions of this manual
 @item @tab Copyright @copyright{} 1999, 2000 Karl Heinz Marbaise (manual)@*
-@item @tab Copyright @copyright{} 2003 Patrice Dumas (manual)@*
-@item @tab Copyright @copyright{} 2003 Derek Price (manual)@*
+@item @tab Copyright @copyright{} 2003, 2007 Derek Price (manual)@*
+@item @tab Copyright @copyright{} 2003, 2004, 2005, 2006, 2007 Patrice Dumas (manual)@*
 @end multitable
 
 Permission is granted to make and distribute verbatim
@@ -47,9 +43,15 @@
 conditions for modified versions, except that this
 permission notice may be stated in a translation approved
 by the Free Software Foundation.
+@c Author:
+@c   Karl Heinz Marbaise <khmarbaise@gmx.de>
+@c   Patrice Dumas
+@c   Derek Price
 @end copying
-@c @end macro
 
+@c The following is the Texi2HTML program license, not the manual
+@c license. The manual license is stated above.
+@c
 @c --------------------------------------------------------
 @c    This file is part of the Texi2HTML distribution.
 @c
@@ -68,12 +70,8 @@
 @c    You should have received a copy of the GNU General
 @c    Public License along with this program; if not, write to
 @c    the Free Software Foundation, Inc., 59 Temple Place, Suite
-@c    330, Boston, MA  02111-1307  USA
+@c    330, Boston, MA  02110-1301  USA
 @c
-@c Author:
-@c   Karl Heinz Marbaise <khmarbaise@gmx.de>
-@c   Patrice Dumas
-@c   Derek Price
 @c --------------------------------------------------------
 
 @c --------------------------------------------------------
@@ -144,7 +142,6 @@
 @value{VERSION}.
 @end ifnothtml
 
-@c @copyleftnotice
 @insertcopying
 @end ifnottex
 @c --------------------------------------------------------
@@ -163,7 +160,6 @@
 @author Derek Price (manual)
 @page
 @vskip 0pt plus 1filll
-@c @copyleftnotice
 @insertcopying
 @end titlepage
 
@@ -198,12 +194,11 @@
 Texinfo (@pxref{Top,,Texinfo,Texinfo}) into @acronym{HTML}.
 @end ifinfo
 
-Please send bug reports concerning this manual to the Texi2HTML user
-discussion list @email{user@@texi2html.cvshome.org}.  Please state the exact
+Please send bug reports concerning this manual to the Texi2HTML developement
+list @email{texi2html-bug@@nongnu.org}. Please state the exact
 version of the manual which contains the bug, as given above.
 
 @ifinfo
-@c @copyleftnotice
 @insertcopying
 @end ifinfo
 
@@ -224,7 +219,10 @@
 * Changing the page layout::  Fine tuning of the page layout
 * Customizing HTML::          Fine tuning of the @acronym{HTML} elements
                               associated with the texinfo constructs
-* Internationalization::      Help translating !
+* Internationalization::      Help translating!
+* Incompatibilities::         Incompatibilities with previous versions
+* Specificities::             The minor differences with regard with texinfo
+                              valid for makeinfo or texi2dvi
 * Indexop::                   Command Line Option Index
 * Indexvr::                   Variable Index
 * Indexcp::                   Concept Index
@@ -284,13 +282,13 @@
 
 You would like to produce @acronym{HTML} files from your existing Texinfo
 files?  There are two programs you can use to do this.  The first is
-@command{makeinfo} (@pxref{Generating HTML,,,texinfo}).
+@command{makeinfo} (@pxref{Generating HTML,,,texinfo,GNU Texinfo}).
 The second is @command{texi2html}.
 
 The design goal of @command{makeinfo}'s @acronym{HTML} output was to produce
 readable @acronym{HTML} output. It is now possible to use @acronym{CSS}
 for @acronym{HTML} customization. Another possibility is to use intermediate 
-formats, like docbook or @command{mekeinfo} @acronym{XML} 
+formats, like docbook or @command{makeinfo} @acronym{XML} 
 and @acronym{XSL} stylesheets to customize the resulting document. Still the 
 output produced by @command{makeinfo} isn't customizable.
 
@@ -327,7 +325,7 @@
 
 @command{texi2html} should reasonably convert all Texinfo
 4.8 constructs.  If you find it does not, please send a bug report to the
-@email{users@@texi2html.cvshome.org} email list.
+@email{texi2html-bug@@nongnu.org} email list.
 
 @c ========================================================
 @node Obtaining texi2html
@@ -337,7 +335,11 @@
 @cindex source code for @command{texi2html}, downloading
 
 The latest version of the source code for @command{texi2html} should be
-available from @uref{http://texi2html.cvshome.org,texi2html.cvshome.org}.
+available from
+@uref{http://www.nongnu.org/texi2html/,www.nongnu.org/texi2html/}.
+@command{texi2html} is also available with 
+@uref{http://www.tug.org/teTeX/,teTeX} and 
+@uref{http://www.tug.org/texlive/, TeX Live}.
 
 @c ========================================================
 @node Installation
@@ -345,25 +347,50 @@
 @cindex Installation
 @cindex configure
 
+@menu
+* Requirements::
+* Configuring and rebuilding::
+* Installing::
+* Advanced build features::
+@end menu
+
+@node Requirements
+@section Requirements
+
 To install @command{texi2html}, you must first obtain a copy of the
 source distribution.  @xref{Obtaining texi2html}.
 
-@command{texi2html} also requires @command{perl} version 
-5.004 or above.  The current version has not been tested
-extensively on versions of @command{perl} below 5.6, however.
+@command{texi2html} requires @command{perl} version 
+5.00405 or above to be run. An older perl 5 version with 
+@code{File::Spec} is also likely to work.  The current version has 
+been lightly tested on a wide range of perl, but has not been 
+tested extensively on versions of @command{perl} below 5.6.
+To play nice with encodings you 
+also need the @code{Encode} and @code{Unicode::Normalize} modules.
+
+To rebuild the script perl isn't required in most cases. For more
+information about advanced build features, see @ref{Advanced build features}.
+
+@node Configuring and rebuilding
+@section Configuring the source and rebuilding
 
 @command{texi2html} is a standard Automake-based distribution.
 If you have a source version, you should run @command{./configure}
-to regenerate the executable @file{texi2html} file.  @command{./configure}
+to configure the sources and @command{make} to build the script.  
+
+@command{./configure}
 accepts options to select the installation directory for the @file{texi2html}
 file, the default directories @command{texi2html} will use to look for
 configuration files, and other details.  Run @command{./configure --help} for
 more information.
+Running @command{./configure} creates @file{texi2html_configured.pl} from
+@file{texi2html.pl}, and also builds the @command{make} configuration
+files (@file{Makefile}s).
 
-Running @command{./configure} combines four files into the final
+Running @command{make} combines five files into the final
 @file{texi2html} program file:
 @itemize
-@item @file{texi2html.pl} contains the base program,
+@item @file{texi2html_configured.pl} contains the base program,
 @item @file{MySimple.pm} handles the command line options, 
 @item @file{texi2html.init} is the default configuration file, and 
 @item @file{T2h_i18n.pm} is used for internationalization.
@@ -371,9 +398,11 @@
 documents.
 @end itemize
 
-Running @command{./configure} also builds the @command{make} configuration
-files (@file{Makefile}s).  To make the documentation run @command{make}.
+Running @command{make} also rebuilds the documentation if needed.
  
+@node Installing
+@section Installing
+
 @command{make install} performs the installation to the locations specified to
 the @command{./configure} script.  This usually involves placing the actual
 @file{texi2html} file someplace in your path, such as @file{/usr/local/bin} or
@@ -389,6 +418,55 @@
 internationalization are also searched for in the @file{i18n} directory
 of this directory. @xref{Using init files} for more. 
 
+@node Advanced build features
+@section Advanced build features
+
+This section documents features that are unlikely to be used but deserve
+a bit of documentation. 
+
+A @command{./configure} switch, 
+@longopt{with-unicode} allows to choose whether the unicode code should
+be used or not. The default is to detect it with a test. This
+code requires @code{Encode} and @code{Unicode::Normalize} modules.
+
+A similar @command{./configure} switch, 
+@longopt{with-unidecode} allows to choose whether the perl module
+@code{Text::Unidecode} should be used or not. The default is to detect it 
+with a test. This code requires the @code{Text::Unidecode} module.
+
+@command{perl} isn't 
+needed to build the script. the script is build by @file{./configure} 
+and a shell script launched by @command{make} which is a simple 
+wrapper around a @command{sed} one-liner. The @command{perl} command
+can be specified with the environment variable @code{$PERL}, otherwise
+it is detected. @command{perl} is required to rebuild the documentation
+as the @acronym{HTML} documentation is rebuild with @command{texi2html}
+itself.
+
+The translations are managed by a script @command{manage_i18n.pl}, created
+by @command{./configure}. @command{manage_i18n.pl} requires 
+@code{Data::Dumper} to function normally. If this module isn't there 
+@command{./configure} detects it and @command{manage_i18n.pl} doesn't
+really rebuild the translations, but only copy files. It is possible
+to use the @command{./configure} switch @longopt{enable-translations}
+to override the @command{./configure} detection. For more about 
+translations, see @ref{Internationalization}.
+
+It is possible to build from outside of the source directory, for example
+the following should work:
+
+@example
+tar xzvf texi2html-@value{VERSION}.tar.gz
+mkdir texi2html_build
+cd texi2html_build
+../texi2html-@value{VERSION}/configure && make
+@end example
+
+All these features enables to build @command{texi2html} on a platform 
+in order to run it on another platform, a kind of cross-building. The 
+@command{./configure} switches and @code{$PERL} allows to specify 
+everything needed for the build of the @command{texi2html} script.
+
 @c ========================================================
 @node Invoking texi2html
 @chapter Invoking @command{texi2html}
@@ -465,7 +543,7 @@
 
 This default behaviour mimics @command{texi2dvi} behaviour, which ignores 
 @code{@@node} commands for the purprose of sectioning, while the second
-looks like @command{makeinfo} behaviour (@pxref{Two Paths,,, texinfo}). 
+looks like @command{makeinfo} behaviour (@pxref{Two Paths,,,texinfo,GNU Texinfo}). 
 
 As an illustration, the following table shows how a sample Texinfo document is
 divided into sectioning elements when @longopt{use-nodes} is used and not:
@@ -560,11 +638,12 @@
 manual name. The file name is constructed using the manual name as basename.
 An underscore followed by a number is appended
 to the basename for each files corresponding with sectioning elements, with the
-exception of the top element. For the top element there nothing appended.
+exception of the top element. For the top element there is nothing appended.
 The files containing special elements pages
 have an underscore and a 3 letter code corresponding to their content
 (@samp{toc} for table of contents, @samp{abt} for about, @samp{ovr} for
-overview) appended.  Lastly, an @samp{.html} file extension is appended.
+overview, @samp{fot} for footnotes if they are separated) appended.  
+Lastly, an @samp{.html} file extension is appended.
 
 Thus, if the texinfo file @file{afile.texi} is processed and split at chapters
 into 3 files, the generated files (in directory @file{afile}) will be:
@@ -691,6 +770,8 @@
 @node Style options
 @section Customizing the @acronym{HTML} and text style
 
+@cindex @acronym{CSS}
+
 Miscalleneous style changes may be achieved with command line options. 
 
 @table @asis
@@ -721,7 +802,7 @@
 @variable{@@CSS_FILES}). 
 
 The option use is the same than for @command{makeinfo} and is described
-extensively in @ref{HTML CSS,,,texinfo}.
+extensively in @ref{HTML CSS,,,texinfo,GNU Texinfo}.
 Briefly, the @acronym{CSS} @code{@@import} lines from the external file
 @acronym{CSS} file are pasted  before the
 @c What does this mean?  I don't think I clarified this one much.  -DRP
@@ -820,6 +901,11 @@
 @command{texi2html} read this initialization file by one of
 the means described above.
 
+Some init files are provided with @command{texi2html}, for example
+@file{book.init} which produces an output more in line with 
+what could be in a book, or @file{chm.init} outputs files
+that can be used to produce a CHM file.
+
 @c ========================================================
 @node Initialization files
 @chapter Overview of initialization files content and loading
@@ -852,6 +938,7 @@
 of the main program are still in the @code{main} namespace.
 
 @menu
+* Encodings::                 Setting the encodings.
 * Redefining functions::      Function redefinition is achieved with 
                               redefinition of references on functions.
 * Function prototypes::       Conventions used in that manual for function 
@@ -859,6 +946,38 @@
 @end menu
 
 @c --------------------------------------------------------
+@node Encodings
+@section Setting the encodings
+
+There are four encodings relevant for @command{texi2html}, they are
+associated with corresponding variables:
+@enumerate 
+@item The encoding appearing in @code{@@documentencoding}. The associated 
+value overrides the @variable{$DOCUMENT_ENCODING} variable value.
+@item The texinfo files encoding, associated with the variable
+@variable{$IN_ENCODING}. This variable is overriden when 
+@code{$DOCUMENT_ENCODING} is set, if the encoding is supported by perl.
+@item The out files encoding, associated with the variable
+@variable{$OUT_ENCODING}. If not defined, the value of
+@code{$ENCODING_NAME} 
+or 
+@code{$IN_ENCODING}
+is used if one of these variables is set.
+@item The encoding advertized in out files, associated with the variable
+@variable{$ENCODING_NAME}. If unset the value of this variable is based on the
+other ENCODING variables, and if they are all undefined, the variable
+@variable{$DEFAULT_ENCODING} is used.
+@end enumerate
+
+The values for the encoding related variables are set in the default 
+@code{init_out} function reference (@pxref{Output initialization}).
+
+In general the @code{$DOCUMENT_ENCODING} and @code{$IN_ENCODING} are
+set to the right values, and to force a given encoding for the output, the
+@code{$ENCODING_NAME} value may be set. The current default output encoding
+is UTF-8.
+
+@c --------------------------------------------------------
 @node Redefining functions
 @section Redefining functions in initialization files
 
@@ -983,13 +1102,16 @@
 @end enumerate
 
 The @emph{About page} shouldn't be present for documents consisting
-in only one sectioning element. The @emph{Footnote page} should only
+in only one sectioning element, or for documents unsplit and without
+navigation information. The @emph{Footnote page} should only
 be present if the footnotes appear on a separated page 
 (@pxref{Page layout options}), however a footnote element is present if
 the document isn't split. The @emph{Table of contents} should only
 be formatted if @code{@@contents} is present in the document.
 Similarly the @emph{Overview} should only appear if @code{@@shortcontents}
-or @code{@@summarycontents} is present.
+or @code{@@summarycontents} is present. The Table of contents and 
+the Overview may also be directly included within the document, not
+as separate pages (@pxref{Contents and Overview text}).
 @end table
 
 @c --------------------------------------------------------
@@ -1193,7 +1315,11 @@
 the value associated with the element label in the @variable{%ACTIVE_ICONS}
 hash if the the link really leads to an element, or in the @variable{%PASSIVE_ICONS}
 hash if there is no element to link to. Of course if there is a link to the 
-element the icon links to that element.
+element the icon links to that element. The button name and 
+the button description are used in HTML attributes to have a textual 
+description of the icon. The corresponding strings are in 
+@variable{%BUTTONS_NAME}  for the button name and  @code{%NAVIGATION_TEXT}
+for the description.
 @end table
 
 @c -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
@@ -1283,19 +1409,65 @@
 Authors of @command{texi2html}.
 @item file_base_name
 base name of the texinfo manual file.
+@item filename
+This is a reference on a hash that holds the filenames for special elements.
+These files may not be used in certain cases, for example the @code{toc}
+element file name may not be relevant if table of contents is not output 
+separately.
+The keys are
+@table @code
+@item doc
+the document file if not split, if split should be the top element file. 
+@item top
+Top element file name.
+@item toc 
+Table of contents element file name.
+@item stoc
+Overview (also called short table of contents) element file name.
+@item about
+About element file name.
+@item foot
+Footnotes element file name.
+@end table
 @item destination_directory
 Destination directory for the resulting files.
+@item extension
+Extension for the output files.
 @item toc_file
-The file name of the table of contents.
+The file name of the table of contents, should always be valid, even 
+when table of contents are output directly in the document.
+@item inline_contents
+A reference on a hash containing two key, one for each type of table
+of contents:
+@table @code
+@item contents
+The associated value is a 
+reference on an array containg the line resulting from formatting
+the table of contents, including a heading and a reference.
+@item shortcontents
+The associated value is a 
+reference on an array containg the line resulting from formatting
+the short table of contents, including a heading and a reference.
+@end table
 @item today
-The date.
+The date. May be overriden by @code{$DATE}.
+@item user
+The user running @command{texi2html}. Maybe overriden by @code{$USER}.
+@item css_import_lines
+reference on an array containing the @code{@@import} lines of 
+@acronym{CSS} files.
+@item css_lines
+reference on an array containing the normal lines of 
+@acronym{CSS} files.
 @end table
 
 It also holds the arg of the following commands, associated with the command 
 name: kbdinputstyle, paragraphindent, setchapternewpage, headings,
 footnotestyle,
  exampleindent, firstparagraphindent, everyheading, everyfooting,
- evenheading, evenfooting, oddheading, oddfooting.
+ evenheading, evenfooting, oddheading, oddfooting, setcontentsaftertitlepage,
+setshortcontentsaftertitlepage, frenchspacing.
+If the command doesn't have any arg, it will be true is it was set.
 
 
 @subsubheading Flags
@@ -1324,6 +1496,9 @@
 Lines of short table of contents. @xref{Special pages}.
 @item $Texi2HTML::TOC_LINES
 Lines of table of contents. @xref{Special pages}.
+@item $Texi2HTML::TITLEPAGE
+The title page formatted with special title commands (@code{@@author},
+@code{@@title}) expanded. @xref{Title page}.
 @end vtable
 
 @c -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
@@ -1354,15 +1529,20 @@
 The following function reference may be redefined to be called after 
 texinfo processing and before document generation:
 
-@deftypefn {Function Reference} $encoding init_out
+@deffn {Function Reference} init_out
 This function perform the initialization of variables and any other
-task before document outputting. It returns the encoding used for the
-output files.
-@end deftypefn
+task before document outputting. 
+@c It returns the encoding used for the
+@c output files.
+@end deffn
 
 In the default case the @variable{$BODYTEXT} (@pxref{Customizing header}) 
-and the hashes @variable{%NAVIGATION_TEXT} (@pxref{Button specifications}) and  
+and the hashes @variable{%NAVIGATION_TEXT},
+@variable{%BUTTONS_NAME}  (@pxref{Button specifications}),   
 @variable{%BUTTONS_GOTO} (@pxref{About text}) are initialized.
+Indeed the initialization of these variables is dependent upon 
+the document language selection. Similarly the encoding variables are set
+based on the information now available (@pxref{Encodings}).
 
 To perform the default initializations and also add more code, you could
 do as in the following example (save the default function reference and call 
@@ -1373,9 +1553,8 @@
 $init_out = \&makeinfo_like_init_out;
 sub makeinfo_like_init_out() 
 @{
-   my $encoding = &$default_init_out();
+   &$default_init_out();
    $NAVIGATION_TEXT@{'Following'@} = ' &gt; ';
-   return $encoding;
 @}
 @end example
 
@@ -1397,6 +1576,8 @@
 @node css
 @section Customizing the @command{texi2html} css lines
 
+@cindex @acronym{CSS}
+
 It is possible to modify the @command{texi2html} css lines by modifying
 the entries or adding to the @variable{%css_map} hash. Each key is a css
 selector, the corresponding value is a style string.
@@ -1410,6 +1591,19 @@
 $CSS_LINES = '';
 @end example
 
+Another possiblility is to modify the array corresponding with the array 
+reference @code{$Texi2HTML::THISDOC@{'css_import_lines'@}} that contains the
+@code{@@import} lines of @acronym{CSS} files, and similarly it is possible
+to modify the array corresponding with the array 
+reference @code{$Texi2HTML::THISDOC@{'css_lines'@}}  that contains 
+the normal @acronym{CSS} files lines (for details on what corresponds with
+those different lines, see @ref{HTML CSS,,,texinfo,GNU Texinfo}).
+The right place to modify these arrays is in a function appearing in 
+the @code{@@command_handler_process} array 
+(@pxref{Bypassing normal formatting}). Later, the @acronym{CSS} lines
+are allready expanded, by the function reference below. 
+
+
 It is also possible to change completely the way @variable{$CSS_LINES} are
 generated by redefining the following function reference:
 
@@ -1432,11 +1626,13 @@
 element with the variable @variable{$AFTER_BODY_OPEN}.
 These variables are empty by default.
 
-The encoding of the texinfo file is defined by @variable{$DOCUMENT_ENCODING} 
-if no @code{@@documentencoding} appears in the document. 
-The default is a @samp{en-ascii} encoding.
-The encoding of the resulting document is defined by
-@variable{$ENCODING}. The default is the @code{$DOCUMENT_ENCODING}.
+The HTML encoding of the resulting document is defined by
+@variable{$ENCODING_NAME}. If the variable isn't defined,
+the @code{@@documentencoding} value is used, or the 
+@variable{$OUT_ENCODING} value, if set. @code{$ENCODING_NAME} may
+influence the value of @code{$OUT_ENCODING}, which corresponds with
+the encoding used when writing to the resulting files.
+@xref{Encodings}.
 
 The description of the document may be specified in 
 @variable{$DOCUMENT_DESCRIPTION}. If this variable is undef, the text 
@@ -1526,6 +1722,10 @@
 @end deftypefn
 @end ignore
 
+A user name and  a date are collected to be output in the footer.
+You can change them by defining @variable{$USER} and @variable{$DATE}
+in the initialization file.
+
 The default functions call the function associated with 
 @variable{$print_foot_navigation} to format the navigation panel for the 
 page footer. Thus you can control parts of the formatting by
@@ -1585,6 +1785,7 @@
 * Contents and Overview text::
 * Footnotes text::
 * About text::
+* Title page::
 @end menu
 
 @c -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
@@ -1618,6 +1819,22 @@
 @c -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 @node Contents and Overview text
 @subsubsection Table of contents and Short table of contents
+
+Two possibilities exist for the formatting of table of contents (and 
+short table of contents). In the default case, the table of contents 
+are in separate elements, at the end of the document if the document 
+is unsplit or in separate files. This is consistent with @command{makeinfo}
+where menus are used for navigation. Another mode may be selected by
+setting @variable{$INLINE_CONTENTS}. In that case the table of contents
+are not output as separate elements but 
+are instead output where the corresponding @@-command, 
+for example @code{@@contents},
+is set. This behaviour is more consistent with @command{texi2dvi}. 
+If @code{@@setcontentsaftertitlepage} appears in the document,
+and even if @code{$INLINE_CONTENTS} is set, the table of contents are 
+merged in the title (which isn't output in the default case, see 
+@ref{Title page}).
+
 Several variables may be used to control the formatting of table of contents 
 and short table of contents:
 
@@ -1683,6 +1900,29 @@
 
 @end deffn
 
+Another function reference is used to add a heading and a reference, to
+be used with @code{$INLINE_CONTENTS} or merged in the title. Its output
+is not used when the table of contents are separate elements.
+
+@deftypefn {Function Reference} \@@inline_contents_lines inline_contents $filehandle $command $element
+This function reference returns a reference on an array holding 
+the lines containing the contents, heading and reference.
+@var{$filehandle} is a reference on the currently opened file if
+the function is called because a @code{@@contents} or
+@code{@@shortcontents} command was encountered, it is undef otherwise.
+@var{$command} is either @samp{contents} or  @samp{shortcontents}.
+@var{$element} is a hash reference containing informations about the
+table of contents context. Relevant keys are:
+@table @code
+@item id
+The identifier associated with the table of contents, used for example
+to do references to the table of contents using href in @acronym{HTML}.
+@item file
+The file name containing the table of contents.
+@end table
+
+@end deftypefn
+
 @c -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 @node Footnotes text
 @subsubsection Formatting of footnotes text
@@ -1733,6 +1973,30 @@
 @end deftypefn
 
 @c -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+@node Title page
+@subsubsection Formatting of title page
+
+The title page is first formatted using the text appearing in 
+the @code{@@titlepage} section, and put in @variable{$Texi2HTML::TITLEPAGE}.
+The information appearing in @code{@@title}, @code{@@subtitle} or 
+@code{@@author} is then added using the following
+function reference:
+
+@deffn {Function Reference} titlepage 
+This function should complete @code{$Texi2HTML::TITLEPAGE}.
+@end deffn
+
+In the default case, in this function the table of contents and short
+table of contents are also added if they are to be output and 
+@code{@@setcontentsaftertitlepage}
+or @code{@@setshortcontentsaftertitlepage} appear in the document
+(@pxref{Contents and Overview text}).
+
+In the default case the resulting title page output is not used in 
+the document, except if the top node is not associated with any 
+content.
+
+@c -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 @node Special pages layout
 @subsection Customizing the layout of the special pages
 
@@ -1773,10 +2037,9 @@
 value.
 Two function references enable 
 further customization. One is usefull in case @variable{$NODE_FILES} is true
-and it is used to customize the node file name itself and is also used 
-to produce a file name with a redirection leading to the node file.
+and it is used to customize the node file name. 
 
-@deftypefn {Function Reference} {($node_file $redirection_node_file)} node_file_name $node
+@deftypefn {Function Reference} $node_file node_file_name $node
 @var{$node} is a hash reference with the following interesting keys (there
 are much more keys):
 @table @code
@@ -1785,14 +2048,16 @@
 @item with_section
 True if associated with a section.
 @end table
-The result is the node file name @var{$node_file}, and the file containing
-a redirection to the node @var{$redirection_node_file}.
+The result is the node file name @var{$node_file}.
 @end deftypefn
 
-The other is usefull if @code{$NODE_FILES} isn't true. It is used to 
-customize the file associated with each element.
-@deftypefn {Function Reference} $file element_file_name $element $is_top $docu_name
-@var{$element} is a hash reference with the following interesting keys (there
+The other is used to
+customize the file names associated with each element, and the 
+name of the file associated with the special elements.
+@deftypefn {Function Reference} $file element_file_name $element $type $docu_name
+@var{$element} is undefined for the special elements (about, overview, 
+table of contents, footnotes).
+Otherwise it is a hash reference with the following interesting keys (there
 are much more keys):
 @table @code
 @item texi
@@ -1807,9 +2072,12 @@
 @item name
 The element text without section number.
 @end table
-@var{$is_top} is true if the element is considered as the top element.
+@var{$type} is empty for normal elements. 
+For the top element it is @samp{top}, for the table of contents it 
+is @samp{toc}, for the overview it is @samp{stoc}, for the
+footnotes it is @samp{foot} and for about is @samp{about}.
 @var{$docu_name} is the basename of the texinfo manual.
-The result is the element file name.
+The result is the element or special element file name.
 @end deftypefn
 
 @c --------------------------------------------------------
@@ -1822,7 +2090,7 @@
 @variable{$IDX_SUMMARY} true. After that some function reference will be called
 for each non empty index. For each index there are 3 function 
 references, one called for initialization, one called for each index entry
-and the last one called for finalazation.
+and the last one called for finalization.
 
 @deffn {Function Reference} index_summary_file_begin $index_name $is_printed
 @var{$index_name} is the two letters name for the index. 
@@ -1891,6 +2159,7 @@
 * Indices::
 * Floats and lists of floats::   @code{@@float} and @code{@@listoffloats}
 * Footnotes::
+* Bypassing normal formatting:: 
 * Other and unknown commands::   You can handle specifically other commands
 
 @end menu
@@ -2071,9 +2340,9 @@
 The @@-command name
 @item $args
 A reference on an array containing the arguments of the @@-command.
-@item $style_stack
+@item $command_stack
 A reference on an array containing the name of the @@-commands containing 
-the @@-command being formatted.
+the @@-command being formatted, latest on top.
 @item $state
 A reference on a hash containing a lot of informations about the context
 of the @@-command.
@@ -2151,7 +2420,7 @@
 If you don't like this scheme, it is possible to change how those commands
 are processed by redefining the following function reference:
 
-@deftypefn {Function Reference} $resulting_text style $style $command $text $args $no_close $no_open $line_nr $state $style_stack
+@deftypefn {Function Reference} $resulting_text style $style $command $text $args $no_close $no_open $line_nr $state $command_stack
 @var{$command} is the @@-command, @var{$style} is the value associated with 
 the @var{$command} in the @code{%style_map}, @code{%style_map_pre} 
 or @code{%style_map_texi} hashes.
@@ -2171,7 +2440,7 @@
 @var{$state}
 is a reference on a hash containing a lot of informations about the context
 of the @@-command.
-@var{$style_stack}
+@var{$command_stack}
 is a reference on an array containing the name of the @@-commands containing 
 the @@-command being formatted.
 
@@ -2202,13 +2471,32 @@
 @acronym{HTML} element. 
 @end deftypefn
 
-The formatting of @code{@@image} is controlled by:
-@deftypefn {Function Reference} $image image $file_path $basename $preformatted $file_name
-@var{$file_path} is the image file name with the path, @var{$basename} is the 
-alternate text or the file name without extension if no alternate text is 
-given. @var{$preformatted} is true if the image 
+To customize the images produced by @code{@@image}, the first possibility 
+is to modify the @variable{@@IMAGE_EXTENSIONS}, which holds a list of 
+filename extensions for image files. It is also possible to redefine
+the function used to determine the filename of the image:
+
+@deftypefn {Function Reference} $filename image_files $basename $extension
+@var{$basename} is the first @code{@@image} argument, @var{$extension}
+is the corresponding @code{@@image} argument. This function reference 
+should return an array of image filenames without path that the main 
+program should look for.
+@end deftypefn
+
+Last, it is possible to control 
+the formatting of @code{@@image} by redefining:
+@deftypefn {Function Reference} $image image $file_path $basename $preformatted $file_name $alt_text $width $height $raw_alt $extension $working_dir $file_path
+@var{$file_path} is the image file name with the path, @var{$basename}  
+the file name without extension. @var{$preformatted} is true if the image 
 appears in preformatted text. @var{$file_name} is the file name without path 
-but with extension.
+but with extension. @var{$alt_text} is the alternate text, it may be 
+undefined. @var{$width} and @var{$height} are the corresponding arguments 
+of @code{@@image}, @var{$raw_alt} is the unmodified alt argument of 
+@code{@@image} and @var{$extension} holds the corresponding 
+@code{@@image} argument.
+@var{$working_dir} is the path to working dir relative to the output
+directory. @var{$file_path} is the file name relative to the 
+@var{$working_dir}.
 @end deftypefn
 
 The formatting of @code{@@sp} is controlled by:
@@ -2225,13 +2513,13 @@
 The other arguments are related with
 the explanation, the second arg of the acronym. @var{$with_explanation} is 
 true if the second argument of the acronym command is present. If an
-explanation exists, coming from previous @code{@@acronym} or as an arg of this
-command, the other args are defined: @var{\@@explanation_lines} is a 
-reference on an array containing the unformatted explanation lines, 
+explanation exists, coming from previous @code{@@acronym} or as an arg of 
+this command, the other args are defined: @var{\@@explanation_lines} is a 
+reference on an array containing the simply fomatted explanation lines, 
 @var{$explanation_text} is the explanation text formatted,
-@var{$explanation_simply_formatted} is the explanation with a light formatting,
-unabling in @acronym{HTML} (or @acronym{XML}) the explanation to be in an 
-attribute.
+@var{$explanation_simply_formatted} is the explanation with a light 
+formatting, unabling in @acronym{HTML} (or @acronym{XML}) the explanation 
+to be in an attribute.
 @end deftypefn
 
 @c --------------------------------------------------------
@@ -2241,17 +2529,33 @@
 Some characters are processed especially in text: @samp{---}, @samp{--},
 @samp{``} and @samp{''}. This is done only if in normal text and not in 
 some commands (@code{@@code}, @code{@@env}@dots{}). A function reference
-is called to process those characters in text
-
-@deftypefn {Function Reference} $processed_text normal_text $text
-The function processes @samp{---}, @samp{--}, @samp{``} and @samp{''}
-in @var{$text} and returns @var{$processed_text}. The default is to
-change @samp{---} to @samp{--}, @samp{--} to @samp{-}, and @samp{``} and
-@samp{''} to @samp{"}.
-@end deftypefn
-
-Some characters are special in @acronym{HTML} (@samp{&}, @samp{"}, 
-@samp{<} and @samp{>}) and should be protected.
+is called to process the text and should take care of those constructs.
+It may also be used to transform the text, for example set it in upper
+case if it is in @code{@@sc}. This function should also take care
+of protecting special characters
+
+
+@deftypefn {Function Reference} $processed_text normal_text $text $in_raw_text $in_preformatted $in_code $command_stack 
+The function processes @var{$text} and returns @var{$processed_text}. 
+The other arguments give some information about the context of the text.
+@var{$in_raw_text} is true if the text appears in special place where
+there is no formatting, typically in comments. @var{$in_preformatted}
+is true if in a preformatted environemnt, and @var{$in_code} is true
+if in a special command like @code{@@code}, @code{@@env} where
+@samp{---}, @samp{--}, @samp{``} and @samp{''} should not be
+touched. @var{$command_stack} is an array containing the name of the 
+formatting @@-command that enclose the text.  
+
+In the default case the @samp{---}, @samp{--}, @samp{``} and @samp{''}
+constructs are expanded if needed and the text is upper-cased if in 
+@code{@@sc}. Special characters (@samp{&}, @samp{"},
+@samp{<} and @samp{>} in @acronym{HTML}) are protected if needed. 
+@end deftypefn
+
+Some characters are special, for example we have  @samp{&}, @samp{"}, 
+@samp{<} and @samp{>} in @acronym{HTML}. In some cases some
+pieces of text don't go through the above function, but still 
+needs to be protected to appear in text.
 This is done by the function associated with the function reference
 
 @deftypefn {Function Reference} $protected_text protect_text $text
@@ -2262,9 +2566,12 @@
 Empty lines are processed by the following function reference, which could
 be usefull if empty lines are to be removed for example
 
-@deftypefn {Function Reference} $resulting_text empty_line $empty_line
+@deftypefn {Function Reference} $resulting_text empty_line $empty_line $state
 This function processes an @var{$empty_line} and returns the resulting
-text @var{$resulting_text}. Empty lines are left as is by default.
+text @var{$resulting_text}. @var{$state} is a structure that holds informations
+about the state of the parsing.
+Empty lines are left as is by default except right after a definition 
+@@-command.
 @end deftypefn
 
 @c --------------------------------------------------------
@@ -2336,13 +2643,13 @@
 node name mapped to an identifier acceptable as a file name. 
 @var{$xml_node_identifier} is the
 node name mapped to an identifier acceptable as an @acronym{XML} identifier.
-Those identifiers are built as explained in @ref{HTML Xref,,,texinfo},
+Those identifiers are built as explained in @ref{HTML Xref,,,texinfo,GNU Texinfo},
 thus allowing for cross references to external manuals. @var{$file} is the
 manual or file name of the external reference. This function should return an
 href leading to the external manual.
 
 The default for this function is to make a reference compatible with 
-@command{makeinfo}  (@pxref{HTML Xref,,,texinfo}).
+@command{makeinfo}  (@pxref{HTML Xref,,,texinfo,GNU Texinfo}).
 @end deftypefn
 
 @deftypefn {Function Reference} $text external_ref $command $section $book $node_and_file $href $cross_ref_name
@@ -2405,7 +2712,7 @@
 
 @c --------------------------------------------------------
 @node Paragraph and preformatted region
-@section Formatting or not a paragraph or a preformatted region
+@section Formatting (or not) a paragraph and a preformatted region
 
 
 @menu
@@ -2422,11 +2729,16 @@
 The formatting of a paragraph region or a preformatted region, is controlled
 by function references:
 
-@deftypefn {Function Reference} $paragraph_text paragraph $text $alignement $formatting_command $formatting_command_formatted \$paragraph_number $format $item_number $enumerate_style $number
+@deftypefn {Function Reference} $paragraph_text paragraph $text $alignement $index $formatting_command $formatting_command_formatted \$paragraph_number $format $item_number $enumerate_style $number $command_stack_at_end $command_stack_at_begin
 This function formats a paragraph. @var{$text} is the text of the paragraph,
 @var{$alignement} is the empty string when no alignement command has
 been seen, otherwise it is the current alignement command name.
 @xref{Alignement commands}.
+@var{$indent} holds @samp{noindent} or @samp{indent} if the corresponding 
+@@-command appeared in the paragraph.
+@var{$command_stack_at_end} and @var{$command_stack_at_begin} are arrays
+containing the opened @@-commands at end and at beginning of the paragraph,
+latest on top.
 
 The remaining arguments are usefull when the paragraph appears within a
 list or table. It is usefull whenever the paragraph has to be formatted
@@ -2449,16 +2761,19 @@
 @var{$number} is the number or letter corresponding with this item. 
 @end deftypefn
 
-@deftypefn {Function Reference} $preformatted_text preformatted $text $style $region_name $formatting_command $formatting_command_formatted \$preformatted_number $format $item_number $enumerate_style $number
+@deftypefn {Function Reference} $preformatted_text preformatted $text $style $region_name $formatting_command $formatting_command_formatted \$preformatted_number $format $item_number $enumerate_style $number $command_stack_at_end $command_stack_at_begin
 This function formats a preformatted region. @var{$text} is the text of the
 preformatted region, @var{$style} is the css style associated with that
-preformatted region (@xref{css}). @var{$region_name} is the 
+preformatted region (@pxref{css}). @var{$region_name} is the 
 name of the command opening        
 the preformatted region (@code{example}@dots{}, see @ref{Complex formats}) 
 or a identifier for the preformatted context (for example 
 @code{menu-comment}, see @ref{Menus}).
 The alignment commands are not taken into account, as the spaces are
 preserved in preformatted regions, you should flush and center by hand.
+@var{$command_stack_at_end} and @var{$command_stack_at_begin} are arrays
+containing the opened @@-commands at end and at beginning of the preformatted
+region, latest on top.
 
 The remaining arguments are usefull when the preformatted region appears 
 within a list or table. It is usefull whenever the preformatted region 
@@ -2509,10 +2824,22 @@
 @code{lisp}, @code{smalllisp}, @code{display}, @code{smalldisplay}, 
 @code{format}, @code{smallformat}).
 
-The associated value is also a reference on a hash. The keys are @code{begin}
-and @code{end}. An eval of @code{begin} should lead to the beginning of the
-formatted @acronym{HTML}, an eval of @code{end} should lead to the end of the 
-formatted @acronym{HTML}. The enclosed text will be formatted as described in
+The associated value is also a reference on a hash. The keys are:
+
+@table @code
+@item begin
+An eval of @code{begin} should lead to the beginning of the
+formatted @acronym{HTML}.
+@item end
+An eval of @code{end} should lead to the end of the 
+formatted @acronym{HTML}.
+@item class
+The @acronym{HTML} class. If not defined, the command name.
+@item pre_style
+The preformatted style. If not defined the corresponding @acronym{CSS} style
+is used.
+@end table 
+The enclosed text will be formatted as described in
 @ref{Paragraph and preformatted region}, and the name of the complex
 format will be available to the function formatting the text.
 
@@ -2596,7 +2923,7 @@
 with the first column, the other for the text appearing on the
 following lines, corresponding with the second column text.
 
-@deftypefn {Function Reference} $table_item table_item $item_text $index_label_text $format $command $formatted_command
+@deftypefn {Function Reference} $table_item table_item $item_text $index_label_text $format $command $formatted_command $command_stack
 This function is used to format the text on the @code{@@item} line.
 @var{$text_item} is the text line. In case there is an index entry 
 associated with the @code{@@item} (as with @code{@@ftable} and 
@@ -2606,6 +2933,8 @@
 @samp{table}, @samp{ftable} or @samp{vtable}. @var{$command} is the formatting command
 given in argument to the table format command, @var{$formatted_command} is 
 this command formatted if it is a leading command, like @code{@@minus}.
+@var{$command_stack} is an array with all the @@-commands opened, latest
+on top.
 @end deftypefn
 
 @deftypefn {Function Reference} $table_line table_line $text
@@ -2743,7 +3072,7 @@
 
 Four functions are used when formatting a definition command:
 
-@table @asis
+@table @strong
 @item category name
 @deftypefn {Function Reference} $category definition_category $category_or_name $class $style
 This function precise a category or an index entry name associating a class 
@@ -2798,6 +3127,16 @@
 @end table
 @end deftypefn
 
+It is also possible to customize the heading text with section number
+with the following function reference (called for headings and nodes):
+@deftypefn {Function Reference} $result_texi heading_texi $heading_command $heading $number
+@var{$heading_command} is the sectioning @@-command of that heading. 
+@var{$heading} is the texinfo for that heading. @var{$number} is the
+heading number classicaly computed with dots between numbers, and
+letters for top level appendix numbering. This function should return the 
+texinfo text corresponding with the numbered heading.
+@end deftypefn
+
 @c --------------------------------------------------------
 @node Special regions
 @section Formatting of special regions (@code{@@verbatim}, @code{@@cartouche}, @code{@@quotation})
@@ -2810,7 +3149,7 @@
 @end deftypefn
 
 If La@TeX{}2HTML is used, @code{@@tex} regions are handled differently,
-from within the main program.
+(@pxref{Bypassing normal formatting}).
 
 The @code{@@cartouche} command formatting is controlled by the
 function reference:
@@ -2823,15 +3162,31 @@
 The first one is usefull in case the @code{@@quotation} has an argument, as
 it allows to prepend a string to the quotation text:
 
+@deftypefn {Function Reference} $prepended_string quotation_prepend_text $text
+@var{$text} is the argument of the quotation with @@-commands not 
+interpreted. This function
+can return a string which will be prepended to the quotation text.
+@end deftypefn
+
+@ignore
 @deftypefn {Function Reference} $prepended_string quotation_prepend_text $style $text
 @var{$style} is the first argument of the @code{@@quotation} if there are
 two arguments. @var{$text} is the second argument or the first if there is
 one argument. There are still @@-commands in these strings. This function
 can return a string which will be prepended to the quotation text.
 @end deftypefn
+@end ignore
 
 The whole quotation is formatted by:
 
+@deftypefn {Function Reference} $quotation quotation $quotation_text $argument_text $argument_text_texi
+@var{$quotation_text} is the quotation text, formatted, with the text 
+prepended by the function above. @var{$argument_text} is the argument 
+of the @code{@@quotation}, formatted. @var{$argument_text_texi} is the argument
+of the @code{@@quotation}, simply formatted.
+@end deftypefn
+
+@ignore
 @deftypefn {Function Reference} $quotation quotation $quotation_text $argument_text $argument_style_texi $argument_style_id
 @var{$quotation_text} is the quotation text, formatted, with the text 
 prepended by the function above. @var{$argument_text} is the second argument 
@@ -2841,20 +3196,36 @@
 @@-commands, and  @var{$argument_style_id} is this argument transformed in 
 an identifier which can be used as an @acronym{XML} identifier.
 @end deftypefn
-
+@end ignore
 
 @c --------------------------------------------------------
 @node Menus
 @section Menu formatting
 
+There are two possibilities for menu formatting:
+
+@itemize @bullet
+@item format the whole menu in a preformatted environment, like 
+in @ref{Complex formats};
+@item format the menu in table with more specialized formatting for each
+part of the menu; 
+@end itemize
+
+The simple formatting is used if @variable{$SIMPLE_MENU} is true, 
+otherwise the format with tables is used (this is the default).
+
 To understand how the formatting of menus is controlled, the different
 parts of a menu are first described, then how to control the formatting
-of each of these parts.
+of each of these parts, for each possible formatting.
 
 @menu
-* Menu parts::                 A menu consists in menu entry and menu 
-                               comments
-* Menu formatting::
+* Menu parts::                  A menu consists in menu entry and menu 
+                                comments
+* Menu components formatting::  
+* Simple menu formatting::      formatting of a whole menu in a simple 
+                                preformatted environement
+* Table menu formatting::       formatting of a whole menu in a
+                                table environment
 @end menu
 
 @c -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
@@ -2864,7 +3235,7 @@
 In @command{texi2html}, a menu is considered to be composed of 2 parts, the
 @dfn{menu entries} and the @dfn{menu comments}. Menu entries are further 
 divided in an @dfn{entry link} and optionnaly an @dfn{entry description}.
-The entry link consists in a node name and an optionnal  menu entry
+The entry link consists in a node name and an optionnal menu entry
 name.
 
 A menu entry begins with @samp{*} at the beginning of the line. It begins
@@ -2878,7 +3249,7 @@
 
 @example
 @@menu
-* node name: entry name.        description begins
+* entry name: node name.        description begins
    description continues
 * another menu entry::
    description begins
@@ -2889,34 +3260,16 @@
 * node::                        description begins
 A menu comment. The line starts at the first character
 
-* last entry::         description begins @emph{text
+* last entry::         description begins @@emph@{text
 of the description, even if the line begins at the first character,
-because we are in @@emph}.
+because we are in @@emph@}.
 @@end menu
 @end example
 
 @c -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-@node Menu formatting
+@node Menu components formatting
 @subsection The formatting of the different menu components
 
-In the default case, the name of the section corresponding with the 
-node is used instead of the node name. If @variable{$NODE_NAME_IN_MENU} is 
-true, however, node names are used. If @variable{$AVOID_MENU_REDUNDANCY}
-is true and menu entry equal menu description the description isn't printed.
-This is the default. Likewise, if node or section name equal entry name, 
-do not print entry name.
-
-A symbol, @variable{$MENU_SYMBOL} is put at the beginning of menu entries
-when the node name is used. The default is @samp{&bull;}.
-If @variable{$UNNUMBERED_SYMBOL_IN_MENU} is true it is 
-also put at the beginning of unnumbered section names. This is not
-done by default.
-
-The menu comments are considered to be preformatted text. The style 
-associated with this preformatted text is determined by 
-@variable{$MENU_PRE_STYLE}. Default is @samp{font-family: serif}.
-The css class associated with menu comments is @code{menu-comments}.
-
 Three function references are associated with the formatting of the 
 different parts of a menu:
 @deftypefn {Function Reference} $link menu_link $section \%state $href $node $name $ending
@@ -2926,27 +3279,22 @@
 of interest is @code{preformatted}, true if the context is a preformatted
 context. @xref{Three contexts}. 
 @var{$node} is the node name, @var{$name} is the
-name of the node, and @var{$ending} is the text ending the link entry.
+name of the node. @var{$ending} is the text ending the link entry, 
+in general @samp{::} followed by some spaces.
 @end deftypefn
 
-@deftypefn {Function Reference} $description menu_description $description_text \%state
+@deftypefn {Function Reference} $description menu_description $description_text \%state $element_text
 @var{$description_text} is the text of the menu description. @var{\%state}
-should be used similarly than for the menu link.
+should be used similarly than for the menu link. @var{$element_text}
+is the heading of the element associated with the node.
 @end deftypefn
 
 @deftypefn {Function Reference} $menu_comment menu_comment $text
-@var{$text} is the text of the menu comment. It is in a preformatted 
+@var{$text} is the text of the menu comment. It is always in a preformatted 
 environment.
 @end deftypefn
 
-The following function reference controls the formatting of a wole menu:
-
-@deftypefn {Function Reference} $menu menu $menu_components_text
-@var{$menu_components_text} is the formatted menu components text, obtained
-as explained above.
-@end deftypefn
-
-The last function reference corresponds with a special case. It
+Another function reference corresponds with a special case. It
 is used when a menu entry appears within another block command, to
 avoid the possibilities of invalid @acronym{HTML} production.
 In that case the menu description and menu comments are not formatted 
@@ -2958,6 +3306,51 @@
 name of the node, and @var{$ending} is the text ending the link entry.
 @end deftypefn
 
+@c -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+@node Simple menu formatting
+@subsection  Simple menu formatting in a preformatted environment
+
+If the menu is to be formatted in a single preformatted environment,
+an entry for @samp{menu} should be added to the @code{$complex_format_map}
+hash reference (@pxref{Complex formats}).
+In the default case, if the user didn't add an entry himself, a very simple 
+entry is used, with:
+
+@example
+$complex_format_map->@{'menu'@} = @{ 'begin' => q@{''@} , 'end' => q@{''@},
+    'pre_style' => "$MENU_PRE_STYLE", 'class' => 'menu-preformatted' @};
+@end example
+
+@c -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+@node Table menu formatting
+@subsection The formatting of the menu in a table
+
+In the default case, the name of the section corresponding with the 
+node is used instead of the node name. If @variable{$NODE_NAME_IN_MENU} is 
+true, however, node names are used. If @variable{$AVOID_MENU_REDUNDANCY}
+is true and menu entry equal menu description the description isn't printed.
+This is the default. Likewise, if node or section name equal entry name, 
+do not print entry name.
+
+A symbol, @variable{$MENU_SYMBOL} is put at the beginning of menu entries
+when the node name is used. The default is @samp{&bull;}.
+If @variable{$UNNUMBERED_SYMBOL_IN_MENU} is true it is 
+also put at the beginning of unnumbered section names. This is not
+done by default.
+
+The menu comments are considered to be preformatted text. The style 
+associated with this preformatted text is determined by 
+@variable{$MENU_PRE_STYLE}. Default is @samp{font-family: serif}.
+The css class associated with menu comments is @code{menu-comments}.
+
+The following function reference controls the formatting of a wole menu
+in that case:
+
+@deftypefn {Function Reference} $menu menu $menu_components_text
+@var{$menu_components_text} is the formatted menu components text, obtained
+as explained above.
+@end deftypefn
+
 @c --------------------------------------------------------
 @node Indices
 @section Indices formatting
@@ -3065,7 +3458,7 @@
 @item caption_texi
 @itemx shortcaption_texi
 A reference on an array containing the caption or shortcaption lines,
-unformatted.
+with texi @@-commands.
 @item style_texi
 The style with texi @@-commands.
 @item style_id
@@ -3218,9 +3611,108 @@
 
 @c --------------------------------------------------------
 
+@node Bypassing normal formatting
+@section Bypassing normal formatting
+
+It is possible to bypass completely the normal formatting of @@-commands 
+with braces and raw regions 
+(@code{@@html}, @code{@@tex}, @code{@@xml}@dots{} regions). 
+In that case the @@-commands and the text within 
+are passed to a user defined function early, in a pass when no expansion
+of output takes place, called the collecting pass. Another user defined 
+function is called during the output expansion phase.
+
+Moreover, arbitrary user defined functions may be called between the 
+different texinfo parsing and outputting passes. This could be used, for
+example to initialize some things before collecting the @@-commands and their
+text, expanding them between the collecting and expansion phase and doing
+some cleaning after the expansion pass. These possibilities are used for
+the interface to La@TeX{}2HTML 
+(@pxref{Expanding TeX regions}), and the examples are taken from that use.  
+
+The @@-commands that are keys of the @variable{%command_handler} hash 
+are collected in the collecting pass and expanded in the expansion
+pass using user defined functions. The associated value is a reference on
+a hash used to specify the user defined function references. 
+The key of the hash reference are @code{'init'} for the function
+reference called during the collecting pass, and @code{'expand'}
+during the expansion pass. Here is an example for an @@-command with
+braces:
+
+@example
+$command_handler@{'math'@} =
+     @{ 'init' => \&Texi2HTML::LaTeX2HTML::to_latex,
+       'expand' => \&Texi2HTML::LaTeX2HTML::do_tex
+     @};
+@end example
+
+And an example for a raw region @@-command:
+
+@example
+$command_handler@{'tex'@} =
+     @{ 'init' => \&Texi2HTML::LaTeX2HTML::to_latex,
+       'expand' => \&Texi2HTML::LaTeX2HTML::do_tex
+     @};
+@end example
+
+The function references are called like:
+
+@deftypefn {Function Reference} $status $command_handler@{'$command'@}->@{'init'@} $command $text $count
+@var{$command} is the @@-command name, @var{$text} is the text appearing 
+within the @@-command. @var{$count} is a counter counting how many times
+this @@-command appeared. @var{$status} is a boolean which should be true if 
+the collecting was succesfull. If false the @@-command and the text is 
+discarded.
+@end deftypefn
+
+@deftypefn {Function Reference} $result $command_handler@{'$command'@}->@{'expand'@} $command $count $state $text
+@var{$command} is the @@-command name, @var{$count} is a counter counting 
+how many times this @@-command appeared. @var{$state} is a reference on a 
+hash containing many informations about the context. @var{$text} should be
+empty. @var{$result} is the expanded resulting text.
+@end deftypefn
+
+There are three places for user defined functions, associated with arrays:
+@vtable @code
+@item @@command_handler_init
+The function references in that array are called before the collecting pass.
+At that time the information available is essentially the file names.
+@item @@command_handler_process 
+The function references in that array are called between the collecting
+pass and the expansion pass. At that time all the special @@-commands  
+have been collected as explained above but no output has been produced.
+@item @@command_handler_finish
+he function references in that array are called after the end of the
+output generation.
+@end vtable 
+
+Here is an example of these arrays use:
+
+@example
+push @@command_handler_init, \&Texi2HTML::LaTeX2HTML::init;
+push @@command_handler_process, \&Texi2HTML::LaTeX2HTML::latex2html;
+push @@command_handler_finish, \&Texi2HTML::LaTeX2HTML::finish;
+@end example
+
+@c --------------------------------------------------------
+
 @node Other and unknown commands
 @section Customizing other commands, and unknown commands 
 
+@ignore
+# The command_handler arrays are for commands formatted externally.
+# The function references in @command_handler_init are called
+# before the second pass, before the @-commands text collection.
+# Those in @command_handler_process are called between the second pass
+# and the third pass, after collection of @-commands text and before their
+# expansion.
+# Those in @command_handler_process are called after the third pass,
+# after the document generation.
+@command_handler_init = ();
+@command_handler_process = ();
+@command_handler_finish = ();
+@end ignore
+
 @c --------------------------------------------------------
 @c @node Skipped commands
 @c @section Customizing ignored commands and text
@@ -3349,6 +3841,15 @@
 @vindex $LANGUAGES
 @vindex $T2H_OBSOLETE_STRINGS
 
+
+@menu
+* Supported language::
+* New language::
+@end menu
+
+@node Supported language
+@appendixsubsec Contributing to existing translations
+
 If the language is allready supported, then there will be a file 
 in the @file{i18n} directory with name the two-letter 
 ISO-639 language code. In that case you can enhance the translations by 
@@ -3359,10 +3860,13 @@
 it means that the string will be expanded by @command{texi2html}. For
 an example, see @ref{Strings}.
 
-After that you should run the command @command{./manage_i18n.pl all} in
+After that you should run the command @command{./manage_i18n.pl merge} in
 the top directory, it should merge your file with the existing files in
 @file{translations.pl}, which is incorporated to the @file{texi2html} script
-by @command{./configure}.
+by @command{make}.
+
+@node New language
+@appendixsubsec Contributing translations to another language
 
 If the language isn't currently supported, copy the @file{en} file in 
 @file{i18n} to a file with name the two-letter ISO-639 
@@ -3371,8 +3875,9 @@
 two-letter language code in the @file{manage_i18n.pl} file in the
 @code{@@known_languages} array. 
 
-After that you should similarly run the command 
-@command{./manage_i18n.pl all} in
+After that you should run the command 
+@command{./manage_i18n.pl update @var{lang}} and 
+@command{./manage_i18n.pl merge} in
 the top directory.
 
 Obsoleted strings are not removed from the files, they are still present
@@ -3400,15 +3905,239 @@
 Here is an example:
 
 @example
-return &$I('%@{name@} of %@{class@}', @{ 'name' => $name, 'class' => $class @});
+return &$I('%@{name@} of %@{class@}', 
+       @{ 'name' => $name, 'class' => $class @});
 @end example
 
 In that case @code{%@{name@}} is substituted by @code{$name} in the translated
 string.
 
-After that you should run the command @command{./manage_i18n.pl all} in the top
-directory, it should add your new strings to all the files in the @file{i18n}
-directory. 
+After that you should run the command @command{./manage_i18n.pl} in the top
+directory, to add your new strings to the template file, that is the 
+file for english and to all the files in the @file{i18n}
+directory. This is achieved with
+
+@example
+./manage_i18n.pl template
+./manage_i18n.pl update
+@end example
+
+These two commands won't work if you don't have the 
+@code{Data::Dumper} module installed.
+And to merge the new translation files in @file{translations.pl}, do
+
+@example
+./manage_i18n.pl merge
+@end example
+
+All these steps may be performed by @command{make}, once the language file
+is added to @file{Makefile.am} in the @code{i18n_files} variable.
+
+@c --------------------------------------------------------
+@node Incompatibilities
+@chapter Incompatibilities with previous versions
+
+@command{texi2html} has accumulated a lot of incompatibilities with previous
+versions. They are documented in the @file{NEWS} file, we discuss them
+here nevertheless. most of the incompatibilities were introduced in 
+version 1.68.
+
+@itemize @bullet
+@item When the manual is split the default is to put resulting files in 
+a directory with name the manual file basename (previously they were left in
+ the current directory). To avoid that, call texi2html with 
+@option{-output .}. This has been changed to be compatible with 
+@command{makeinfo} and also because it fits better with the cross
+manuals reference scheme.
+@item The option @option{--output} signification changed. It now
+has the same meaning than for @command{makeinfo}. It seems
+that in 1.66 it was the same than @option{-out-file}. 
+@option{--output} new meaning allows to replace @option{-out-file} and 
+@option{-subdir} with a unique option. 
+
+More precisely @option{-out-file} forces the output to be unsplit 
+while @option{--output} behaves differently when split (it specifies
+the directory
+where the manual files should be outputted) and unsplit (it specifies
+the output file). @option{-subdir} is retained for backward compatibility.
+
+If you want a backward compatibility you can use @option{-subdir} 
+for the output directory if the document is split, and @option{-out-file}
+if the document isn't split. This hasn't been tested extensively though.
+@item Many options has been obsoleted but they are retained for
+backward compatibility.
+@item The init files are searched in new directories, however they 
+are still searched for in the old directories for backward
+compatibility.
+@item the option @option{--glossary} doesn't do anything. Likely
+nothing specific is done regarding bibliographies. This has been
+decided because this added some semantics to the texinfo formatting 
+language that weren't part of texinfo. 
+
+It should be possible to do
+something similar with macros. See for example @file{glossary.texi} 
+for glossary and @file{my-bib-macros.texi} for bibliography
+in the directory @file{examples}. In the web2c package there is
+an example of use of BibTeX, see @url{http://tug.org/texlive/devsrc/Build/source/TeX/texk/web2c/doc/} (the examples for bibliography are taken from the
+texinfo home page @url{http://www.gnu.org/software/texinfo/texinfo.html}).
+@item don't use @code{T2H_CENTER_IMAGE}. @code{@@center} should be used
+insead, it will give the right output for all the formats.
+@item If a directory creation fails the program aborts. This is much safer.
+@item The interface for internationalisation changed, although
+the previous wasn't documented a lot.
+@item the API described in this manual changed a lot. A important
+change was to use the @code{Texi2HTML::Config} names space instead of
+variables prefixed with @samp{T2H_} or  @samp{t2h_}. To cope with
+the change the prefix should be removed from variables in init files.
+Some variables are now in @code{%Texi2HTML::THISDOC}.
+@item API changes between 1.76 and 1.78: 
+@itemize
+@item paragraph has new arguments
+with indentation information, added as the third argument, and
+other context information. The formatting linked with commands
+opened before the paragraph and closed after the paragraph are done
+in the formatting function. Similar
+things are done for preformatted.
+@item normal_text 
+changed completely. There
+are much more arguments to give informations about the context, and
+normal_text now does more text manipulation. 
+@item New arguments for image the alt text, the height and width, 
+the path to working dir and the path to image file relative 
+to working dir. More image formatting is
+done in the formatting function.
+@item New argument for empty_line.
+@item End of line removal is done in formatting function of definition line
+formatting.
+@item node_file_name now should only returns the node file, since the 
+redirection file isn't used anymore. element_file_name only is used for 
+file names, whatever NODES_FILES is.
+@end itemize
+@item @code{@@ifinfo} regions are not expanded by default. This may lead
+to warnings or errors especially if the Top node is enclosed in 
+@code{@@ifinfo}, as some node won't appear in menus. The quick fix
+is to call @command{texi2html} with the option @option{--ifinfo} and
+the right way should be to make more use of @code{@@ifnottex}.
+@item The code appearing before the first node is now outputted, it was
+ignored before. @option{--ignore-preamble-text} revert to the previous
+behaviour. Enclosing in @code{@@ifnothtml} would be much cleaner.
+@end itemize
+
+@c --------------------------------------------------------
+@node Specificities
+@chapter How little texi2html texinfo differs from GNU texinfo
+
+For features documented in the texinfo manual, the texinfo interpretation
+by @command{texi2html} shouldn't differ from the interpretation of
+@command{makeinfo} or @command{texi2dvi}. However for constructs with 
+unspecified behaviour @command{texi2html} often doesn't lead to the 
+same result than @command{makeinfo} or @command{texi2dvi}. @command{makeinfo}
+and @command{texi2dvi} are also inconsistent in most of these cases (or
+broken). You are urged not to use these features unless absolutely necessary.
+This information is only here to help understand why @command{texi2html}
+differ from other texinfo interpreters, it may be inacurate and the 
+@command{texi2html} behaviour may change in the future and was different
+in the past.
+
+@table @asis
+@item @@-commands with text on the line
+In the texinfo manual it is specified that block @@-commands should appear
+on a line without text and the closing @code{@@end} should also be on a 
+line by himself. With @command{texi2html} it is possible to add
+text before and after the command, so the following is right:
+
+@example
+something @@example the example @@end example after the example
+@end example
+
+@command{makeinfo} and @command{texi2dvi} may also accept text before
+the command and text after the @code{@@end} command, sometimes ignoring 
+it after the @code{@@end}.
+
+This is a feature you should especially not rely on.
+
+@item special @@-commands handling
+The special @@-commands are commands like @code{@@pagesizes}, @code{@@sp},
+@code{@@evenheading}, @code{@@raisesections}, @code{@@defindex} and a lot
+more. In many cases @command{makeinfo} and @code{texi2dvi} 
+don't parse those commands the same way too. @command{texi2html} may also
+show some differences in parsing of the arguments of these commands, 
+in case there are wrong arguments, and also ignore differently things
+following those commands. How user defined macros, set and values
+are expanded in those commands may also be different.
+Part of the specification of how these commands are handled is 
+configureable (@pxref{Other and unknown commands}), but not what 
+happens during the beginning of the parsing for some of those commands. 
+
+@item features different between @command{makeinfo} and @command{texi2dvi}
+When @command{makeinfo} or @command{texi2dvi} use a feature which
+is reserved for one or the other translator, @command{texi2html} uses that
+feature. So for example @code{@@definfoenclose} which is ignored by 
+@command{texi2dvi} is taken into account and @code{@@kbdinputstyle} which
+is ignored by @command{makeinfo} is taken into account. 
+
+@item user defined macros and values
+In this area @command{makeinfo} and @command{texi2dvi} also differ a lot.
+The reference implementation is the @command{makeinfo} implementation as
+@command{texi2dvi} is easily broken when macros are not used simply.
+
+@itemize @bullet
+@item @code{@@rmacro} and @code{@@macro} behave exactly the same. In fact
+this goes against a documented behaviour, however if a user don't
+want a recursive macro he can simply avoid reusing the macro in the 
+definition. If somebody report that the feature is usefull we could try
+to implement it.
+@item It is possible to escape the end of a macro definition with
+@example
+\@@end macro
+@end example
+with the @samp{\} being removed after the first expansion. Otherwise
+it is not possible to produce a @code{\@@end macro} in a macro.
+@item @code{@@unmacro} is interpreted during the macro argument expansion.
+Don't know what @command{makeinfo} exactly do.
+@item Some @code{@@value} may be expanded later than the others, those
+that are in special commands, like @code{@@node}.
+@end itemize
+
+@item @code{@@,} in @code{@@node}
+Like @command{texi2dvi} but unlike @command{makeinfo} @code{@@,} don't 
+break @code{@@node} arguments like a regular @samp{,}.
+@item Things before first node or preamble
+Things before the first node or before the preamble may not be exactly 
+interpreted or discarded as @command{makeinfo} or @command{texi2dvi} do.
+@item encodings
+@command{texi2html} knows more encodings, in fact all encodings @command{perl}
+knows about.
+@item commands in @code{@@ifset} and @code{@@ifclear}
+@command{texi2html} doesn't need a proper nesting of internal @code{@@ifset}
+or @code{@@ifclear} if they are in ignored or raw regions (like @code{@@html}
+or @code{@@verbatim}). For example the following is accepted by 
+@command{texi2html} and not by @command{makeinfo}:
+
+@example
+@@ifset notset
+@@ignore
+@@ifset
+@@end ignore
+@@end ifset
+@end example
+
+In @code{@@ifset} and @code{@@ifclear} texi2html also accepts
+a lot more of invalid constructs. For example the following is accepted
+by @command{texi2html} but not by @command{makeinfo}:
+
+@example
+@@set flag
+@@ifset flag
+@@itemize
+@@item my item
+@@end ifset
+text
+@@ifset flag
+@@end itemize
+@@end ifset
+@end example
+@end table
 
 @c --------------------------------------------------------
 @c commandline option index.
--- tetex-src-3.0/utils/texi2html/doc/texi2html.html.texi176	2005-02-04 02:52:12.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/doc/texi2html.html	2007-06-05 06:17:17.000000000 +0200
@@ -1,21 +1,18 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
 <html>
-<!--Copyright C 1999, 2000, 2001, 2002, 2003
-                       Free Software Foundation, Inc.
-
- Portions of texi2html
+<!--  Portions of texi2html
   Copyright C 1999, 2000 Lionel Cons
   Copyright C 1999, 2000 Karl Berry
   Copyright C 1999, 2000 Olaf Bachmann
-  Copyright C 2002, 2003 Patrice Dumas
-  Copyright C 2001, 2002, 2003 Derek Price
+  Copyright C 2002, 2003, 2004, 2005, 2006, 2007 Patrice Dumas
+  Copyright C 2001, 2002, 2003, 2004, 2005, 2006 Derek Price
   Copyright C many others.
  
  
  Portions of this manual
   Copyright C 1999, 2000 Karl Heinz Marbaise (manual)
-  Copyright C 2003 Patrice Dumas (manual)
-  Copyright C 2003 Derek Price (manual)
+  Copyright C 2003, 2007 Derek Price (manual)
+  Copyright C 2003, 2004, 2005, 2006, 2007 Patrice Dumas (manual)
 
 
 Permission is granted to make and distribute verbatim
@@ -33,26 +30,26 @@
 conditions for modified versions, except that this
 permission notice may be stated in a translation approved
 by the Free Software Foundation.
--->
-<!-- Created on February, 3 2005 by texi2html 1.76 -->
+ -->
+<!-- Created on June, 5 2007 by texi2html @PACKAGE_VERSION@ -->
 <!--
 Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
             Karl Berry  <karl@freefriends.org>
             Olaf Bachmann <obachman@mathematik.uni-kl.de>
             and many others.
-Maintained by: Many creative people <dev@texi2html.cvshome.org>
-Send bugs and suggestions to <users@texi2html.cvshome.org>
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
 
 -->
 <head>
-<title>Texi2HTML - Texinfo to HTML v1.76: Texi2HTML</title>
+<title>Texi2HTML &ndash; Texinfo to HTML v1.78</title>
 
-<meta name="description" content="Texi2HTML - Texinfo to HTML v1.76: Texi2HTML">
-<meta name="keywords" content="Texi2HTML - Texinfo to HTML v1.76: Texi2HTML">
+<meta name="description" content="Texi2HTML &ndash; Texinfo to HTML v1.78">
+<meta name="keywords" content="Texi2HTML &ndash; Texinfo to HTML v1.78">
 <meta name="resource-type" content="document">
 <meta name="distribution" content="global">
-<meta name="Generator" content="texi2html 1.76">
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="Generator" content="texi2html @PACKAGE_VERSION@">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <style type="text/css">
 <!--
 a.summary-letter {text-decoration: none}
@@ -64,6 +61,7 @@
 pre.smallexample {font-size: smaller}
 pre.smallformat {font-family: serif; font-size: smaller}
 pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
 span.sansserif {font-family:sans-serif; font-weight:normal;}
 ul.toc {list-style: none}
 -->
@@ -77,13 +75,10 @@
 <table cellpadding="1" cellspacing="1" border="0">
 <tr><td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h1 class="settitle">Texi2HTML</h1>
-<p>Copyright &copy; 1999, 2000, 2001, 2002, 2003
-                       Free Software Foundation, Inc.
-</p>
 <table>
 <tr><td><p> Portions of <code>texi2html</code>
 </p></td></tr>
@@ -93,9 +88,9 @@
 </p></td></tr>
 <tr><td> </td><td><p> Copyright &copy; 1999, 2000 Olaf Bachmann<br>
 </p></td></tr>
-<tr><td> </td><td><p> Copyright &copy; 2002, 2003 Patrice Dumas<br>
+<tr><td> </td><td><p> Copyright &copy; 2002, 2003, 2004, 2005, 2006, 2007 Patrice Dumas<br>
 </p></td></tr>
-<tr><td> </td><td><p> Copyright &copy; 2001, 2002, 2003 Derek Price<br>
+<tr><td> </td><td><p> Copyright &copy; 2001, 2002, 2003, 2004, 2005, 2006 Derek Price<br>
 </p></td></tr>
 <tr><td> </td><td><p> Copyright &copy; many others.<br>
 </p></td></tr>
@@ -107,9 +102,9 @@
 </p></td></tr>
 <tr><td> </td><td><p> Copyright &copy; 1999, 2000 Karl Heinz Marbaise (manual)<br>
 </p></td></tr>
-<tr><td> </td><td><p> Copyright &copy; 2003 Patrice Dumas (manual)<br>
+<tr><td> </td><td><p> Copyright &copy; 2003, 2007 Derek Price (manual)<br>
 </p></td></tr>
-<tr><td> </td><td><p> Copyright &copy; 2003 Derek Price (manual)<br>
+<tr><td> </td><td><p> Copyright &copy; 2003, 2004, 2005, 2006, 2007 Patrice Dumas (manual)<br>
 </p></td></tr>
 </table>
 
@@ -131,22 +126,22 @@
 </p>
 
 
-
 <a name="Top"></a>
 <a name="SEC_Top"></a>
 
 
-<p>This manual, last updated 1 February 2005, describes version 1.76
+<p>This manual, last updated 2 June 2007, describes version 1.78
 of the <code>texi2html</code> Perl script which converts
 <a href="http://www.texinfo.org">Texinfo</a> into <a href="http://w3c.org">HTML</a>.
 </p>
-<p>Please send bug reports concerning this manual to the Texi2HTML user
-discussion list <a href="mailto:user@texi2html.cvshome.org">user@texi2html.cvshome.org</a>.  Please state the exact
+<p>Please send bug reports concerning this manual to the Texi2HTML developement
+list <a href="mailto:texi2html-bug@nongnu.org">texi2html-bug@nongnu.org</a>. Please state the exact
 version of the manual which contains the bug, as given above.
 </p>
 
 <table><tr><td>&nbsp;</td><td><pre class="example"><strong>This manual is currently under construction and of course incomplete.  ;-)</strong>
 </pre></td></tr></table>
+
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top"><a href="#SEC1">1. Overview</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -156,20 +151,24 @@
 </td></tr>
 <tr><td align="left" valign="top"><a href="#SEC4">3. Installation of <code>texi2html</code></a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              Installing <code>texi2html</code>
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC5">4. Invoking <code>texi2html</code></a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Description of the command line options
+<tr><td align="left" valign="top"><a href="#SEC9">4. Invoking <code>texi2html</code></a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">        Description of the command line options
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC14">5. Overview of initialization files content and loading</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      What kind of variables and subroutines appear
+<tr><td align="left" valign="top"><a href="#SEC18">5. Overview of initialization files content and loading</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      What kind of variables and subroutines appear
                               in init files and how they are called
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC17">6. Fine tuning of the page layout</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
-<tr><td align="left" valign="top"><a href="#SEC47">7. Customizing <acronym>HTML</acronym> and text style in init files</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Fine tuning of the <acronym>HTML</acronym> elements
+<tr><td align="left" valign="top"><a href="#SEC22">6. Fine tuning of the page layout</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
+<tr><td align="left" valign="top"><a href="#SEC53">7. Customizing <acronym>HTML</acronym> and text style in init files</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Fine tuning of the <acronym>HTML</acronym> elements
                               associated with the texinfo constructs
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC84">A. Internationalization</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Help translating !
+<tr><td align="left" valign="top"><a href="#SEC93">A. Internationalization</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Help translating!
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC87">B. Command Line Option Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
-<tr><td align="left" valign="top"><a href="#SEC88">C. Variable Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
-<tr><td align="left" valign="top"><a href="#SEC89">D. Concept Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
+<tr><td align="left" valign="top"><a href="#SEC98">B. Incompatibilities with previous versions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
+<tr><td align="left" valign="top"><a href="#SEC99">C. How little texi2html texinfo differs from GNU texinfo</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             The minor differences with regard with texinfo
+                              valid for makeinfo or texi2dvi
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC100">D. Command Line Option Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
+<tr><td align="left" valign="top"><a href="#SEC101">E. Variable Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
+<tr><td align="left" valign="top"><a href="#SEC102">F. Concept Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 </pre></th></tr></table>
 <hr size="1">
@@ -188,7 +187,7 @@
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h1 class="chapter"> 1. Overview </h1>
@@ -248,7 +247,7 @@
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 1.1 Why <code>texi2html</code> and not <code>makeinfo</code>? </h2>
@@ -256,13 +255,13 @@
 
 <p>You would like to produce <acronym>HTML</acronym> files from your existing Texinfo
 files?  There are two programs you can use to do this.  The first is
-<code>makeinfo</code> (see <a href="texinfo.html#Generating-HTML">(texinfo)Generating HTML</a>).
+<code>makeinfo</code> (see <a href="texinfo.html#Generating-HTML">(texinfo)Generating HTML</a> section `Generating HTML' in <cite>GNU Texinfo</cite>).
 The second is <code>texi2html</code>.
 </p>
 <p>The design goal of <code>makeinfo</code>'s <acronym>HTML</acronym> output was to produce
 readable <acronym>HTML</acronym> output. It is now possible to use <acronym>CSS</acronym>
 for <acronym>HTML</acronym> customization. Another possibility is to use intermediate 
-formats, like docbook or <code>mekeinfo</code> <acronym>XML</acronym> 
+formats, like docbook or <code>makeinfo</code> <acronym>XML</acronym> 
 and <acronym>XSL</acronym> stylesheets to customize the resulting document. Still the 
 output produced by <code>makeinfo</code> isn't customizable.
 </p>
@@ -292,7 +291,7 @@
 </p>
 <p><code>texi2html</code> should reasonably convert all Texinfo
 4.8 constructs.  If you find it does not, please send a bug report to the
-<a href="mailto:users@texi2html.cvshome.org">users@texi2html.cvshome.org</a> email list.
+<a href="mailto:texi2html-bug@nongnu.org">texi2html-bug@nongnu.org</a> email list.
 </p>
 <hr size="6">
 <a name="Obtaining-texi2html"></a>
@@ -310,13 +309,17 @@
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h1 class="chapter"> 2. Obtaining <code>texi2html</code> </h1>
 
 <p>The latest version of the source code for <code>texi2html</code> should be
-available from <a href="http://texi2html.cvshome.org">texi2html.cvshome.org</a>.
+available from
+<a href="http://www.nongnu.org/texi2html/">www.nongnu.org/texi2html/</a>.
+<code>texi2html</code> is also available with 
+<a href="http://www.tug.org/teTeX/">teTeX</a> and 
+<a href="http://www.tug.org/texlive/">TeX Live</a>.
 </p>
 <hr size="6">
 <a name="Installation"></a>
@@ -327,80 +330,234 @@
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC3" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC5" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h1 class="chapter"> 3. Installation of <code>texi2html</code> </h1>
 
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#SEC5">3.1 Requirements</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC6">3.2 Configuring the source and rebuilding</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC7">3.3 Installing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC8">3.4 Advanced build features</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr size="6">
+<a name="Requirements"></a>
+<a name="SEC5"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC4" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC6" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC4" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC4" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 3.1 Requirements </h2>
+
 <p>To install <code>texi2html</code>, you must first obtain a copy of the
 source distribution.  See section <a href="#SEC3">Obtaining <code>texi2html</code></a>.
 </p>
-<p><code>texi2html</code> also requires <code>perl</code> version 
-5.004 or above.  The current version has not been tested
-extensively on versions of <code>perl</code> below 5.6, however.
+<p><code>texi2html</code> requires <code>perl</code> version 
+5.00405 or above to be run. An older perl 5 version with 
+<code>File::Spec</code> is also likely to work.  The current version has 
+been lightly tested on a wide range of perl, but has not been 
+tested extensively on versions of <code>perl</code> below 5.6.
+To play nice with encodings you 
+also need the <code>Encode</code> and <code>Unicode::Normalize</code> modules.
 </p>
+<p>To rebuild the script perl isn't required in most cases. For more
+information about advanced build features, see <a href="#SEC8">Advanced build features</a>.
+</p>
+<hr size="6">
+<a name="Configuring-and-rebuilding"></a>
+<a name="SEC6"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC5" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC7" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC4" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC4" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 3.2 Configuring the source and rebuilding </h2>
+
 <p><code>texi2html</code> is a standard Automake-based distribution.
 If you have a source version, you should run <code>./configure</code>
-to regenerate the executable <tt>`texi2html'</tt> file.  <code>./configure</code>
-accepts options to select the installation directory for the <tt>`texi2html'</tt>
+to configure the sources and <code>make</code> to build the script.  
+</p>
+<p><code>./configure</code>
+accepts options to select the installation directory for the &lsquo;<tt>texi2html</tt>&rsquo;
 file, the default directories <code>texi2html</code> will use to look for
 configuration files, and other details.  Run <code>./configure --help</code> for
 more information.
+Running <code>./configure</code> creates &lsquo;<tt>texi2html_configured.pl</tt>&rsquo; from
+&lsquo;<tt>texi2html.pl</tt>&rsquo;, and also builds the <code>make</code> configuration
+files (&lsquo;<tt>Makefile</tt>&rsquo;s).
 </p>
-<p>Running <code>./configure</code> combines four files into the final
-<tt>`texi2html'</tt> program file:
+<p>Running <code>make</code> combines five files into the final
+&lsquo;<tt>texi2html</tt>&rsquo; program file:
 </p><ul class="toc">
-<li> <tt>`texi2html.pl'</tt> contains the base program,
-</li><li> <tt>`MySimple.pm'</tt> handles the command line options, 
-</li><li> <tt>`texi2html.init'</tt> is the default configuration file, and 
-</li><li> <tt>`T2h_i18n.pm'</tt> is used for internationalization.
-</li><li> <tt>`translations.pl'</tt> contains the translations of the strings used in
+<li> &lsquo;<tt>texi2html_configured.pl</tt>&rsquo; contains the base program,
+</li><li> &lsquo;<tt>MySimple.pm</tt>&rsquo; handles the command line options, 
+</li><li> &lsquo;<tt>texi2html.init</tt>&rsquo; is the default configuration file, and 
+</li><li> &lsquo;<tt>T2h_i18n.pm</tt>&rsquo; is used for internationalization.
+</li><li> &lsquo;<tt>translations.pl</tt>&rsquo; contains the translations of the strings used in
 documents.
 </li></ul>
 
-<p>Running <code>./configure</code> also builds the <code>make</code> configuration
-files (<tt>`Makefile'</tt>s).  To make the documentation run <code>make</code>.
+<p>Running <code>make</code> also rebuilds the documentation if needed.
 </p> 
+<hr size="6">
+<a name="Installing"></a>
+<a name="SEC7"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC6" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC8" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC4" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC4" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 3.3 Installing </h2>
+
 <p><code>make install</code> performs the installation to the locations specified to
 the <code>./configure</code> script.  This usually involves placing the actual
-<tt>`texi2html'</tt> file someplace in your path, such as <tt>`/usr/local/bin'</tt> or
-<tt>`/usr/bin'</tt>.
+&lsquo;<tt>texi2html</tt>&rsquo; file someplace in your path, such as &lsquo;<tt>/usr/local/bin</tt>&rsquo; or
+&lsquo;<tt>/usr/bin</tt>&rsquo;.
 </p>
 <p>Installing <code>texi2html</code> in your path should be sufficient 
 to run it.  To use default initialization files, or a configuration file for
 LaTeX2HTML when using <code>latex2html</code> to convert <code>@tex</code> sections
-(see section <a href="#SEC12">Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a>), install them in the package data directory
-specified to configure.  This is <tt>`/usr/local/share/texi2html/'</tt> by default,
+(see section <a href="#SEC16">Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a>), install them in the package data directory
+specified to configure.  This is &lsquo;<tt>/usr/local/share/texi2html/</tt>&rsquo; by default,
 but depends on the value of the <a name="IDX1"></a>
-<samp>`--pkgdatadir=<var>dir</var>'</samp> option passed to
+&lsquo;<samp>--pkgdatadir=<var>dir</var></samp>&rsquo; option passed to
 the <code>./configure</code> script. Files used for strings customization and
-internationalization are also searched for in the <tt>`i18n'</tt> directory
-of this directory. See section <a href="#SEC13">Use initialization files for fine tuning</a> for more. 
+internationalization are also searched for in the &lsquo;<tt>i18n</tt>&rsquo; directory
+of this directory. See section <a href="#SEC17">Use initialization files for fine tuning</a> for more. 
+</p>
+<hr size="6">
+<a name="Advanced-build-features"></a>
+<a name="SEC8"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC7" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC4" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC4" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 3.4 Advanced build features </h2>
+
+<p>This section documents features that are unlikely to be used but deserve
+a bit of documentation. 
+</p>
+<p>A <code>./configure</code> switch, 
+<a name="IDX2"></a>
+&lsquo;<samp>--with-unicode</samp>&rsquo; allows to choose whether the unicode code should
+be used or not. The default is to detect it with a test. This
+code requires <code>Encode</code> and <code>Unicode::Normalize</code> modules.
+</p>
+<p>A similar <code>./configure</code> switch, 
+<a name="IDX3"></a>
+&lsquo;<samp>--with-unidecode</samp>&rsquo; allows to choose whether the perl module
+<code>Text::Unidecode</code> should be used or not. The default is to detect it 
+with a test. This code requires the <code>Text::Unidecode</code> module.
+</p>
+<p><code>perl</code> isn't 
+needed to build the script. the script is build by &lsquo;<tt>./configure</tt>&rsquo; 
+and a shell script launched by <code>make</code> which is a simple 
+wrapper around a <code>sed</code> one-liner. The <code>perl</code> command
+can be specified with the environment variable <code>$PERL</code>, otherwise
+it is detected. <code>perl</code> is required to rebuild the documentation
+as the <acronym>HTML</acronym> documentation is rebuild with <code>texi2html</code>
+itself.
+</p>
+<p>The translations are managed by a script <code>manage_i18n.pl</code>, created
+by <code>./configure</code>. <code>manage_i18n.pl</code> requires 
+<code>Data::Dumper</code> to function normally. If this module isn't there 
+<code>./configure</code> detects it and <code>manage_i18n.pl</code> doesn't
+really rebuild the translations, but only copy files. It is possible
+to use the <code>./configure</code> switch <a name="IDX4"></a>
+&lsquo;<samp>--enable-translations</samp>&rsquo;
+to override the <code>./configure</code> detection. For more about 
+translations, see <a href="#SEC93">Internationalization</a>.
+</p>
+<p>It is possible to build from outside of the source directory, for example
+the following should work:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">tar xzvf texi2html-1.78.tar.gz
+mkdir texi2html_build
+cd texi2html_build
+../texi2html-1.78/configure &amp;&amp; make
+</pre></td></tr></table>
+
+<p>All these features enables to build <code>texi2html</code> on a platform 
+in order to run it on another platform, a kind of cross-building. The 
+<code>./configure</code> switches and <code>$PERL</code> allows to specify 
+everything needed for the build of the <code>texi2html</code> script.
 </p>
 <hr size="6">
 <a name="Invoking-texi2html"></a>
-<a name="SEC5"></a>
+<a name="SEC9"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC4" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC6" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC8" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC10" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC4" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC14" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC18" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h1 class="chapter"> 4. Invoking <code>texi2html</code> </h1>
@@ -410,79 +567,80 @@
 </p>
 <table><tr><td>&nbsp;</td><td><pre class="example">$ texi2html texi2html.texi
 </pre></td></tr></table>
+
 <p>The behaviour of <code>texi2html</code> may be changed with command line
 options.  These command line options are always associated with corresponding
 <code>perl</code> variables which may appear in init files, and these 
 variables are presented in this chapter each time a switch is described. 
 </p>
 <p>Boolean command line switches always have a corresponding negated switch,
-obtained by prepending <samp>`no'</samp> or <samp>`no-'</samp> to the switch name. For example
-<a name="IDX2"></a>
-<samp>`--nomenu'</samp> does the reverse of <a name="IDX3"></a>
-<samp>`--menu'</samp>.
+obtained by prepending &lsquo;<samp>no</samp>&rsquo; or &lsquo;<samp>no-</samp>&rsquo; to the switch name. For example
+<a name="IDX5"></a>
+&lsquo;<samp>--nomenu</samp>&rsquo; does the reverse of <a name="IDX6"></a>
+&lsquo;<samp>--menu</samp>&rsquo;.
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#SEC6">4.1 Specifying where to split the generated document</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          The <acronym>HTML</acronym> output may be split at 
+<tr><td align="left" valign="top"><a href="#SEC10">4.1 Specifying where to split the generated document</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          The <acronym>HTML</acronym> output may be split at 
                               different levels
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC7">4.2 Setting output file and directory names</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC11">4.2 Setting output file and directory names</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC8">4.3 Specifying which regions get expanded</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC12">4.3 Specifying which regions get expanded</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC9">4.4 Command line options related to Texinfo language features</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC13">4.4 Command line options related to Texinfo language features</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC10">4.5 Page layout related command line options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Customizing page layout
+<tr><td align="left" valign="top"><a href="#SEC14">4.5 Page layout related command line options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Customizing page layout
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
-<tr><td align="left" valign="top"><a href="#SEC12">4.7 Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
+<tr><td align="left" valign="top"><a href="#SEC16">4.7 Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC13">4.8 Use initialization files for fine tuning</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Specifying initialization files for fine tuning
+<tr><td align="left" valign="top"><a href="#SEC17">4.8 Use initialization files for fine tuning</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          Specifying initialization files for fine tuning
 </td></tr>
 </table>
 
 <hr size="6">
 <a name="Splitting-output"></a>
-<a name="SEC6"></a>
+<a name="SEC10"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC5" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC7" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC9" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC11" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC5" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC14" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC18" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 4.1 Specifying where to split the generated document </h2>
 
 <p>The <acronym>HTML</acronym> manual resulting from the processing of the Texinfo source
 may be split into files at different levels.  This is specified with the
-option <a name="IDX4"></a>
-<samp>`--split'</samp> which takes an argument, namely the level of splitting
-(variable: <a name="IDX5"></a>
+option <a name="IDX7"></a>
+&lsquo;<samp>--split</samp>&rsquo; which takes an argument, namely the level of splitting
+(variable: <a name="IDX8"></a>
 <code>$SPLIT</code>). This level may be: 
 </p>
 <dl compact="compact">
-<dt> <samp>`chapter'</samp></dt>
+<dt> &lsquo;<samp>chapter</samp>&rsquo;</dt>
 <dd><p>The document is split at <code>@chapter</code>, <code>@appendix</code>, or <code>@unnumbered</code>.
 </p></dd>
-<dt> <samp>`section'</samp></dt>
-<dd><p>The document is split at the same places as it is using the <samp>`chapter'</samp>
+<dt> &lsquo;<samp>section</samp>&rsquo;</dt>
+<dd><p>The document is split at the same places as it is using the &lsquo;<samp>chapter</samp>&rsquo;
 argument, and also at <code>@section</code>, <code>@appendixsec</code> or
 <code>@unnumberedsec</code>.
 </p></dd>
-<dt> <samp>`node'</samp></dt>
+<dt> &lsquo;<samp>node</samp>&rsquo;</dt>
 <dd><p>The document is split at every sectioning command.  It is not necessarily 
 split at each node, if the <code>@node</code> structure doesn't correspond with
 the sectioning command structure (see below).
 </p></dd>
-<dt> <samp>`none'</samp></dt>
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
 <dd><p>The document isn't split.  This is the default.
 </p></dd>
 </dl>
@@ -497,20 +655,20 @@
 <p>By default, nodes which aren't associated with a structuring command are not
 considered to be sectioning commands.  They are always considered to be part
 of a sectioning element defined by a structuring command.  It is possible to
-change this behaviour via the <a name="IDX6"></a>
-<samp>`--use-nodes'</samp> option (variable
-<a name="IDX7"></a>
+change this behaviour via the <a name="IDX9"></a>
+&lsquo;<samp>--use-nodes</samp>&rsquo; option (variable
+<a name="IDX10"></a>
 <code>$USE_NODES</code>).  In this case, nodes not associated with structuring
 commands are also considered to be sectioning commands defining a sectioning
 element. 
 </p>
 <p>This default behaviour mimics <code>texi2dvi</code> behaviour, which ignores 
 <code>@node</code> commands for the purprose of sectioning, while the second
-looks like <code>makeinfo</code> behaviour (see <a href="texinfo.html#Two-Paths">(texinfo)Two Paths</a>). 
+looks like <code>makeinfo</code> behaviour (see <a href="texinfo.html#Two-Paths">(texinfo)Two Paths</a> section `Two Paths' in <cite>GNU Texinfo</cite>). 
 </p>
 <p>As an illustration, the following table shows how a sample Texinfo document is
-divided into sectioning elements when <a name="IDX8"></a>
-<samp>`--use-nodes'</samp> is used and not:
+divided into sectioning elements when <a name="IDX11"></a>
+&lsquo;<samp>--use-nodes</samp>&rsquo; is used and not:
 </p>
 <table>
 <tr><td><p> Texinfo code
@@ -519,8 +677,8 @@
 <p>default case
 </p></td><td>
 </td><td>
-<p>with <a name="IDX9"></a>
-<samp>`--use-nodes'</samp>
+<p>with <a name="IDX12"></a>
+&lsquo;<samp>--use-nodes</samp>&rsquo;
 </p></td></tr>
 <tr><td>
 <br>
@@ -536,7 +694,8 @@
 node3 text
 @chapter node 3
 chapter text
-</pre></td></tr></table></td><td>
+</pre></td></tr></table>
+</td><td>
 </td><td>
 <p>first element:
 </p>
@@ -547,6 +706,7 @@
 @node node2
 node2 text
 </pre></td></tr></table>
+
 <p>second element:
 </p>
 <table><tr><td>&nbsp;</td><td><pre class="example">@node node3
@@ -554,6 +714,7 @@
 @chapter node 3
 chapter text
 </pre></td></tr></table>
+
 </td><td>
 </td><td>
 <p>first element:
@@ -562,11 +723,13 @@
 @chapter node 1
 node1 text
 </pre></td></tr></table>
+
 <p>second element:
 </p>
 <table><tr><td>&nbsp;</td><td><pre class="example">@node node2
 node2 text
 </pre></td></tr></table>
+
 <p>third element:
 </p>
 <table><tr><td>&nbsp;</td><td><pre class="example">@node node3
@@ -574,50 +737,52 @@
 @chapter node 3
 chapter text
 </pre></td></tr></table>
+
 </td></tr>
 </table>
 
 <hr size="6">
 <a name="Output-files"></a>
-<a name="SEC7"></a>
+<a name="SEC11"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC6" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC8" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC10" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC12" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC5" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC14" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC18" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 4.2 Setting output file and directory names </h2>
 
-<p>The manual name is constructed by stripping the <samp>`.texi'</samp>,
-<samp>`.txi'</samp>, <samp>`.texinfo'</samp>, or <samp>`.txinfo'</samp> extension from the Texinfo file
+<p>The manual name is constructed by stripping the &lsquo;<samp>.texi</samp>&rsquo;,
+&lsquo;<samp>.txi</samp>&rsquo;, &lsquo;<samp>.texinfo</samp>&rsquo;, or &lsquo;<samp>.txinfo</samp>&rsquo; extension from the Texinfo file
 name. 
 </p>
 <p>By default, <code>texi2html</code> generates the manual file in the current 
-directory if the manual isn't split. A <samp>`.html'</samp> file extension is appended
+directory if the manual isn't split. A &lsquo;<samp>.html</samp>&rsquo; file extension is appended
 to the manual name.
 </p>
 <p>If the manual is split the files are put in a directory named after the
 manual name. The file name is constructed using the manual name as basename.
 An underscore followed by a number is appended
 to the basename for each files corresponding with sectioning elements, with the
-exception of the top element. For the top element there nothing appended.
+exception of the top element. For the top element there is nothing appended.
 The files containing special elements pages
 have an underscore and a 3 letter code corresponding to their content
-(<samp>`toc'</samp> for table of contents, <samp>`abt'</samp> for about, <samp>`ovr'</samp> for
-overview) appended.  Lastly, an <samp>`.html'</samp> file extension is appended.
+(&lsquo;<samp>toc</samp>&rsquo; for table of contents, &lsquo;<samp>abt</samp>&rsquo; for about, &lsquo;<samp>ovr</samp>&rsquo; for
+overview, &lsquo;<samp>fot</samp>&rsquo; for footnotes if they are separated) appended.  
+Lastly, an &lsquo;<samp>.html</samp>&rsquo; file extension is appended.
 </p>
-<p>Thus, if the texinfo file <tt>`afile.texi'</tt> is processed and split at chapters
-into 3 files, the generated files (in directory <tt>`afile'</tt>) will be:
+<p>Thus, if the texinfo file &lsquo;<tt>afile.texi</tt>&rsquo; is processed and split at chapters
+into 3 files, the generated files (in directory &lsquo;<tt>afile</tt>&rsquo;) will be:
 </p>
 <table><tr><td>&nbsp;</td><td><pre class="example">afile.html         --&gt; <code>@node Top</code> or <code>@top</code> section
 afile_1.html       --&gt; Chapter 1
@@ -625,37 +790,39 @@
 afile_toc.html     --&gt; Table of Contents
 afile_abt.html     --&gt; About Page
 </pre></td></tr></table>
+
 <p>This default behavior may be modified by several command line options. If the
 output isn't split, the prefix file name may be overrided by the
-<a name="IDX10"></a>
-<samp>`--output'</samp> command line option (variable <a name="IDX11"></a>
+<a name="IDX13"></a>
+&lsquo;<samp>--output</samp>&rsquo; command line option (variable <a name="IDX14"></a>
 <code>$OUT</code>). If the output
-is split, and <a name="IDX12"></a>
-<samp>`--output'</samp> is set, the files are placed in the directory
+is split, and <a name="IDX15"></a>
+&lsquo;<samp>--output</samp>&rsquo; is set, the files are placed in the directory
 specified by the argument to the option.
 </p>
-<p>The basename may be overridden with <a name="IDX13"></a>
-<samp>`--prefix'</samp> (variable
-<a name="IDX14"></a>
-<code>$PREFIX</code>).  If <a name="IDX15"></a>
-<samp>`--short-ext'</samp> is given, <samp>`.htm'</samp> is appended
-instead of <samp>`.html'</samp> in the final step (variable <a name="IDX16"></a>
+<p>The basename may be overridden with <a name="IDX16"></a>
+&lsquo;<samp>--prefix</samp>&rsquo; (variable
+<a name="IDX17"></a>
+<code>$PREFIX</code>).  If <a name="IDX18"></a>
+&lsquo;<samp>--short-ext</samp>&rsquo; is given, &lsquo;<samp>.htm</samp>&rsquo; is appended
+instead of &lsquo;<samp>.html</samp>&rsquo; in the final step (variable <a name="IDX19"></a>
 <code>$SHORTEXTN</code>).  
-The <a name="IDX17"></a>
-<samp>`--top-file'</samp> option
-overrides the top element file name (variable <a name="IDX18"></a>
+The <a name="IDX20"></a>
+&lsquo;<samp>--top-file</samp>&rsquo; option
+overrides the top element file name (variable <a name="IDX21"></a>
 <code>$TOP_FILE</code>).  This can
-be used to name the top element file <samp>`index.html'</samp>.  Similarly,
-<a name="IDX19"></a>
-<samp>`--toc-file'</samp> changes the name of the table of contents file (variable
-<a name="IDX20"></a>
+be used to name the top element file &lsquo;<samp>index.html</samp>&rsquo;.  Similarly,
+<a name="IDX22"></a>
+&lsquo;<samp>--toc-file</samp>&rsquo; changes the name of the table of contents file (variable
+<a name="IDX23"></a>
 <code>$TOC_FILE</code>).
 </p>
 <p>Reusing the example above, but this time calling <code>texi2html</code> like so:
 </p>
 <table><tr><td>&nbsp;</td><td><pre class="example">$ texi2html -split chapter -prefix manual -short-ext -top-file index.htm -toc-file contents.htm afile.texi
 </pre></td></tr></table>
-<p>we get, in <tt>`manual'</tt>:
+
+<p>we get, in &lsquo;<tt>manual</tt>&rsquo;:
 </p>
 <table><tr><td>&nbsp;</td><td><pre class="example">index.htm          --&gt; <code>@node Top</code> or <code>@top</code> section
 manual_1.htm       --&gt; Chapter 1
@@ -663,12 +830,13 @@
 contents.htm       --&gt; Table of Contents
 manual_abt.htm     --&gt; About Page
 </pre></td></tr></table>
+
 <p>The file names generated by <code>texi2html</code> differ from those generated
 by <code>makeinfo</code>. <code>makeinfo</code> uses the node name to construct
 the file names while splitting at nodes.  It is possible to get the same
 behaviour out of <code>texi2html</code> by specifying the
-<a name="IDX21"></a>
-<samp>`--node-files'</samp> option (variable <a name="IDX22"></a>
+<a name="IDX24"></a>
+&lsquo;<samp>--node-files</samp>&rsquo; option (variable <a name="IDX25"></a>
 <code>$NODE_FILES</code>).  If the output
 isn't split at nodes, <code>texi2html</code> will still output files named after
 the nodes, without real content but redirecting to the right file.
@@ -679,21 +847,21 @@
 </p>
 <hr size="6">
 <a name="Expansion"></a>
-<a name="SEC8"></a>
+<a name="SEC12"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC7" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC9" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC11" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC13" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC5" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC14" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC18" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 4.3 Specifying which regions get expanded </h2>
@@ -702,40 +870,40 @@
 <code>@html</code>, and <code>@menu</code> regions, all the <code>@ifnot</code> regions 
 except <code>@ifnothtml</code>, and no other <code>@if</code> regions.
 </p>
-<p>It is possible to expand other regions by setting <a name="IDX23"></a>
-<samp>`--if&lt;region&gt;'</samp>,
-where <samp>`&lt;region&gt;'</samp> is replaced by the literal name of the region (for
-example, <samp>`--iftex'</samp>).  Symetrically, if <a name="IDX24"></a>
-<samp>`--no-if&lt;region&gt;'</samp> is
-specified, the <samp>`&lt;region&gt;'</samp> region is ignored.  The configuration file
-array, <a name="IDX25"></a>
+<p>It is possible to expand other regions by setting <a name="IDX26"></a>
+&lsquo;<samp>--if&lt;region&gt;</samp>&rsquo;,
+where &lsquo;<samp>&lt;region&gt;</samp>&rsquo; is replaced by the literal name of the region (for
+example, &lsquo;<samp>--iftex</samp>&rsquo;).  Symetrically, if <a name="IDX27"></a>
+&lsquo;<samp>--no-if&lt;region&gt;</samp>&rsquo; is
+specified, the &lsquo;<samp>&lt;region&gt;</samp>&rsquo; region is ignored.  The configuration file
+array, <a name="IDX28"></a>
 <code>@EXPAND</code>, holds the names of regions which should be 
 expanded. The only region name present in <code>@EXPAND</code> in the default case 
-is <samp>`html'</samp>. 
+is &lsquo;<samp>html</samp>&rsquo;. 
 </p>
-<p>If <a name="IDX26"></a>
-<samp>`--nomenu'</samp> is set, the <code>@menu</code> sections are not expanded
-(variable <a name="IDX27"></a>
+<p>If <a name="IDX29"></a>
+&lsquo;<samp>--nomenu</samp>&rsquo; is set, the <code>@menu</code> sections are not expanded
+(variable <a name="IDX30"></a>
 <code>$SHOW_MENU</code>). The default is to expand <code>@menu</code>
 sections.
 </p>
 <hr size="6">
 <a name="Texinfo-related-options"></a>
-<a name="SEC9"></a>
+<a name="SEC13"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC8" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC10" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC12" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC14" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC5" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC14" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC18" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 4.4 Command line options related to Texinfo language features </h2>
@@ -743,37 +911,37 @@
 <p>Miscalleneous Texinfo related things may be specified via command line options. 
 </p>
 <dl compact="compact">
-<dt> <a name="IDX28"></a>
-<p><samp>`--lang=<var>lang</var>'</samp>
+<dt> <a name="IDX31"></a>
+<p>&lsquo;<samp>--lang=<var>lang</var></samp>&rsquo;
 </p></dt>
 <dd><p>Sets the document language similar to the Texinfo directive,
-<code>@documentlanguage <var>lang</var></code> (variable <a name="IDX29"></a>
+<code>@documentlanguage <var>lang</var></code> (variable <a name="IDX32"></a>
 <code>$LANG</code>).
-The default is <samp>`en'</samp>, that is, use the english language strings.
+The default is &lsquo;<samp>en</samp>&rsquo;, that is, use the english language strings.
 </p></dd>
-<dt> <a name="IDX30"></a>
-<p><samp>`-D<var>var</var>'</samp>
+<dt> <a name="IDX33"></a>
+<p>&lsquo;<samp>-D<var>var</var></samp>&rsquo;
 </p></dt>
 <dd><p>Sets <var>var</var>.  Equivalent to, <code>@set <var>var</var> 1</code>, in Texinfo.
 </p></dd>
-<dt> <a name="IDX31"></a>
-<p><samp>`-U<var>var</var>'</samp>
+<dt> <a name="IDX34"></a>
+<p>&lsquo;<samp>-U<var>var</var></samp>&rsquo;
 </p></dt>
 <dd><p>Clears <var>var</var>.  Equivalent to, <code>@clear <var>var</var></code>, in Texinfo.
 </p></dd>
-<dt> <a name="IDX32"></a>
-<p><samp>`-P<var>dir</var>'</samp>
+<dt> <a name="IDX35"></a>
+<p>&lsquo;<samp>-P<var>dir</var></samp>&rsquo;
 </p></dt>
 <dd><p>Prepend <var>dir</var> to the list of directories to search for
-<code>@include</code> files (the associated array is <a name="IDX33"></a>
+<code>@include</code> files (the associated array is <a name="IDX36"></a>
 <code>@PREPEND_DIRS</code>,
 empty in the default case).
 </p></dd>
-<dt> <a name="IDX34"></a>
-<p><samp>`-I<var>dir</var>'</samp>
+<dt> <a name="IDX37"></a>
+<p>&lsquo;<samp>-I<var>dir</var></samp>&rsquo;
 </p></dt>
 <dd><p>Append <var>dir</var> to the list of directories to search for 
-<code>@include</code> files (the associated array is <a name="IDX35"></a>
+<code>@include</code> files (the associated array is <a name="IDX38"></a>
 <code>@INCLUDE_DIRS</code>,
 empty in the default case).
 </p></dd>
@@ -783,173 +951,176 @@
 </p>
 <hr size="6">
 <a name="Page-layout-options"></a>
-<a name="SEC10"></a>
+<a name="SEC14"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC9" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC11" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC13" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC15" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC5" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC14" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC18" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 4.5 Page layout related command line options </h2>
 
-<p>If the <a name="IDX36"></a>
-<samp>`--frames'</samp> option is specified, <acronym>HTML</acronym> frames 
+<p>If the <a name="IDX39"></a>
+&lsquo;<samp>--frames</samp>&rsquo; option is specified, <acronym>HTML</acronym> frames 
 are used.  A file describing the frame layout is generated, and the
 document page is associated with a frame where the short table of
-content appears (variable <a name="IDX37"></a>
+content appears (variable <a name="IDX40"></a>
 <code>$FRAMES</code>). The default is not
 to use frames.
 </p>
 <p>It is also possible to suppress the section navigation panel with
-<a name="IDX38"></a>
-<samp>`--nosec-nav'</samp> (variable <a name="IDX39"></a>
+<a name="IDX41"></a>
+&lsquo;<samp>--nosec-nav</samp>&rsquo; (variable <a name="IDX42"></a>
 <code>$SECTION_NAVIGATION</code>, the default
 is to output all the navigation panels), and to specify
 whether footnotes should appear at the foot of the same page which contains
 the reference to the note or on a separate page with
-<a name="IDX40"></a>
-<samp>`--separated-footnotes'</samp> (variable <a name="IDX41"></a>
+<a name="IDX43"></a>
+&lsquo;<samp>--separated-footnotes</samp>&rsquo; (variable <a name="IDX44"></a>
 <code>$SEPARATED_FOOTNOTES</code>).
 The default is to have separated footnotes.
 </p>
 <hr size="6">
 <a name="Style-options"></a>
-<a name="SEC11"></a>
+<a name="SEC15"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC10" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC12" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC14" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC16" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC5" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC14" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC18" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 4.6 Customizing the <acronym>HTML</acronym> and text style </h2>
 
+
 <p>Miscalleneous style changes may be achieved with command line options. 
 </p>
 <dl compact="compact">
-<dt> <a name="IDX42"></a>
-<p><samp>`--doctype=<var>DTD</var>'</samp>
+<dt> <a name="IDX45"></a>
+<p>&lsquo;<samp>--doctype=<var>DTD</var></samp>&rsquo;
 </p></dt>
-<dt> <a name="IDX43"></a>
-<p><samp>`--frameset-doctype=<var>DTD</var>'</samp>
+<dt> <a name="IDX46"></a>
+<p>&lsquo;<samp>--frameset-doctype=<var>DTD</var></samp>&rsquo;
 </p></dt>
 <dd><p>You can specify the document DTD by setting these options. 
-<a name="IDX44"></a>
-<samp>`--frameset-doctype'</samp> applies to the file describing the frames when 
-frames are used (corresponding variables are <a name="IDX45"></a>
+<a name="IDX47"></a>
+&lsquo;<samp>--frameset-doctype</samp>&rsquo; applies to the file describing the frames when 
+frames are used (corresponding variables are <a name="IDX48"></a>
 <code>$DOCTYPE</code> and 
-<a name="IDX46"></a>
+<a name="IDX49"></a>
 <code>$FRAMESET_DOCTYPE</code>).
 </p>
 <p>The default for the document doctype is:
 </p><table><tr><td>&nbsp;</td><td><pre class="example">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; &quot;http://www.w3.org/TR/html401/loose.dtd&quot;&gt;
-</pre></td></tr></table><p>And for the frameset doctype:
+</pre></td></tr></table>
+<p>And for the frameset doctype:
 </p><table><tr><td>&nbsp;</td><td><pre class="example">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Frameset//EN&quot; &quot;http://www.w3.org/TR/html401/frameset.dtd&quot;&gt;
 </pre></td></tr></table>
+
 </dd>
-<dt> <a name="IDX47"></a>
-<p><samp>`--iso'</samp>
+<dt> <a name="IDX50"></a>
+<p>&lsquo;<samp>--iso</samp>&rsquo;
 </p></dt>
 <dd><p>If this option is set, ISO8859 entities are used for some special symbols,
-like Copyright &copy; (variable <a name="IDX48"></a>
+like Copyright &copy; (variable <a name="IDX51"></a>
 <code>$USE_ISO</code>). It is the default.
 </p>
 </dd>
-<dt> <a name="IDX49"></a>
-<p><samp>`--css-include=<var>file</var>'</samp>
+<dt> <a name="IDX52"></a>
+<p>&lsquo;<samp>--css-include=<var>file</var></samp>&rsquo;
 </p></dt>
 <dd><p>This command line switch provides for the inclusion of an external
 Cascading Style Sheet (<acronym>CSS</acronym>) file.  More than one file may be
-specified, and <samp>`-'</samp> stands for the standard input (array
-<a name="IDX50"></a>
+specified, and &lsquo;<samp>-</samp>&rsquo; stands for the standard input (array
+<a name="IDX53"></a>
 <code>@CSS_FILES</code>). 
 </p>
 <p>The option use is the same than for <code>makeinfo</code> and is described
-extensively in <a href="texinfo.html#HTML-CSS">(texinfo)HTML CSS</a>.
+extensively in <a href="texinfo.html#HTML-CSS">(texinfo)HTML CSS</a> section `HTML CSS' in <cite>GNU Texinfo</cite>.
 Briefly, the <acronym>CSS</acronym> <code>@import</code> lines from the external file
 <acronym>CSS</acronym> file are pasted  before the
 <code>texi2html</code> <acronym>CSS</acronym> rules, and the external file <acronym>CSS</acronym>
 rules are pasted after the <code>texi2html</code> <acronym>CSS</acronym> rules.  
 </p>
 </dd>
-<dt> <a name="IDX51"></a>
-<p><samp>`--html-xref-prefix=<var>path</var>'</samp>
+<dt> <a name="IDX54"></a>
+<p>&lsquo;<samp>--html-xref-prefix=<var>path</var></samp>&rsquo;
 </p></dt>
 <dd><p>This option sets the base directory for external <acronym>HTML</acronym> texinfo manuals 
-(variable <a name="IDX52"></a>
-<code>$EXTERNAL_DIR</code>).  Defaults to <samp>`../'</samp>.
+(variable <a name="IDX55"></a>
+<code>$EXTERNAL_DIR</code>).  Defaults to &lsquo;<samp>../</samp>&rsquo;.
 </p>
 </dd>
-<dt> <a name="IDX53"></a>
-<p><samp>`--def-table'</samp>
+<dt> <a name="IDX56"></a>
+<p>&lsquo;<samp>--def-table</samp>&rsquo;
 </p></dt>
 <dd><p>If this option is set, <acronym>HTML</acronym> tables are used to format definition 
 commands, rather than <acronym>HTML</acronym> definition tables (variable
-<a name="IDX54"></a>
+<a name="IDX57"></a>
 <code>$DEF_TABLE</code>). Default is false.
 </p>
 </dd>
-<dt> <a name="IDX55"></a>
-<p><samp>`--short-ref'</samp>
+<dt> <a name="IDX58"></a>
+<p>&lsquo;<samp>--short-ref</samp>&rsquo;
 </p></dt>
 <dd><p>If this option is set, cross-references are given without section numbers
-(variable <a name="IDX56"></a>
+(variable <a name="IDX59"></a>
 <code>$SHORT_REF</code>). Default is false.
 </p>
 </dd>
-<dt> <a name="IDX57"></a>
-<p><samp>`--number'</samp>
+<dt> <a name="IDX60"></a>
+<p>&lsquo;<samp>--number</samp>&rsquo;
 </p></dt>
 <dd><p>If this option is set, sections are numbered (variable
-<a name="IDX58"></a>
+<a name="IDX61"></a>
 <code>$NUMBER_SECTIONS</code>).  This is the default.
 </p>
 </dd>
-<dt> <a name="IDX59"></a>
-<p><samp>`--toc-links'</samp>
+<dt> <a name="IDX62"></a>
+<p>&lsquo;<samp>--toc-links</samp>&rsquo;
 </p></dt>
 <dd><p>If this option is set, links from headings to <acronym>TOC</acronym> entries are
-created (variable <a name="IDX60"></a>
+created (variable <a name="IDX63"></a>
 <code>$TOC_LINKS</code>). Default is false.
 </p></dd>
 </dl>
 
 <hr size="6">
 <a name="Expanding-TeX-regions"></a>
-<a name="SEC12"></a>
+<a name="SEC16"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC11" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC13" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC15" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC17" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC5" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC14" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC18" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 4.7 Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML </h2>
@@ -957,117 +1128,122 @@
 <p>It is possible to use <a href="http://www.latex2html.org/">LaTeX2HTML</a>  
 to process <code>@tex</code> regions and <code>@math{}</code> commands.  This is an
 attractive way to display mathematical constructs in the <acronym>HTML</acronym>
-manual.  The <a name="IDX61"></a>
-<samp>`--l2h'</samp> option activates this feature (variable
+manual.  The <a name="IDX64"></a>
+&lsquo;<samp>--l2h</samp>&rsquo; option activates this feature (variable
 <var>$L2H</var>).  It is usually desirable to expand <code>@tex</code> sections when this
-option is specified (see section <a href="#SEC8">Specifying which regions get expanded</a>). The default is not to use this
+option is specified (see section <a href="#SEC12">Specifying which regions get expanded</a>). The default is not to use this
 feature.
 </p>
-<p>The <a name="IDX62"></a>
-<samp>`--l2h-l2h=<var>program</var>'</samp> option enables changing the name/location
+<p>The <a name="IDX65"></a>
+&lsquo;<samp>--l2h-l2h=<var>program</var></samp>&rsquo; option enables changing the name/location
 of the LaTeX2HTML program processing TeX regions (variable
-<a name="IDX63"></a>
+<a name="IDX66"></a>
 <code>$L2H_L2H</code>). The default is <code>latex2html</code>.
 </p>
-<a name="IDX64"></a>
-<p><samp>`--l2h-tmp'</samp> sets the directory used for temporary
-files, this name shouldn't contain a dot <samp>`.'</samp>
-(variable is <a name="IDX65"></a>
+<a name="IDX67"></a>
+<p>&lsquo;<samp>--l2h-tmp</samp>&rsquo; sets the directory used for temporary
+files, this name shouldn't contain a dot &lsquo;<samp>.</samp>&rsquo;
+(variable is <a name="IDX68"></a>
 <code>$L2H_TMP</code>). Defaults to the current dir.
 </p>
-<p>The file specified by <a name="IDX66"></a>
-<samp>`--l2h-file'</samp> is
+<p>The file specified by <a name="IDX69"></a>
+&lsquo;<samp>--l2h-file</samp>&rsquo; is
 used as LaTeX2HTML init file. It is searched at the same places than
-init files (see section <a href="#SEC13">Use initialization files for fine tuning</a>), and the default is <tt>`l2h.init'</tt>.
+init files (see section <a href="#SEC17">Use initialization files for fine tuning</a>), and the default is &lsquo;<tt>l2h.init</tt>&rsquo;.
 </p>
 <hr size="6">
 <a name="Using-init-files"></a>
-<a name="SEC13"></a>
+<a name="SEC17"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC12" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC14" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC16" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC18" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC5" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC14" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC18" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 4.8 Use initialization files for fine tuning </h2>
 
 
 <p>Initialization variables are read first from
-<tt>`/usr/local/share/texi2html/Config'</tt> (the exact location being
-changeable with the <a name="IDX67"></a>
-<samp>`--pkgdatadir=dir'</samp> option of the
+&lsquo;<tt>/usr/local/share/texi2html/Config</tt>&rsquo; (the exact location being
+changeable with the <a name="IDX70"></a>
+&lsquo;<samp>--pkgdatadir=dir</samp>&rsquo; option of the
 <code>configure</code> script, see <a href="#SEC4">Installation of <code>texi2html</code></a>),
-<tt>`/usr/local/etc/texi2html/Config'</tt> (the exact location being
-changeable with the <a name="IDX68"></a>
-<samp>`--sysconfdir=dir'</samp> option of the
-<code>configure</code> script, see <a href="#SEC4">Installation of <code>texi2html</code></a>), from <tt>`./Config'</tt>
-then from <tt>`$HOME/.texi2html/Config'</tt>. Any command-line option 
+&lsquo;<tt>/usr/local/etc/texi2html/Config</tt>&rsquo; (the exact location being
+changeable with the <a name="IDX71"></a>
+&lsquo;<samp>--sysconfdir=dir</samp>&rsquo; option of the
+<code>configure</code> script, see <a href="#SEC4">Installation of <code>texi2html</code></a>), from &lsquo;<tt>./Config</tt>&rsquo;
+then from &lsquo;<tt>$HOME/.texi2html/Config</tt>&rsquo;. Any command-line option 
 can override the corresponding option set in init file, and the 
-option <a name="IDX69"></a>
-<samp>`--init-file'</samp> specifies an init file to be loaded, with 
+option <a name="IDX72"></a>
+&lsquo;<samp>--init-file</samp>&rsquo; specifies an init file to be loaded, with 
 later settings overriding earlier ones.
 </p>
-<p>The init files specified with <a name="IDX70"></a>
-<samp>`--init-file'</samp> are searched
-first in the current directory, then in the <tt>`$HOME/.texi2html/'</tt>
-directory, in the <tt>`/usr/local/etc/texi2html/'</tt> directory and lastly 
-in the <tt>`/usr/local/share/texi2html/'</tt> directory.
+<p>The init files specified with <a name="IDX73"></a>
+&lsquo;<samp>--init-file</samp>&rsquo; are searched
+first in the current directory, then in the &lsquo;<tt>$HOME/.texi2html/</tt>&rsquo;
+directory, in the &lsquo;<tt>/usr/local/etc/texi2html/</tt>&rsquo; directory and lastly 
+in the &lsquo;<tt>/usr/local/share/texi2html/</tt>&rsquo; directory.
 </p>
 <p>A file is also included based on the language selected,
-by <a name="IDX71"></a>
-<code>$LANG</code>, <a name="IDX72"></a>
-<samp>`--lang'</samp> or <code>@documentlanguage</code>.
-If no language was selected <samp>`en'</samp> is considered to be
+by <a name="IDX74"></a>
+<code>$LANG</code>, <a name="IDX75"></a>
+&lsquo;<samp>--lang</samp>&rsquo; or <code>@documentlanguage</code>.
+If no language was selected &lsquo;<samp>en</samp>&rsquo; is considered to be
 the language. All the files with name the language name in 
-<tt>`/usr/local/share/texi2html/i18n/'</tt>, 
-<tt>`/usr/local/etc/texi2html/i18n/'</tt>,
-<tt>`$HOME/.texi2html/i18n/'</tt> and then <tt>`./i18n/'</tt> are included.
+&lsquo;<tt>/usr/local/share/texi2html/i18n/</tt>&rsquo;, 
+&lsquo;<tt>/usr/local/etc/texi2html/i18n/</tt>&rsquo;,
+&lsquo;<tt>$HOME/.texi2html/i18n/</tt>&rsquo; and then &lsquo;<tt>./i18n/</tt>&rsquo; are included.
 </p>
 <p>The default initialization options are defined in the
-<tt>`texi2html.init'</tt> file contained in the <code>texi2html</code>
+&lsquo;<tt>texi2html.init</tt>&rsquo; file contained in the <code>texi2html</code>
 distribution (which gets included near the beginning of the
 <code>texi2html</code> script that gets installed).
 </p>
 <p>To customize <code>texi2html</code> it is best if you copy the
-appropriate sections from the <tt>`texi2html.init'</tt>
+appropriate sections from the &lsquo;<tt>texi2html.init</tt>&rsquo;
 contents into an appropriate local initialization file,
 make the necessary changes there, and then have
 <code>texi2html</code> read this initialization file by one of
 the means described above.
 </p>
+<p>Some init files are provided with <code>texi2html</code>, for example
+&lsquo;<tt>book.init</tt>&rsquo; which produces an output more in line with 
+what could be in a book, or &lsquo;<tt>chm.init</tt>&rsquo; outputs files
+that can be used to produce a CHM file.
+</p>
 <hr size="6">
 <a name="Initialization-files"></a>
-<a name="SEC14"></a>
+<a name="SEC18"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC13" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC15" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC17" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC19" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h1 class="chapter"> 5. Overview of initialization files content and loading </h1>
 
 <p>The initialization files are <code>perl</code> files, read as explained 
-in <a href="#SEC13">Use initialization files for fine tuning</a>. You don't need to know much of <code>perl</code>
+in <a href="#SEC17">Use initialization files for fine tuning</a>. You don't need to know much of <code>perl</code>
 to do some simple changes in variable values, however, to be able to 
 really take advantage of all the features of the initialization file,
 a good knowledge of <code>perl</code> is required.
@@ -1078,7 +1254,7 @@
 the <acronym>HTML</acronym> manual. You should be able to change the value of some  
 normal variables without a deep knowledge of <code>perl</code>, by looking
 at the existing examples. The possible mistakes in that case could be
-omitted <samp>`;'</samp>, and bad quoting.
+omitted &lsquo;<samp>;</samp>&rsquo;, and bad quoting.
 </p>
 <p>Initialization file are loaded from the main program by
 the mean of a <code>require</code>, while in the <code>Texi2HTML::Config</code>
@@ -1094,34 +1270,89 @@
 of the main program are still in the <code>main</code> namespace.
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#SEC15">5.1 Redefining functions in initialization files</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Function redefinition is achieved with 
+<tr><td align="left" valign="top"><a href="#SEC19">5.1 Setting the encodings</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
+<tr><td align="left" valign="top"><a href="#SEC20">5.2 Redefining functions in initialization files</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Function redefinition is achieved with 
                               redefinition of references on functions.
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC16">5.2 Conventions used for function prototypes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Conventions used in that manual for function 
+<tr><td align="left" valign="top"><a href="#SEC21">5.3 Conventions used for function prototypes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Conventions used in that manual for function 
                               reference prototypes display.
 </td></tr>
 </table>
 
 <hr size="6">
+<a name="Encodings"></a>
+<a name="SEC19"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC18" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC20" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC18" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC18" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 5.1 Setting the encodings </h2>
+
+<p>There are four encodings relevant for <code>texi2html</code>, they are
+associated with corresponding variables:
+</p><ol>
+<li> The encoding appearing in <code>@documentencoding</code>. The associated 
+value overrides the <a name="IDX76"></a>
+<code>$DOCUMENT_ENCODING</code> variable value.
+</li><li> The texinfo files encoding, associated with the variable
+<a name="IDX77"></a>
+<code>$IN_ENCODING</code>. This variable is overriden when 
+<code>$DOCUMENT_ENCODING</code> is set, if the encoding is supported by perl.
+</li><li> The out files encoding, associated with the variable
+<a name="IDX78"></a>
+<code>$OUT_ENCODING</code>. If not defined, the value of
+<code>$ENCODING_NAME</code> 
+or 
+<code>$IN_ENCODING</code>
+is used if one of these variables is set.
+</li><li> The encoding advertized in out files, associated with the variable
+<a name="IDX79"></a>
+<code>$ENCODING_NAME</code>. If unset the value of this variable is based on the
+other ENCODING variables, and if they are all undefined, the variable
+<a name="IDX80"></a>
+<code>$DEFAULT_ENCODING</code> is used.
+</li></ol>
+
+<p>The values for the encoding related variables are set in the default 
+<code>init_out</code> function reference (see section <a href="#SEC37">Preparing the output</a>).
+</p>
+<p>In general the <code>$DOCUMENT_ENCODING</code> and <code>$IN_ENCODING</code> are
+set to the right values, and to force a given encoding for the output, the
+<code>$ENCODING_NAME</code> value may be set. The current default output encoding
+is UTF-8.
+</p>
+<hr size="6">
 <a name="Redefining-functions"></a>
-<a name="SEC15"></a>
+<a name="SEC20"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC14" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC16" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC19" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC21" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC14" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC14" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC18" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC18" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
-<h2 class="section"> 5.1 Redefining functions in initialization files </h2>
+<h2 class="section"> 5.2 Redefining functions in initialization files </h2>
 
 <p>To redefine a function you must replace the corresponding funtion
 reference with a reference on your function. 
@@ -1134,7 +1365,7 @@
 </p>
 <p>For example the function
 reference corresponding with the function called when doing an
-anchor is called <a name="IDX73"></a>
+anchor is called <a name="IDX81"></a>
 <code>$anchor</code>. Thus if you want to override the
 corresponding function
 you could write:
@@ -1147,26 +1378,27 @@
 # process arguments and return an html anchor
 }
 </pre></td></tr></table>
+
 <hr size="6">
 <a name="Function-prototypes"></a>
-<a name="SEC16"></a>
+<a name="SEC21"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC15" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC20" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC14" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC14" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC18" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC18" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
-<h2 class="section"> 5.2 Conventions used for function prototypes </h2>
+<h2 class="section"> 5.3 Conventions used for function prototypes </h2>
 
 <p>As the functions are defined by a reference name, we will always
 use the reference name in function prototypes. For the function arguments
@@ -1174,11 +1406,11 @@
 <code>\%hash</code> for a reference on a hash.
 </p>
 <p>Thus, the prototype for the function associated with the function
-reference <samp>`$formatting_function'</samp> will be:
+reference &lsquo;<samp>$formatting_function</samp>&rsquo; will be:
 </p>
 <dl>
 <dt><u>Function Reference:</u> $text <b>formatting_function</b><i> $arg1 \@arg2</i>
-<a name="IDX74"></a>
+<a name="IDX82"></a>
 </dt>
 <dd><p><code>formatting_function</code> takes as first argument <var>$arg2</var>,
 as second argument a reference on an array <var>\@arg2</var>
@@ -1198,81 +1430,82 @@
     return $formatted_text
 }
 </pre></td></tr></table>
+
 <hr size="6">
 <a name="Changing-the-page-layout"></a>
-<a name="SEC17"></a>
+<a name="SEC22"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC16" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC18" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC21" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC23" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC14" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC18" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h1 class="chapter"> 6. Fine tuning of the page layout </h1>
 
 <p>Some features of the page layout might be specified with command line
 options, the corresponding variables are described in 
-<a href="#SEC10">Page layout related command line options</a>.
+<a href="#SEC14">Page layout related command line options</a>.
 Fine tuning of the page layout may be achieved
 with redefinition of other variables and function references in the 
 initialization files.
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#SEC18">6.1 The different categories of pages and sectioning elements</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       The different categories of pages.
+<tr><td align="left" valign="top"><a href="#SEC23">6.1 The different categories of pages and sectioning elements</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       The different categories of pages.
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC19">6.2 Page layout and navigation panel overview</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           The elements of a page.
+<tr><td align="left" valign="top"><a href="#SEC24">6.2 Page layout and navigation panel overview</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           The elements of a page.
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC21">6.3 Customization of the navigation panels buttons</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          How to change the navigation panel.
+<tr><td align="left" valign="top"><a href="#SEC26">6.3 Customization of the navigation panels buttons</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          How to change the navigation panel.
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC25">6.4 Main program variables and usefull functions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         The available main program variables and some 
+<tr><td align="left" valign="top"><a href="#SEC30">6.4 Main program variables and usefull functions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         The available main program variables and some 
                               usefull functions from the main program.
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC32">6.5 Preparing the output</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Setting variables before the document
+<tr><td align="left" valign="top"><a href="#SEC37">6.5 Preparing the output</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     Setting variables before the document
                               production but after the texinfo parsing.
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC33">6.6 Finalizing the output</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Cleaning after document generation.
+<tr><td align="left" valign="top"><a href="#SEC38">6.6 Finalizing the output</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       Cleaning after document generation.
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC34">6.7 Customizing the <code>texi2html</code> css lines</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                       Customizing css lines.
+<tr><td align="left" valign="top"><a href="#SEC39">6.7 Customizing the <code>texi2html</code> css lines</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                       Customizing css lines.
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC35">6.8 Customizing the page header</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC40">6.8 Customizing the page header</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC36">6.9 Customizing the sections</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC41">6.9 Customizing the sections</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC37">6.10 Customizing the page footer</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC42">6.10 Customizing the page footer</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC38">6.11 Special pages formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Customizing table of contents, top, about page.
+<tr><td align="left" valign="top"><a href="#SEC43">6.11 Special pages formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Customizing table of contents, top, about page.
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC45">6.12 Customizing the file names</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
-<tr><td align="left" valign="top"><a href="#SEC46">6.13 Generation of external files for index entries</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Putting index entries in external files.
+<tr><td align="left" valign="top"><a href="#SEC51">6.12 Customizing the file names</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
+<tr><td align="left" valign="top"><a href="#SEC52">6.13 Generation of external files for index entries</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Putting index entries in external files.
 </td></tr>
 </table>
 
 <hr size="6">
 <a name="The-different-pages"></a>
-<a name="SEC18"></a>
+<a name="SEC23"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC17" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC19" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC22" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC24" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 6.1 The different categories of pages and sectioning elements </h2>
@@ -1282,7 +1515,7 @@
 <dl compact="compact">
 <dt> <em>Normal elements</em></dt>
 <dd><p>These are normal sections or nodes. Their association with pages is
-determined by the splitting of the document. See section <a href="#SEC6">Specifying where to split the generated document</a>.
+determined by the splitting of the document. See section <a href="#SEC10">Specifying where to split the generated document</a>.
 </p></dd>
 <dt> <em>Top element</em></dt>
 <dd><p>The top element is the higher element in the document structure.
@@ -1306,33 +1539,36 @@
 </li></ol>
 
 <p>The <em>About page</em> shouldn't be present for documents consisting
-in only one sectioning element. The <em>Footnote page</em> should only
+in only one sectioning element, or for documents unsplit and without
+navigation information. The <em>Footnote page</em> should only
 be present if the footnotes appear on a separated page 
-(see section <a href="#SEC10">Page layout related command line options</a>), however a footnote element is present if
+(see section <a href="#SEC14">Page layout related command line options</a>), however a footnote element is present if
 the document isn't split. The <em>Table of contents</em> should only
 be formatted if <code>@contents</code> is present in the document.
 Similarly the <em>Overview</em> should only appear if <code>@shortcontents</code>
-or <code>@summarycontents</code> is present.
+or <code>@summarycontents</code> is present. The Table of contents and 
+the Overview may also be directly included within the document, not
+as separate pages (see section <a href="#SEC46">Table of contents and Short table of contents</a>).
 </p></dd>
 </dl>
 
 <hr size="6">
 <a name="The-page-layout"></a>
-<a name="SEC19"></a>
+<a name="SEC24"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC18" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC21" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC23" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC26" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 6.2 Page layout and navigation panel overview </h2>
@@ -1342,11 +1578,11 @@
 panel with icons or text linking to other sections or pages. Another
 common element is a rule, separating sections or footer. The navigation
 panel and the rules may be part of the sections or part of headers or
-footers. You may use the variables <a name="IDX75"></a>
+footers. You may use the variables <a name="IDX83"></a>
 <code>$SMALL_RULE</code>, 
-<a name="IDX76"></a>
-<code>$DEFAULT_RULE</code>, <a name="IDX77"></a>
-<code>$MIDDLE_RULE</code> and <a name="IDX78"></a>
+<a name="IDX84"></a>
+<code>$DEFAULT_RULE</code>, <a name="IDX85"></a>
+<code>$MIDDLE_RULE</code> and <a name="IDX86"></a>
 <code>$BIG_RULE</code> 
 for rules of different sizes.
 The defaults are 
@@ -1356,6 +1592,7 @@
 $BIG_RULE = '&lt;hr size=&quot;6&quot;&gt;';
 </pre></td></tr></table>
 
+
 <p>In the header some important meta data may be defined, like the
 title or style information, and textual informations may be present
 in comments. All this doesn't appear directly in the displayed 
@@ -1365,7 +1602,7 @@
 called depending on the document splitting. The navigation panel, however,
 can be customized with variables.
 </p>
-<a name="SEC20"></a>
+<a name="SEC25"></a>
 <h3 class="subheading"> Element labels </h3>
 <p><a name="Element-labels"></a>
 </p>
@@ -1378,17 +1615,17 @@
 <code>@unnumbered</code>&hellip;) or by the nodes (in that case the node 
 directions are specified on node line or in menu organization).
 These items are called <em>element labels</em>. They may be associated with 
-a button (see section <a href="#SEC23">Specifying the buttons formatting</a>), and used in the formatting functions 
-(see section <a href="#SEC25">Main program variables and usefull functions</a>).
+a button (see section <a href="#SEC28">Specifying the buttons formatting</a>), and used in the formatting functions 
+(see section <a href="#SEC30">Main program variables and usefull functions</a>).
 </p>
 <p>Here is the list:
 </p>
 <dl compact="compact">
-<dt> <em><samp>`&nbsp;'</samp></em></dt>
+<dt> <em>&lsquo;<samp>&nbsp;</samp>&rsquo;</em></dt>
 <dd><p>An empty button
 </p></dd>
 <dt> <em>Top</em></dt>
-<dd><p>Top element. The associated name is <a name="IDX79"></a>
+<dd><p>Top element. The associated name is <a name="IDX87"></a>
 <code>$TOP_HEADING</code> if that variable is 
 defined. This variable is not set by default.
 </p></dd>
@@ -1409,7 +1646,7 @@
 </p></dd>
 <dt> <em>Index</em></dt>
 <dd><p>The first chapter with <code>@printindex</code>. The associated name 
-is  <a name="IDX80"></a>
+is  <a name="IDX88"></a>
 <code>$INDEX_CHAPTER</code>, if the variable is set. This variable is not set
 by default.
 </p></dd>
@@ -1453,21 +1690,21 @@
 
 <hr size="6">
 <a name="Navigation-panel"></a>
-<a name="SEC21"></a>
+<a name="SEC26"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC19" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC22" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC24" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC27" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 6.3 Customization of the navigation panels buttons </h2>
@@ -1478,32 +1715,32 @@
 doing the navigation panel formatting.
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#SEC22">6.3.1 Controlling the navigation panel panel at a high level</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Variables controlling the navigation panel
+<tr><td align="left" valign="top"><a href="#SEC27">6.3.1 Controlling the navigation panel panel at a high level</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      Variables controlling the navigation panel
                                    at a global level
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC23">6.3.2 Specifying the buttons formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC28">6.3.2 Specifying the buttons formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC24">6.3.3 Changing the navigation panel formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC29">6.3.3 Changing the navigation panel formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 </table>
 
 <hr size="6">
 <a name="General-purpose-variables"></a>
-<a name="SEC22"></a>
+<a name="SEC27"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC21" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC23" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC26" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC28" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC21" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC26" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 6.3.1 Controlling the navigation panel panel at a high level </h3>
@@ -1513,43 +1750,43 @@
 </p>
 <dl compact="compact">
 <dt> <code>$VERTICAL_HEAD_NAVIGATION</code>
-<a name="IDX81"></a>
+<a name="IDX89"></a>
 </dt>
 <dd><p>A vertical navigation panel will be used for the header navigation 
 panel if this variable is true.
 </p></dd>
 <dt> <code>$ICONS</code>
-<a name="IDX82"></a>
+<a name="IDX90"></a>
 </dt>
 <dd><p>Icons are used instead of
 textual buttons if this variable is true.
 </p></dd>
 <dt> <code>$SECTION_NAVIGATION</code>
-<a name="IDX83"></a>
+<a name="IDX91"></a>
 </dt>
 <dd><p>If this variable is false there is no section navigation, no navigation 
 panels for the elements within the pages, only at 
-the beginning and the end of the page (see section <a href="#SEC10">Page layout related command line options</a>).
+the beginning and the end of the page (see section <a href="#SEC14">Page layout related command line options</a>).
 </p></dd>
 </dl>
 
 <hr size="6">
 <a name="Button-specifications"></a>
-<a name="SEC23"></a>
+<a name="SEC28"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC22" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC24" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC27" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC29" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC21" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC26" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 6.3.2 Specifying the buttons formatting </h3>
@@ -1560,38 +1797,38 @@
 </p>
 <dl compact="compact">
 <dt> <code>@SECTION_BUTTONS</code>
-<a name="IDX84"></a>
+<a name="IDX92"></a>
 </dt>
 <dd><p>This array is used for the navigation panel buttons present at the begining
 of sectioning elements. If split at node or section they are also used 
 at the page footer, and in the case of section navigation at the page header.
 </p></dd>
 <dt> <code>@SECTION_FOOTER_BUTTONS</code>
-<a name="IDX85"></a>
+<a name="IDX93"></a>
 </dt>
 <dt> <code>@NODE_FOOTER_BUTTONS</code>
-<a name="IDX86"></a>
+<a name="IDX94"></a>
 </dt>
 <dd><p>This array is used for the navigation panel buttons present at the footer
 of pages when split at node or at section. 
 </p>
-<p>If <a name="IDX87"></a>
+<p>If <a name="IDX95"></a>
 <code>$WORDS_IN_PAGE</code> is set and the output is split at nodes, these 
-buttons are only present if there are more than <a name="IDX88"></a>
+buttons are only present if there are more than <a name="IDX96"></a>
 <code>$WORDS_IN_PAGE</code>
 words in the sectioning element text. This counting is very rough and include
 punctuation marks, html elements, numbers.  The default is to include the
 buttons after 300 words.
 </p></dd>
 <dt> <code>@CHAPTER_BUTTONS</code>
-<a name="IDX89"></a>
+<a name="IDX97"></a>
 </dt>
 <dd><p>This array is used for the buttons appearing at the page footer if split at 
 chapter, and at the page header if split at chapter and there is no section
 navigation.
 </p></dd>
 <dt> <code>@MISC_BUTTONS</code>
-<a name="IDX90"></a>
+<a name="IDX98"></a>
 </dt>
 <dd><p>These buttons appear at the beginning of special and sections  
 and at the end of these section pages if the output is split.
@@ -1612,7 +1849,7 @@
 </p></dd>
 <dt> <em>reference on a scalar</em></dt>
 <dd><p>The scalar value is printed. For some possibly
-usefull scalars, <a href="#SEC26">Accessing elements informations</a>.
+usefull scalars, <a href="#SEC31">Accessing elements informations</a>.
 </p></dd>
 <dt> <em>reference on an array</em></dt>
 <dd><p>In this case the first array element should be a reference on text and the 
@@ -1623,48 +1860,54 @@
 <p>For example if the buttons array element is
 </p><table><tr><td>&nbsp;</td><td><pre class="example">[ 'Next', \$Texi2HTML::NODE{Next} ] 
 </pre></td></tr></table>
+
 <p>The button will be a link to the next section with text 
-<a name="IDX91"></a>
+<a name="IDX99"></a>
 <code>$Texi2HTML::NODE{Next}</code>.
 </p></dd>
 <dt> <em>element label</em></dt>
 <dd><p>If icons are not used, the button is a link to the corresponding
 element which text is defined by the value associated with the 
-element label in the <a name="IDX92"></a>
+element label in the <a name="IDX100"></a>
 <code>%NAVIGATION_TEXT</code> hash, surrounded
-by <samp>`['</samp> and <samp>`]'</samp>. If the element label is <samp>` '</samp>, there is
-no <samp>`['</samp> and <samp>`]'</samp>. 
+by &lsquo;<samp>[</samp>&rsquo; and &lsquo;<samp>]</samp>&rsquo;. If the element label is &lsquo;<samp> </samp>&rsquo;, there is
+no &lsquo;<samp>[</samp>&rsquo; and &lsquo;<samp>]</samp>&rsquo;. 
 The element of the <code>%NAVIGATION_TEXT</code> hash are defined 
 dynamically, in the <code>init_out</code> function reference
-(see section <a href="#SEC32">Preparing the output</a>).
+(see section <a href="#SEC37">Preparing the output</a>).
 </p>
 <p>If icons are used, the button is an image with file determined by
-the value associated with the element label in the <a name="IDX93"></a>
+the value associated with the element label in the <a name="IDX101"></a>
 <code>%ACTIVE_ICONS</code>
-hash if the the link really leads to an element, or in the <a name="IDX94"></a>
+hash if the the link really leads to an element, or in the <a name="IDX102"></a>
 <code>%PASSIVE_ICONS</code>
 hash if there is no element to link to. Of course if there is a link to the 
-element the icon links to that element.
+element the icon links to that element. The button name and 
+the button description are used in HTML attributes to have a textual 
+description of the icon. The corresponding strings are in 
+<a name="IDX103"></a>
+<code>%BUTTONS_NAME</code>  for the button name and  <code>%NAVIGATION_TEXT</code>
+for the description.
 </p></dd>
 </dl>
 
 <hr size="6">
 <a name="Panel-formatting-function"></a>
-<a name="SEC24"></a>
+<a name="SEC29"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC23" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC25" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC28" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC30" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC21" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC26" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 6.3.3 Changing the navigation panel formatting </h3>
@@ -1676,7 +1919,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> <b>print_navigation</b><i> $filehandle \@buttons $vertical</i>
-<a name="IDX95"></a>
+<a name="IDX104"></a>
 </dt>
 <dd><p><var>$filehandle</var> is the opened filehandle the function should write to.
 <var>\@buttons</var> is an array reference which should hold the specification of 
@@ -1686,21 +1929,21 @@
 
 <hr size="6">
 <a name="Program-variables"></a>
-<a name="SEC25"></a>
+<a name="SEC30"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC24" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC26" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC29" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC31" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 6.4 Main program variables and usefull functions </h2>
@@ -1711,34 +1954,34 @@
 layout element.
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#SEC26">6.4.1 Accessing elements informations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Accessing information related with the 
+<tr><td align="left" valign="top"><a href="#SEC31">6.4.1 Accessing elements informations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Accessing information related with the 
                                 different elements   
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC27">6.4.2 Accessing global informations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Accessing global informations, like date, 
+<tr><td align="left" valign="top"><a href="#SEC32">6.4.2 Accessing global informations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         Accessing global informations, like date, 
                                 title&hellip;
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC31">6.4.3 Function usefull in page formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            main program usefull functions
+<tr><td align="left" valign="top"><a href="#SEC36">6.4.3 Function usefull in page formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">            main program usefull functions
 </td></tr>
 </table>
 
 
 <hr size="6">
 <a name="Elements-hashes"></a>
-<a name="SEC26"></a>
+<a name="SEC31"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC25" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC27" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC30" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC32" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC25" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC30" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 6.4.1 Accessing elements informations </h3>
@@ -1748,22 +1991,22 @@
 </p>
 <dl compact="compact">
 <dt> <code>%Texi2HTML::NAME</code>
-<a name="IDX96"></a>
+<a name="IDX105"></a>
 </dt>
 <dd><p>The formatted element name
 </p></dd>
 <dt> <code>%Texi2HTML::HREF</code>
-<a name="IDX97"></a>
+<a name="IDX106"></a>
 </dt>
 <dd><p>The element hypertext reference
 </p></dd>
 <dt> <code>%Texi2HTML::NODE</code>
-<a name="IDX98"></a>
+<a name="IDX107"></a>
 </dt>
 <dd><p>The element node name
 </p></dd>
 <dt> <code>%Texi2HTML::NO_TEXI</code>
-<a name="IDX99"></a>
+<a name="IDX108"></a>
 </dt>
 <dd><p>The element name after removal of texi commands
 </p></dd>
@@ -1771,21 +2014,21 @@
 
 <hr size="6">
 <a name="Global-informations"></a>
-<a name="SEC27"></a>
+<a name="SEC32"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC26" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC31" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC31" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC36" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC25" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC30" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 6.4.2 Accessing global informations </h3>
@@ -1793,9 +2036,9 @@
 <p>Three kinds of global informations are available, miscalleneous global
 strings, flags set by <code>@set</code> and special flags and section lines.
 </p>
-<a name="SEC28"></a>
+<a name="SEC33"></a>
 <h4 class="subsubheading"> Global strings </h4>
-<p>The <a name="IDX100"></a>
+<p>The <a name="IDX109"></a>
 <code>%Texi2HTML::THISDOC</code> hash holds some global informations:
 </p>
 <dl compact="compact">
@@ -1834,14 +2077,72 @@
 <dt> <code>file_base_name</code></dt>
 <dd><p>base name of the texinfo manual file.
 </p></dd>
+<dt> <code>filename</code></dt>
+<dd><p>This is a reference on a hash that holds the filenames for special elements.
+These files may not be used in certain cases, for example the <code>toc</code>
+element file name may not be relevant if table of contents is not output 
+separately.
+The keys are
+</p><dl compact="compact">
+<dt> <code>doc</code></dt>
+<dd><p>the document file if not split, if split should be the top element file. 
+</p></dd>
+<dt> <code>top</code></dt>
+<dd><p>Top element file name.
+</p></dd>
+<dt> <code>toc</code> </dt>
+<dd><p>Table of contents element file name.
+</p></dd>
+<dt> <code>stoc</code></dt>
+<dd><p>Overview (also called short table of contents) element file name.
+</p></dd>
+<dt> <code>about</code></dt>
+<dd><p>About element file name.
+</p></dd>
+<dt> <code>foot</code></dt>
+<dd><p>Footnotes element file name.
+</p></dd>
+</dl>
+</dd>
 <dt> <code>destination_directory</code></dt>
 <dd><p>Destination directory for the resulting files.
 </p></dd>
+<dt> <code>extension</code></dt>
+<dd><p>Extension for the output files.
+</p></dd>
 <dt> <code>toc_file</code></dt>
-<dd><p>The file name of the table of contents.
+<dd><p>The file name of the table of contents, should always be valid, even 
+when table of contents are output directly in the document.
+</p></dd>
+<dt> <code>inline_contents</code></dt>
+<dd><p>A reference on a hash containing two key, one for each type of table
+of contents:
+</p><dl compact="compact">
+<dt> <code>contents</code></dt>
+<dd><p>The associated value is a 
+reference on an array containg the line resulting from formatting
+the table of contents, including a heading and a reference.
+</p></dd>
+<dt> <code>shortcontents</code></dt>
+<dd><p>The associated value is a 
+reference on an array containg the line resulting from formatting
+the short table of contents, including a heading and a reference.
 </p></dd>
+</dl>
+</dd>
 <dt> <code>today</code></dt>
-<dd><p>The date.
+<dd><p>The date. May be overriden by <code>$DATE</code>.
+</p></dd>
+<dt> <code>user</code></dt>
+<dd><p>The user running <code>texi2html</code>. Maybe overriden by <code>$USER</code>.
+</p></dd>
+<dt> <code>css_import_lines</code></dt>
+<dd><p>reference on an array containing the <code>@import</code> lines of 
+<acronym>CSS</acronym> files.
+</p></dd>
+<dt> <code>css_lines</code></dt>
+<dd><p>reference on an array containing the normal lines of 
+<acronym>CSS</acronym> files.
 </p></dd>
 </dl>
 
@@ -1849,70 +2150,78 @@
 name: kbdinputstyle, paragraphindent, setchapternewpage, headings,
 footnotestyle,
  exampleindent, firstparagraphindent, everyheading, everyfooting,
- evenheading, evenfooting, oddheading, oddfooting.
+ evenheading, evenfooting, oddheading, oddfooting, setcontentsaftertitlepage,
+setshortcontentsaftertitlepage, frenchspacing.
+If the command doesn't have any arg, it will be true is it was set.
 </p>
 
-<a name="SEC29"></a>
+<a name="SEC34"></a>
 <h4 class="subsubheading"> Flags </h4>
 <p>Flags defined by <code>@set</code> may be accessed through the 
-<a name="IDX101"></a>
+<a name="IDX110"></a>
 <code>%main::value</code> hash. The key is the flag name, the value is the
 flag value at the end of the document. 
 </p>
 <p>Special flags are set by the main program. They correspond with a texinfo
 command, like <code>@setfilename</code>, or <code>@settitle</code>, 
 <code>@author</code>&hellip; The corresponding flag is the command name with 
-<samp>`_'</samp> appended, for example, <code>_titlefont</code> corresponds with 
+&lsquo;<samp>_</samp>&rsquo; appended, for example, <code>_titlefont</code> corresponds with 
 <code>@titlefont</code>. Like other flags they are available in 
-<a name="IDX102"></a>
+<a name="IDX111"></a>
 <code>%main::value</code>.
 </p>
 
-<a name="SEC30"></a>
+<a name="SEC35"></a>
 <h4 class="subsubheading"> Section lines </h4>
 
 <p>The following array references or arrays holds formatted lines:
 </p>
 <dl compact="compact">
 <dt> <code>$Texi2HTML::THIS_SECTION</code>
-<a name="IDX103"></a>
+<a name="IDX112"></a>
 </dt>
 <dd><p>Lines of the current element.
 </p></dd>
 <dt> <code>$Texi2HTML::THIS_HEADER</code>
-<a name="IDX104"></a>
+<a name="IDX113"></a>
 </dt>
 <dd><p>Lines of the current element appearing before the element label (anchors).
 </p></dd>
 <dt> <code>$Texi2HTML::OVERVIEW</code>
-<a name="IDX105"></a>
+<a name="IDX114"></a>
 </dt>
-<dd><p>Lines of short table of contents. See section <a href="#SEC38">Special pages formatting</a>.
+<dd><p>Lines of short table of contents. See section <a href="#SEC43">Special pages formatting</a>.
 </p></dd>
 <dt> <code>$Texi2HTML::TOC_LINES</code>
-<a name="IDX106"></a>
+<a name="IDX115"></a>
 </dt>
-<dd><p>Lines of table of contents. See section <a href="#SEC38">Special pages formatting</a>.
+<dd><p>Lines of table of contents. See section <a href="#SEC43">Special pages formatting</a>.
+</p></dd>
+<dt> <code>$Texi2HTML::TITLEPAGE</code>
+<a name="IDX116"></a>
+</dt>
+<dd><p>The title page formatted with special title commands (<code>@author</code>,
+<code>@title</code>) expanded. See section <a href="#SEC49">Formatting of title page</a>.
 </p></dd>
 </dl>
 
 <hr size="6">
 <a name="Global-functions"></a>
-<a name="SEC31"></a>
+<a name="SEC36"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC27" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC32" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC32" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC37" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC25" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC30" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 6.4.3 Function usefull in page formatting </h3>
@@ -1922,34 +2231,34 @@
 </p>
 <dl>
 <dt><u>Function:</u> $words_number <b>main::print_lines</b><i> $filehandle \@lines_array</i>
-<a name="IDX107"></a>
+<a name="IDX117"></a>
 </dt>
 <dd><p><var>$filehandle</var> is the opened filehandle the function should write to.
 <var>\@lines_array</var> is the array line the function should write to the file.
-If this argument is omitted, the function uses <a name="IDX108"></a>
+If this argument is omitted, the function uses <a name="IDX118"></a>
 <code>$Texi2HTML::THIS_SECTION</code>.
 <var>$words_number</var> is the number of words in the array, only defined if
-split at nodes and <a name="IDX109"></a>
+split at nodes and <a name="IDX119"></a>
 <code>$WORDS_IN_PAGE</code> is defined.
 </p></dd></dl>
 
 <hr size="6">
 <a name="Output-initialization"></a>
-<a name="SEC32"></a>
+<a name="SEC37"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC31" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC33" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC36" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC38" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 6.5 Preparing the output </h2>
@@ -1964,20 +2273,24 @@
 texinfo processing and before document generation:
 </p>
 <dl>
-<dt><u>Function Reference:</u> $encoding <b>init_out</b>
-<a name="IDX110"></a>
+<dt><u>Function Reference:</u> <b>init_out</b>
+<a name="IDX120"></a>
 </dt>
 <dd><p>This function perform the initialization of variables and any other
-task before document outputting. It returns the encoding used for the
-output files.
+task before document outputting. 
 </p></dd></dl>
 
-<p>In the default case the <a name="IDX111"></a>
-<code>$BODYTEXT</code> (see section <a href="#SEC35">Customizing the page header</a>) 
-and the hashes <a name="IDX112"></a>
-<code>%NAVIGATION_TEXT</code> (see section <a href="#SEC23">Specifying the buttons formatting</a>) and  
-<a name="IDX113"></a>
-<code>%BUTTONS_GOTO</code> (see section <a href="#SEC43">Formatting of about text</a>) are initialized.
+<p>In the default case the <a name="IDX121"></a>
+<code>$BODYTEXT</code> (see section <a href="#SEC40">Customizing the page header</a>) 
+and the hashes <a name="IDX122"></a>
+<code>%NAVIGATION_TEXT</code>,
+<a name="IDX123"></a>
+<code>%BUTTONS_NAME</code>  (see section <a href="#SEC28">Specifying the buttons formatting</a>),   
+<a name="IDX124"></a>
+<code>%BUTTONS_GOTO</code> (see section <a href="#SEC48">Formatting of about text</a>) are initialized.
+Indeed the initialization of these variables is dependent upon 
+the document language selection. Similarly the encoding variables are set
+based on the information now available (see section <a href="#SEC19">Setting the encodings</a>).
 </p>
 <p>To perform the default initializations and also add more code, you could
 do as in the following example (save the default function reference and call 
@@ -1987,28 +2300,28 @@
 $init_out = \&amp;makeinfo_like_init_out;
 sub makeinfo_like_init_out() 
 {
-   my $encoding = &amp;$default_init_out();
+   &amp;$default_init_out();
    $NAVIGATION_TEXT{'Following'} = ' &amp;gt; ';
-   return $encoding;
 }
 </pre></td></tr></table>
+
 <hr size="6">
 <a name="Output-finalization"></a>
-<a name="SEC33"></a>
+<a name="SEC38"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC32" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC34" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC37" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC39" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 6.6 Finalizing the output </h2>
@@ -2019,7 +2332,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> <b>finish_out</b>
-<a name="IDX114"></a>
+<a name="IDX125"></a>
 </dt>
 <dd><p>This function is called after the document generation.
 </p></dd></dl>
@@ -2028,116 +2341,133 @@
 </p>
 <hr size="6">
 <a name="css"></a>
-<a name="SEC34"></a>
+<a name="SEC39"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC33" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC35" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC38" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC40" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 6.7 Customizing the <code>texi2html</code> css lines </h2>
 
+
 <p>It is possible to modify the <code>texi2html</code> css lines by modifying
-the entries or adding to the <a name="IDX115"></a>
+the entries or adding to the <a name="IDX126"></a>
 <code>%css_map</code> hash. Each key is a css
 selector, the corresponding value is a style string.
 </p>
-<p>The whole css text is in the variable <a name="IDX116"></a>
+<p>The whole css text is in the variable <a name="IDX127"></a>
 <code>$CSS_LINES</code>. If this 
 variable is defined the variable value is used instead of being 
-constructed using the <a name="IDX117"></a>
+constructed using the <a name="IDX128"></a>
 <code>%css_map</code> entries. For example if you don't
 want any css entries, set
 </p>
 <table><tr><td>&nbsp;</td><td><pre class="example">$CSS_LINES = '';
 </pre></td></tr></table>
-<p>It is also possible to change completely the way <a name="IDX118"></a>
+
+<p>Another possiblility is to modify the array corresponding with the array 
+reference <code>$Texi2HTML::THISDOC{'css_import_lines'}</code> that contains the
+<code>@import</code> lines of <acronym>CSS</acronym> files, and similarly it is possible
+to modify the array corresponding with the array 
+reference <code>$Texi2HTML::THISDOC{'css_lines'}</code>  that contains 
+the normal <acronym>CSS</acronym> files lines (for details on what corresponds with
+those different lines, see <a href="texinfo.html#HTML-CSS">(texinfo)HTML CSS</a> section `HTML CSS' in <cite>GNU Texinfo</cite>).
+The right place to modify these arrays is in a function appearing in 
+the <code>@command_handler_process</code> array 
+(see section <a href="#SEC91">Bypassing normal formatting</a>). Later, the <acronym>CSS</acronym> lines
+are allready expanded, by the function reference below. 
+</p>
+
+<p>It is also possible to change completely the way <a name="IDX129"></a>
 <code>$CSS_LINES</code> are
 generated by redefining the following function reference:
 </p>
 
 <dl>
 <dt><u>Function Reference:</u> <b>css_lines</b><i> \@import_lines \@rule_lines</i>
-<a name="IDX119"></a>
+<a name="IDX130"></a>
 </dt>
-<dd><p>This function should be used to construct the <a name="IDX120"></a>
+<dd><p>This function should be used to construct the <a name="IDX131"></a>
 <code>$CSS_LINES</code>.
 <var>\@import_lines</var> are the <code>@import</code> lines of the 
-files specified with <a name="IDX121"></a>
-<samp>`--include-css'</samp>, 
+files specified with <a name="IDX132"></a>
+&lsquo;<samp>--include-css</samp>&rsquo;, 
 and <var>\@rule_lines</var> are the css commands lines of these files.
-See section <a href="#SEC11">Customizing the <acronym>HTML</acronym> and text style</a>.
+See section <a href="#SEC15">Customizing the <acronym>HTML</acronym> and text style</a>.
 </p></dd></dl>
 
 <hr size="6">
 <a name="Customizing-header"></a>
-<a name="SEC35"></a>
+<a name="SEC40"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC34" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC36" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC39" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC41" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 6.8 Customizing the page header </h2>
 
 <p>It is possible to add lines to the text within the <code>&lt;head&gt;</code> 
-<acronym>HTML</acronym> elements, by defining the variable <a name="IDX122"></a>
+<acronym>HTML</acronym> elements, by defining the variable <a name="IDX133"></a>
 <code>$EXTRA_HEAD</code>.
 Similarly it is possible to add text just after the <code>&lt;body&gt;</code> 
-element with the variable <a name="IDX123"></a>
+element with the variable <a name="IDX134"></a>
 <code>$AFTER_BODY_OPEN</code>.
 These variables are empty by default.
 </p>
-<p>The encoding of the texinfo file is defined by <a name="IDX124"></a>
-<code>$DOCUMENT_ENCODING</code> 
-if no <code>@documentencoding</code> appears in the document. 
-The default is a <samp>`en-ascii'</samp> encoding.
-The encoding of the resulting document is defined by
-<a name="IDX125"></a>
-<code>$ENCODING</code>. The default is the <code>$DOCUMENT_ENCODING</code>.
+<p>The HTML encoding of the resulting document is defined by
+<a name="IDX135"></a>
+<code>$ENCODING_NAME</code>. If the variable isn't defined,
+the <code>@documentencoding</code> value is used, or the 
+<a name="IDX136"></a>
+<code>$OUT_ENCODING</code> value, if set. <code>$ENCODING_NAME</code> may
+influence the value of <code>$OUT_ENCODING</code>, which corresponds with
+the encoding used when writing to the resulting files.
+See section <a href="#SEC19">Setting the encodings</a>.
 </p>
 <p>The description of the document may be specified in 
-<a name="IDX126"></a>
+<a name="IDX137"></a>
 <code>$DOCUMENT_DESCRIPTION</code>. If this variable is undef, the text 
 associated with <code>@documentdescription</code> is used, and if there isn't 
 such test a default description is constructed using the document title and 
 the name of the first section of the file. 
 </p>
 <p>The <code>&lt;body&gt;</code> element attributes may be set by defining the
-variable <a name="IDX127"></a>
+variable <a name="IDX138"></a>
 <code>$BODYTEXT</code>. If you want to define that variable
 dynamically, you should use the <code>init_out</code> function reference
-(see section <a href="#SEC32">Preparing the output</a>).
+(see section <a href="#SEC37">Preparing the output</a>).
 </p>
 <p>The default functions call the function associated with 
-<a name="IDX128"></a>
+<a name="IDX139"></a>
 <code>$print_head_navigation</code> to format the navigation panel for the 
 page header. Thus you can control parts of the formatting by
 redefining the function reference.
 </p>
 <dl>
 <dt><u>Function Reference:</u> <b>print_head_navigation</b><i> $filehandle \@buttons</i>
-<a name="IDX129"></a>
+<a name="IDX140"></a>
 </dt>
 <dd><p><var>$filehandle</var> is the opened filehandle the function should write to.
 <var>\@buttons</var> is an array reference which should hold the specification of 
@@ -2146,17 +2476,17 @@
 
 <p>If you want even more control, you can have full control over the page header 
 formatting by redefining three function references. The function associated
-with <a name="IDX130"></a>
+with <a name="IDX141"></a>
 <code>$print_page_head</code> is called for all the pages, and after that,
-the function associated with <a name="IDX131"></a>
+the function associated with <a name="IDX142"></a>
 <code>$print_chapter_header</code> is called
 if the document is split at chapters, or the function associated with
-<a name="IDX132"></a>
+<a name="IDX143"></a>
 <code>$print_section_header</code> is called if the document is split at sections.
 </p>
 <dl>
 <dt><u>Function Reference:</u> <b>print_page_head</b><i> $filehandle</i>
-<a name="IDX133"></a>
+<a name="IDX144"></a>
 </dt>
 <dd><p><var>$filehandle</var> is the opened filehandle the function should write to.
 This function should print the page head, including the <code>&lt;body&gt;</code>
@@ -2165,7 +2495,7 @@
 
 <dl>
 <dt><u>Function Reference:</u> <b>print_chapter_header</b><i> $filehandle</i>
-<a name="IDX134"></a>
+<a name="IDX145"></a>
 </dt>
 <dd><p><var>$filehandle</var> is the opened filehandle the function should write to.
 This function is called if the document is split at chapters, after 
@@ -2174,7 +2504,7 @@
 
 <dl>
 <dt><u>Function Reference:</u> <b>print_section_header</b><i> $filehandle</i>
-<a name="IDX135"></a>
+<a name="IDX146"></a>
 </dt>
 <dd><p><var>$filehandle</var> is the opened filehandle the function should write to.
 This function is called if the document is split at sections, after 
@@ -2183,21 +2513,21 @@
 
 <hr size="6">
 <a name="Customizing-section"></a>
-<a name="SEC36"></a>
+<a name="SEC41"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC35" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC37" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC40" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC42" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 6.9 Customizing the sections </h2>
@@ -2207,7 +2537,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> <b>print_section</b><i> $filehandle $first_in_page $previous_is_top</i>
-<a name="IDX136"></a>
+<a name="IDX147"></a>
 </dt>
 <dd><p><var>$filehandle</var> is the opened filehandle the function should write to.
 <var>$first_in_page</var> is true if this section is the first section in the page.
@@ -2218,7 +2548,7 @@
 
 <dl>
 <dt><u>Function Reference:</u> <b>end_section</b><i> $filehandle $last_element_or_before_top</i>
-<a name="IDX137"></a>
+<a name="IDX148"></a>
 </dt>
 <dd><p><var>$filehandle</var> is the opened filehandle the function should write to.
 <var>$last_element_or_before_top</var> is true if this section precedes the top 
@@ -2227,40 +2557,46 @@
 
 <hr size="6">
 <a name="Customizing-footer"></a>
-<a name="SEC37"></a>
+<a name="SEC42"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC36" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC38" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC41" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC43" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 6.10 Customizing the page footer </h2>
 
 <p>It is possible to add text just before the <code>&lt;/body&gt;</code> 
-element with the variable <a name="IDX138"></a>
+element with the variable <a name="IDX149"></a>
 <code>$PRE_BODY_CLOSE</code>. Nothing is added
 by default.
 </p>
 
+<p>A user name and  a date are collected to be output in the footer.
+You can change them by defining <a name="IDX150"></a>
+<code>$USER</code> and <a name="IDX151"></a>
+<code>$DATE</code>
+in the initialization file.
+</p>
 <p>The default functions call the function associated with 
-<a name="IDX139"></a>
+<a name="IDX152"></a>
 <code>$print_foot_navigation</code> to format the navigation panel for the 
 page footer. Thus you can control parts of the formatting by
 redefining the function reference.
 </p>
 <dl>
 <dt><u>Function Reference:</u> <b>print_foot_navigation</b><i> $filehandle \@buttons</i>
-<a name="IDX140"></a>
+<a name="IDX153"></a>
 </dt>
 <dd><p><var>$filehandle</var> is the opened filehandle the function should write to.
 <var>\@buttons</var> is an array reference which should hold the specification of 
@@ -2269,18 +2605,18 @@
 
 <p>If you want even more control, you can have full control the page footer 
 formatting by redefining three function references.
-The function associated with <a name="IDX141"></a>
+The function associated with <a name="IDX154"></a>
 <code>$print_chapter_footer</code> is called
 if the document is split at chapters, or the function associated with
-<a name="IDX142"></a>
+<a name="IDX155"></a>
 <code>$print_section_footer</code> is called if the document is split at sections.
  After that the function associated
-with <a name="IDX143"></a>
+with <a name="IDX156"></a>
 <code>$print_page_foot</code> is called.
 </p>
 <dl>
 <dt><u>Function Reference:</u> <b>print_page_foot</b><i> $filehandle</i>
-<a name="IDX144"></a>
+<a name="IDX157"></a>
 </dt>
 <dd><p><var>$filehandle</var> is the opened filehandle the function should write to.
 This function should print the page foot, including the <code>&lt;/body&gt;</code>
@@ -2289,7 +2625,7 @@
 
 <dl>
 <dt><u>Function Reference:</u> <b>print_chapter_footer</b><i> $filehandle</i>
-<a name="IDX145"></a>
+<a name="IDX158"></a>
 </dt>
 <dd><p><var>$filehandle</var> is the opened filehandle the function should write to.
 This function is called if the document is split at chapters, before 
@@ -2298,7 +2634,7 @@
 
 <dl>
 <dt><u>Function Reference:</u> <b>print_section_footer</b><i> $filehandle</i>
-<a name="IDX146"></a>
+<a name="IDX159"></a>
 </dt>
 <dd><p><var>$filehandle</var> is the opened filehandle the function should write to.
 This function is called if the document is split at sections, before
@@ -2308,21 +2644,21 @@
 
 <hr size="6">
 <a name="Special-pages"></a>
-<a name="SEC38"></a>
+<a name="SEC43"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC37" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC39" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC42" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC44" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 6.11 Special pages formatting </h2>
@@ -2331,61 +2667,63 @@
 and the page layout
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#SEC39">6.11.1 Customizing the content of the special pages</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC44">6.11.1 Customizing the content of the special pages</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC44">6.11.2 Customizing the layout of the special pages</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC50">6.11.2 Customizing the layout of the special pages</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 </table>
 
 <hr size="6">
 <a name="Special-pages-content"></a>
-<a name="SEC39"></a>
+<a name="SEC44"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC38" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC40" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC43" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC45" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC38" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC43" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 6.11.1 Customizing the content of the special pages </h3>
 
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#SEC40">6.11.1.1 Top element text formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC45">6.11.1.1 Top element text formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC41">6.11.1.2 Table of contents and Short table of contents</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC46">6.11.1.2 Table of contents and Short table of contents</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC42">6.11.1.3 Formatting of footnotes text</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC47">6.11.1.3 Formatting of footnotes text</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC43">6.11.1.4 Formatting of about text</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC48">6.11.1.4 Formatting of about text</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC49">6.11.1.5 Formatting of title page</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 </table>
 
 <hr size="6">
 <a name="Top-element-text"></a>
-<a name="SEC40"></a>
+<a name="SEC45"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC39" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC41" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC44" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC46" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC39" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC44" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h4 class="subsubsection"> 6.11.1.1 Top element text formatting </h4>
@@ -2395,7 +2733,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> <b>print_Top_header</b><i> $filehandle $begin_page</i>
-<a name="IDX147"></a>
+<a name="IDX160"></a>
 </dt>
 <dd><p><var>$filehandle</var> is the opened filehandle the function should write to.
 <var>$begin_page</var> is true if the element is the first in a page.
@@ -2405,7 +2743,7 @@
 
 <dl>
 <dt><u>Function Reference:</u> <b>print_Top</b><i> $filehandle $has_top_heading</i>
-<a name="IDX148"></a>
+<a name="IDX161"></a>
 </dt>
 <dd><p><var>$filehandle</var> is the opened filehandle the function should write to.
 <var>$has_top_heading</var> is true if there is a <code>@heading</code> command or
@@ -2416,7 +2754,7 @@
 
 <dl>
 <dt><u>Function Reference:</u> <b>print_Top_footer</b><i> $filehandle $end_page</i>
-<a name="IDX149"></a>
+<a name="IDX162"></a>
 </dt>
 <dd><p><var>$filehandle</var> is the opened filehandle the function should write to.
 <var>$end_page</var> is true if the element is the last in a page.
@@ -2425,68 +2763,85 @@
 
 <hr size="6">
 <a name="Contents-and-Overview-text"></a>
-<a name="SEC41"></a>
+<a name="SEC46"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC40" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC42" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC45" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC47" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC39" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC44" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h4 class="subsubsection"> 6.11.1.2 Table of contents and Short table of contents </h4>
+
+<p>Two possibilities exist for the formatting of table of contents (and 
+short table of contents). In the default case, the table of contents 
+are in separate elements, at the end of the document if the document 
+is unsplit or in separate files. This is consistent with <code>makeinfo</code>
+where menus are used for navigation. Another mode may be selected by
+setting <a name="IDX163"></a>
+<code>$INLINE_CONTENTS</code>. In that case the table of contents
+are not output as separate elements but 
+are instead output where the corresponding @-command, 
+for example <code>@contents</code>,
+is set. This behaviour is more consistent with <code>texi2dvi</code>. 
+If <code>@setcontentsaftertitlepage</code> appears in the document,
+and even if <code>$INLINE_CONTENTS</code> is set, the table of contents are 
+merged in the title (which isn't output in the default case, see 
+<a href="#SEC49">Formatting of title page</a>).
+</p>
 <p>Several variables may be used to control the formatting of table of contents 
 and short table of contents:
 </p>
 <dl compact="compact">
 <dt> <code>$DO_CONTENTS</code>
-<a name="IDX150"></a>
+<a name="IDX164"></a>
 </dt>
 <dd><p>If the variable is true a table of contents is done even if there is no
 <code>@contents</code> command.
 </p></dd>
 <dt> <code>$DO_SCONTENTS</code>
-<a name="IDX151"></a>
+<a name="IDX165"></a>
 </dt>
 <dd><p>If the variable is true a short table of contents is done even if there is no
 <code>@summarycontents</code> command.
 </p></dd>
 <dt> <code>$BEFORE_OVERVIEW</code>
-<a name="IDX152"></a>
+<a name="IDX166"></a>
 </dt>
 <dd><p>The variable value is inserted before the short table of contents text.
 </p></dd>
 <dt> <code>$AFTER_OVERVIEW</code>
-<a name="IDX153"></a>
+<a name="IDX167"></a>
 </dt>
 <dd><p>The variable value is inserted after the short table of contents text.
 </p></dd>
 <dt> <code>$BEFORE_TOC_LINES</code>
-<a name="IDX154"></a>
+<a name="IDX168"></a>
 </dt>
 <dd><p>The variable value is inserted before the table of contents text.
 </p></dd>
 <dt> <code>$AFTER_TOC_LINES</code>
-<a name="IDX155"></a>
+<a name="IDX169"></a>
 </dt>
 <dd><p>The variable value is inserted after the table of contents text.
 </p></dd>
 <dt> <code>$TOC_LIST_STYLE</code>
-<a name="IDX156"></a>
+<a name="IDX170"></a>
 </dt>
 <dd><p>This should contain a css style used for the list style if the tables of
 content are formatted with a list.
 </p></dd>
 <dt> <code>$TOC_LIST_ATTRIBUTE</code>
-<a name="IDX157"></a>
+<a name="IDX171"></a>
 </dt>
 <dd><p>This should contain an attribute text used for the list element if the tables of
 content are formatted with a list.
@@ -2499,7 +2854,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> <b>toc_body</b><i> \@elements </i>
-<a name="IDX158"></a>
+<a name="IDX172"></a>
 </dt>
 <dd><p><var>\@elements</var> is an array reference contining informations about
 all the elements of the document. Each of the entry of this array is an hash
@@ -2536,61 +2891,89 @@
 
 <p>This function doesn't return anything but should fill the array corresponding
 with the 
-<a name="IDX159"></a>
+<a name="IDX173"></a>
 <code>$Texi2HTML::TOC_LINES</code> and
-<a name="IDX160"></a>
+<a name="IDX174"></a>
 <code>$Texi2HTML::OVERVIEW</code> references with the table of contents and short 
 table of contents.
 </p>
 </dd></dl>
 
+<p>Another function reference is used to add a heading and a reference, to
+be used with <code>$INLINE_CONTENTS</code> or merged in the title. Its output
+is not used when the table of contents are separate elements.
+</p>
+<dl>
+<dt><u>Function Reference:</u> \@inline_contents_lines <b>inline_contents</b><i> $filehandle $command $element</i>
+<a name="IDX175"></a>
+</dt>
+<dd><p>This function reference returns a reference on an array holding 
+the lines containing the contents, heading and reference.
+<var>$filehandle</var> is a reference on the currently opened file if
+the function is called because a <code>@contents</code> or
+<code>@shortcontents</code> command was encountered, it is undef otherwise.
+<var>$command</var> is either &lsquo;<samp>contents</samp>&rsquo; or  &lsquo;<samp>shortcontents</samp>&rsquo;.
+<var>$element</var> is a hash reference containing informations about the
+table of contents context. Relevant keys are:
+</p><dl compact="compact">
+<dt> <code>id</code></dt>
+<dd><p>The identifier associated with the table of contents, used for example
+to do references to the table of contents using href in <acronym>HTML</acronym>.
+</p></dd>
+<dt> <code>file</code></dt>
+<dd><p>The file name containing the table of contents.
+</p></dd>
+</dl>
+
+</dd></dl>
+
 <hr size="6">
 <a name="Footnotes-text"></a>
-<a name="SEC42"></a>
+<a name="SEC47"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC41" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC43" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC46" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC48" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC39" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC44" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h4 class="subsubsection"> 6.11.1.3 Formatting of footnotes text </h4>
 
 <p>The footnotes text is allready formatting when <code>@footnote</code> commands
-are expanded. See section <a href="#SEC82">Customizing the footnotes formatting</a>.
+are expanded. See section <a href="#SEC90">Customizing the footnotes formatting</a>.
 </p>
 <hr size="6">
 <a name="About-text"></a>
-<a name="SEC43"></a>
+<a name="SEC48"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC42" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC44" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC47" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC49" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC39" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC44" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h4 class="subsubsection"> 6.11.1.4 Formatting of about text </h4>
 
 <p>The default about element contains an explaination of the buttons used
-in the document (<code>@SECTION_BUTTONS</code>, <a href="#SEC23">Specifying the buttons formatting</a>) and 
+in the document (<code>@SECTION_BUTTONS</code>, <a href="#SEC28">Specifying the buttons formatting</a>) and 
 an example locating the buttons targets in an example.
 The formatting of this text may be influenced by the following 
 hashes and variables:
@@ -2609,7 +2992,7 @@
 is the text associated with the element label in the about text.
 The element of the hash are defined 
 dynamically, you should in the <code>init_out</code> function reference
-(see section <a href="#SEC32">Preparing the output</a>).
+(see section <a href="#SEC37">Preparing the output</a>).
 </p>
 
 </dd>
@@ -2628,28 +3011,73 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $about_text <b>print_about</b>
-<a name="IDX161"></a>
+<a name="IDX176"></a>
 </dt>
 <dd><p>This function should return the about text.
 </p></dd></dl>
 
 <hr size="6">
+<a name="Title-page"></a>
+<a name="SEC49"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC48" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC50" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC44" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h4 class="subsubsection"> 6.11.1.5 Formatting of title page </h4>
+
+<p>The title page is first formatted using the text appearing in 
+the <code>@titlepage</code> section, and put in <a name="IDX177"></a>
+<code>$Texi2HTML::TITLEPAGE</code>.
+The information appearing in <code>@title</code>, <code>@subtitle</code> or 
+<code>@author</code> is then added using the following
+function reference:
+</p>
+<dl>
+<dt><u>Function Reference:</u> <b>titlepage</b>
+<a name="IDX178"></a>
+</dt>
+<dd><p>This function should complete <code>$Texi2HTML::TITLEPAGE</code>.
+</p></dd></dl>
+
+<p>In the default case, in this function the table of contents and short
+table of contents are also added if they are to be output and 
+<code>@setcontentsaftertitlepage</code>
+or <code>@setshortcontentsaftertitlepage</code> appear in the document
+(see section <a href="#SEC46">Table of contents and Short table of contents</a>).
+</p>
+<p>In the default case the resulting title page output is not used in 
+the document, except if the top node is not associated with any 
+content.
+</p>
+<hr size="6">
 <a name="Special-pages-layout"></a>
-<a name="SEC44"></a>
+<a name="SEC50"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC43" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC45" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC49" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC51" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC38" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC43" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 6.11.2 Customizing the layout of the special pages </h3>
@@ -2660,87 +3088,86 @@
 </p>
 <dl compact="compact">
 <dt> <code>print_Top</code>
-<a name="IDX162"></a>
+<a name="IDX179"></a>
 </dt>
 <dt> <code>print_Top_header</code>
-<a name="IDX163"></a>
+<a name="IDX180"></a>
 </dt>
 <dt> <code>print_Top_footer</code>
-<a name="IDX164"></a>
+<a name="IDX181"></a>
 </dt>
 <dd><p>Formatting of top element page or section. It is also used for the formatting
-of the top element text (see section <a href="#SEC40">Top element text formatting</a>).
+of the top element text (see section <a href="#SEC45">Top element text formatting</a>).
 </p></dd>
 <dt> <code>print_Toc</code>
-<a name="IDX165"></a>
+<a name="IDX182"></a>
 </dt>
 <dd><p>Formatting of table of contents page or section
 </p></dd>
 <dt> <code>print_Overview</code>
-<a name="IDX166"></a>
+<a name="IDX183"></a>
 </dt>
 <dd><p>Formatting of short table of contents page or section
 </p></dd>
 <dt> <code>print_About</code>
-<a name="IDX167"></a>
+<a name="IDX184"></a>
 </dt>
 <dd><p>Formatting of about (help) page or section
 </p></dd>
 <dt> <code>print_Footnotes</code>
-<a name="IDX168"></a>
+<a name="IDX185"></a>
 </dt>
 <dd><p>Formatting of footnotes section or page in case footnotes are on a 
 separated page or the document isn't split.
 </p></dd>
 </dl>
 
-<p>In the default case, <a name="IDX169"></a>
-<code>$print_Top</code> calls <a name="IDX170"></a>
+<p>In the default case, <a name="IDX186"></a>
+<code>$print_Top</code> calls <a name="IDX187"></a>
 <code>$print_Top_header</code> for
-the header and <a name="IDX171"></a>
+the header and <a name="IDX188"></a>
 <code>$print_Top_footer</code> for the footer of top element.
-All the other function call <a name="IDX172"></a>
+All the other function call <a name="IDX189"></a>
 <code>$print_misc</code> which in turn calls
-<a name="IDX173"></a>
-<code>$print_misc_header</code> for the headers and  <a name="IDX174"></a>
+<a name="IDX190"></a>
+<code>$print_misc_header</code> for the headers and  <a name="IDX191"></a>
 <code>$print_misc_footer</code> 
 for the footers.
 </p>
 <hr size="6">
 <a name="File-names"></a>
-<a name="SEC45"></a>
+<a name="SEC51"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC44" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC46" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC50" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC52" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 6.12 Customizing the file names </h2>
 
 <p>It is possible to specify the file names with more control than with the
-command line options (see section <a href="#SEC7">Setting output file and directory names</a>). 
-First the extension may be overrided by the variable <a name="IDX175"></a>
+command line options (see section <a href="#SEC11">Setting output file and directory names</a>). 
+First the extension may be overrided by the variable <a name="IDX192"></a>
 <code>$EXTENSION</code>
 value.
 Two function references enable 
-further customization. One is usefull in case <a name="IDX176"></a>
+further customization. One is usefull in case <a name="IDX193"></a>
 <code>$NODE_FILES</code> is true
-and it is used to customize the node file name itself and is also used 
-to produce a file name with a redirection leading to the node file.
+and it is used to customize the node file name. 
 </p>
 <dl>
-<dt><u>Function Reference:</u> ($node_file $redirection_node_file) <b>node_file_name</b><i> $node</i>
-<a name="IDX177"></a>
+<dt><u>Function Reference:</u> $node_file <b>node_file_name</b><i> $node</i>
+<a name="IDX194"></a>
 </dt>
 <dd><p><var>$node</var> is a hash reference with the following interesting keys (there
 are much more keys):
@@ -2752,17 +3179,19 @@
 <dd><p>True if associated with a section.
 </p></dd>
 </dl>
-<p>The result is the node file name <var>$node_file</var>, and the file containing
-a redirection to the node <var>$redirection_node_file</var>.
+<p>The result is the node file name <var>$node_file</var>.
 </p></dd></dl>
 
-<p>The other is usefull if <code>$NODE_FILES</code> isn't true. It is used to 
-customize the file associated with each element.
+<p>The other is used to
+customize the file names associated with each element, and the 
+name of the file associated with the special elements.
 </p><dl>
-<dt><u>Function Reference:</u> $file <b>element_file_name</b><i> $element $is_top $docu_name</i>
-<a name="IDX178"></a>
+<dt><u>Function Reference:</u> $file <b>element_file_name</b><i> $element $type $docu_name</i>
+<a name="IDX195"></a>
 </dt>
-<dd><p><var>$element</var> is a hash reference with the following interesting keys (there
+<dd><p><var>$element</var> is undefined for the special elements (about, overview, 
+table of contents, footnotes).
+Otherwise it is a hash reference with the following interesting keys (there
 are much more keys):
 </p><dl compact="compact">
 <dt> <code>texi</code></dt>
@@ -2773,7 +3202,7 @@
 </p></dd>
 <dt> <code>doc_nr</code></dt>
 <dd><p>A number incremented whenever a new file should begin, based on how the 
-document is split (see section <a href="#SEC6">Specifying where to split the generated document</a>).
+document is split (see section <a href="#SEC10">Specifying where to split the generated document</a>).
 </p></dd>
 <dt> <code>text</code></dt>
 <dd><p>The element text.
@@ -2782,44 +3211,47 @@
 <dd><p>The element text without section number.
 </p></dd>
 </dl>
-<p><var>$is_top</var> is true if the element is considered as the top element.
+<p><var>$type</var> is empty for normal elements. 
+For the top element it is &lsquo;<samp>top</samp>&rsquo;, for the table of contents it 
+is &lsquo;<samp>toc</samp>&rsquo;, for the overview it is &lsquo;<samp>stoc</samp>&rsquo;, for the
+footnotes it is &lsquo;<samp>foot</samp>&rsquo; and for about is &lsquo;<samp>about</samp>&rsquo;.
 <var>$docu_name</var> is the basename of the texinfo manual.
-The result is the element file name.
+The result is the element or special element file name.
 </p></dd></dl>
 
 <hr size="6">
 <a name="External-index-files"></a>
-<a name="SEC46"></a>
+<a name="SEC52"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC45" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC51" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 6.13 Generation of external files for index entries </h2>
 
 <p>Within the document, <code>@printindex</code> commands are expanded as explained
-in <a href="#SEC78">Customizing the formatting of index lists</a>. In case you want to do something special with index 
+in <a href="#SEC86">Customizing the formatting of index lists</a>. In case you want to do something special with index 
 entries, outside of the document, you should first set the variable
-<a name="IDX179"></a>
+<a name="IDX196"></a>
 <code>$IDX_SUMMARY</code> true. After that some function reference will be called
 for each non empty index. For each index there are 3 function 
 references, one called for initialization, one called for each index entry
-and the last one called for finalazation.
+and the last one called for finalization.
 </p>
 <dl>
 <dt><u>Function Reference:</u> <b>index_summary_file_begin</b><i> $index_name $is_printed</i>
-<a name="IDX180"></a>
+<a name="IDX197"></a>
 </dt>
 <dd><p><var>$index_name</var> is the two letters name for the index. 
 This function
@@ -2831,23 +3263,23 @@
 
 <dl>
 <dt><u>Function Reference:</u> <b>index_summary_file_entry</b><i> $index_name $entry_text $entry_reference $formatted_entry $texi_entry $entry_element_reference  $entry_element_header $is_printed</i>
-<a name="IDX181"></a>
+<a name="IDX198"></a>
 </dt>
 <dd><p>This function is called for each entry of an index. <var>index_name</var> is the
 name of the index. <var>$entry_text</var> is the entry in plain text,
 <var>$formatted_entry</var> is the index entry formatted, <var>$texi_entry</var> is the
 entry with texinfo commands. <var>$entry_reference</var> is the reference placed 
-at the index entry place, in the form <samp>`file#id'</samp>.
+at the index entry place, in the form &lsquo;<samp>file#id</samp>&rsquo;.
 <var>$entry_element_header</var> is the formatted header of the element containing 
 the index entry. <var>entry_element_header</var> is the reference to the
 beginning of the element containing the index entry, in the form
-<samp>`file#id'</samp>. 
+&lsquo;<samp>file#id</samp>&rsquo;. 
 <var>$is_printed</var> is true if there is a <code>@printindex</code> for that index.
 </p></dd></dl>
 
 <dl>
 <dt><u>Function Reference:</u> <b>index_summary_file_end</b><i> $index_name $is_printed</i>
-<a name="IDX182"></a>
+<a name="IDX199"></a>
 </dt>
 <dd><p><var>$index_name</var> is the two letters name for the index. This function
 is called for each index appearing in the document, after
@@ -2857,21 +3289,21 @@
 
 <hr size="6">
 <a name="Customizing-HTML"></a>
-<a name="SEC47"></a>
+<a name="SEC53"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC46" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC48" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC52" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC54" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h1 class="chapter"> 7. Customizing <acronym>HTML</acronym> and text style in init files </h1>
@@ -2879,7 +3311,7 @@
 <p>Some simple customization may be achieved with the redefinition of the 
 variables 
 associated with the command line options. For the description and an 
-explanation of the meaning of these variables, <a href="#SEC11">Customizing the <acronym>HTML</acronym> and text style</a>.
+explanation of the meaning of these variables, <a href="#SEC15">Customizing the <acronym>HTML</acronym> and text style</a>.
 </p>
 <p>Other variables and hash entries can be modified in initialization file
 to achieve more customization.
@@ -2888,67 +3320,69 @@
 be redefined.
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#SEC48">7.1 Three contexts for expansions: preformatted, normal and string</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               there are three different contexts for command
+<tr><td align="left" valign="top"><a href="#SEC54">7.1 Three contexts for expansions: preformatted, normal and string</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               there are three different contexts for command
                                  expansion: normal text, preformatted text and
                                  strings.
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC49">7.2 Customizing the formatting of commands without argument</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> 
+<tr><td align="left" valign="top"><a href="#SEC55">7.2 Customizing the formatting of commands without argument</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> 
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC50">7.3 Customizing accent, style and other simple commands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    
+<tr><td align="left" valign="top"><a href="#SEC56">7.3 Customizing accent, style and other simple commands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC54">7.4 Formatting of special simple commands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    Formatting of <code>@anchor</code>, <code>@image</code>, <code>@sp</code>, <code>@acronym</code>, <code>@abbr</code>
+<tr><td align="left" valign="top"><a href="#SEC60">7.4 Formatting of special simple commands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    Formatting of <code>@anchor</code>, <code>@image</code>, <code>@sp</code>, <code>@acronym</code>, <code>@abbr</code>
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC55">7.5 Processing special characters in text</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                         Some characters are processed specially
+<tr><td align="left" valign="top"><a href="#SEC61">7.5 Processing special characters in text</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                         Some characters are processed specially
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC56">7.6 Customizing strings written by <code>texi2html</code></a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                      <code>texi2html</code> write some strings in the output
+<tr><td align="left" valign="top"><a href="#SEC62">7.6 Customizing strings written by <code>texi2html</code></a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                      <code>texi2html</code> write some strings in the output
                                  different for each languages
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC57">7.7 References</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC63">7.7 References</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC66">7.8 Commands used for centering and flushing of text</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           <code>@center</code>, <code>@flushleft</code>&hellip;
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC60">7.8 Commands used for centering and flushing of text</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           <code>@center</code>, <code>@flushleft</code>&hellip;
+<tr><td align="left" valign="top"><a href="#SEC67">7.9 Formatting (or not) a paragraph and a preformatted region</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC61">7.9 Formatting or not a paragraph or a preformatted region</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC70">7.10 Formatting of complex formats (<code>@example</code>, <code>@display</code>&hellip;)</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              <code>@example</code>, <code>@display</code>&hellip;
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC64">7.10 Formatting of complex formats (<code>@example</code>, <code>@display</code>&hellip;)</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              <code>@example</code>, <code>@display</code>&hellip;
+<tr><td align="left" valign="top"><a href="#SEC71">7.11 Customizing the formatting of lists and tables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC65">7.11 Customizing the formatting of lists and tables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC74">7.12 Definition commands formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC68">7.12 Definition commands formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC77">7.13 Customizing headings formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC71">7.13 Customizing headings formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC78">7.14 Formatting of special regions (<code>@verbatim</code>, <code>@cartouche</code>, <code>@quotation</code>)</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              <code>@verbatim</code>, <code>@cartouche</code>, <code>@quotation</code>
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC72">7.14 Formatting of special regions (<code>@verbatim</code>, <code>@cartouche</code>, <code>@quotation</code>)</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              <code>@verbatim</code>, <code>@cartouche</code>, <code>@quotation</code>
+<tr><td align="left" valign="top"><a href="#SEC79">7.15 Menu formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                    
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC73">7.15 Menu formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                    
+<tr><td align="left" valign="top"><a href="#SEC84">7.16 Indices formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC76">7.16 Indices formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC87">7.17 Floats and lists of floats</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">   <code>@float</code> and <code>@listoffloats</code>
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC79">7.17 Floats and lists of floats</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">   <code>@float</code> and <code>@listoffloats</code>
+<tr><td align="left" valign="top"><a href="#SEC90">7.18 Customizing the footnotes formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC82">7.18 Customizing the footnotes formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC91">7.19 Bypassing normal formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> 
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC83">7.19 Customizing other commands, and unknown commands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">   You can handle specifically other commands
+<tr><td align="left" valign="top"><a href="#SEC92">7.20 Customizing other commands, and unknown commands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">   You can handle specifically other commands
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 </pre></th></tr></table>
 
 <hr size="6">
 <a name="Three-contexts"></a>
-<a name="SEC48"></a>
+<a name="SEC54"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC47" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC49" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC53" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC55" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 7.1 Three contexts for expansions: preformatted, normal and string </h2>
@@ -2958,28 +3392,28 @@
 the string context. The preformatted
 context occurs when the spacing between words is kept. This is the
 case, for example, in <code>@display</code> or <code>@example</code> regions, and in 
-menu comments (see section <a href="#SEC73">Menu formatting</a>). The preformatted regions are usually
+menu comments (see section <a href="#SEC79">Menu formatting</a>). The preformatted regions are usually
 rendered in <code>&lt;pre&gt;</code> elements in <acronym>HTML</acronym>.
 The string context occurs when rendering strings without formatting elements,
 in comments or titles for example.
 </p>
 <hr size="6">
 <a name="Commands-without-argument"></a>
-<a name="SEC49"></a>
+<a name="SEC55"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC48" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC50" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC54" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC56" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 7.2 Customizing the formatting of commands without argument </h2>
@@ -2990,9 +3424,11 @@
 associated with accentted letters like <code>@AA{}</code>. If there happens to
 be something within the braces, it is put after the command, thus
 </p><table><tr><td>&nbsp;</td><td><pre class="example">@TeX{something}
-</pre></td></tr></table><p>leads to the same than
+</pre></td></tr></table>
+<p>leads to the same than
 </p><table><tr><td>&nbsp;</td><td><pre class="example">@TeX{} something
 </pre></td></tr></table>
+
 <p>Each of these categories of commands have three associated hashes, one 
 for normal
 context, the other for preformatted context and the last in strings. The 
@@ -3003,14 +3439,14 @@
 </p><table>
 <tr><td><p> command type </p></td><td><p> normal text </p></td><td><p> preformatted text </p></td><td><p> string
 </p></td></tr>
-<tr><td><p> one nonlettered character </p></td><td> <a name="IDX183"></a>
-<p><code>%simple_map</code> </p></td><td> <a name="IDX184"></a>
-<p><code>%simple_map_pre</code> </p></td><td> <a name="IDX185"></a>
+<tr><td><p> one nonlettered character </p></td><td> <a name="IDX200"></a>
+<p><code>%simple_map</code> </p></td><td> <a name="IDX201"></a>
+<p><code>%simple_map_pre</code> </p></td><td> <a name="IDX202"></a>
 <p><code>%simple_map_texi</code>
 </p></td></tr>
-<tr><td><p> nothing in braces </p></td><td> <a name="IDX186"></a>
-<p><code>%things_map</code> </p></td><td> <a name="IDX187"></a>
-<p><code>%pre_map</code> </p></td><td> <a name="IDX188"></a>
+<tr><td><p> nothing in braces </p></td><td> <a name="IDX203"></a>
+<p><code>%things_map</code> </p></td><td> <a name="IDX204"></a>
+<p><code>%pre_map</code> </p></td><td> <a name="IDX205"></a>
 <p><code>%texi_map</code>
 </p></td></tr>
 </table>
@@ -3022,23 +3458,24 @@
 <table><tr><td>&nbsp;</td><td><pre class="example">$simple_map{'-'} = '&amp;shy;';
 $simple_map_pre{'-'} = '&amp;shy;';
 </pre></td></tr></table>
+
 <hr size="6">
 <a name="Style-and-accent-commands"></a>
-<a name="SEC50"></a>
+<a name="SEC56"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC49" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC51" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC55" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC57" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 7.3 Customizing accent, style and other simple commands </h2>
@@ -3050,10 +3487,10 @@
 and miscalleneous commands (<code>@email</code>, <code>@verb</code>, <code>@w</code>, 
 <code>@uref</code>, <code>@math</code>, <code>@asis</code>) is controlled by two hash in the
 default case, 
-<a name="IDX189"></a>
-<code>%style_map</code> for normal context, <a name="IDX190"></a>
+<a name="IDX206"></a>
+<code>%style_map</code> for normal context, <a name="IDX207"></a>
 <code>%style_map_pre</code> for
-preformatted context and <a name="IDX191"></a>
+preformatted context and <a name="IDX208"></a>
 <code>%style_map_texi</code> in string context. 
 </p>
 <p>The key of the hashes are the command names. There are two possibilities for
@@ -3069,38 +3506,38 @@
 <li> 
 The nonlettered accent commands which following character is considered
 to be the argument (like in <code>@`a</code>) should be keys of the
-hash <a name="IDX192"></a>
+hash <a name="IDX209"></a>
 <code>%accent_map</code> hash, even if no value is associated.
 </li><li>
 <code>@math</code> is handled differently if LaTeX2HTML is used.
 </li></ul>
 
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#SEC51">7.3.1 An interface for commands formatting with a hash reference</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC57">7.3.1 An interface for commands formatting with a hash reference</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC52">7.3.2 An interface for commands formatting with a string</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC58">7.3.2 An interface for commands formatting with a string</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC53">7.3.3 Defining the style and indicatric commands interface</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC59">7.3.3 Defining the style and indicatric commands interface</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 </table>
 
 <hr size="6">
 <a name="Hash-reference-interface"></a>
-<a name="SEC51"></a>
+<a name="SEC57"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC50" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC52" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC56" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC58" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC50" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC56" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 7.3.1 An interface for commands formatting with a hash reference </h3>
@@ -3112,18 +3549,19 @@
 </p>
 <table><tr><td>&nbsp;</td><td><pre class="example">$style_map{'command'} = { 'args' =&gt; ['code'], 'attribute' =&gt; 'code'};
 </pre></td></tr></table>
+
 <p>the arguments for <code>@command</code> are interpreted as specified by 
-the values associated with the <samp>`args'</samp> key while the attribute associated 
-with that command is <samp>`code'</samp>.
+the values associated with the &lsquo;<samp>args</samp>&rsquo; key while the attribute associated 
+with that command is &lsquo;<samp>code</samp>&rsquo;.
 </p>
 <p>The following keys in the hashes associated with each command have the
 following meaning:
 </p>
 <dl compact="compact">
-<dt> <samp>`args'</samp></dt>
+<dt> &lsquo;<samp>args</samp>&rsquo;</dt>
 <dd><p><a name="Reference-hash-args"></a>
 The value associated is a reference on an array. Each element of the array
-defines how the arguments (separated by <samp>`,'</samp> in the texinfo code) for 
+defines how the arguments (separated by &lsquo;<samp>,</samp>&rsquo; in the texinfo code) for 
 the @-command should be 
 formatted. The possibilities are 
 </p><dl compact="compact">
@@ -3131,7 +3569,7 @@
 <dd><p>for normal text,
 </p></dd>
 <dt> <code>code</code></dt>
-<dd><p>for text with <samp>`---'</samp>, <samp>`--'</samp>, <samp>`'''</samp> and  <samp>```'</samp> kept as is,
+<dd><p>for text with &lsquo;<samp>---</samp>&rsquo;, &lsquo;<samp>--</samp>&rsquo;, &lsquo;<samp>''</samp>&rsquo; and  &lsquo;<samp>``</samp>&rsquo; kept as is,
 </p></dd>
 <dt> <code>keep</code></dt>
 <dd><p>if the texinfo should be kept as is, without interpretation of the @-commands.
@@ -3141,13 +3579,14 @@
 <p>For example, we have
 </p><table><tr><td>&nbsp;</td><td><pre class="example">$style_map{'email'}-&gt;{'args'} = ['code', 'normal'];
 </pre></td></tr></table>
-<p>because <samp>`---'</samp>, <samp>`--'</samp>, <samp>`'''</samp> and  <samp>```'</samp> should be kept as is in
+
+<p>because &lsquo;<samp>---</samp>&rsquo;, &lsquo;<samp>--</samp>&rsquo;, &lsquo;<samp>''</samp>&rsquo; and  &lsquo;<samp>``</samp>&rsquo; should be kept as is in
 the first argument of <code>@email</code>.
 </p>
-<p>The default is <samp>`['normal']'</samp>.
+<p>The default is &lsquo;<samp>['normal']</samp>&rsquo;.
 </p>
 </dd>
-<dt> <samp>`attribute'</samp></dt>
+<dt> &lsquo;<samp>attribute</samp>&rsquo;</dt>
 <dd>
 <p>If the associated value is a word, it is considered to be an <acronym>HTML</acronym> 
 element name, and the argument is enclosed between the element opening
@@ -3163,27 +3602,27 @@
 <p>This works only if there is only one argument.
 </p>
 </dd>
-<dt> <samp>`begin'</samp></dt>
+<dt> &lsquo;<samp>begin</samp>&rsquo;</dt>
 <dd>
 <p>The associated value is added in front of the text.
 </p>
 </dd>
-<dt> <samp>`begin'</samp></dt>
+<dt> &lsquo;<samp>begin</samp>&rsquo;</dt>
 <dd>
 <p>The associated value is added after the text. 
 </p>
 </dd>
-<dt> <samp>`quotes'</samp></dt>
+<dt> &lsquo;<samp>quotes</samp>&rsquo;</dt>
 <dd>
 <p>If the corresponding value is true, the result is 
-enclosed in quotes <a name="IDX193"></a>
+enclosed in quotes <a name="IDX210"></a>
 <code>$OPEN_QUOTE_SYMBOL</code> and 
-<a name="IDX194"></a>
+<a name="IDX211"></a>
 <code>$CLOSE_QUOTE_SYMBOL</code>, with defaults 
-<samp>``'</samp> and <samp>`''</samp>. 
+&lsquo;<samp>`</samp>&rsquo; and &lsquo;<samp>'</samp>&rsquo;. 
 </p>
 </dd>
-<dt> <samp>`function'</samp> </dt>
+<dt> &lsquo;<samp>function</samp>&rsquo; </dt>
 <dd>
 <p>The corresponding value should be a function reference. The corresponding
 function is called with the following arguments:
@@ -3195,9 +3634,9 @@
 <dt> <code>$args</code></dt>
 <dd><p>A reference on an array containing the arguments of the @-command.
 </p></dd>
-<dt> <code>$style_stack</code></dt>
+<dt> <code>$command_stack</code></dt>
 <dd><p>A reference on an array containing the name of the @-commands containing 
-the @-command being formatted.
+the @-command being formatted, latest on top.
 </p></dd>
 <dt> <code>$state</code></dt>
 <dd><p>A reference on a hash containing a lot of informations about the context
@@ -3215,44 +3654,44 @@
 
 <hr size="6">
 <a name="String-interface"></a>
-<a name="SEC52"></a>
+<a name="SEC58"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC51" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC53" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC57" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC59" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC50" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC56" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 7.3.2 An interface for commands formatting with a string </h3>
 
 <p>The keys of the hashes are the command names. The value determine 
 how the command argument
-is formatted. If the value begins with <samp>`&quot;'</samp>, the result is 
-enclosed in quotes <a name="IDX195"></a>
+is formatted. If the value begins with &lsquo;<samp>&quot;</samp>&rsquo;, the result is 
+enclosed in quotes <a name="IDX212"></a>
 <code>$OPEN_QUOTE_SYMBOL</code> and 
-<a name="IDX196"></a>
+<a name="IDX213"></a>
 <code>$CLOSE_QUOTE_SYMBOL</code>, with defaults 
-<samp>``'</samp> and <samp>`''</samp>. 
+&lsquo;<samp>`</samp>&rsquo; and &lsquo;<samp>'</samp>&rsquo;. 
 </p>
 <p>The command argument is allready formatted as <acronym>HTML</acronym>.
 The remaining of the value text
-(or the value text if there were no <samp>`&quot;'</samp>) is interpreted as follow:
+(or the value text if there were no &lsquo;<samp>&quot;</samp>&rsquo;) is interpreted as follow:
 </p>
 <ul>
 <li>
 If the text is empty the argument of the command is left as is. 
 </li><li>
-If the text is a <samp>`&amp;'</samp> followed by a name,
-like <samp>`&amp;function'</samp>, the name is considered to be a function name, 
+If the text is a &lsquo;<samp>&amp;</samp>&rsquo; followed by a name,
+like &lsquo;<samp>&amp;function</samp>&rsquo;, the name is considered to be a function name, 
 and this function is called to format the argument of the command. The
 first argument of the function is the command name, the second is 
 the command argument. For example, if the value associated with the
@@ -3266,14 +3705,17 @@
     return &quot;$args[0]&quot;;
 }
 </pre></td></tr></table>
+
 <p>The result of 
 </p><table><tr><td>&nbsp;</td><td><pre class="example">@foo{truc, 1}
 @foo{truc, bidule}
 </pre></td></tr></table>
+
 <p>will be
 </p><table><tr><td>&nbsp;</td><td><pre class="example">foo: truc
 truc
-</pre></td></tr></table></li><li>
+</pre></td></tr></table>
+</li><li>
 If the text is a word, it is considered to be an <acronym>HTML</acronym> element
 name, and the argument is enclosed between the element opening
 and the element closing. For example, if the value is <code>elem</code>, the
@@ -3290,21 +3732,21 @@
 
 <hr size="6">
 <a name="Define-your-own-interface"></a>
-<a name="SEC53"></a>
+<a name="SEC59"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC52" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC54" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC58" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC60" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC50" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC56" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 7.3.3 Defining the style and indicatric commands interface </h3>
@@ -3313,8 +3755,8 @@
 are processed by redefining the following function reference:
 </p>
 <dl>
-<dt><u>Function Reference:</u> $resulting_text <b>style</b><i> $style $command $text $args $no_close $no_open $line_nr $state $style_stack</i>
-<a name="IDX197"></a>
+<dt><u>Function Reference:</u> $resulting_text <b>style</b><i> $style $command $text $args $no_close $no_open $line_nr $state $command_stack</i>
+<a name="IDX214"></a>
 </dt>
 <dd><p><var>$command</var> is the @-command, <var>$style</var> is the value associated with 
 the <var>$command</var> in the <code>%style_map</code>, <code>%style_map_pre</code> 
@@ -3335,7 +3777,7 @@
 <var>$state</var>
 is a reference on a hash containing a lot of informations about the context
 of the @-command.
-<var>$style_stack</var>
+<var>$command_stack</var>
 is a reference on an array containing the name of the @-commands containing 
 the @-command being formatted.
 </p>
@@ -3343,21 +3785,21 @@
 
 <hr size="6">
 <a name="Anchors-images-and-spaces"></a>
-<a name="SEC54"></a>
+<a name="SEC60"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC53" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC55" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC59" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC61" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 7.4 Formatting of special simple commands </h2>
@@ -3366,13 +3808,13 @@
 customize the output, the corresponding function references should be
 redefined. All these functions return a formatted text.
 </p>
-<p>The formatting of anchors is controlled by <a name="IDX198"></a>
+<p>The formatting of anchors is controlled by <a name="IDX215"></a>
 <code>$anchor</code>, but the function
 associated with the function reference does more, it is usefull
 to produce a reference target or link.
 </p><dl>
 <dt><u>Function Reference:</u> $anchor <b>anchor</b><i> $identifier $href $text $attributes</i>
-<a name="IDX199"></a>
+<a name="IDX216"></a>
 </dt>
 <dd><p>If <var>$identifier</var> is not empty, this value should be used to create
 a target for links (typically associated with a name or id 
@@ -3387,22 +3829,45 @@
 <acronym>HTML</acronym> element. 
 </p></dd></dl>
 
-<p>The formatting of <code>@image</code> is controlled by:
+<p>To customize the images produced by <code>@image</code>, the first possibility 
+is to modify the <a name="IDX217"></a>
+<code>@IMAGE_EXTENSIONS</code>, which holds a list of 
+filename extensions for image files. It is also possible to redefine
+the function used to determine the filename of the image:
+</p>
+<dl>
+<dt><u>Function Reference:</u> $filename <b>image_files</b><i> $basename $extension</i>
+<a name="IDX218"></a>
+</dt>
+<dd><p><var>$basename</var> is the first <code>@image</code> argument, <var>$extension</var>
+is the corresponding <code>@image</code> argument. This function reference 
+should return an array of image filenames without path that the main 
+program should look for.
+</p></dd></dl>
+
+<p>Last, it is possible to control 
+the formatting of <code>@image</code> by redefining:
 </p><dl>
-<dt><u>Function Reference:</u> $image <b>image</b><i> $file_path $basename $preformatted $file_name</i>
-<a name="IDX200"></a>
+<dt><u>Function Reference:</u> $image <b>image</b><i> $file_path $basename $preformatted $file_name $alt_text $width $height $raw_alt $extension $working_dir $file_path</i>
+<a name="IDX219"></a>
 </dt>
-<dd><p><var>$file_path</var> is the image file name with the path, <var>$basename</var> is the 
-alternate text or the file name without extension if no alternate text is 
-given. <var>$preformatted</var> is true if the image 
+<dd><p><var>$file_path</var> is the image file name with the path, <var>$basename</var>  
+the file name without extension. <var>$preformatted</var> is true if the image 
 appears in preformatted text. <var>$file_name</var> is the file name without path 
-but with extension.
+but with extension. <var>$alt_text</var> is the alternate text, it may be 
+undefined. <var>$width</var> and <var>$height</var> are the corresponding arguments 
+of <code>@image</code>, <var>$raw_alt</var> is the unmodified alt argument of 
+<code>@image</code> and <var>$extension</var> holds the corresponding 
+<code>@image</code> argument.
+<var>$working_dir</var> is the path to working dir relative to the output
+directory. <var>$file_path</var> is the file name relative to the 
+<var>$working_dir</var>.
 </p></dd></dl>
 
 <p>The formatting of <code>@sp</code> is controlled by:
 </p><dl>
 <dt><u>Function Reference:</u> $sp <b>sp</b><i> $number $preformatted</i>
-<a name="IDX201"></a>
+<a name="IDX220"></a>
 </dt>
 <dd><p><var>$number</var> is the numeric argument of <code>@sp</code>.
 <var>$preformatted</var> is true if the <code>@sp</code> appears in preformatted text.
@@ -3411,7 +3876,7 @@
 <p>The formatting of <code>@acronym</code> and <code>@abbr</code> is controlled by:
 </p><dl>
 <dt><u>Function Reference:</u> $acronym <b>acronym_like</b><i> $acronym_texi $acronym_text $with_explanation \@explanation_lines $explanation_text $explanation_simply_formatted</i>
-<a name="IDX202"></a>
+<a name="IDX221"></a>
 </dt>
 <dd><p><var>$acronym_texi</var> is the acronym argument with texinfo @-commands, 
 <var>$acronym_text</var> is formatted. 
@@ -3419,58 +3884,74 @@
 <p>The other arguments are related with
 the explanation, the second arg of the acronym. <var>$with_explanation</var> is 
 true if the second argument of the acronym command is present. If an
-explanation exists, coming from previous <code>@acronym</code> or as an arg of this
-command, the other args are defined: <var>\@explanation_lines</var> is a 
-reference on an array containing the unformatted explanation lines, 
+explanation exists, coming from previous <code>@acronym</code> or as an arg of 
+this command, the other args are defined: <var>\@explanation_lines</var> is a 
+reference on an array containing the simply fomatted explanation lines, 
 <var>$explanation_text</var> is the explanation text formatted,
-<var>$explanation_simply_formatted</var> is the explanation with a light formatting,
-unabling in <acronym>HTML</acronym> (or <acronym>XML</acronym>) the explanation to be in an 
-attribute.
+<var>$explanation_simply_formatted</var> is the explanation with a light 
+formatting, unabling in <acronym>HTML</acronym> (or <acronym>XML</acronym>) the explanation 
+to be in an attribute.
 </p></dd></dl>
 
 <hr size="6">
 <a name="Text"></a>
-<a name="SEC55"></a>
+<a name="SEC61"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC54" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC56" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC60" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC62" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 7.5 Processing special characters in text </h2>
 
-<p>Some characters are processed especially in text: <samp>`---'</samp>, <samp>`--'</samp>,
-<samp>```'</samp> and <samp>`'''</samp>. This is done only if in normal text and not in 
+<p>Some characters are processed especially in text: &lsquo;<samp>---</samp>&rsquo;, &lsquo;<samp>--</samp>&rsquo;,
+&lsquo;<samp>``</samp>&rsquo; and &lsquo;<samp>''</samp>&rsquo;. This is done only if in normal text and not in 
 some commands (<code>@code</code>, <code>@env</code>&hellip;). A function reference
-is called to process those characters in text
+is called to process the text and should take care of those constructs.
+It may also be used to transform the text, for example set it in upper
+case if it is in <code>@sc</code>. This function should also take care
+of protecting special characters
 </p>
+
 <dl>
-<dt><u>Function Reference:</u> $processed_text <b>normal_text</b><i> $text</i>
-<a name="IDX203"></a>
+<dt><u>Function Reference:</u> $processed_text <b>normal_text</b><i> $text $in_raw_text $in_preformatted $in_code $command_stack </i>
+<a name="IDX222"></a>
 </dt>
-<dd><p>The function processes <samp>`---'</samp>, <samp>`--'</samp>, <samp>```'</samp> and <samp>`'''</samp>
-in <var>$text</var> and returns <var>$processed_text</var>. The default is to
-change <samp>`---'</samp> to <samp>`--'</samp>, <samp>`--'</samp> to <samp>`-'</samp>, and <samp>```'</samp> and
-<samp>`'''</samp> to <samp>`&quot;'</samp>.
-</p></dd></dl>
-
-<p>Some characters are special in <acronym>HTML</acronym> (<samp>`&amp;'</samp>, <samp>`&quot;'</samp>, 
-<samp>`&lt;'</samp> and <samp>`&gt;'</samp>) and should be protected.
+<dd><p>The function processes <var>$text</var> and returns <var>$processed_text</var>. 
+The other arguments give some information about the context of the text.
+<var>$in_raw_text</var> is true if the text appears in special place where
+there is no formatting, typically in comments. <var>$in_preformatted</var>
+is true if in a preformatted environemnt, and <var>$in_code</var> is true
+if in a special command like <code>@code</code>, <code>@env</code> where
+&lsquo;<samp>---</samp>&rsquo;, &lsquo;<samp>--</samp>&rsquo;, &lsquo;<samp>``</samp>&rsquo; and &lsquo;<samp>''</samp>&rsquo; should not be
+touched. <var>$command_stack</var> is an array containing the name of the 
+formatting @-command that enclose the text.  
+</p>
+<p>In the default case the &lsquo;<samp>---</samp>&rsquo;, &lsquo;<samp>--</samp>&rsquo;, &lsquo;<samp>``</samp>&rsquo; and &lsquo;<samp>''</samp>&rsquo;
+constructs are expanded if needed and the text is upper-cased if in 
+<code>@sc</code>. Special characters (&lsquo;<samp>&amp;</samp>&rsquo;, &lsquo;<samp>&quot;</samp>&rsquo;,
+&lsquo;<samp>&lt;</samp>&rsquo; and &lsquo;<samp>&gt;</samp>&rsquo; in <acronym>HTML</acronym>) are protected if needed. 
+</p></dd></dl>
+
+<p>Some characters are special, for example we have  &lsquo;<samp>&amp;</samp>&rsquo;, &lsquo;<samp>&quot;</samp>&rsquo;, 
+&lsquo;<samp>&lt;</samp>&rsquo; and &lsquo;<samp>&gt;</samp>&rsquo; in <acronym>HTML</acronym>. In some cases some
+pieces of text don't go through the above function, but still 
+needs to be protected to appear in text.
 This is done by the function associated with the function reference
 </p>
 <dl>
 <dt><u>Function Reference:</u> $protected_text <b>protect_text</b><i> $text</i>
-<a name="IDX204"></a>
+<a name="IDX223"></a>
 </dt>
 <dd><p>The function processes the unprotected text <var>$text</var> and returns
 the resulting protected text <var>$protected_text</var>.
@@ -3480,30 +3961,33 @@
 be usefull if empty lines are to be removed for example
 </p>
 <dl>
-<dt><u>Function Reference:</u> $resulting_text <b>empty_line</b><i> $empty_line</i>
-<a name="IDX205"></a>
+<dt><u>Function Reference:</u> $resulting_text <b>empty_line</b><i> $empty_line $state</i>
+<a name="IDX224"></a>
 </dt>
 <dd><p>This function processes an <var>$empty_line</var> and returns the resulting
-text <var>$resulting_text</var>. Empty lines are left as is by default.
+text <var>$resulting_text</var>. <var>$state</var> is a structure that holds informations
+about the state of the parsing.
+Empty lines are left as is by default except right after a definition 
+@-command.
 </p></dd></dl>
 
 <hr size="6">
 <a name="Strings"></a>
-<a name="SEC56"></a>
+<a name="SEC62"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC55" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC57" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC61" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC63" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 7.6 Customizing strings written by <code>texi2html</code> </h2>
@@ -3513,13 +3997,13 @@
 various places, at the page footers, on the help page, for special 
 section headings, buttons alt text and so on. These strings are
 customizable. The string chosen depends on the language of the
-document (set by <a name="IDX206"></a>
-<samp>`--lang'</samp>, <a name="IDX207"></a>
+document (set by <a name="IDX225"></a>
+&lsquo;<samp>--lang</samp>&rsquo;, <a name="IDX226"></a>
 <code>$LANG</code> or 
 <code>@documentlanguage</code>). This is the basis for internationalization
 as it allows for strings translations.
 </p>
-<p>The strings are found in a hash reference, <a name="IDX208"></a>
+<p>The strings are found in a hash reference, <a name="IDX227"></a>
 <code>$LANGUAGES</code>. 
 Each key is a language code. The associated value is also a hash
 reference. The key is an english string and the associated value
@@ -3530,11 +4014,12 @@
               ' Up ' =&gt; 'Plus haut',
 };
 </pre></td></tr></table>
-<p>It means that whenever the string <samp>`&nbsp;Up&nbsp;'</samp> is to be written
-and the language is <samp>`fr'</samp>, <samp>`Plus haut'</samp> is written. It is possible
-to customize the english strings by redefining the <samp>`en'</samp> language hash.
+
+<p>It means that whenever the string &lsquo;<samp>&nbsp;Up&nbsp;</samp>&rsquo; is to be written
+and the language is &lsquo;<samp>fr</samp>&rsquo;, &lsquo;<samp>Plus haut</samp>&rsquo; is written. It is possible
+to customize the english strings by redefining the &lsquo;<samp>en</samp>&rsquo; language hash.
 </p>
-<p>When a string contains a <samp>`%'</samp> followed by <samp>`{'</samp> <var>name</var> <samp>`}'</samp>
+<p>When a string contains a &lsquo;<samp>%</samp>&rsquo; followed by &lsquo;<samp>{</samp>&rsquo; <var>name</var> &lsquo;<samp>}</samp>&rsquo;
 it means that the string will be expanded by <code>texi2html</code>. For
 example, if we have
 </p>
@@ -3542,57 +4027,58 @@
               'See %{node_file_href}' =&gt; 'Voir %{node_file_href}',
 };
 </pre></td></tr></table>
-<p><samp>`%{node_file_href}'</samp> will be expanded to an href for a node in a 
-file by <code>texi2html</code> in the string. A <samp>`%%'</samp> will be expanded
-as <samp>`%'</samp>.
+
+<p>&lsquo;<samp>%{node_file_href}</samp>&rsquo; will be expanded to an href for a node in a 
+file by <code>texi2html</code> in the string. A &lsquo;<samp>%%</samp>&rsquo; will be expanded
+as &lsquo;<samp>%</samp>&rsquo;.
 </p>
-<p>For more on internationalization, see <a href="#SEC84">Internationalization</a>.
+<p>For more on internationalization, see <a href="#SEC93">Internationalization</a>.
 </p>
 <hr size="6">
 <a name="References"></a>
-<a name="SEC57"></a>
+<a name="SEC63"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC56" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC58" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC62" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC64" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 7.7 References </h2>
 
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#SEC58">7.7.1 Reference to external manual</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC64">7.7.1 Reference to external manual</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC59">7.7.2 Reference to an internal node</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC65">7.7.2 Reference to an internal node</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 </table>
 
 <hr size="6">
 <a name="Reference-to-external-manual"></a>
-<a name="SEC58"></a>
+<a name="SEC64"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC57" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC59" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC63" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC65" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC57" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC63" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 7.7.1 Reference to external manual </h3>
@@ -3603,24 +4089,24 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $href <b>external_href</b><i> $node $node_identifier $xml_node_identifier $manual_file_name</i>
-<a name="IDX209"></a>
+<a name="IDX228"></a>
 </dt>
 <dd><p><var>$node</var> is the node name, with @-commands. <var>$node_identifer</var> is the
 node name mapped to an identifier acceptable as a file name. 
 <var>$xml_node_identifier</var> is the
 node name mapped to an identifier acceptable as an <acronym>XML</acronym> identifier.
-Those identifiers are built as explained in <a href="texinfo.html#HTML-Xref">(texinfo)HTML Xref</a>,
+Those identifiers are built as explained in <a href="texinfo.html#HTML-Xref">(texinfo)HTML Xref</a> section `HTML Xref' in <cite>GNU Texinfo</cite>,
 thus allowing for cross references to external manuals. <var>$file</var> is the
 manual or file name of the external reference. This function should return an
 href leading to the external manual.
 </p>
 <p>The default for this function is to make a reference compatible with 
-<code>makeinfo</code>  (see <a href="texinfo.html#HTML-Xref">(texinfo)HTML Xref</a>).
+<code>makeinfo</code>  (see <a href="texinfo.html#HTML-Xref">(texinfo)HTML Xref</a> section `HTML Xref' in <cite>GNU Texinfo</cite>).
 </p></dd></dl>
 
 <dl>
 <dt><u>Function Reference:</u> $text <b>external_ref</b><i> $command $section $book $node_and_file $href $cross_ref_name</i>
-<a name="IDX210"></a>
+<a name="IDX229"></a>
 </dt>
 <dd><p>This function formats a reference to an external texinfo manual.
 The <var>$command</var> is the ref command (<code>ref</code>, <code>xref</code> or 
@@ -3628,7 +4114,7 @@
 The optionnal <var>$section</var> argument is the section in the book and 
  <var>book</var> is the book title.
 <var>$node_and_file</var> is the node and file name formatted according to the 
-convention used in info: <samp>`(file)node'</samp>. <var>$href</var> it an hypertextual
+convention used in info: &lsquo;<samp>(file)node</samp>&rsquo;. <var>$href</var> it an hypertextual
 reference to the distant manual constructed using the above function. 
 <var>$cross_ref_name</var> is an optionnal cross
 reference name appearing in the reference command. This function returns
@@ -3638,21 +4124,21 @@
 
 <hr size="6">
 <a name="Internal-reference"></a>
-<a name="SEC59"></a>
+<a name="SEC65"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC58" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC60" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC64" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC66" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC57" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC63" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 7.7.2 Reference to an internal node </h3>
@@ -3661,7 +4147,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $text <b>internal_ref</b><i> $command $href $short_name $name $is_section</i>
-<a name="IDX211"></a>
+<a name="IDX230"></a>
 </dt>
 <dd><p>This function formats a reference to a node in the current manual.
 The <var>$command</var> is the ref command (<code>ref</code>, <code>xref</code> or 
@@ -3678,21 +4164,21 @@
 
 <hr size="6">
 <a name="Alignement-commands"></a>
-<a name="SEC60"></a>
+<a name="SEC66"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC59" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC61" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC65" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC67" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 7.8 Commands used for centering and flushing of text </h2>
@@ -3701,17 +4187,17 @@
 <p>When a command controlling the alignement of text is used (<code>@center</code>,
 <code>@flushleft</code> and <code>@flushright</code>), the main program takes
 care of opening and closing paragraphs. The alignement commands are the
-key of the <a name="IDX212"></a>
+key of the <a name="IDX231"></a>
 <code>%paragraph_style</code> hash. 
 The value is used in the function doing the formatting of the paragraphs. 
-See section <a href="#SEC61">Formatting or not a paragraph or a preformatted region</a>.
+See section <a href="#SEC67">Formatting (or not) a paragraph and a preformatted region</a>.
 </p>
 <p>A function references allows for a customization of the formatting of the text 
 appearing in the command block.
 </p>
 <dl>
 <dt><u>Function Reference:</u> $result <b>paragraph_style_command</b><i> $command $text</i>
-<a name="IDX213"></a>
+<a name="IDX232"></a>
 </dt>
 <dd><p><var>$command</var> is the command name, <var>$text</var> is the text appearing within
 the command. This function returns a formatted text.
@@ -3720,50 +4206,50 @@
 
 <hr size="6">
 <a name="Paragraph-and-preformatted-region"></a>
-<a name="SEC61"></a>
+<a name="SEC67"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC60" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC62" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC66" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC68" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
-<h2 class="section"> 7.9 Formatting or not a paragraph or a preformatted region </h2>
+<h2 class="section"> 7.9 Formatting (or not) a paragraph and a preformatted region </h2>
 
 
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#SEC62">7.9.1 Paragraph and preformatted region formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC68">7.9.1 Paragraph and preformatted region formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC63">7.9.2 Avoiding paragraphs in formats</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC69">7.9.2 Avoiding paragraphs in formats</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 </table>
 
 <hr size="6">
 <a name="Paragraph-and-preformatted-formatting"></a>
-<a name="SEC62"></a>
+<a name="SEC68"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC61" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC63" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC67" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC69" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC61" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC67" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 7.9.1 Paragraph and preformatted region formatting </h3>
@@ -3773,13 +4259,18 @@
 by function references:
 </p>
 <dl>
-<dt><u>Function Reference:</u> $paragraph_text <b>paragraph</b><i> $text $alignement $formatting_command $formatting_command_formatted \$paragraph_number $format $item_number $enumerate_style $number</i>
-<a name="IDX214"></a>
+<dt><u>Function Reference:</u> $paragraph_text <b>paragraph</b><i> $text $alignement $index $formatting_command $formatting_command_formatted \$paragraph_number $format $item_number $enumerate_style $number $command_stack_at_end $command_stack_at_begin</i>
+<a name="IDX233"></a>
 </dt>
 <dd><p>This function formats a paragraph. <var>$text</var> is the text of the paragraph,
 <var>$alignement</var> is the empty string when no alignement command has
 been seen, otherwise it is the current alignement command name.
-See section <a href="#SEC60">Commands used for centering and flushing of text</a>.
+See section <a href="#SEC66">Commands used for centering and flushing of text</a>.
+<var>$indent</var> holds &lsquo;<samp>noindent</samp>&rsquo; or &lsquo;<samp>indent</samp>&rsquo; if the corresponding 
+@-command appeared in the paragraph.
+<var>$command_stack_at_end</var> and <var>$command_stack_at_begin</var> are arrays
+containing the opened @-commands at end and at beginning of the paragraph,
+latest on top.
 </p>
 <p>The remaining arguments are usefull when the paragraph appears within a
 list or table. It is usefull whenever the paragraph has to be formatted
@@ -3795,7 +4286,7 @@
 <var>\$paragraph_number</var> is a reference on the number of
 paragraphs in that format command. The corresponding variable should be 
 increased when a paragraph is added. <var>$format</var> is the format command. 
-See section <a href="#SEC66">Formatting individual table and list items</a>.
+See section <a href="#SEC72">Formatting individual table and list items</a>.
 </p>
 <p>If the <var>$format</var> is an enumerate, <var>$item_number</var> is the number of 
 the item in the list, <var>$enumerate_style</var> is the argument of the enumerate,
@@ -3803,18 +4294,21 @@
 </p></dd></dl>
 
 <dl>
-<dt><u>Function Reference:</u> $preformatted_text <b>preformatted</b><i> $text $style $region_name $formatting_command $formatting_command_formatted \$preformatted_number $format $item_number $enumerate_style $number</i>
-<a name="IDX215"></a>
+<dt><u>Function Reference:</u> $preformatted_text <b>preformatted</b><i> $text $style $region_name $formatting_command $formatting_command_formatted \$preformatted_number $format $item_number $enumerate_style $number $command_stack_at_end $command_stack_at_begin</i>
+<a name="IDX234"></a>
 </dt>
 <dd><p>This function formats a preformatted region. <var>$text</var> is the text of the
 preformatted region, <var>$style</var> is the css style associated with that
-preformatted region (See section <a href="#SEC34">Customizing the <code>texi2html</code> css lines</a>). <var>$region_name</var> is the 
+preformatted region (see section <a href="#SEC39">Customizing the <code>texi2html</code> css lines</a>). <var>$region_name</var> is the 
 name of the command opening        
-the preformatted region (<code>example</code>&hellip;, see <a href="#SEC64">Formatting of complex formats (<code>@example</code>, <code>@display</code>&hellip;)</a>) 
+the preformatted region (<code>example</code>&hellip;, see <a href="#SEC70">Formatting of complex formats (<code>@example</code>, <code>@display</code>&hellip;)</a>) 
 or a identifier for the preformatted context (for example 
-<code>menu-comment</code>, see <a href="#SEC73">Menu formatting</a>).
+<code>menu-comment</code>, see <a href="#SEC79">Menu formatting</a>).
 The alignment commands are not taken into account, as the spaces are
 preserved in preformatted regions, you should flush and center by hand.
+<var>$command_stack_at_end</var> and <var>$command_stack_at_begin</var> are arrays
+containing the opened @-commands at end and at beginning of the preformatted
+region, latest on top.
 </p>
 <p>The remaining arguments are usefull when the preformatted region appears 
 within a list or table. It is usefull whenever the preformatted region 
@@ -3832,7 +4326,7 @@
 preformatted regions in that format command. The corresponding variable 
 should be increased when a preformatted region is added. <var>$format</var> is the 
 format command. 
-See section <a href="#SEC66">Formatting individual table and list items</a>.
+See section <a href="#SEC72">Formatting individual table and list items</a>.
 </p>
 <p>If the <var>$format</var> is an enumerate, <var>$item_number</var> is the number of 
 the item in the list, <var>$enumerate_style</var> is the argument of the enumerate,
@@ -3841,21 +4335,21 @@
 
 <hr size="6">
 <a name="Avoiding-paragraphs"></a>
-<a name="SEC63"></a>
+<a name="SEC69"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC62" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC64" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC68" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC70" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC61" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC67" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 7.9.2 Avoiding paragraphs in formats </h3>
@@ -3863,48 +4357,65 @@
 
 <p>It is possible to avoid that a format closes the previous paragraph or
 preformatted region and reopens one, by putting the format command in a 
-hash, <a name="IDX216"></a>
+hash, <a name="IDX235"></a>
 <code>%format_in_paragraph</code> with a true value.
 </p>
 <hr size="6">
 <a name="Complex-formats"></a>
-<a name="SEC64"></a>
+<a name="SEC70"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC63" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC65" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC69" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC71" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 7.10 Formatting of complex formats (<code>@example</code>, <code>@display</code>&hellip;) </h2>
 
 
 <p>Here we see how a whole complex format is formatted. For the formatting
-of the text, see <a href="#SEC61">Formatting or not a paragraph or a preformatted region</a>.
+of the text, see <a href="#SEC67">Formatting (or not) a paragraph and a preformatted region</a>.
 </p>
 <p>The formatting of the complex formats is ultimately controlled by a
 function, however the default for this function uses a hash reference and 
 changing the hash reference values should be enough in most cases. This
-hash reference is called <a name="IDX217"></a>
+hash reference is called <a name="IDX236"></a>
 <code>$complex_format_map</code>. It has a key for each
 of the complex format commands (<code>example</code>, <code>smallexample</code>, 
 <code>lisp</code>, <code>smalllisp</code>, <code>display</code>, <code>smalldisplay</code>, 
 <code>format</code>, <code>smallformat</code>).
 </p>
-<p>The associated value is also a reference on a hash. The keys are <code>begin</code>
-and <code>end</code>. An eval of <code>begin</code> should lead to the beginning of the
-formatted <acronym>HTML</acronym>, an eval of <code>end</code> should lead to the end of the 
-formatted <acronym>HTML</acronym>. The enclosed text will be formatted as described in
-<a href="#SEC61">Formatting or not a paragraph or a preformatted region</a>, and the name of the complex
+<p>The associated value is also a reference on a hash. The keys are:
+</p>
+<dl compact="compact">
+<dt> <code>begin</code></dt>
+<dd><p>An eval of <code>begin</code> should lead to the beginning of the
+formatted <acronym>HTML</acronym>.
+</p></dd>
+<dt> <code>end</code></dt>
+<dd><p>An eval of <code>end</code> should lead to the end of the 
+formatted <acronym>HTML</acronym>.
+</p></dd>
+<dt> <code>class</code></dt>
+<dd><p>The <acronym>HTML</acronym> class. If not defined, the command name.
+</p></dd>
+<dt> <code>pre_style</code></dt>
+<dd><p>The preformatted style. If not defined the corresponding <acronym>CSS</acronym> style
+is used.
+</p></dd>
+</dl>
+
+<p>The enclosed text will be formatted as described in
+<a href="#SEC67">Formatting (or not) a paragraph and a preformatted region</a>, and the name of the complex
 format will be available to the function formatting the text.
 </p>
 <p>If you aren't satisfied with this scheme, you can redefine the following
@@ -3912,30 +4423,30 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $complex_format_text <b>complex_format</b><i> $format_name $preformatted_text</i>
-<a name="IDX218"></a>
+<a name="IDX237"></a>
 </dt>
 <dd><p><var>$format_name</var> is the complex format name, <var>$preformatted_text</var> is the 
-text allready formatted as described in <a href="#SEC61">Formatting or not a paragraph or a preformatted region</a>.
+text allready formatted as described in <a href="#SEC67">Formatting (or not) a paragraph and a preformatted region</a>.
 This function returns the whole complex format.
 </p></dd></dl>
 
 <hr size="6">
 <a name="Lists-tables"></a>
-<a name="SEC65"></a>
+<a name="SEC71"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC64" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC66" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC70" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC72" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 7.11 Customizing the formatting of lists and tables </h2>
@@ -3949,29 +4460,29 @@
 </li></ul>
 
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#SEC66">7.11.1 Formatting individual table and list items</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC72">7.11.1 Formatting individual table and list items</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC67">7.11.2 Formatting of a whole table or list</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC73">7.11.2 Formatting of a whole table or list</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 </table>
 
 <hr size="6">
 <a name="Table-and-list-items"></a>
-<a name="SEC66"></a>
+<a name="SEC72"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC65" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC67" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC71" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC73" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC65" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC71" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 7.11.1 Formatting individual table and list items </h3>
@@ -3981,9 +4492,10 @@
 For example <code>@minus</code> is the formatting command here:
 </p><table><tr><td>&nbsp;</td><td><pre class="example">@table @minus
 </pre></td></tr></table>
+
 <p>The default is to apply the command to the text item, however it is possible
 to avoid it.
-The hash <a name="IDX219"></a>
+The hash <a name="IDX238"></a>
 <code>%special_list_commands</code> has an entry for each of the 
 format command. Each of these entries is a hash reference. If a formatting
 command is a key of the hash reference, then the formatting command is not
@@ -3991,11 +4503,13 @@
 </p>
 <table><tr><td>&nbsp;</td><td><pre class="example">$special_list_commands{'itemize'} = { 'bullet' =&gt; '' };
 </pre></td></tr></table>
+
 <p>and we have the following <code>@itemize</code>:
 </p><table><tr><td>&nbsp;</td><td><pre class="example">@itemize @bullet
 @item an item
 @end itemize
 </pre></td></tr></table>
+
 <p>then <code>@bullet</code> will not be applied to <code>an item</code>.
 </p>
 <dl compact="compact">
@@ -4003,11 +4517,11 @@
 <dd><p>The items of lists are formatted using the following function reference:
 </p><dl>
 <dt><u>Function Reference:</u> $list_item <b>list_item</b><i> $text $format $command $formatted_command $item_number $enumerate_style $number</i>
-<a name="IDX220"></a>
+<a name="IDX239"></a>
 </dt>
 <dd><p>This function formats the text between <code>@item</code> commands. <var>$text</var> 
 is the text corresponding with the item. <var>$format</var> is the type of format,
-<samp>`itemize'</samp> or <samp>`enumerate'</samp>. <var>$command</var> is the formatting command
+&lsquo;<samp>itemize</samp>&rsquo; or &lsquo;<samp>enumerate</samp>&rsquo;. <var>$command</var> is the formatting command
 given in argument to <code>@itemize</code>, <var>$formatted_command</var> is this command
 formatted if it is a leading command, like <code>@minus</code>.
 </p>
@@ -4025,23 +4539,25 @@
 following lines, corresponding with the second column text.
 </p>
 <dl>
-<dt><u>Function Reference:</u> $table_item <b>table_item</b><i> $item_text $index_label_text $format $command $formatted_command</i>
-<a name="IDX221"></a>
+<dt><u>Function Reference:</u> $table_item <b>table_item</b><i> $item_text $index_label_text $format $command $formatted_command $command_stack</i>
+<a name="IDX240"></a>
 </dt>
 <dd><p>This function is used to format the text on the <code>@item</code> line.
 <var>$text_item</var> is the text line. In case there is an index entry 
 associated with the <code>@item</code> (as with <code>@ftable</code> and 
 <code>@vtable</code>), <var>$index_label_text</var> is the text inserted at 
-the place where an index entry appears. See section <a href="#SEC77">Formatting of index entries</a>.
+the place where an index entry appears. See section <a href="#SEC85">Formatting of index entries</a>.
 <var>$format</var> is the type of format,
-<samp>`table'</samp>, <samp>`ftable'</samp> or <samp>`vtable'</samp>. <var>$command</var> is the formatting command
+&lsquo;<samp>table</samp>&rsquo;, &lsquo;<samp>ftable</samp>&rsquo; or &lsquo;<samp>vtable</samp>&rsquo;. <var>$command</var> is the formatting command
 given in argument to the table format command, <var>$formatted_command</var> is 
 this command formatted if it is a leading command, like <code>@minus</code>.
+<var>$command_stack</var> is an array with all the @-commands opened, latest
+on top.
 </p></dd></dl>
 
 <dl>
 <dt><u>Function Reference:</u> $table_line <b>table_line</b><i> $text</i>
-<a name="IDX222"></a>
+<a name="IDX241"></a>
 </dt>
 <dd><p>This function is used to format the text on the lines following
 the <code>@item</code> line. <var>$text</var> is the corresponding text. 
@@ -4054,7 +4570,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $multitable_cell <b>cell</b><i> $text</i>
-<a name="IDX223"></a>
+<a name="IDX242"></a>
 </dt>
 <dd><p>This function is used to format the text of a multitable cell, the text 
 following a <code>@item</code> or a <code>@tab</code>.
@@ -4063,10 +4579,10 @@
 
 <dl>
 <dt><u>Function Reference:</u> $multitable_row <b>row</b><i> $text $item_command</i>
-<a name="IDX224"></a>
+<a name="IDX243"></a>
 </dt>
 <dd><p>This function is used to format a multitable row. <var>$text</var> is
-the row text, with cells allready formatted with the <a name="IDX225"></a>
+the row text, with cells allready formatted with the <a name="IDX244"></a>
 <code>$cell</code>
 function reference. <var>$item_command</var> is the command used to introduce 
 the row, such that it is possible to distinguish between <code>@item</code> and
@@ -4077,26 +4593,26 @@
 
 <hr size="6">
 <a name="Whole-table-list"></a>
-<a name="SEC67"></a>
+<a name="SEC73"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC66" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC68" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC72" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC74" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC65" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC71" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 7.11.2 Formatting of a whole table or list </h3>
 
-<p>If the Texinfo command is a key of the <a name="IDX226"></a>
+<p>If the Texinfo command is a key of the <a name="IDX245"></a>
 <code>%format_map</code>, the associated
 value is used to specify the formatting of the construct, otherwise a function 
 is called. 
@@ -4123,19 +4639,19 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $whole_table_list <b>table_list</b><i> $command $text</i>
-<a name="IDX227"></a>
+<a name="IDX246"></a>
 </dt>
 <dd><p><var>$command</var> is the Texinfo command name, <var>$text</var> is the formatted
 items.
 </p></dd></dl>
 
-<p>If you still want to use <a name="IDX228"></a>
+<p>If you still want to use <a name="IDX247"></a>
 <code>%format_map</code> but differently from 
 the default, it is possible to redefine the following function reference:
 </p>
 <dl>
 <dt><u>Function Reference:</u> $whole_table_list <b>format</b><i> $command $format $text</i>
-<a name="IDX229"></a>
+<a name="IDX248"></a>
 </dt>
 <dd><p><var>$command</var> is the @-command, <var>$format</var> is the entry associated with
 <var>$command</var> in <code>%format_map</code>. <var>$text</var> is the formatted items.
@@ -4143,21 +4659,21 @@
 
 <hr size="6">
 <a name="Definitions"></a>
-<a name="SEC68"></a>
+<a name="SEC74"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC67" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC69" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC73" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC75" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 7.12 Definition commands formatting </h2>
@@ -4168,34 +4684,34 @@
 and the definition function text.
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#SEC69">7.12.1 Customizing the interpretation of a definition line</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC75">7.12.1 Customizing the interpretation of a definition line</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC70">7.12.2 Customization of the definition formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC76">7.12.2 Customization of the definition formatting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 </table>
 
 <hr size="6">
 <a name="Definition-line"></a>
-<a name="SEC69"></a>
+<a name="SEC75"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC68" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC70" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC74" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC76" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC68" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC74" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 7.12.1 Customizing the interpretation of a definition line </h3>
 
-<p>The keys of the hash <a name="IDX230"></a>
+<p>The keys of the hash <a name="IDX249"></a>
 <code>%def_map</code> are definition command names.
 There are two types of entries:
 </p>
@@ -4207,27 +4723,31 @@
 <p>For example if we have:
 </p><table><tr><td>&nbsp;</td><td><pre class="example">$def_map{'deftruc'} = '@defvr {A truc}';
 </pre></td></tr></table>
+
 <p>and a line like
 </p><table><tr><td>&nbsp;</td><td><pre class="example">@deftruc var
 </pre></td></tr></table>
+
 <p>the line will be transformed in
 </p><table><tr><td>&nbsp;</td><td><pre class="example">@defvr {A truc} var
 </pre></td></tr></table>
+
 </li><li>
 If the command isn't a shortcut, it is associated with an array
-reference. The first element is <samp>`f'</samp>, <samp>`v'</samp> or <samp>`t'</samp> corresponding
-with the index type (<samp>`f'</samp> for function, <samp>`v'</samp> for variable,
-<samp>`t'</samp> for type).
+reference. The first element is &lsquo;<samp>f</samp>&rsquo;, &lsquo;<samp>v</samp>&rsquo; or &lsquo;<samp>t</samp>&rsquo; corresponding
+with the index type (&lsquo;<samp>f</samp>&rsquo; for function, &lsquo;<samp>v</samp>&rsquo; for variable,
+&lsquo;<samp>t</samp>&rsquo; for type).
 
 <p>The remaining of the array describes how to interpret the text following
 the definition command on the definition command line. 
 The entry item specify what corresponds
 with the next bracketed item or word. Currently the possibilities are
-<samp>`category'</samp>, <samp>`name'</samp>, <samp>`type'</samp>, <samp>`class'</samp> and <samp>`arg'</samp>.
+&lsquo;<samp>category</samp>&rsquo;, &lsquo;<samp>name</samp>&rsquo;, &lsquo;<samp>type</samp>&rsquo;, &lsquo;<samp>class</samp>&rsquo; and &lsquo;<samp>arg</samp>&rsquo;.
 </p>
 <p>For example if we have
 </p><table><tr><td>&nbsp;</td><td><pre class="example">def_map{'defvr'} = [ 'v', 'category', 'name' ];
 </pre></td></tr></table>
+
 <p>The first bracketed item following <code>@defvr</code> is considered
 to be the category and the next one is the name. The index associated
 with the definition line is the variables index.
@@ -4235,21 +4755,21 @@
 
 <hr size="6">
 <a name="Definition-formatting"></a>
-<a name="SEC70"></a>
+<a name="SEC76"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC69" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC71" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC75" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC77" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC68" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC74" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 7.12.2 Customization of the definition formatting </h3>
@@ -4257,44 +4777,44 @@
 <p>Four functions are used when formatting a definition command:
 </p>
 <dl compact="compact">
-<dt> category name</dt>
+<dt> <strong>category name</strong></dt>
 <dd><dl>
 <dt><u>Function Reference:</u> $category <b>definition_category</b><i> $category_or_name $class $style</i>
-<a name="IDX231"></a>
+<a name="IDX250"></a>
 </dt>
 <dd><p>This function precise a category or an index entry name associating a class 
 <var>$class</var> (if given) with <var>$category_or_name</var>. The <var>$style</var> of the
-definition may be <samp>`f'</samp>, for function, <samp>`v'</samp>, for variable or <samp>`t'</samp>, 
+definition may be &lsquo;<samp>f</samp>&rsquo;, for function, &lsquo;<samp>v</samp>&rsquo;, for variable or &lsquo;<samp>t</samp>&rsquo;, 
 for type.
 </p></dd></dl>
 </dd>
-<dt> formatting of the definition line</dt>
+<dt> <strong>formatting of the definition line</strong></dt>
 <dd><dl>
 <dt><u>Function Reference:</u> $line <b>def_line</b><i> $category $name $type $arguments $index_label</i>
-<a name="IDX232"></a>
+<a name="IDX251"></a>
 </dt>
 <dd><p>This function formats the definition line. <var>$category</var> is the category
-formatted with <a name="IDX233"></a>
+formatted with <a name="IDX252"></a>
 <code>$definition_category</code>, <var>$name</var>, <var>$type</var> and 
 <var>arguments</var> are the element of the definition line. <var>$index_label</var> is
 the text inserted at the place where an index entry appears. 
-See section <a href="#SEC77">Formatting of index entries</a>.
+See section <a href="#SEC85">Formatting of index entries</a>.
 </p></dd></dl>
 
 </dd>
-<dt> definition text</dt>
+<dt> <strong>definition text</strong></dt>
 <dd><dl>
 <dt><u>Function Reference:</u> $definition_text <b>def_item</b><i> $text</i>
-<a name="IDX234"></a>
+<a name="IDX253"></a>
 </dt>
 <dd><p>This function formats the definition text, <var>$text</var>.
 </p></dd></dl>
 
 </dd>
-<dt> the whole definition</dt>
+<dt> <strong>the whole definition</strong></dt>
 <dd><dl>
 <dt><u>Function Reference:</u> $definition <b>def</b><i> $text</i>
-<a name="IDX235"></a>
+<a name="IDX254"></a>
 </dt>
 <dd><p>This function formats the whole definition. The definition line and text 
 formatted by the above functions are in <var>$text</var>.
@@ -4305,21 +4825,21 @@
 
 <hr size="6">
 <a name="Headings"></a>
-<a name="SEC71"></a>
+<a name="SEC77"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC70" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC72" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC76" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC78" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 7.13 Customizing headings formatting </h2>
@@ -4328,7 +4848,7 @@
 with the corresponding function reference:
 </p><dl>
 <dt><u>Function Reference:</u> $heading_text <b>heading</b><i> \%element_reference</i>
-<a name="IDX236"></a>
+<a name="IDX255"></a>
 </dt>
 <dd><p>The <var>\%element_reference</var> is a reference on a hash corresponding
 with the sectioning element. The following keys are of interest:
@@ -4343,8 +4863,8 @@
 <dd><p>true if the sectioning element is a node without associated structuring command
 </p></dd>
 <dt> <code>level</code></dt>
-<dd><p>The level of the element in the document tree. <samp>`0'</samp> is for <code>@top</code>,
-<samp>`1'</samp> for <code>@chapter</code> and so on
+<dd><p>The level of the element in the document tree. &lsquo;<samp>0</samp>&rsquo; is for <code>@top</code>,
+&lsquo;<samp>1</samp>&rsquo; for <code>@chapter</code> and so on
 </p></dd>
 <dt> <code>tag_level</code></dt>
 <dd><p>the sectioning element name, with <code>@raisesections</code> and 
@@ -4353,23 +4873,36 @@
 </dl>
 </dd></dl>
 
+<p>It is also possible to customize the heading text with section number
+with the following function reference (called for headings and nodes):
+</p><dl>
+<dt><u>Function Reference:</u> $result_texi <b>heading_texi</b><i> $heading_command $heading $number</i>
+<a name="IDX256"></a>
+</dt>
+<dd><p><var>$heading_command</var> is the sectioning @-command of that heading. 
+<var>$heading</var> is the texinfo for that heading. <var>$number</var> is the
+heading number classicaly computed with dots between numbers, and
+letters for top level appendix numbering. This function should return the 
+texinfo text corresponding with the numbered heading.
+</p></dd></dl>
+
 <hr size="6">
 <a name="Special-regions"></a>
-<a name="SEC72"></a>
+<a name="SEC78"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC71" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC73" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC77" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC79" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 7.14 Formatting of special regions (<code>@verbatim</code>, <code>@cartouche</code>, <code>@quotation</code>) </h2>
@@ -4379,20 +4912,20 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $raw_region <b>raw</b><i> $command $text</i>
-<a name="IDX237"></a>
+<a name="IDX257"></a>
 </dt>
 <dd><p><var>$command</var> is the command name, <var>$text</var> is the raw text.
 </p></dd></dl>
 
 <p>If LaTeX2HTML is used, <code>@tex</code> regions are handled differently,
-from within the main program.
+(see section <a href="#SEC91">Bypassing normal formatting</a>).
 </p>
 <p>The <code>@cartouche</code> command formatting is controlled by the
 function reference:
 </p>
 <dl>
 <dt><u>Function Reference:</u> $cartouche <b>cartouche</b><i> $text</i>
-<a name="IDX238"></a>
+<a name="IDX258"></a>
 </dt>
 <dd><p><var>$text</var> is the text appearing within the cartouche.
 </p></dd></dl>
@@ -4402,81 +4935,97 @@
 it allows to prepend a string to the quotation text:
 </p>
 <dl>
-<dt><u>Function Reference:</u> $prepended_string <b>quotation_prepend_text</b><i> $style $text</i>
-<a name="IDX239"></a>
+<dt><u>Function Reference:</u> $prepended_string <b>quotation_prepend_text</b><i> $text</i>
+<a name="IDX259"></a>
 </dt>
-<dd><p><var>$style</var> is the first argument of the <code>@quotation</code> if there are
-two arguments. <var>$text</var> is the second argument or the first if there is
-one argument. There are still @-commands in these strings. This function
+<dd><p><var>$text</var> is the argument of the quotation with @-commands not 
+interpreted. This function
 can return a string which will be prepended to the quotation text.
 </p></dd></dl>
 
+
 <p>The whole quotation is formatted by:
 </p>
 <dl>
-<dt><u>Function Reference:</u> $quotation <b>quotation</b><i> $quotation_text $argument_text $argument_style_texi $argument_style_id</i>
-<a name="IDX240"></a>
+<dt><u>Function Reference:</u> $quotation <b>quotation</b><i> $quotation_text $argument_text $argument_text_texi</i>
+<a name="IDX260"></a>
 </dt>
 <dd><p><var>$quotation_text</var> is the quotation text, formatted, with the text 
-prepended by the function above. <var>$argument_text</var> is the second argument 
-of the <code>@quotation</code> or the first if there is one argument, formatted.
-The other arguments are defiend if there are two arguments for the 
-<code>@quotation</code>, <var>$argument_style_texi</var> is this argument, with 
-@-commands, and  <var>$argument_style_id</var> is this argument transformed in 
-an identifier which can be used as an <acronym>XML</acronym> identifier.
+prepended by the function above. <var>$argument_text</var> is the argument 
+of the <code>@quotation</code>, formatted. <var>$argument_text_texi</var> is the argument
+of the <code>@quotation</code>, simply formatted.
 </p></dd></dl>
 
 
 <hr size="6">
 <a name="Menus"></a>
-<a name="SEC73"></a>
+<a name="SEC79"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC72" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC74" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC78" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC80" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 7.15 Menu formatting </h2>
 
+<p>There are two possibilities for menu formatting:
+</p>
+<ul>
+<li> format the whole menu in a preformatted environment, like 
+in <a href="#SEC70">Formatting of complex formats (<code>@example</code>, <code>@display</code>&hellip;)</a>;
+</li><li> format the menu in table with more specialized formatting for each
+part of the menu; 
+</li></ul>
+
+<p>The simple formatting is used if <a name="IDX261"></a>
+<code>$SIMPLE_MENU</code> is true, 
+otherwise the format with tables is used (this is the default).
+</p>
 <p>To understand how the formatting of menus is controlled, the different
 parts of a menu are first described, then how to control the formatting
-of each of these parts.
+of each of these parts, for each possible formatting.
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#SEC74">7.15.1 The structure of a menu</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 A menu consists in menu entry and menu 
-                               comments
+<tr><td align="left" valign="top"><a href="#SEC80">7.15.1 The structure of a menu</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                  A menu consists in menu entry and menu 
+                                comments
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC75">7.15.2 The formatting of the different menu components</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC81">7.15.2 The formatting of the different menu components</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">  
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC82">7.15.3 Simple menu formatting in a preformatted environment</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      formatting of a whole menu in a simple 
+                                preformatted environement
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC83">7.15.4 The formatting of the menu in a table</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       formatting of a whole menu in a
+                                table environment
 </td></tr>
 </table>
 
 <hr size="6">
 <a name="Menu-parts"></a>
-<a name="SEC74"></a>
+<a name="SEC80"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC73" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC75" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC79" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC81" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC73" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC79" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 7.15.1 The structure of a menu </h3>
@@ -4484,10 +5033,10 @@
 <p>In <code>texi2html</code>, a menu is considered to be composed of 2 parts, the
 <em>menu entries</em> and the <em>menu comments</em>. Menu entries are further 
 divided in an <em>entry link</em> and optionnaly an <em>entry description</em>.
-The entry link consists in a node name and an optionnal  menu entry
+The entry link consists in a node name and an optionnal menu entry
 name.
 </p>
-<p>A menu entry begins with <samp>`*'</samp> at the beginning of the line. It begins
+<p>A menu entry begins with &lsquo;<samp>*</samp>&rsquo; at the beginning of the line. It begins
 with the entry link, followed by the description. The description spans until
 the next menu entry, or some text begining at the first character of a line
 or an empty line, not contained within a command block which begun in the 
@@ -4497,7 +5046,7 @@
 <p>Here is an illustration of these rules:
 </p>
 <table><tr><td>&nbsp;</td><td><pre class="example">@menu
-* node name: entry name.        description begins
+* entry name: node name.        description begins
    description continues
 * another menu entry::
    description begins
@@ -4508,104 +5057,74 @@
 * node::                        description begins
 A menu comment. The line starts at the first character
 
-* last entry::         description begins <em>text
+* last entry::         description begins @emph{text
 of the description, even if the line begins at the first character,
-because we are in @emph</em>.
+because we are in @emph}.
 @end menu
 </pre></td></tr></table>
+
 <hr size="6">
-<a name="Menu-formatting"></a>
-<a name="SEC75"></a>
+<a name="Menu-components-formatting"></a>
+<a name="SEC81"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC74" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC76" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC80" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC82" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC73" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC79" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 7.15.2 The formatting of the different menu components </h3>
 
-<p>In the default case, the name of the section corresponding with the 
-node is used instead of the node name. If <a name="IDX241"></a>
-<code>$NODE_NAME_IN_MENU</code> is 
-true, however, node names are used. If <a name="IDX242"></a>
-<code>$AVOID_MENU_REDUNDANCY</code>
-is true and menu entry equal menu description the description isn't printed.
-This is the default. Likewise, if node or section name equal entry name, 
-do not print entry name.
-</p>
-<p>A symbol, <a name="IDX243"></a>
-<code>$MENU_SYMBOL</code> is put at the beginning of menu entries
-when the node name is used. The default is <samp>`&amp;bull;'</samp>.
-If <a name="IDX244"></a>
-<code>$UNNUMBERED_SYMBOL_IN_MENU</code> is true it is 
-also put at the beginning of unnumbered section names. This is not
-done by default.
-</p>
-<p>The menu comments are considered to be preformatted text. The style 
-associated with this preformatted text is determined by 
-<a name="IDX245"></a>
-<code>$MENU_PRE_STYLE</code>. Default is <samp>`font-family: serif'</samp>.
-The css class associated with menu comments is <code>menu-comments</code>.
-</p>
 <p>Three function references are associated with the formatting of the 
 different parts of a menu:
 </p><dl>
 <dt><u>Function Reference:</u> $link <b>menu_link</b><i> $section \%state $href $node $name $ending</i>
-<a name="IDX246"></a>
+<a name="IDX262"></a>
 </dt>
 <dd><p><var>$section</var> is the section name corresponding with the link, <var>$href</var>
 is the link hypertextual reference. <var>$href</var> may be absent. <var>\%state</var>
 holds informations about the current context. The only key which could be
 of interest is <code>preformatted</code>, true if the context is a preformatted
-context. See section <a href="#SEC48">Three contexts for expansions: preformatted, normal and string</a>. 
+context. See section <a href="#SEC54">Three contexts for expansions: preformatted, normal and string</a>. 
 <var>$node</var> is the node name, <var>$name</var> is the
-name of the node, and <var>$ending</var> is the text ending the link entry.
+name of the node. <var>$ending</var> is the text ending the link entry, 
+in general &lsquo;<samp>::</samp>&rsquo; followed by some spaces.
 </p></dd></dl>
 
 <dl>
-<dt><u>Function Reference:</u> $description <b>menu_description</b><i> $description_text \%state</i>
-<a name="IDX247"></a>
+<dt><u>Function Reference:</u> $description <b>menu_description</b><i> $description_text \%state $element_text</i>
+<a name="IDX263"></a>
 </dt>
 <dd><p><var>$description_text</var> is the text of the menu description. <var>\%state</var>
-should be used similarly than for the menu link.
+should be used similarly than for the menu link. <var>$element_text</var>
+is the heading of the element associated with the node.
 </p></dd></dl>
 
 <dl>
 <dt><u>Function Reference:</u> $menu_comment <b>menu_comment</b><i> $text</i>
-<a name="IDX248"></a>
+<a name="IDX264"></a>
 </dt>
-<dd><p><var>$text</var> is the text of the menu comment. It is in a preformatted 
+<dd><p><var>$text</var> is the text of the menu comment. It is always in a preformatted 
 environment.
 </p></dd></dl>
 
-<p>The following function reference controls the formatting of a wole menu:
-</p>
-<dl>
-<dt><u>Function Reference:</u> $menu <b>menu</b><i> $menu_components_text</i>
-<a name="IDX249"></a>
-</dt>
-<dd><p><var>$menu_components_text</var> is the formatted menu components text, obtained
-as explained above.
-</p></dd></dl>
-
-<p>The last function reference corresponds with a special case. It
+<p>Another function reference corresponds with a special case. It
 is used when a menu entry appears within another block command, to
 avoid the possibilities of invalid <acronym>HTML</acronym> production.
 In that case the menu description and menu comments are not formatted 
 specially, but treated like normal text.
 </p><dl>
 <dt><u>Function Reference:</u> $link <b>simple_menu_link</b><i> $link_text $href $node $name $ending</i>
-<a name="IDX250"></a>
+<a name="IDX265"></a>
 </dt>
 <dd><p><var>$link_text</var> is the text corresponding with the link name, <var>$href</var>
 is the link hypertextual reference.
@@ -4614,22 +5133,108 @@
 </p></dd></dl>
 
 <hr size="6">
+<a name="Simple-menu-formatting"></a>
+<a name="SEC82"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC81" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC83" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC79" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h3 class="subsection"> 7.15.3 Simple menu formatting in a preformatted environment </h3>
+
+<p>If the menu is to be formatted in a single preformatted environment,
+an entry for &lsquo;<samp>menu</samp>&rsquo; should be added to the <code>$complex_format_map</code>
+hash reference (see section <a href="#SEC70">Formatting of complex formats (<code>@example</code>, <code>@display</code>&hellip;)</a>).
+In the default case, if the user didn't add an entry himself, a very simple 
+entry is used, with:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">$complex_format_map-&gt;{'menu'} = { 'begin' =&gt; q{''} , 'end' =&gt; q{''},
+    'pre_style' =&gt; &quot;$MENU_PRE_STYLE&quot;, 'class' =&gt; 'menu-preformatted' };
+</pre></td></tr></table>
+
+<hr size="6">
+<a name="Table-menu-formatting"></a>
+<a name="SEC83"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC82" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC84" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC79" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h3 class="subsection"> 7.15.4 The formatting of the menu in a table </h3>
+
+<p>In the default case, the name of the section corresponding with the 
+node is used instead of the node name. If <a name="IDX266"></a>
+<code>$NODE_NAME_IN_MENU</code> is 
+true, however, node names are used. If <a name="IDX267"></a>
+<code>$AVOID_MENU_REDUNDANCY</code>
+is true and menu entry equal menu description the description isn't printed.
+This is the default. Likewise, if node or section name equal entry name, 
+do not print entry name.
+</p>
+<p>A symbol, <a name="IDX268"></a>
+<code>$MENU_SYMBOL</code> is put at the beginning of menu entries
+when the node name is used. The default is &lsquo;<samp>&amp;bull;</samp>&rsquo;.
+If <a name="IDX269"></a>
+<code>$UNNUMBERED_SYMBOL_IN_MENU</code> is true it is 
+also put at the beginning of unnumbered section names. This is not
+done by default.
+</p>
+<p>The menu comments are considered to be preformatted text. The style 
+associated with this preformatted text is determined by 
+<a name="IDX270"></a>
+<code>$MENU_PRE_STYLE</code>. Default is &lsquo;<samp>font-family: serif</samp>&rsquo;.
+The css class associated with menu comments is <code>menu-comments</code>.
+</p>
+<p>The following function reference controls the formatting of a wole menu
+in that case:
+</p>
+<dl>
+<dt><u>Function Reference:</u> $menu <b>menu</b><i> $menu_components_text</i>
+<a name="IDX271"></a>
+</dt>
+<dd><p><var>$menu_components_text</var> is the formatted menu components text, obtained
+as explained above.
+</p></dd></dl>
+
+<hr size="6">
 <a name="Indices"></a>
-<a name="SEC76"></a>
+<a name="SEC84"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC75" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC77" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC83" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC85" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 7.16 Indices formatting </h2>
@@ -4640,30 +5245,30 @@
 appear, and the index list is printed with a <code>@printindex</code> command. 
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#SEC77">7.16.1 Formatting of index entries</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Index entries in the main document are 
+<tr><td align="left" valign="top"><a href="#SEC85">7.16.1 Formatting of index entries</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             Index entries in the main document are 
                                   targets for hypertext references
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC78">7.16.2 Customizing the formatting of index lists</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                    Customizing the formatting of the index list
+<tr><td align="left" valign="top"><a href="#SEC86">7.16.2 Customizing the formatting of index lists</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                    Customizing the formatting of the index list
 </td></tr>
 </table>
 
 <hr size="6">
 <a name="Index-entry-place"></a>
-<a name="SEC77"></a>
+<a name="SEC85"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC76" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC78" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC84" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC86" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC76" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC84" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 7.16.1 Formatting of index entries </h3>
@@ -4675,7 +5280,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $target <b>index_entry_label</b><i> $identifier $preformatted</i>
-<a name="IDX251"></a>
+<a name="IDX272"></a>
 </dt>
 <dd><p><var>$identifier</var> should be used to create
 a target for links (typically associated with a name or id 
@@ -4685,21 +5290,21 @@
 
 <hr size="6">
 <a name="Index-list"></a>
-<a name="SEC78"></a>
+<a name="SEC86"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC77" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC79" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC85" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC87" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC76" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC84" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 7.16.2 Customizing the formatting of index lists </h3>
@@ -4713,7 +5318,7 @@
 and should be used to jump directly to a letter entry. Indices lists
 may be split across pages, thus the different letters may appear on different
 files. The number of index entries appearing on each page is determined
-by a variable <a name="IDX252"></a>
+by a variable <a name="IDX273"></a>
 <code>$SPLIT_INDEX</code> if set. The default is to split
 indices after 100 entries.
 </p>
@@ -4724,7 +5329,7 @@
 <dt> <em>formatting of a letter in a summary</em></dt>
 <dd><dl>
 <dt><u>Function Reference:</u> $letter <b>summary_letter</b><i> $letter $file $identifier</i>
-<a name="IDX253"></a>
+<a name="IDX274"></a>
 </dt>
 <dd><p>This function is used to format a letter appearing in a summary, refering
 to a letter entry in the index list.
@@ -4739,7 +5344,7 @@
 <dt> <em>formatting of a summary</em></dt>
 <dd><dl>
 <dt><u>Function Reference:</u> $summary <b>index_summary</b><i> \@alphabetical_letters \@nonalphabetical_letters</i>
-<a name="IDX254"></a>
+<a name="IDX275"></a>
 </dt>
 <dd><p><var>\@alphabetical_letters</var> and <var>\@nonalphabetical_letters</var> contain the
 formatted summary letters, formatted with the above function.
@@ -4749,7 +5354,7 @@
 <dt> <em>formatting of an index entry</em></dt>
 <dd><dl>
 <dt><u>Function Reference:</u> $entry <b>index_entry</b><i> $entry_href $entry_text $section_href $section_heading</i>
-<a name="IDX255"></a>
+<a name="IDX276"></a>
 </dt>
 <dd><p><var>$entry_href</var> is a reference to the place where the index entry 
 appeared, <var>$entry_text</var> is the corresponding text. <var>$section_href</var>
@@ -4761,7 +5366,7 @@
 <dt> <em>formatting of letter entry</em></dt>
 <dd><dl>
 <dt><u>Function Reference:</u> $letter_entry <b>index_letter</b><i> $letter $identifier $index_entries_text</i>
-<a name="IDX256"></a>
+<a name="IDX277"></a>
 </dt>
 <dd><p>This function formats a letter entry, consisting in all the index entries 
 beginning with this letter. <var>$letter</var> is the letter, <var>$identifier</var> 
@@ -4774,7 +5379,7 @@
 <dt> <em>formatting of whole index</em></dt>
 <dd><dl>
 <dt><u>Function Reference:</u> $index <b>print_index</b><i> $index_text $index_name</i>
-<a name="IDX257"></a>
+<a name="IDX278"></a>
 </dt>
 <dd><p><var>$index_text</var> is the text of all the index entries grouped by letter
 appearing in that page formatted as above. <var>index_name</var> is the name of
@@ -4785,21 +5390,21 @@
 
 <hr size="6">
 <a name="Floats-and-lists-of-floats"></a>
-<a name="SEC79"></a>
+<a name="SEC87"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC78" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC80" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC86" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC88" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 7.17 Floats and lists of floats </h2>
@@ -4814,7 +5419,7 @@
 <dt> <code>caption_texi</code></dt>
 <dt> <code>shortcaption_texi</code></dt>
 <dd><p>A reference on an array containing the caption or shortcaption lines,
-unformatted.
+with texi @-commands.
 </p></dd>
 <dt> <code>style_texi</code></dt>
 <dd><p>The style with texi @-commands.
@@ -4849,29 +5454,29 @@
 </dl>
 
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#SEC80">7.17.1 Formatting a float</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                           Formatting of floats
+<tr><td align="left" valign="top"><a href="#SEC88">7.17.1 Formatting a float</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                           Formatting of floats
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC81">7.17.2 Formatting lists of floats</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                  Formatting the lists of floats 
+<tr><td align="left" valign="top"><a href="#SEC89">7.17.2 Formatting lists of floats</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                  Formatting the lists of floats 
 </td></tr>
 </table>
 
 <hr size="6">
 <a name="Floats"></a>
-<a name="SEC80"></a>
+<a name="SEC88"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC79" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC81" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC87" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC89" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC79" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC87" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 7.17.1 Formatting a float </h3>
@@ -4883,7 +5488,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> (\@caption_lines_returned, \@shortcaption_lines_returned) <b>caption_shortcaption</b><i> \%float \@caption_lines \@shortcaption_lines</i>
-<a name="IDX258"></a>
+<a name="IDX279"></a>
 </dt>
 <dd><p><var>\%float</var> is the structure defined above. <var>\@caption_lines</var> and 
 <var>\@shortcaption_lines</var> are references on arrays containing the 
@@ -4896,7 +5501,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $text <b>float</b><i> $float_text \%float $caption_text $shortcaption_text</i>
-<a name="IDX259"></a>
+<a name="IDX280"></a>
 </dt>
 <dd><p><var>$float_text</var> is the text appearing within the <code>@float</code>, formatted.
 <var>\%float</var> is still the structure defined above. <var>$caption_text</var> and
@@ -4906,21 +5511,21 @@
 
 <hr size="6">
 <a name="Lists-of-floats"></a>
-<a name="SEC81"></a>
+<a name="SEC89"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC80" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC82" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC88" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC90" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC79" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC87" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h3 class="subsection"> 7.17.2 Formatting lists of floats </h3>
@@ -4931,7 +5536,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $style_texi_returned <b>listoffloats_style</b><i> $style_texi</i>
-<a name="IDX260"></a>
+<a name="IDX281"></a>
 </dt>
 <dd><p><var>$style_texi</var> is the <code>@listoffloats</code> argument with texinfo 
 @-commands kept. It is possible to make changes to the <var>$style_texi</var> and
@@ -4945,7 +5550,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $float_style_texi_returned <b>listoffloats_float_style</b><i> $style_texi \%float</i>
-<a name="IDX261"></a>
+<a name="IDX282"></a>
 </dt>
 <dd><p><var>$style_texi</var> is the style, and <var>\%float</var> is the structure described 
 above. This function reference returns a style to be formatted in the
@@ -4954,7 +5559,7 @@
 
 <dl>
 <dt><u>Function Reference:</u> $caption_texi_returned <b>listoffloats_caption</b><i> \%float</i>
-<a name="IDX262"></a>
+<a name="IDX283"></a>
 </dt>
 <dd><p><var>\%float</var> is the structure described 
 above. This function reference returns a caption to be formatted in the
@@ -4965,7 +5570,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $listoffloats_entry <b>listoffloats_entry</b><i> $style_texi \%float $float_style $caption $href</i>
-<a name="IDX263"></a>
+<a name="IDX284"></a>
 </dt>
 <dd><p><var>$style_texi</var> is the style with @-commands, <var>$float_style</var> is the
 style returned by the above function and formatted. <var>$caption</var> is the
@@ -4978,7 +5583,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $listoffloats <b>listoffloats</b><i> $style_texi $style \@listoffloats_entries</i>
-<a name="IDX264"></a>
+<a name="IDX285"></a>
 </dt>
 <dd><p><var>$style_texi</var> is the style with @-commands, <var>$style</var> is the
 style returned by the above function and formatted. The array reference 
@@ -4988,21 +5593,21 @@
 
 <hr size="6">
 <a name="Footnotes"></a>
-<a name="SEC82"></a>
+<a name="SEC90"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC81" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC83" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC89" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC91" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="section"> 7.18 Customizing the footnotes formatting </h2>
@@ -5017,7 +5622,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> (\@lines $text_for_document) <b>foot_line_and_ref</b><i> $number_in_doc $number_in_page $footnote_id $place_id $document_file $footnote_file \@lines \%state</i>
-<a name="IDX265"></a>
+<a name="IDX286"></a>
 </dt>
 <dd><p><var>$number_in_doc</var> is the footnote number in the whole document, 
 <var>$number_in_page</var> is the footnote number in the current page.
@@ -5045,12 +5650,12 @@
 <p>The following function is only used when footnotes are at the bottom
 of a page and the document is split. 
 For customization of the footnotes page in case they are on a separated 
-page or section, <a href="#SEC44">Customizing the layout of the special pages</a>. For 
-the determination of the footnote locations, <a href="#SEC10">Page layout related command line options</a>.
+page or section, <a href="#SEC50">Customizing the layout of the special pages</a>. For 
+the determination of the footnote locations, <a href="#SEC14">Page layout related command line options</a>.
 </p>
 <dl>
 <dt><u>Function Reference:</u> <b>foot_section</b><i> \@footnotes_lines</i>
-<a name="IDX266"></a>
+<a name="IDX287"></a>
 </dt>
 <dd><p>This function formats a group of footnotes. <var>\@footnotes_lines</var> is a
 reference on an array holding the lines of all the footnote entries
@@ -5059,25 +5664,142 @@
 
 
 <hr size="6">
+<a name="Bypassing-normal-formatting"></a>
+<a name="SEC91"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC90" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC92" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 7.19 Bypassing normal formatting </h2>
+
+<p>It is possible to bypass completely the normal formatting of @-commands 
+with braces and raw regions 
+(<code>@html</code>, <code>@tex</code>, <code>@xml</code>&hellip; regions). 
+In that case the @-commands and the text within 
+are passed to a user defined function early, in a pass when no expansion
+of output takes place, called the collecting pass. Another user defined 
+function is called during the output expansion phase.
+</p>
+<p>Moreover, arbitrary user defined functions may be called between the 
+different texinfo parsing and outputting passes. This could be used, for
+example to initialize some things before collecting the @-commands and their
+text, expanding them between the collecting and expansion phase and doing
+some cleaning after the expansion pass. These possibilities are used for
+the interface to LaTeX2HTML 
+(see section <a href="#SEC16">Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a>), and the examples are taken from that use.  
+</p>
+<p>The @-commands that are keys of the <a name="IDX288"></a>
+<code>%command_handler</code> hash 
+are collected in the collecting pass and expanded in the expansion
+pass using user defined functions. The associated value is a reference on
+a hash used to specify the user defined function references. 
+The key of the hash reference are <code>'init'</code> for the function
+reference called during the collecting pass, and <code>'expand'</code>
+during the expansion pass. Here is an example for an @-command with
+braces:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">$command_handler{'math'} =
+     { 'init' =&gt; \&amp;Texi2HTML::LaTeX2HTML::to_latex,
+       'expand' =&gt; \&amp;Texi2HTML::LaTeX2HTML::do_tex
+     };
+</pre></td></tr></table>
+
+<p>And an example for a raw region @-command:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">$command_handler{'tex'} =
+     { 'init' =&gt; \&amp;Texi2HTML::LaTeX2HTML::to_latex,
+       'expand' =&gt; \&amp;Texi2HTML::LaTeX2HTML::do_tex
+     };
+</pre></td></tr></table>
+
+<p>The function references are called like:
+</p>
+<dl>
+<dt><u>Function Reference:</u> $status <b>$command_handler{'$command'}</b><i>-&gt;{'init'} $command $text $count</i>
+<a name="IDX289"></a>
+</dt>
+<dd><p><var>$command</var> is the @-command name, <var>$text</var> is the text appearing 
+within the @-command. <var>$count</var> is a counter counting how many times
+this @-command appeared. <var>$status</var> is a boolean which should be true if 
+the collecting was succesfull. If false the @-command and the text is 
+discarded.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function Reference:</u> $result <b>$command_handler{'$command'}</b><i>-&gt;{'expand'} $command $count $state $text</i>
+<a name="IDX290"></a>
+</dt>
+<dd><p><var>$command</var> is the @-command name, <var>$count</var> is a counter counting 
+how many times this @-command appeared. <var>$state</var> is a reference on a 
+hash containing many informations about the context. <var>$text</var> should be
+empty. <var>$result</var> is the expanded resulting text.
+</p></dd></dl>
+
+<p>There are three places for user defined functions, associated with arrays:
+</p><dl compact="compact">
+<dt> <code>@command_handler_init</code>
+<a name="IDX291"></a>
+</dt>
+<dd><p>The function references in that array are called before the collecting pass.
+At that time the information available is essentially the file names.
+</p></dd>
+<dt> <code>@command_handler_process</code> 
+<a name="IDX292"></a>
+</dt>
+<dd><p>The function references in that array are called between the collecting
+pass and the expansion pass. At that time all the special @-commands  
+have been collected as explained above but no output has been produced.
+</p></dd>
+<dt> <code>@command_handler_finish</code>
+<a name="IDX293"></a>
+</dt>
+<dd><p>he function references in that array are called after the end of the
+output generation.
+</p></dd>
+</dl>
+
+
+<p>Here is an example of these arrays use:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">push @command_handler_init, \&amp;Texi2HTML::LaTeX2HTML::init;
+push @command_handler_process, \&amp;Texi2HTML::LaTeX2HTML::latex2html;
+push @command_handler_finish, \&amp;Texi2HTML::LaTeX2HTML::finish;
+</pre></td></tr></table>
+
+
+<hr size="6">
 <a name="Other-and-unknown-commands"></a>
-<a name="SEC83"></a>
+<a name="SEC92"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC82" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC91" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
-<h2 class="section"> 7.19 Customizing other commands, and unknown commands </h2>
+<h2 class="section"> 7.20 Customizing other commands, and unknown commands </h2>
+
 
 
 
@@ -5097,7 +5819,7 @@
 same function than the one used for unknown commands.
 </p>
 <p>Those special commands without braces are the key of a hash:
-<a name="IDX267"></a>
+<a name="IDX294"></a>
 <code>%misc_command</code>. The associated value is a reference on a
 hash enabling to set the properties of these commands. The
 keys of this hash reference is the name of a property, the value
@@ -5106,6 +5828,7 @@
 </p>
 <table><tr><td>&nbsp;</td><td><pre class="example">$misc_command{'command'} = {'arg' =&gt; 'line', 'skip' =&gt; 'space'};
 </pre></td></tr></table>
+
 <p>The properties and possible values are:
 </p>
 <dl compact="compact">
@@ -5150,17 +5873,17 @@
 
 
 <p>Commands which don't appear in the hashes 
-<a name="IDX268"></a>
-<code>%simple_map</code>, <a name="IDX269"></a>
+<a name="IDX295"></a>
+<code>%simple_map</code>, <a name="IDX296"></a>
 <code>%simple_map_pre</code>,
-<a name="IDX270"></a>
+<a name="IDX297"></a>
 <code>%simple_map_texi</code> and <code>%misc_command</code>, or that appear in
 <code>%misc_command</code> but with <code>keep</code> true are processed by the 
 following function reference:
 </p>
 <dl>
 <dt><u>Function Reference:</u> ($result_line, $result, $result_text, $message) <b>unknown</b><i> $command $line</i>
-<a name="IDX271"></a>
+<a name="IDX298"></a>
 </dt>
 <dd><p><var>$command</var> is the @-command, <var>$line</var> is the line following the 
 <var>$command</var>. <var>$result</var> is a boolean. If it is true then the other return
@@ -5172,16 +5895,16 @@
 </p></dd></dl>
 
 <p>Commands with braces not specified above 
-nor in <a name="IDX272"></a>
-<code>%style_map</code>, <a name="IDX273"></a>
+nor in <a name="IDX299"></a>
+<code>%style_map</code>, <a name="IDX300"></a>
 <code>%style_map_pre</code> and
-<a name="IDX274"></a>
+<a name="IDX301"></a>
 <code>%style_map_texi</code> are processed 
 by the following function reference
 </p>
 <dl>
 <dt><u>Function Reference:</u> ($result, $result_text, $message) <b>unknown_style</b><i> $command $text</i>
-<a name="IDX275"></a>
+<a name="IDX302"></a>
 </dt>
 <dd><p><var>$command</var> is the @-command, <var>$text</var> is the text appearing within 
 the braces (allready formatted). <var>$result</var> is a boolean. If it is true then
@@ -5197,83 +5920,134 @@
 
 <hr size="6">
 <a name="Internationalization"></a>
-<a name="SEC84"></a>
+<a name="SEC93"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC83" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC85" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC92" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC94" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC47" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC53" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC98" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h1 class="appendix"> A. Internationalization </h1>
 
 <p>The strings written in the document are selected based on the
 document language. This can be used to customize the strings, 
-as described in <a href="#SEC56">Customizing strings written by <code>texi2html</code></a>. This also enables translation of the
+as described in <a href="#SEC62">Customizing strings written by <code>texi2html</code></a>. This also enables translation of the
 strings. 
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#SEC85">A.1 Translating strings</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC94">A.1 Translating strings</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top"><a href="#SEC86">A.2 Adding new strings written to document</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top"><a href="#SEC97">A.2 Adding new strings written to document</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 </table>
 
 <hr size="6">
 <a name="Translating-strings"></a>
-<a name="SEC85"></a>
+<a name="SEC94"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC84" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC86" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC93" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC95" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC98" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="appendixsec"> A.1 Translating strings </h2>
 
 
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#SEC95">A.1.1 Contributing to existing translations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC96">A.1.2 Contributing translations to another language</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr size="6">
+<a name="Supported-language"></a>
+<a name="SEC95"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC94" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC96" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC94" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC98" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h3 class="appendixsubsec"> A.1.1 Contributing to existing translations </h3>
+
 <p>If the language is allready supported, then there will be a file 
-in the <tt>`i18n'</tt> directory with name the two-letter 
+in the &lsquo;<tt>i18n</tt>&rsquo; directory with name the two-letter 
 ISO-639 language code. In that case you can enhance the translations by 
 editing this file. There is a <code>$LANGUAGES-&gt;{'<var>language</var>'}</code>
 hash in that file. The keys are the english strings, in <code>''</code>, the 
 values (in <code>''</code> after <code>=&gt;</code>) are the translations.
-When a string contains a <samp>`%'</samp> followed by <samp>`{'</samp> <var>name</var> <samp>`}'</samp>
+When a string contains a &lsquo;<samp>%</samp>&rsquo; followed by &lsquo;<samp>{</samp>&rsquo; <var>name</var> &lsquo;<samp>}</samp>&rsquo;
 it means that the string will be expanded by <code>texi2html</code>. For
-an example, see <a href="#SEC56">Customizing strings written by <code>texi2html</code></a>.
+an example, see <a href="#SEC62">Customizing strings written by <code>texi2html</code></a>.
 </p>
-<p>After that you should run the command <code>./manage_i18n.pl all</code> in
+<p>After that you should run the command <code>./manage_i18n.pl merge</code> in
 the top directory, it should merge your file with the existing files in
-<tt>`translations.pl'</tt>, which is incorporated to the <tt>`texi2html'</tt> script
-by <code>./configure</code>.
+&lsquo;<tt>translations.pl</tt>&rsquo;, which is incorporated to the &lsquo;<tt>texi2html</tt>&rsquo; script
+by <code>make</code>.
 </p>
-<p>If the language isn't currently supported, copy the <tt>`en'</tt> file in 
-<tt>`i18n'</tt> to a file with name the two-letter ISO-639 
+<hr size="6">
+<a name="New-language"></a>
+<a name="SEC96"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC95" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC97" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC94" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC98" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h3 class="appendixsubsec"> A.1.2 Contributing translations to another language </h3>
+
+<p>If the language isn't currently supported, copy the &lsquo;<tt>en</tt>&rsquo; file in 
+&lsquo;<tt>i18n</tt>&rsquo; to a file with name the two-letter ISO-639 
 language code of your language
  and then add your translations to the strings. You could also add your 
-two-letter language code in the <tt>`manage_i18n.pl'</tt> file in the
+two-letter language code in the &lsquo;<tt>manage_i18n.pl</tt>&rsquo; file in the
 <code>@known_languages</code> array. 
 </p>
-<p>After that you should similarly run the command 
-<code>./manage_i18n.pl all</code> in
+<p>After that you should run the command 
+<code>./manage_i18n.pl update <var>lang</var></code> and 
+<code>./manage_i18n.pl merge</code> in
 the top directory.
 </p>
 <p>Obsoleted strings are not removed from the files, they are still present
@@ -5283,25 +6057,25 @@
 <p>If you made change to strings specified in installed files
 (see section <a href="#SEC4">Installation of <code>texi2html</code></a>)
 you will have to reinstall them otherwise the installated files will 
-take precedence (see section <a href="#SEC13">Use initialization files for fine tuning</a>).
+take precedence (see section <a href="#SEC17">Use initialization files for fine tuning</a>).
 </p>
 <hr size="6">
 <a name="Adding-new-strings"></a>
-<a name="SEC86"></a>
+<a name="SEC97"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC85" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC96" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC98" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC98" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h2 class="appendixsec"> A.2 Adding new strings written to document </h2>
@@ -5315,360 +6089,654 @@
 the what you want to substitute.
 Here is an example:
 </p>
-<table><tr><td>&nbsp;</td><td><pre class="example">return &amp;$I('%{name} of %{class}', { 'name' =&gt; $name, 'class' =&gt; $class });
+<table><tr><td>&nbsp;</td><td><pre class="example">return &amp;$I('%{name} of %{class}', 
+       { 'name' =&gt; $name, 'class' =&gt; $class });
 </pre></td></tr></table>
+
 <p>In that case <code>%{name}</code> is substituted by <code>$name</code> in the translated
 string.
 </p>
-<p>After that you should run the command <code>./manage_i18n.pl all</code> in the top
-directory, it should add your new strings to all the files in the <tt>`i18n'</tt>
-directory. 
+<p>After that you should run the command <code>./manage_i18n.pl</code> in the top
+directory, to add your new strings to the template file, that is the 
+file for english and to all the files in the &lsquo;<tt>i18n</tt>&rsquo;
+directory. This is achieved with
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">./manage_i18n.pl template
+./manage_i18n.pl update
+</pre></td></tr></table>
+
+<p>These two commands won't work if you don't have the 
+<code>Data::Dumper</code> module installed.
+And to merge the new translation files in &lsquo;<tt>translations.pl</tt>&rsquo;, do
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">./manage_i18n.pl merge
+</pre></td></tr></table>
+
+<p>All these steps may be performed by <code>make</code>, once the language file
+is added to &lsquo;<tt>Makefile.am</tt>&rsquo; in the <code>i18n_files</code> variable.
+</p>
+<hr size="6">
+<a name="Incompatibilities"></a>
+<a name="SEC98"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC97" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC99" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC93" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC99" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="chapter"> B. Incompatibilities with previous versions </h1>
+
+<p><code>texi2html</code> has accumulated a lot of incompatibilities with previous
+versions. They are documented in the &lsquo;<tt>NEWS</tt>&rsquo; file, we discuss them
+here nevertheless. most of the incompatibilities were introduced in 
+version 1.68.
+</p>
+<ul>
+<li> When the manual is split the default is to put resulting files in 
+a directory with name the manual file basename (previously they were left in
+ the current directory). To avoid that, call texi2html with 
+&lsquo;<samp>-output .</samp>&rsquo;. This has been changed to be compatible with 
+<code>makeinfo</code> and also because it fits better with the cross
+manuals reference scheme.
+</li><li> The option &lsquo;<samp>--output</samp>&rsquo; signification changed. It now
+has the same meaning than for <code>makeinfo</code>. It seems
+that in 1.66 it was the same than &lsquo;<samp>-out-file</samp>&rsquo;. 
+&lsquo;<samp>--output</samp>&rsquo; new meaning allows to replace &lsquo;<samp>-out-file</samp>&rsquo; and 
+&lsquo;<samp>-subdir</samp>&rsquo; with a unique option. 
+
+<p>More precisely &lsquo;<samp>-out-file</samp>&rsquo; forces the output to be unsplit 
+while &lsquo;<samp>--output</samp>&rsquo; behaves differently when split (it specifies
+the directory
+where the manual files should be outputted) and unsplit (it specifies
+the output file). &lsquo;<samp>-subdir</samp>&rsquo; is retained for backward compatibility.
+</p>
+<p>If you want a backward compatibility you can use &lsquo;<samp>-subdir</samp>&rsquo; 
+for the output directory if the document is split, and &lsquo;<samp>-out-file</samp>&rsquo;
+if the document isn't split. This hasn't been tested extensively though.
+</p></li><li> Many options has been obsoleted but they are retained for
+backward compatibility.
+</li><li> The init files are searched in new directories, however they 
+are still searched for in the old directories for backward
+compatibility.
+</li><li> the option &lsquo;<samp>--glossary</samp>&rsquo; doesn't do anything. Likely
+nothing specific is done regarding bibliographies. This has been
+decided because this added some semantics to the texinfo formatting 
+language that weren't part of texinfo. 
+
+<p>It should be possible to do
+something similar with macros. See for example &lsquo;<tt>glossary.texi</tt>&rsquo; 
+for glossary and &lsquo;<tt>my-bib-macros.texi</tt>&rsquo; for bibliography
+in the directory &lsquo;<tt>examples</tt>&rsquo;. In the web2c package there is
+an example of use of BibTeX, see <a href="http://tug.org/texlive/devsrc/Build/source/TeX/texk/web2c/doc/">http://tug.org/texlive/devsrc/Build/source/TeX/texk/web2c/doc/</a> (the examples for bibliography are taken from the
+texinfo home page <a href="http://www.gnu.org/software/texinfo/texinfo.html">http://www.gnu.org/software/texinfo/texinfo.html</a>).
+</p></li><li> don't use <code>T2H_CENTER_IMAGE</code>. <code>@center</code> should be used
+insead, it will give the right output for all the formats.
+</li><li> If a directory creation fails the program aborts. This is much safer.
+</li><li> The interface for internationalisation changed, although
+the previous wasn't documented a lot.
+</li><li> the API described in this manual changed a lot. A important
+change was to use the <code>Texi2HTML::Config</code> names space instead of
+variables prefixed with &lsquo;<samp>T2H_</samp>&rsquo; or  &lsquo;<samp>t2h_</samp>&rsquo;. To cope with
+the change the prefix should be removed from variables in init files.
+Some variables are now in <code>%Texi2HTML::THISDOC</code>.
+</li><li> API changes between 1.76 and 1.78: 
+<ul class="toc">
+<li> paragraph has new arguments
+with indentation information, added as the third argument, and
+other context information. The formatting linked with commands
+opened before the paragraph and closed after the paragraph are done
+in the formatting function. Similar
+things are done for preformatted.
+</li><li> normal_text 
+changed completely. There
+are much more arguments to give informations about the context, and
+normal_text now does more text manipulation. 
+</li><li> New arguments for image the alt text, the height and width, 
+the path to working dir and the path to image file relative 
+to working dir. More image formatting is
+done in the formatting function.
+</li><li> New argument for empty_line.
+</li><li> End of line removal is done in formatting function of definition line
+formatting.
+</li><li> node_file_name now should only returns the node file, since the 
+redirection file isn't used anymore. element_file_name only is used for 
+file names, whatever NODES_FILES is.
+</li></ul>
+</li><li> <code>@ifinfo</code> regions are not expanded by default. This may lead
+to warnings or errors especially if the Top node is enclosed in 
+<code>@ifinfo</code>, as some node won't appear in menus. The quick fix
+is to call <code>texi2html</code> with the option &lsquo;<samp>--ifinfo</samp>&rsquo; and
+the right way should be to make more use of <code>@ifnottex</code>.
+</li><li> The code appearing before the first node is now outputted, it was
+ignored before. &lsquo;<samp>--ignore-preamble-text</samp>&rsquo; revert to the previous
+behaviour. Enclosing in <code>@ifnothtml</code> would be much cleaner.
+</li></ul>
+
+<hr size="6">
+<a name="Specificities"></a>
+<a name="SEC99"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC98" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC98" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="chapter"> C. How little texi2html texinfo differs from GNU texinfo </h1>
+
+<p>For features documented in the texinfo manual, the texinfo interpretation
+by <code>texi2html</code> shouldn't differ from the interpretation of
+<code>makeinfo</code> or <code>texi2dvi</code>. However for constructs with 
+unspecified behaviour <code>texi2html</code> often doesn't lead to the 
+same result than <code>makeinfo</code> or <code>texi2dvi</code>. <code>makeinfo</code>
+and <code>texi2dvi</code> are also inconsistent in most of these cases (or
+broken). You are urged not to use these features unless absolutely necessary.
+This information is only here to help understand why <code>texi2html</code>
+differ from other texinfo interpreters, it may be inacurate and the 
+<code>texi2html</code> behaviour may change in the future and was different
+in the past.
+</p>
+<dl compact="compact">
+<dt> @-commands with text on the line</dt>
+<dd><p>In the texinfo manual it is specified that block @-commands should appear
+on a line without text and the closing <code>@end</code> should also be on a 
+line by himself. With <code>texi2html</code> it is possible to add
+text before and after the command, so the following is right:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">something @example the example @end example after the example
+</pre></td></tr></table>
+
+<p><code>makeinfo</code> and <code>texi2dvi</code> may also accept text before
+the command and text after the <code>@end</code> command, sometimes ignoring 
+it after the <code>@end</code>.
+</p>
+<p>This is a feature you should especially not rely on.
+</p>
+</dd>
+<dt> special @-commands handling</dt>
+<dd><p>The special @-commands are commands like <code>@pagesizes</code>, <code>@sp</code>,
+<code>@evenheading</code>, <code>@raisesections</code>, <code>@defindex</code> and a lot
+more. In many cases <code>makeinfo</code> and <code>texi2dvi</code> 
+don't parse those commands the same way too. <code>texi2html</code> may also
+show some differences in parsing of the arguments of these commands, 
+in case there are wrong arguments, and also ignore differently things
+following those commands. How user defined macros, set and values
+are expanded in those commands may also be different.
+Part of the specification of how these commands are handled is 
+configureable (see section <a href="#SEC92">Customizing other commands, and unknown commands</a>), but not what 
+happens during the beginning of the parsing for some of those commands. 
+</p>
+</dd>
+<dt> features different between <code>makeinfo</code> and <code>texi2dvi</code></dt>
+<dd><p>When <code>makeinfo</code> or <code>texi2dvi</code> use a feature which
+is reserved for one or the other translator, <code>texi2html</code> uses that
+feature. So for example <code>@definfoenclose</code> which is ignored by 
+<code>texi2dvi</code> is taken into account and <code>@kbdinputstyle</code> which
+is ignored by <code>makeinfo</code> is taken into account. 
+</p>
+</dd>
+<dt> user defined macros and values</dt>
+<dd><p>In this area <code>makeinfo</code> and <code>texi2dvi</code> also differ a lot.
+The reference implementation is the <code>makeinfo</code> implementation as
+<code>texi2dvi</code> is easily broken when macros are not used simply.
 </p>
+<ul>
+<li> <code>@rmacro</code> and <code>@macro</code> behave exactly the same. In fact
+this goes against a documented behaviour, however if a user don't
+want a recursive macro he can simply avoid reusing the macro in the 
+definition. If somebody report that the feature is usefull we could try
+to implement it.
+</li><li> It is possible to escape the end of a macro definition with
+<table><tr><td>&nbsp;</td><td><pre class="example">\@end macro
+</pre></td></tr></table>
+<p>with the &lsquo;<samp>\</samp>&rsquo; being removed after the first expansion. Otherwise
+it is not possible to produce a <code>\@end macro</code> in a macro.
+</p></li><li> <code>@unmacro</code> is interpreted during the macro argument expansion.
+Don't know what <code>makeinfo</code> exactly do.
+</li><li> Some <code>@value</code> may be expanded later than the others, those
+that are in special commands, like <code>@node</code>.
+</li></ul>
+
+</dd>
+<dt> <code>@,</code> in <code>@node</code></dt>
+<dd><p>Like <code>texi2dvi</code> but unlike <code>makeinfo</code> <code>@,</code> don't 
+break <code>@node</code> arguments like a regular &lsquo;<samp>,</samp>&rsquo;.
+</p></dd>
+<dt> Things before first node or preamble</dt>
+<dd><p>Things before the first node or before the preamble may not be exactly 
+interpreted or discarded as <code>makeinfo</code> or <code>texi2dvi</code> do.
+</p></dd>
+<dt> encodings</dt>
+<dd><p><code>texi2html</code> knows more encodings, in fact all encodings <code>perl</code>
+knows about.
+</p></dd>
+<dt> commands in <code>@ifset</code> and <code>@ifclear</code></dt>
+<dd><p><code>texi2html</code> doesn't need a proper nesting of internal <code>@ifset</code>
+or <code>@ifclear</code> if they are in ignored or raw regions (like <code>@html</code>
+or <code>@verbatim</code>). For example the following is accepted by 
+<code>texi2html</code> and not by <code>makeinfo</code>:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">@ifset notset
+@ignore
+@ifset
+@end ignore
+@end ifset
+</pre></td></tr></table>
+
+<p>In <code>@ifset</code> and <code>@ifclear</code> texi2html also accepts
+a lot more of invalid constructs. For example the following is accepted
+by <code>texi2html</code> but not by <code>makeinfo</code>:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">@set flag
+@ifset flag
+@itemize
+@item my item
+@end ifset
+text
+@ifset flag
+@end itemize
+@end ifset
+</pre></td></tr></table>
+</dd>
+</dl>
+
 <hr size="6">
 <a name="Indexop"></a>
-<a name="SEC87"></a>
+<a name="SEC100"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC86" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC88" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC99" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC101" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC84" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC99" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC88" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC101" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
-<h1 class="appendix"> B. Command Line Option Index </h1>
-<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#SEC87_0" class="summary-letter"><b>C</b></a>
+<h1 class="appendix"> D. Command Line Option Index </h1>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#SEC100_0" class="summary-letter"><b>C</b></a>
  &nbsp; 
-<a href="#SEC87_1" class="summary-letter"><b>D</b></a>
+<a href="#SEC100_1" class="summary-letter"><b>D</b></a>
  &nbsp; 
-<a href="#SEC87_2" class="summary-letter"><b>F</b></a>
+<a href="#SEC100_2" class="summary-letter"><b>E</b></a>
  &nbsp; 
-<a href="#SEC87_3" class="summary-letter"><b>H</b></a>
+<a href="#SEC100_3" class="summary-letter"><b>F</b></a>
  &nbsp; 
-<a href="#SEC87_4" class="summary-letter"><b>I</b></a>
+<a href="#SEC100_4" class="summary-letter"><b>H</b></a>
  &nbsp; 
-<a href="#SEC87_5" class="summary-letter"><b>L</b></a>
+<a href="#SEC100_5" class="summary-letter"><b>I</b></a>
  &nbsp; 
-<a href="#SEC87_6" class="summary-letter"><b>M</b></a>
+<a href="#SEC100_6" class="summary-letter"><b>L</b></a>
  &nbsp; 
-<a href="#SEC87_7" class="summary-letter"><b>N</b></a>
+<a href="#SEC100_7" class="summary-letter"><b>M</b></a>
  &nbsp; 
-<a href="#SEC87_8" class="summary-letter"><b>O</b></a>
+<a href="#SEC100_8" class="summary-letter"><b>N</b></a>
  &nbsp; 
-<a href="#SEC87_9" class="summary-letter"><b>P</b></a>
+<a href="#SEC100_9" class="summary-letter"><b>O</b></a>
  &nbsp; 
-<a href="#SEC87_10" class="summary-letter"><b>S</b></a>
+<a href="#SEC100_10" class="summary-letter"><b>P</b></a>
  &nbsp; 
-<a href="#SEC87_11" class="summary-letter"><b>T</b></a>
+<a href="#SEC100_11" class="summary-letter"><b>S</b></a>
  &nbsp; 
-<a href="#SEC87_12" class="summary-letter"><b>U</b></a>
+<a href="#SEC100_12" class="summary-letter"><b>T</b></a>
+ &nbsp; 
+<a href="#SEC100_13" class="summary-letter"><b>U</b></a>
+ &nbsp; 
+<a href="#SEC100_14" class="summary-letter"><b>W</b></a>
  &nbsp; 
 </td></tr></table>
 <table border="0" class="index-op">
 <tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC87_0">C</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX49">css-include=<var>file</var></a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><th><a name="SEC100_0">C</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX52">css-include=<var>file</var></a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC100_1">D</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX56">def-table</a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX45">doctype=<var>DTD</var></a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX33">D<var>var</var></a></td><td valign="top"><a href="#SEC13">4.4 Command line options related to Texinfo language features</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC87_1">D</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX53">def-table</a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX42">doctype=<var>DTD</var></a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX30">D<var>var</var></a></td><td valign="top"><a href="#SEC9">4.4 Command line options related to Texinfo language features</a></td></tr>
+<tr><th><a name="SEC100_2">E</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX4">enable-translations</a></td><td valign="top"><a href="#SEC8">3.4 Advanced build features</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC87_2">F</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX36">frames</a></td><td valign="top"><a href="#SEC10">4.5 Page layout related command line options</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX44">frameset-doctype</a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX43">frameset-doctype=<var>DTD</var></a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><th><a name="SEC100_3">F</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX39">frames</a></td><td valign="top"><a href="#SEC14">4.5 Page layout related command line options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX47">frameset-doctype</a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX46">frameset-doctype=<var>DTD</var></a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC87_3">H</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX51">html-xref-prefix=<var>path</var></a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><th><a name="SEC100_4">H</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX54">html-xref-prefix=<var>path</var></a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC87_4">I</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX34">I<var>dir</var></a></td><td valign="top"><a href="#SEC9">4.4 Command line options related to Texinfo language features</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX23">if&lt;region&gt;</a></td><td valign="top"><a href="#SEC8">4.3 Specifying which regions get expanded</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX121">include-css</a></td><td valign="top"><a href="#SEC34">6.7 Customizing the <code>texi2html</code> css lines</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX69">init-file</a></td><td valign="top"><a href="#SEC13">4.8 Use initialization files for fine tuning</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX70">init-file</a></td><td valign="top"><a href="#SEC13">4.8 Use initialization files for fine tuning</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX47">iso</a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><th><a name="SEC100_5">I</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX37">I<var>dir</var></a></td><td valign="top"><a href="#SEC13">4.4 Command line options related to Texinfo language features</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX26">if&lt;region&gt;</a></td><td valign="top"><a href="#SEC12">4.3 Specifying which regions get expanded</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX132">include-css</a></td><td valign="top"><a href="#SEC39">6.7 Customizing the <code>texi2html</code> css lines</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX72">init-file</a></td><td valign="top"><a href="#SEC17">4.8 Use initialization files for fine tuning</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX73">init-file</a></td><td valign="top"><a href="#SEC17">4.8 Use initialization files for fine tuning</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX50">iso</a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC87_5">L</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX61">l2h</a></td><td valign="top"><a href="#SEC12">4.7 Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX66">l2h-file</a></td><td valign="top"><a href="#SEC12">4.7 Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX62">l2h-l2h=<var>program</var></a></td><td valign="top"><a href="#SEC12">4.7 Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX64">l2h-tmp</a></td><td valign="top"><a href="#SEC12">4.7 Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX72">lang</a></td><td valign="top"><a href="#SEC13">4.8 Use initialization files for fine tuning</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX206">lang</a></td><td valign="top"><a href="#SEC56">7.6 Customizing strings written by <code>texi2html</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX28">lang=<var>lang</var></a></td><td valign="top"><a href="#SEC9">4.4 Command line options related to Texinfo language features</a></td></tr>
+<tr><th><a name="SEC100_6">L</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX64">l2h</a></td><td valign="top"><a href="#SEC16">4.7 Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX69">l2h-file</a></td><td valign="top"><a href="#SEC16">4.7 Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX65">l2h-l2h=<var>program</var></a></td><td valign="top"><a href="#SEC16">4.7 Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX67">l2h-tmp</a></td><td valign="top"><a href="#SEC16">4.7 Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX75">lang</a></td><td valign="top"><a href="#SEC17">4.8 Use initialization files for fine tuning</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX225">lang</a></td><td valign="top"><a href="#SEC62">7.6 Customizing strings written by <code>texi2html</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX31">lang=<var>lang</var></a></td><td valign="top"><a href="#SEC13">4.4 Command line options related to Texinfo language features</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC87_6">M</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX3">menu</a></td><td valign="top"><a href="#SEC5">4. Invoking <code>texi2html</code></a></td></tr>
+<tr><th><a name="SEC100_7">M</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX6">menu</a></td><td valign="top"><a href="#SEC9">4. Invoking <code>texi2html</code></a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC87_7">N</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX24">no-if&lt;region&gt;</a></td><td valign="top"><a href="#SEC8">4.3 Specifying which regions get expanded</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX21">node-files</a></td><td valign="top"><a href="#SEC7">4.2 Setting output file and directory names</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX2">nomenu</a></td><td valign="top"><a href="#SEC5">4. Invoking <code>texi2html</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX26">nomenu</a></td><td valign="top"><a href="#SEC8">4.3 Specifying which regions get expanded</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX38">nosec-nav</a></td><td valign="top"><a href="#SEC10">4.5 Page layout related command line options</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX57">number</a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><th><a name="SEC100_8">N</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX27">no-if&lt;region&gt;</a></td><td valign="top"><a href="#SEC12">4.3 Specifying which regions get expanded</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX24">node-files</a></td><td valign="top"><a href="#SEC11">4.2 Setting output file and directory names</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX5">nomenu</a></td><td valign="top"><a href="#SEC9">4. Invoking <code>texi2html</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX29">nomenu</a></td><td valign="top"><a href="#SEC12">4.3 Specifying which regions get expanded</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX41">nosec-nav</a></td><td valign="top"><a href="#SEC14">4.5 Page layout related command line options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX60">number</a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC87_8">O</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX10">output</a></td><td valign="top"><a href="#SEC7">4.2 Setting output file and directory names</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX12">output</a></td><td valign="top"><a href="#SEC7">4.2 Setting output file and directory names</a></td></tr>
+<tr><th><a name="SEC100_9">O</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX13">output</a></td><td valign="top"><a href="#SEC11">4.2 Setting output file and directory names</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX15">output</a></td><td valign="top"><a href="#SEC11">4.2 Setting output file and directory names</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC87_9">P</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX32">P<var>dir</var></a></td><td valign="top"><a href="#SEC9">4.4 Command line options related to Texinfo language features</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX1">pkgdatadir=<var>dir</var></a></td><td valign="top"><a href="#SEC4">3. Installation of <code>texi2html</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX67">pkgdatadir=dir</a></td><td valign="top"><a href="#SEC13">4.8 Use initialization files for fine tuning</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX13">prefix</a></td><td valign="top"><a href="#SEC7">4.2 Setting output file and directory names</a></td></tr>
+<tr><th><a name="SEC100_10">P</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX35">P<var>dir</var></a></td><td valign="top"><a href="#SEC13">4.4 Command line options related to Texinfo language features</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX1">pkgdatadir=<var>dir</var></a></td><td valign="top"><a href="#SEC7">3.3 Installing</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX70">pkgdatadir=dir</a></td><td valign="top"><a href="#SEC17">4.8 Use initialization files for fine tuning</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX16">prefix</a></td><td valign="top"><a href="#SEC11">4.2 Setting output file and directory names</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC87_10">S</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX40">separated-footnotes</a></td><td valign="top"><a href="#SEC10">4.5 Page layout related command line options</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX15">short-ext</a></td><td valign="top"><a href="#SEC7">4.2 Setting output file and directory names</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX55">short-ref</a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX4">split</a></td><td valign="top"><a href="#SEC6">4.1 Specifying where to split the generated document</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX68">sysconfdir=dir</a></td><td valign="top"><a href="#SEC13">4.8 Use initialization files for fine tuning</a></td></tr>
+<tr><th><a name="SEC100_11">S</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX43">separated-footnotes</a></td><td valign="top"><a href="#SEC14">4.5 Page layout related command line options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX18">short-ext</a></td><td valign="top"><a href="#SEC11">4.2 Setting output file and directory names</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX58">short-ref</a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX7">split</a></td><td valign="top"><a href="#SEC10">4.1 Specifying where to split the generated document</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX71">sysconfdir=dir</a></td><td valign="top"><a href="#SEC17">4.8 Use initialization files for fine tuning</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC87_11">T</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX19">toc-file</a></td><td valign="top"><a href="#SEC7">4.2 Setting output file and directory names</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX59">toc-links</a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX17">top-file</a></td><td valign="top"><a href="#SEC7">4.2 Setting output file and directory names</a></td></tr>
+<tr><th><a name="SEC100_12">T</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX22">toc-file</a></td><td valign="top"><a href="#SEC11">4.2 Setting output file and directory names</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX62">toc-links</a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX20">top-file</a></td><td valign="top"><a href="#SEC11">4.2 Setting output file and directory names</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC87_12">U</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX6">use-nodes</a></td><td valign="top"><a href="#SEC6">4.1 Specifying where to split the generated document</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX8">use-nodes</a></td><td valign="top"><a href="#SEC6">4.1 Specifying where to split the generated document</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX9">use-nodes</a></td><td valign="top"><a href="#SEC6">4.1 Specifying where to split the generated document</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX31">U<var>var</var></a></td><td valign="top"><a href="#SEC9">4.4 Command line options related to Texinfo language features</a></td></tr>
+<tr><th><a name="SEC100_13">U</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX9">use-nodes</a></td><td valign="top"><a href="#SEC10">4.1 Specifying where to split the generated document</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX11">use-nodes</a></td><td valign="top"><a href="#SEC10">4.1 Specifying where to split the generated document</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX12">use-nodes</a></td><td valign="top"><a href="#SEC10">4.1 Specifying where to split the generated document</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX34">U<var>var</var></a></td><td valign="top"><a href="#SEC13">4.4 Command line options related to Texinfo language features</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC100_14">W</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX2">with-unicode</a></td><td valign="top"><a href="#SEC8">3.4 Advanced build features</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX3">with-unidecode</a></td><td valign="top"><a href="#SEC8">3.4 Advanced build features</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
 </table>
-<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#SEC87_0" class="summary-letter"><b>C</b></a>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#SEC100_0" class="summary-letter"><b>C</b></a>
+ &nbsp; 
+<a href="#SEC100_1" class="summary-letter"><b>D</b></a>
  &nbsp; 
-<a href="#SEC87_1" class="summary-letter"><b>D</b></a>
+<a href="#SEC100_2" class="summary-letter"><b>E</b></a>
  &nbsp; 
-<a href="#SEC87_2" class="summary-letter"><b>F</b></a>
+<a href="#SEC100_3" class="summary-letter"><b>F</b></a>
  &nbsp; 
-<a href="#SEC87_3" class="summary-letter"><b>H</b></a>
+<a href="#SEC100_4" class="summary-letter"><b>H</b></a>
  &nbsp; 
-<a href="#SEC87_4" class="summary-letter"><b>I</b></a>
+<a href="#SEC100_5" class="summary-letter"><b>I</b></a>
  &nbsp; 
-<a href="#SEC87_5" class="summary-letter"><b>L</b></a>
+<a href="#SEC100_6" class="summary-letter"><b>L</b></a>
  &nbsp; 
-<a href="#SEC87_6" class="summary-letter"><b>M</b></a>
+<a href="#SEC100_7" class="summary-letter"><b>M</b></a>
  &nbsp; 
-<a href="#SEC87_7" class="summary-letter"><b>N</b></a>
+<a href="#SEC100_8" class="summary-letter"><b>N</b></a>
  &nbsp; 
-<a href="#SEC87_8" class="summary-letter"><b>O</b></a>
+<a href="#SEC100_9" class="summary-letter"><b>O</b></a>
  &nbsp; 
-<a href="#SEC87_9" class="summary-letter"><b>P</b></a>
+<a href="#SEC100_10" class="summary-letter"><b>P</b></a>
  &nbsp; 
-<a href="#SEC87_10" class="summary-letter"><b>S</b></a>
+<a href="#SEC100_11" class="summary-letter"><b>S</b></a>
  &nbsp; 
-<a href="#SEC87_11" class="summary-letter"><b>T</b></a>
+<a href="#SEC100_12" class="summary-letter"><b>T</b></a>
  &nbsp; 
-<a href="#SEC87_12" class="summary-letter"><b>U</b></a>
+<a href="#SEC100_13" class="summary-letter"><b>U</b></a>
+ &nbsp; 
+<a href="#SEC100_14" class="summary-letter"><b>W</b></a>
  &nbsp; 
 </td></tr></table>
 <hr size="6">
 <a name="Indexvr"></a>
-<a name="SEC88"></a>
+<a name="SEC101"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC87" title="Previous section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC89" title="Next section in reading order"> &gt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC100" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC102" title="Next section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#SEC89" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC102" title="Next chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
-<h1 class="appendix"> C. Variable Index </h1>
-<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#SEC88_0" class="summary-letter"><b>$</b></a>
+<h1 class="appendix"> E. Variable Index </h1>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#SEC101_0" class="summary-letter"><b>$</b></a>
  &nbsp; 
-<a href="#SEC88_1" class="summary-letter"><b>%</b></a>
+<a href="#SEC101_1" class="summary-letter"><b>%</b></a>
  &nbsp; 
-<a href="#SEC88_2" class="summary-letter"><b>@</b></a>
+<a href="#SEC101_2" class="summary-letter"><b>@</b></a>
 </td></tr></table>
 <table border="0" class="index-vr">
 <tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC88_0">$</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX123"><code>$AFTER_BODY_OPEN</code></a></td><td valign="top"><a href="#SEC35">6.8 Customizing the page header</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX153"><code>$AFTER_OVERVIEW</code></a></td><td valign="top"><a href="#SEC41">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX155"><code>$AFTER_TOC_LINES</code></a></td><td valign="top"><a href="#SEC41">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX73"><code>$anchor</code></a></td><td valign="top"><a href="#SEC15">5.1 Redefining functions in initialization files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX198"><code>$anchor</code></a></td><td valign="top"><a href="#SEC54">7.4 Formatting of special simple commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX242"><code>$AVOID_MENU_REDUNDANCY</code></a></td><td valign="top"><a href="#SEC75">7.15.2 The formatting of the different menu components</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX152"><code>$BEFORE_OVERVIEW</code></a></td><td valign="top"><a href="#SEC41">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX154"><code>$BEFORE_TOC_LINES</code></a></td><td valign="top"><a href="#SEC41">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX78"><code>$BIG_RULE</code></a></td><td valign="top"><a href="#SEC19">6.2 Page layout and navigation panel overview</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX111"><code>$BODYTEXT</code></a></td><td valign="top"><a href="#SEC32">6.5 Preparing the output</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX127"><code>$BODYTEXT</code></a></td><td valign="top"><a href="#SEC35">6.8 Customizing the page header</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX225"><code>$cell</code></a></td><td valign="top"><a href="#SEC66">7.11.1 Formatting individual table and list items</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX194"><code>$CLOSE_QUOTE_SYMBOL</code></a></td><td valign="top"><a href="#SEC51">7.3.1 An interface for commands formatting with a hash reference</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX196"><code>$CLOSE_QUOTE_SYMBOL</code></a></td><td valign="top"><a href="#SEC52">7.3.2 An interface for commands formatting with a string</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX217"><code>$complex_format_map</code></a></td><td valign="top"><a href="#SEC64">7.10 Formatting of complex formats (<code>@example</code>, <code>@display</code>&hellip;)</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX116"><code>$CSS_LINES</code></a></td><td valign="top"><a href="#SEC34">6.7 Customizing the <code>texi2html</code> css lines</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX118"><code>$CSS_LINES</code></a></td><td valign="top"><a href="#SEC34">6.7 Customizing the <code>texi2html</code> css lines</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX120"><code>$CSS_LINES</code></a></td><td valign="top"><a href="#SEC34">6.7 Customizing the <code>texi2html</code> css lines</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX54"><code>$DEF_TABLE</code></a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX76"><code>$DEFAULT_RULE</code></a></td><td valign="top"><a href="#SEC19">6.2 Page layout and navigation panel overview</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX233"><code>$definition_category</code></a></td><td valign="top"><a href="#SEC70">7.12.2 Customization of the definition formatting</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX150"><code>$DO_CONTENTS</code></a></td><td valign="top"><a href="#SEC41">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX151"><code>$DO_SCONTENTS</code></a></td><td valign="top"><a href="#SEC41">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX45"><code>$DOCTYPE</code></a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX126"><code>$DOCUMENT_DESCRIPTION</code></a></td><td valign="top"><a href="#SEC35">6.8 Customizing the page header</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX124"><code>$DOCUMENT_ENCODING</code></a></td><td valign="top"><a href="#SEC35">6.8 Customizing the page header</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX125"><code>$ENCODING</code></a></td><td valign="top"><a href="#SEC35">6.8 Customizing the page header</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX175"><code>$EXTENSION</code></a></td><td valign="top"><a href="#SEC45">6.12 Customizing the file names</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX52"><code>$EXTERNAL_DIR</code></a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX122"><code>$EXTRA_HEAD</code></a></td><td valign="top"><a href="#SEC35">6.8 Customizing the page header</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX37"><code>$FRAMES</code></a></td><td valign="top"><a href="#SEC10">4.5 Page layout related command line options</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX46"><code>$FRAMESET_DOCTYPE</code></a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX82"><code>$ICONS</code></a></td><td valign="top"><a href="#SEC22">6.3.1 Controlling the navigation panel panel at a high level</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX179"><code>$IDX_SUMMARY</code></a></td><td valign="top"><a href="#SEC46">6.13 Generation of external files for index entries</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX80"><code>$INDEX_CHAPTER</code></a></td><td valign="top"><a href="#SEC20">Element labels</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX63"><code>$L2H_L2H</code></a></td><td valign="top"><a href="#SEC12">4.7 Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX65"><code>$L2H_TMP</code></a></td><td valign="top"><a href="#SEC12">4.7 Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX29"><code>$LANG</code></a></td><td valign="top"><a href="#SEC9">4.4 Command line options related to Texinfo language features</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX71"><code>$LANG</code></a></td><td valign="top"><a href="#SEC13">4.8 Use initialization files for fine tuning</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX207"><code>$LANG</code></a></td><td valign="top"><a href="#SEC56">7.6 Customizing strings written by <code>texi2html</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX208"><code>$LANGUAGES</code></a></td><td valign="top"><a href="#SEC56">7.6 Customizing strings written by <code>texi2html</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC85"><code>$LANGUAGES</code></a></td><td valign="top"><a href="#SEC85">A.1 Translating strings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX245"><code>$MENU_PRE_STYLE</code></a></td><td valign="top"><a href="#SEC75">7.15.2 The formatting of the different menu components</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX243"><code>$MENU_SYMBOL</code></a></td><td valign="top"><a href="#SEC75">7.15.2 The formatting of the different menu components</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX77"><code>$MIDDLE_RULE</code></a></td><td valign="top"><a href="#SEC19">6.2 Page layout and navigation panel overview</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX22"><code>$NODE_FILES</code></a></td><td valign="top"><a href="#SEC7">4.2 Setting output file and directory names</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX176"><code>$NODE_FILES</code></a></td><td valign="top"><a href="#SEC45">6.12 Customizing the file names</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX241"><code>$NODE_NAME_IN_MENU</code></a></td><td valign="top"><a href="#SEC75">7.15.2 The formatting of the different menu components</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX58"><code>$NUMBER_SECTIONS</code></a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX193"><code>$OPEN_QUOTE_SYMBOL</code></a></td><td valign="top"><a href="#SEC51">7.3.1 An interface for commands formatting with a hash reference</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX195"><code>$OPEN_QUOTE_SYMBOL</code></a></td><td valign="top"><a href="#SEC52">7.3.2 An interface for commands formatting with a string</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX11"><code>$OUT</code></a></td><td valign="top"><a href="#SEC7">4.2 Setting output file and directory names</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX138"><code>$PRE_BODY_CLOSE</code></a></td><td valign="top"><a href="#SEC37">6.10 Customizing the page footer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX14"><code>$PREFIX</code></a></td><td valign="top"><a href="#SEC7">4.2 Setting output file and directory names</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX141"><code>$print_chapter_footer</code></a></td><td valign="top"><a href="#SEC37">6.10 Customizing the page footer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX131"><code>$print_chapter_header</code></a></td><td valign="top"><a href="#SEC35">6.8 Customizing the page header</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX139"><code>$print_foot_navigation</code></a></td><td valign="top"><a href="#SEC37">6.10 Customizing the page footer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX128"><code>$print_head_navigation</code></a></td><td valign="top"><a href="#SEC35">6.8 Customizing the page header</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX172"><code>$print_misc</code></a></td><td valign="top"><a href="#SEC44">6.11.2 Customizing the layout of the special pages</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX174"><code>$print_misc_footer</code></a></td><td valign="top"><a href="#SEC44">6.11.2 Customizing the layout of the special pages</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX173"><code>$print_misc_header</code></a></td><td valign="top"><a href="#SEC44">6.11.2 Customizing the layout of the special pages</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX143"><code>$print_page_foot</code></a></td><td valign="top"><a href="#SEC37">6.10 Customizing the page footer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX130"><code>$print_page_head</code></a></td><td valign="top"><a href="#SEC35">6.8 Customizing the page header</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX142"><code>$print_section_footer</code></a></td><td valign="top"><a href="#SEC37">6.10 Customizing the page footer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX132"><code>$print_section_header</code></a></td><td valign="top"><a href="#SEC35">6.8 Customizing the page header</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX169"><code>$print_Top</code></a></td><td valign="top"><a href="#SEC44">6.11.2 Customizing the layout of the special pages</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX171"><code>$print_Top_footer</code></a></td><td valign="top"><a href="#SEC44">6.11.2 Customizing the layout of the special pages</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX170"><code>$print_Top_header</code></a></td><td valign="top"><a href="#SEC44">6.11.2 Customizing the layout of the special pages</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX39"><code>$SECTION_NAVIGATION</code></a></td><td valign="top"><a href="#SEC10">4.5 Page layout related command line options</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX83"><code>$SECTION_NAVIGATION</code></a></td><td valign="top"><a href="#SEC22">6.3.1 Controlling the navigation panel panel at a high level</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX41"><code>$SEPARATED_FOOTNOTES</code></a></td><td valign="top"><a href="#SEC10">4.5 Page layout related command line options</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX56"><code>$SHORT_REF</code></a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX16"><code>$SHORTEXTN</code></a></td><td valign="top"><a href="#SEC7">4.2 Setting output file and directory names</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX27"><code>$SHOW_MENU</code></a></td><td valign="top"><a href="#SEC8">4.3 Specifying which regions get expanded</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX75"><code>$SMALL_RULE</code></a></td><td valign="top"><a href="#SEC19">6.2 Page layout and navigation panel overview</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX5"><code>$SPLIT</code></a></td><td valign="top"><a href="#SEC6">4.1 Specifying where to split the generated document</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX252"><code>$SPLIT_INDEX</code></a></td><td valign="top"><a href="#SEC78">7.16.2 Customizing the formatting of index lists</a></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC85"><code>$T2H_OBSOLETE_STRINGS</code></a></td><td valign="top"><a href="#SEC85">A.1 Translating strings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX91"><code>$Texi2HTML::NODE{Next}</code></a></td><td valign="top"><a href="#SEC23">6.3.2 Specifying the buttons formatting</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX105"><code>$Texi2HTML::OVERVIEW</code></a></td><td valign="top"><a href="#SEC30">Section lines</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX160"><code>$Texi2HTML::OVERVIEW</code></a></td><td valign="top"><a href="#SEC41">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX104"><code>$Texi2HTML::THIS_HEADER</code></a></td><td valign="top"><a href="#SEC30">Section lines</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX103"><code>$Texi2HTML::THIS_SECTION</code></a></td><td valign="top"><a href="#SEC30">Section lines</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX108"><code>$Texi2HTML::THIS_SECTION</code></a></td><td valign="top"><a href="#SEC31">6.4.3 Function usefull in page formatting</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX106"><code>$Texi2HTML::TOC_LINES</code></a></td><td valign="top"><a href="#SEC30">Section lines</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX159"><code>$Texi2HTML::TOC_LINES</code></a></td><td valign="top"><a href="#SEC41">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX20"><code>$TOC_FILE</code></a></td><td valign="top"><a href="#SEC7">4.2 Setting output file and directory names</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX60"><code>$TOC_LINKS</code></a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX157"><code>$TOC_LIST_ATTRIBUTE</code></a></td><td valign="top"><a href="#SEC41">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX156"><code>$TOC_LIST_STYLE</code></a></td><td valign="top"><a href="#SEC41">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX18"><code>$TOP_FILE</code></a></td><td valign="top"><a href="#SEC7">4.2 Setting output file and directory names</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX79"><code>$TOP_HEADING</code></a></td><td valign="top"><a href="#SEC20">Element labels</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX244"><code>$UNNUMBERED_SYMBOL_IN_MENU</code></a></td><td valign="top"><a href="#SEC75">7.15.2 The formatting of the different menu components</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX48"><code>$USE_ISO</code></a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX7"><code>$USE_NODES</code></a></td><td valign="top"><a href="#SEC6">4.1 Specifying where to split the generated document</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX81"><code>$VERTICAL_HEAD_NAVIGATION</code></a></td><td valign="top"><a href="#SEC22">6.3.1 Controlling the navigation panel panel at a high level</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX87"><code>$WORDS_IN_PAGE</code></a></td><td valign="top"><a href="#SEC23">6.3.2 Specifying the buttons formatting</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX88"><code>$WORDS_IN_PAGE</code></a></td><td valign="top"><a href="#SEC23">6.3.2 Specifying the buttons formatting</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX109"><code>$WORDS_IN_PAGE</code></a></td><td valign="top"><a href="#SEC31">6.4.3 Function usefull in page formatting</a></td></tr>
+<tr><th><a name="SEC101_0">$</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX134"><code>$AFTER_BODY_OPEN</code></a></td><td valign="top"><a href="#SEC40">6.8 Customizing the page header</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX167"><code>$AFTER_OVERVIEW</code></a></td><td valign="top"><a href="#SEC46">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX169"><code>$AFTER_TOC_LINES</code></a></td><td valign="top"><a href="#SEC46">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX81"><code>$anchor</code></a></td><td valign="top"><a href="#SEC20">5.2 Redefining functions in initialization files</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX215"><code>$anchor</code></a></td><td valign="top"><a href="#SEC60">7.4 Formatting of special simple commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX267"><code>$AVOID_MENU_REDUNDANCY</code></a></td><td valign="top"><a href="#SEC83">7.15.4 The formatting of the menu in a table</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX166"><code>$BEFORE_OVERVIEW</code></a></td><td valign="top"><a href="#SEC46">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX168"><code>$BEFORE_TOC_LINES</code></a></td><td valign="top"><a href="#SEC46">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX86"><code>$BIG_RULE</code></a></td><td valign="top"><a href="#SEC24">6.2 Page layout and navigation panel overview</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX121"><code>$BODYTEXT</code></a></td><td valign="top"><a href="#SEC37">6.5 Preparing the output</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX138"><code>$BODYTEXT</code></a></td><td valign="top"><a href="#SEC40">6.8 Customizing the page header</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX244"><code>$cell</code></a></td><td valign="top"><a href="#SEC72">7.11.1 Formatting individual table and list items</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX211"><code>$CLOSE_QUOTE_SYMBOL</code></a></td><td valign="top"><a href="#SEC57">7.3.1 An interface for commands formatting with a hash reference</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX213"><code>$CLOSE_QUOTE_SYMBOL</code></a></td><td valign="top"><a href="#SEC58">7.3.2 An interface for commands formatting with a string</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX236"><code>$complex_format_map</code></a></td><td valign="top"><a href="#SEC70">7.10 Formatting of complex formats (<code>@example</code>, <code>@display</code>&hellip;)</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX127"><code>$CSS_LINES</code></a></td><td valign="top"><a href="#SEC39">6.7 Customizing the <code>texi2html</code> css lines</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX129"><code>$CSS_LINES</code></a></td><td valign="top"><a href="#SEC39">6.7 Customizing the <code>texi2html</code> css lines</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX131"><code>$CSS_LINES</code></a></td><td valign="top"><a href="#SEC39">6.7 Customizing the <code>texi2html</code> css lines</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX151"><code>$DATE</code></a></td><td valign="top"><a href="#SEC42">6.10 Customizing the page footer</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX57"><code>$DEF_TABLE</code></a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX80"><code>$DEFAULT_ENCODING</code></a></td><td valign="top"><a href="#SEC19">5.1 Setting the encodings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX84"><code>$DEFAULT_RULE</code></a></td><td valign="top"><a href="#SEC24">6.2 Page layout and navigation panel overview</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX252"><code>$definition_category</code></a></td><td valign="top"><a href="#SEC76">7.12.2 Customization of the definition formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX164"><code>$DO_CONTENTS</code></a></td><td valign="top"><a href="#SEC46">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX165"><code>$DO_SCONTENTS</code></a></td><td valign="top"><a href="#SEC46">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX48"><code>$DOCTYPE</code></a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX137"><code>$DOCUMENT_DESCRIPTION</code></a></td><td valign="top"><a href="#SEC40">6.8 Customizing the page header</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX76"><code>$DOCUMENT_ENCODING</code></a></td><td valign="top"><a href="#SEC19">5.1 Setting the encodings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX79"><code>$ENCODING_NAME</code></a></td><td valign="top"><a href="#SEC19">5.1 Setting the encodings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX135"><code>$ENCODING_NAME</code></a></td><td valign="top"><a href="#SEC40">6.8 Customizing the page header</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX192"><code>$EXTENSION</code></a></td><td valign="top"><a href="#SEC51">6.12 Customizing the file names</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX55"><code>$EXTERNAL_DIR</code></a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX133"><code>$EXTRA_HEAD</code></a></td><td valign="top"><a href="#SEC40">6.8 Customizing the page header</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX40"><code>$FRAMES</code></a></td><td valign="top"><a href="#SEC14">4.5 Page layout related command line options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX49"><code>$FRAMESET_DOCTYPE</code></a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX90"><code>$ICONS</code></a></td><td valign="top"><a href="#SEC27">6.3.1 Controlling the navigation panel panel at a high level</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX196"><code>$IDX_SUMMARY</code></a></td><td valign="top"><a href="#SEC52">6.13 Generation of external files for index entries</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX77"><code>$IN_ENCODING</code></a></td><td valign="top"><a href="#SEC19">5.1 Setting the encodings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX88"><code>$INDEX_CHAPTER</code></a></td><td valign="top"><a href="#SEC25">Element labels</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX163"><code>$INLINE_CONTENTS</code></a></td><td valign="top"><a href="#SEC46">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX66"><code>$L2H_L2H</code></a></td><td valign="top"><a href="#SEC16">4.7 Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX68"><code>$L2H_TMP</code></a></td><td valign="top"><a href="#SEC16">4.7 Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX32"><code>$LANG</code></a></td><td valign="top"><a href="#SEC13">4.4 Command line options related to Texinfo language features</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX74"><code>$LANG</code></a></td><td valign="top"><a href="#SEC17">4.8 Use initialization files for fine tuning</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX226"><code>$LANG</code></a></td><td valign="top"><a href="#SEC62">7.6 Customizing strings written by <code>texi2html</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX227"><code>$LANGUAGES</code></a></td><td valign="top"><a href="#SEC62">7.6 Customizing strings written by <code>texi2html</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC94"><code>$LANGUAGES</code></a></td><td valign="top"><a href="#SEC94">A.1 Translating strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX270"><code>$MENU_PRE_STYLE</code></a></td><td valign="top"><a href="#SEC83">7.15.4 The formatting of the menu in a table</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX268"><code>$MENU_SYMBOL</code></a></td><td valign="top"><a href="#SEC83">7.15.4 The formatting of the menu in a table</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX85"><code>$MIDDLE_RULE</code></a></td><td valign="top"><a href="#SEC24">6.2 Page layout and navigation panel overview</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX25"><code>$NODE_FILES</code></a></td><td valign="top"><a href="#SEC11">4.2 Setting output file and directory names</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX193"><code>$NODE_FILES</code></a></td><td valign="top"><a href="#SEC51">6.12 Customizing the file names</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX266"><code>$NODE_NAME_IN_MENU</code></a></td><td valign="top"><a href="#SEC83">7.15.4 The formatting of the menu in a table</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX61"><code>$NUMBER_SECTIONS</code></a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX210"><code>$OPEN_QUOTE_SYMBOL</code></a></td><td valign="top"><a href="#SEC57">7.3.1 An interface for commands formatting with a hash reference</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX212"><code>$OPEN_QUOTE_SYMBOL</code></a></td><td valign="top"><a href="#SEC58">7.3.2 An interface for commands formatting with a string</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX14"><code>$OUT</code></a></td><td valign="top"><a href="#SEC11">4.2 Setting output file and directory names</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX78"><code>$OUT_ENCODING</code></a></td><td valign="top"><a href="#SEC19">5.1 Setting the encodings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX136"><code>$OUT_ENCODING</code></a></td><td valign="top"><a href="#SEC40">6.8 Customizing the page header</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX149"><code>$PRE_BODY_CLOSE</code></a></td><td valign="top"><a href="#SEC42">6.10 Customizing the page footer</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX17"><code>$PREFIX</code></a></td><td valign="top"><a href="#SEC11">4.2 Setting output file and directory names</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX154"><code>$print_chapter_footer</code></a></td><td valign="top"><a href="#SEC42">6.10 Customizing the page footer</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX142"><code>$print_chapter_header</code></a></td><td valign="top"><a href="#SEC40">6.8 Customizing the page header</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX152"><code>$print_foot_navigation</code></a></td><td valign="top"><a href="#SEC42">6.10 Customizing the page footer</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX139"><code>$print_head_navigation</code></a></td><td valign="top"><a href="#SEC40">6.8 Customizing the page header</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX189"><code>$print_misc</code></a></td><td valign="top"><a href="#SEC50">6.11.2 Customizing the layout of the special pages</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX191"><code>$print_misc_footer</code></a></td><td valign="top"><a href="#SEC50">6.11.2 Customizing the layout of the special pages</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX190"><code>$print_misc_header</code></a></td><td valign="top"><a href="#SEC50">6.11.2 Customizing the layout of the special pages</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX156"><code>$print_page_foot</code></a></td><td valign="top"><a href="#SEC42">6.10 Customizing the page footer</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX141"><code>$print_page_head</code></a></td><td valign="top"><a href="#SEC40">6.8 Customizing the page header</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX155"><code>$print_section_footer</code></a></td><td valign="top"><a href="#SEC42">6.10 Customizing the page footer</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX143"><code>$print_section_header</code></a></td><td valign="top"><a href="#SEC40">6.8 Customizing the page header</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX186"><code>$print_Top</code></a></td><td valign="top"><a href="#SEC50">6.11.2 Customizing the layout of the special pages</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX188"><code>$print_Top_footer</code></a></td><td valign="top"><a href="#SEC50">6.11.2 Customizing the layout of the special pages</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX187"><code>$print_Top_header</code></a></td><td valign="top"><a href="#SEC50">6.11.2 Customizing the layout of the special pages</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX42"><code>$SECTION_NAVIGATION</code></a></td><td valign="top"><a href="#SEC14">4.5 Page layout related command line options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX91"><code>$SECTION_NAVIGATION</code></a></td><td valign="top"><a href="#SEC27">6.3.1 Controlling the navigation panel panel at a high level</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX44"><code>$SEPARATED_FOOTNOTES</code></a></td><td valign="top"><a href="#SEC14">4.5 Page layout related command line options</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX59"><code>$SHORT_REF</code></a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX19"><code>$SHORTEXTN</code></a></td><td valign="top"><a href="#SEC11">4.2 Setting output file and directory names</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX30"><code>$SHOW_MENU</code></a></td><td valign="top"><a href="#SEC12">4.3 Specifying which regions get expanded</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX261"><code>$SIMPLE_MENU</code></a></td><td valign="top"><a href="#SEC79">7.15 Menu formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX83"><code>$SMALL_RULE</code></a></td><td valign="top"><a href="#SEC24">6.2 Page layout and navigation panel overview</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX8"><code>$SPLIT</code></a></td><td valign="top"><a href="#SEC10">4.1 Specifying where to split the generated document</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX273"><code>$SPLIT_INDEX</code></a></td><td valign="top"><a href="#SEC86">7.16.2 Customizing the formatting of index lists</a></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC94"><code>$T2H_OBSOLETE_STRINGS</code></a></td><td valign="top"><a href="#SEC94">A.1 Translating strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX99"><code>$Texi2HTML::NODE{Next}</code></a></td><td valign="top"><a href="#SEC28">6.3.2 Specifying the buttons formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX114"><code>$Texi2HTML::OVERVIEW</code></a></td><td valign="top"><a href="#SEC35">Section lines</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX174"><code>$Texi2HTML::OVERVIEW</code></a></td><td valign="top"><a href="#SEC46">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX113"><code>$Texi2HTML::THIS_HEADER</code></a></td><td valign="top"><a href="#SEC35">Section lines</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX112"><code>$Texi2HTML::THIS_SECTION</code></a></td><td valign="top"><a href="#SEC35">Section lines</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX118"><code>$Texi2HTML::THIS_SECTION</code></a></td><td valign="top"><a href="#SEC36">6.4.3 Function usefull in page formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX116"><code>$Texi2HTML::TITLEPAGE</code></a></td><td valign="top"><a href="#SEC35">Section lines</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX177"><code>$Texi2HTML::TITLEPAGE</code></a></td><td valign="top"><a href="#SEC49">6.11.1.5 Formatting of title page</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX115"><code>$Texi2HTML::TOC_LINES</code></a></td><td valign="top"><a href="#SEC35">Section lines</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX173"><code>$Texi2HTML::TOC_LINES</code></a></td><td valign="top"><a href="#SEC46">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX23"><code>$TOC_FILE</code></a></td><td valign="top"><a href="#SEC11">4.2 Setting output file and directory names</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX63"><code>$TOC_LINKS</code></a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX171"><code>$TOC_LIST_ATTRIBUTE</code></a></td><td valign="top"><a href="#SEC46">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX170"><code>$TOC_LIST_STYLE</code></a></td><td valign="top"><a href="#SEC46">6.11.1.2 Table of contents and Short table of contents</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX21"><code>$TOP_FILE</code></a></td><td valign="top"><a href="#SEC11">4.2 Setting output file and directory names</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX87"><code>$TOP_HEADING</code></a></td><td valign="top"><a href="#SEC25">Element labels</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX269"><code>$UNNUMBERED_SYMBOL_IN_MENU</code></a></td><td valign="top"><a href="#SEC83">7.15.4 The formatting of the menu in a table</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX51"><code>$USE_ISO</code></a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX10"><code>$USE_NODES</code></a></td><td valign="top"><a href="#SEC10">4.1 Specifying where to split the generated document</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX150"><code>$USER</code></a></td><td valign="top"><a href="#SEC42">6.10 Customizing the page footer</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX89"><code>$VERTICAL_HEAD_NAVIGATION</code></a></td><td valign="top"><a href="#SEC27">6.3.1 Controlling the navigation panel panel at a high level</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX95"><code>$WORDS_IN_PAGE</code></a></td><td valign="top"><a href="#SEC28">6.3.2 Specifying the buttons formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX96"><code>$WORDS_IN_PAGE</code></a></td><td valign="top"><a href="#SEC28">6.3.2 Specifying the buttons formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX119"><code>$WORDS_IN_PAGE</code></a></td><td valign="top"><a href="#SEC36">6.4.3 Function usefull in page formatting</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC88_1">%</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX192"><code>%accent_map</code></a></td><td valign="top"><a href="#SEC50">7.3 Customizing accent, style and other simple commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX93"><code>%ACTIVE_ICONS</code></a></td><td valign="top"><a href="#SEC23">6.3.2 Specifying the buttons formatting</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX113"><code>%BUTTONS_GOTO</code></a></td><td valign="top"><a href="#SEC32">6.5 Preparing the output</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX115"><code>%css_map</code></a></td><td valign="top"><a href="#SEC34">6.7 Customizing the <code>texi2html</code> css lines</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX117"><code>%css_map</code></a></td><td valign="top"><a href="#SEC34">6.7 Customizing the <code>texi2html</code> css lines</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX230"><code>%def_map</code></a></td><td valign="top"><a href="#SEC69">7.12.1 Customizing the interpretation of a definition line</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX216"><code>%format_in_paragraph</code></a></td><td valign="top"><a href="#SEC63">7.9.2 Avoiding paragraphs in formats</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX226"><code>%format_map</code></a></td><td valign="top"><a href="#SEC67">7.11.2 Formatting of a whole table or list</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX228"><code>%format_map</code></a></td><td valign="top"><a href="#SEC67">7.11.2 Formatting of a whole table or list</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX101"><code>%main::value</code></a></td><td valign="top"><a href="#SEC29">Flags</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX102"><code>%main::value</code></a></td><td valign="top"><a href="#SEC29">Flags</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX267"><code>%misc_command</code></a></td><td valign="top"><a href="#SEC83">7.19 Customizing other commands, and unknown commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX92"><code>%NAVIGATION_TEXT</code></a></td><td valign="top"><a href="#SEC23">6.3.2 Specifying the buttons formatting</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX112"><code>%NAVIGATION_TEXT</code></a></td><td valign="top"><a href="#SEC32">6.5 Preparing the output</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX212"><code>%paragraph_style</code></a></td><td valign="top"><a href="#SEC60">7.8 Commands used for centering and flushing of text</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX94"><code>%PASSIVE_ICONS</code></a></td><td valign="top"><a href="#SEC23">6.3.2 Specifying the buttons formatting</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX187"><code>%pre_map</code></a></td><td valign="top"><a href="#SEC49">7.2 Customizing the formatting of commands without argument</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX183"><code>%simple_map</code></a></td><td valign="top"><a href="#SEC49">7.2 Customizing the formatting of commands without argument</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX268"><code>%simple_map</code></a></td><td valign="top"><a href="#SEC83">7.19 Customizing other commands, and unknown commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX184"><code>%simple_map_pre</code></a></td><td valign="top"><a href="#SEC49">7.2 Customizing the formatting of commands without argument</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX269"><code>%simple_map_pre</code></a></td><td valign="top"><a href="#SEC83">7.19 Customizing other commands, and unknown commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX185"><code>%simple_map_texi</code></a></td><td valign="top"><a href="#SEC49">7.2 Customizing the formatting of commands without argument</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX270"><code>%simple_map_texi</code></a></td><td valign="top"><a href="#SEC83">7.19 Customizing other commands, and unknown commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX219"><code>%special_list_commands</code></a></td><td valign="top"><a href="#SEC66">7.11.1 Formatting individual table and list items</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX189"><code>%style_map</code></a></td><td valign="top"><a href="#SEC50">7.3 Customizing accent, style and other simple commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX272"><code>%style_map</code></a></td><td valign="top"><a href="#SEC83">7.19 Customizing other commands, and unknown commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX190"><code>%style_map_pre</code></a></td><td valign="top"><a href="#SEC50">7.3 Customizing accent, style and other simple commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX273"><code>%style_map_pre</code></a></td><td valign="top"><a href="#SEC83">7.19 Customizing other commands, and unknown commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX191"><code>%style_map_texi</code></a></td><td valign="top"><a href="#SEC50">7.3 Customizing accent, style and other simple commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX274"><code>%style_map_texi</code></a></td><td valign="top"><a href="#SEC83">7.19 Customizing other commands, and unknown commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX97"><code>%Texi2HTML::HREF</code></a></td><td valign="top"><a href="#SEC26">6.4.1 Accessing elements informations</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX96"><code>%Texi2HTML::NAME</code></a></td><td valign="top"><a href="#SEC26">6.4.1 Accessing elements informations</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX99"><code>%Texi2HTML::NO_TEXI</code></a></td><td valign="top"><a href="#SEC26">6.4.1 Accessing elements informations</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX98"><code>%Texi2HTML::NODE</code></a></td><td valign="top"><a href="#SEC26">6.4.1 Accessing elements informations</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX100"><code>%Texi2HTML::THISDOC</code></a></td><td valign="top"><a href="#SEC28">Global strings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX188"><code>%texi_map</code></a></td><td valign="top"><a href="#SEC49">7.2 Customizing the formatting of commands without argument</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX186"><code>%things_map</code></a></td><td valign="top"><a href="#SEC49">7.2 Customizing the formatting of commands without argument</a></td></tr>
+<tr><th><a name="SEC101_1">%</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX209"><code>%accent_map</code></a></td><td valign="top"><a href="#SEC56">7.3 Customizing accent, style and other simple commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX101"><code>%ACTIVE_ICONS</code></a></td><td valign="top"><a href="#SEC28">6.3.2 Specifying the buttons formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX124"><code>%BUTTONS_GOTO</code></a></td><td valign="top"><a href="#SEC37">6.5 Preparing the output</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX103"><code>%BUTTONS_NAME</code></a></td><td valign="top"><a href="#SEC28">6.3.2 Specifying the buttons formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX123"><code>%BUTTONS_NAME</code></a></td><td valign="top"><a href="#SEC37">6.5 Preparing the output</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX288"><code>%command_handler</code></a></td><td valign="top"><a href="#SEC91">7.19 Bypassing normal formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX126"><code>%css_map</code></a></td><td valign="top"><a href="#SEC39">6.7 Customizing the <code>texi2html</code> css lines</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX128"><code>%css_map</code></a></td><td valign="top"><a href="#SEC39">6.7 Customizing the <code>texi2html</code> css lines</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX249"><code>%def_map</code></a></td><td valign="top"><a href="#SEC75">7.12.1 Customizing the interpretation of a definition line</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX235"><code>%format_in_paragraph</code></a></td><td valign="top"><a href="#SEC69">7.9.2 Avoiding paragraphs in formats</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX245"><code>%format_map</code></a></td><td valign="top"><a href="#SEC73">7.11.2 Formatting of a whole table or list</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX247"><code>%format_map</code></a></td><td valign="top"><a href="#SEC73">7.11.2 Formatting of a whole table or list</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX110"><code>%main::value</code></a></td><td valign="top"><a href="#SEC34">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX111"><code>%main::value</code></a></td><td valign="top"><a href="#SEC34">Flags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX294"><code>%misc_command</code></a></td><td valign="top"><a href="#SEC92">7.20 Customizing other commands, and unknown commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX100"><code>%NAVIGATION_TEXT</code></a></td><td valign="top"><a href="#SEC28">6.3.2 Specifying the buttons formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX122"><code>%NAVIGATION_TEXT</code></a></td><td valign="top"><a href="#SEC37">6.5 Preparing the output</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX231"><code>%paragraph_style</code></a></td><td valign="top"><a href="#SEC66">7.8 Commands used for centering and flushing of text</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX102"><code>%PASSIVE_ICONS</code></a></td><td valign="top"><a href="#SEC28">6.3.2 Specifying the buttons formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX204"><code>%pre_map</code></a></td><td valign="top"><a href="#SEC55">7.2 Customizing the formatting of commands without argument</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX200"><code>%simple_map</code></a></td><td valign="top"><a href="#SEC55">7.2 Customizing the formatting of commands without argument</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX295"><code>%simple_map</code></a></td><td valign="top"><a href="#SEC92">7.20 Customizing other commands, and unknown commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX201"><code>%simple_map_pre</code></a></td><td valign="top"><a href="#SEC55">7.2 Customizing the formatting of commands without argument</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX296"><code>%simple_map_pre</code></a></td><td valign="top"><a href="#SEC92">7.20 Customizing other commands, and unknown commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX202"><code>%simple_map_texi</code></a></td><td valign="top"><a href="#SEC55">7.2 Customizing the formatting of commands without argument</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX297"><code>%simple_map_texi</code></a></td><td valign="top"><a href="#SEC92">7.20 Customizing other commands, and unknown commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX238"><code>%special_list_commands</code></a></td><td valign="top"><a href="#SEC72">7.11.1 Formatting individual table and list items</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX206"><code>%style_map</code></a></td><td valign="top"><a href="#SEC56">7.3 Customizing accent, style and other simple commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX299"><code>%style_map</code></a></td><td valign="top"><a href="#SEC92">7.20 Customizing other commands, and unknown commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX207"><code>%style_map_pre</code></a></td><td valign="top"><a href="#SEC56">7.3 Customizing accent, style and other simple commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX300"><code>%style_map_pre</code></a></td><td valign="top"><a href="#SEC92">7.20 Customizing other commands, and unknown commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX208"><code>%style_map_texi</code></a></td><td valign="top"><a href="#SEC56">7.3 Customizing accent, style and other simple commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX301"><code>%style_map_texi</code></a></td><td valign="top"><a href="#SEC92">7.20 Customizing other commands, and unknown commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX106"><code>%Texi2HTML::HREF</code></a></td><td valign="top"><a href="#SEC31">6.4.1 Accessing elements informations</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX105"><code>%Texi2HTML::NAME</code></a></td><td valign="top"><a href="#SEC31">6.4.1 Accessing elements informations</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX108"><code>%Texi2HTML::NO_TEXI</code></a></td><td valign="top"><a href="#SEC31">6.4.1 Accessing elements informations</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX107"><code>%Texi2HTML::NODE</code></a></td><td valign="top"><a href="#SEC31">6.4.1 Accessing elements informations</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX109"><code>%Texi2HTML::THISDOC</code></a></td><td valign="top"><a href="#SEC33">Global strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX205"><code>%texi_map</code></a></td><td valign="top"><a href="#SEC55">7.2 Customizing the formatting of commands without argument</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX203"><code>%things_map</code></a></td><td valign="top"><a href="#SEC55">7.2 Customizing the formatting of commands without argument</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC88_2">@</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX89"><code>@CHAPTER_BUTTONS</code></a></td><td valign="top"><a href="#SEC23">6.3.2 Specifying the buttons formatting</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX50"><code>@CSS_FILES</code></a></td><td valign="top"><a href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX25"><code>@EXPAND</code></a></td><td valign="top"><a href="#SEC8">4.3 Specifying which regions get expanded</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX35"><code>@INCLUDE_DIRS</code></a></td><td valign="top"><a href="#SEC9">4.4 Command line options related to Texinfo language features</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX90"><code>@MISC_BUTTONS</code></a></td><td valign="top"><a href="#SEC23">6.3.2 Specifying the buttons formatting</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX86"><code>@NODE_FOOTER_BUTTONS</code></a></td><td valign="top"><a href="#SEC23">6.3.2 Specifying the buttons formatting</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX33"><code>@PREPEND_DIRS</code></a></td><td valign="top"><a href="#SEC9">4.4 Command line options related to Texinfo language features</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX84"><code>@SECTION_BUTTONS</code></a></td><td valign="top"><a href="#SEC23">6.3.2 Specifying the buttons formatting</a></td></tr>
-<tr><td></td><td valign="top"><a href="#IDX85"><code>@SECTION_FOOTER_BUTTONS</code></a></td><td valign="top"><a href="#SEC23">6.3.2 Specifying the buttons formatting</a></td></tr>
+<tr><th><a name="SEC101_2">@</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX97"><code>@CHAPTER_BUTTONS</code></a></td><td valign="top"><a href="#SEC28">6.3.2 Specifying the buttons formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX293"><code>@command_handler_finish</code></a></td><td valign="top"><a href="#SEC91">7.19 Bypassing normal formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX291"><code>@command_handler_init</code></a></td><td valign="top"><a href="#SEC91">7.19 Bypassing normal formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX292"><code>@command_handler_process</code></a></td><td valign="top"><a href="#SEC91">7.19 Bypassing normal formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX53"><code>@CSS_FILES</code></a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX28"><code>@EXPAND</code></a></td><td valign="top"><a href="#SEC12">4.3 Specifying which regions get expanded</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX217"><code>@IMAGE_EXTENSIONS</code></a></td><td valign="top"><a href="#SEC60">7.4 Formatting of special simple commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX38"><code>@INCLUDE_DIRS</code></a></td><td valign="top"><a href="#SEC13">4.4 Command line options related to Texinfo language features</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX98"><code>@MISC_BUTTONS</code></a></td><td valign="top"><a href="#SEC28">6.3.2 Specifying the buttons formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX94"><code>@NODE_FOOTER_BUTTONS</code></a></td><td valign="top"><a href="#SEC28">6.3.2 Specifying the buttons formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX36"><code>@PREPEND_DIRS</code></a></td><td valign="top"><a href="#SEC13">4.4 Command line options related to Texinfo language features</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX92"><code>@SECTION_BUTTONS</code></a></td><td valign="top"><a href="#SEC28">6.3.2 Specifying the buttons formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX93"><code>@SECTION_FOOTER_BUTTONS</code></a></td><td valign="top"><a href="#SEC28">6.3.2 Specifying the buttons formatting</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
 </table>
-<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#SEC88_0" class="summary-letter"><b>$</b></a>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#SEC101_0" class="summary-letter"><b>$</b></a>
  &nbsp; 
-<a href="#SEC88_1" class="summary-letter"><b>%</b></a>
+<a href="#SEC101_1" class="summary-letter"><b>%</b></a>
  &nbsp; 
-<a href="#SEC88_2" class="summary-letter"><b>@</b></a>
+<a href="#SEC101_2" class="summary-letter"><b>@</b></a>
 </td></tr></table>
 <hr size="6">
 <a name="Indexcp"></a>
-<a name="SEC89"></a>
+<a name="SEC102"></a>
 <table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#SEC88" title="Previous section in reading order"> &lt; </a>]</td>
+<tr><td valign="middle" align="left">[<a href="#SEC101" title="Previous section in reading order"> &lt; </a>]</td>
 <td valign="middle" align="left">[ &gt; ]</td>
 <td valign="middle" align="left"> &nbsp; </td>
-<td valign="middle" align="left">[<a href="#SEC88" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC101" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Up section"> Up </a>]</td>
 <td valign="middle" align="left">[ &gt;&gt; ]</td>
 <td valign="middle" align="left"> &nbsp; </td>
@@ -5677,119 +6745,121 @@
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
-<h1 class="appendix"> D. Concept Index </h1>
-<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#SEC89_0" class="summary-letter"><b>A</b></a>
+<h1 class="appendix"> F. Concept Index </h1>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#SEC102_0" class="summary-letter"><b>A</b></a>
  &nbsp; 
-<a href="#SEC89_1" class="summary-letter"><b>B</b></a>
+<a href="#SEC102_1" class="summary-letter"><b>B</b></a>
  &nbsp; 
-<a href="#SEC89_2" class="summary-letter"><b>C</b></a>
+<a href="#SEC102_2" class="summary-letter"><b>C</b></a>
  &nbsp; 
-<a href="#SEC89_3" class="summary-letter"><b>D</b></a>
+<a href="#SEC102_3" class="summary-letter"><b>D</b></a>
  &nbsp; 
-<a href="#SEC89_4" class="summary-letter"><b>E</b></a>
+<a href="#SEC102_4" class="summary-letter"><b>E</b></a>
  &nbsp; 
-<a href="#SEC89_5" class="summary-letter"><b>F</b></a>
+<a href="#SEC102_5" class="summary-letter"><b>F</b></a>
  &nbsp; 
-<a href="#SEC89_6" class="summary-letter"><b>I</b></a>
+<a href="#SEC102_6" class="summary-letter"><b>I</b></a>
  &nbsp; 
-<a href="#SEC89_7" class="summary-letter"><b>M</b></a>
+<a href="#SEC102_7" class="summary-letter"><b>M</b></a>
  &nbsp; 
-<a href="#SEC89_8" class="summary-letter"><b>P</b></a>
+<a href="#SEC102_8" class="summary-letter"><b>P</b></a>
  &nbsp; 
-<a href="#SEC89_9" class="summary-letter"><b>R</b></a>
+<a href="#SEC102_9" class="summary-letter"><b>R</b></a>
  &nbsp; 
-<a href="#SEC89_10" class="summary-letter"><b>S</b></a>
+<a href="#SEC102_10" class="summary-letter"><b>S</b></a>
  &nbsp; 
-<a href="#SEC89_11" class="summary-letter"><b>T</b></a>
+<a href="#SEC102_11" class="summary-letter"><b>T</b></a>
  &nbsp; 
-<a href="#SEC89_12" class="summary-letter"><b>U</b></a>
+<a href="#SEC102_12" class="summary-letter"><b>U</b></a>
  &nbsp; 
 </td></tr></table>
 <table border="0" class="index-cp">
 <tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC89_0">A</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC63">Avoid paragraph opening</a></td><td valign="top"><a href="#SEC63">7.9.2 Avoiding paragraphs in formats</a></td></tr>
+<tr><th><a name="SEC102_0">A</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC69">Avoid paragraph opening</a></td><td valign="top"><a href="#SEC69">7.9.2 Avoiding paragraphs in formats</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC89_1">B</a></th><td></td><td></td></tr>
+<tr><th><a name="SEC102_1">B</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#SEC_Top">bug report</a></td><td valign="top"><a href="#SEC_Top">Texi2HTML</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC89_2">C</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC60">centering</a></td><td valign="top"><a href="#SEC60">7.8 Commands used for centering and flushing of text</a></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC64">complex format</a></td><td valign="top"><a href="#SEC64">7.10 Formatting of complex formats (<code>@example</code>, <code>@display</code>&hellip;)</a></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC13"><tt>`Config'</tt></a></td><td valign="top"><a href="#SEC13">4.8 Use initialization files for fine tuning</a></td></tr>
+<tr><th><a name="SEC102_2">C</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC66">centering</a></td><td valign="top"><a href="#SEC66">7.8 Commands used for centering and flushing of text</a></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC70">complex format</a></td><td valign="top"><a href="#SEC70">7.10 Formatting of complex formats (<code>@example</code>, <code>@display</code>&hellip;)</a></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC17">&lsquo;<tt>Config</tt>&rsquo;</a></td><td valign="top"><a href="#SEC17">4.8 Use initialization files for fine tuning</a></td></tr>
 <tr><td></td><td valign="top"><a href="#SEC4">configure</a></td><td valign="top"><a href="#SEC4">3. Installation of <code>texi2html</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC15"><acronym>CSS</acronym></a></td><td valign="top"><a href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC39"><acronym>CSS</acronym></a></td><td valign="top"><a href="#SEC39">6.7 Customizing the <code>texi2html</code> css lines</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC89_3">D</a></th><td></td><td></td></tr>
+<tr><th><a name="SEC102_3">D</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#SEC3">downloading <code>texi2html</code> source</a></td><td valign="top"><a href="#SEC3">2. Obtaining <code>texi2html</code></a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC89_4">E</a></th><td></td><td></td></tr>
+<tr><th><a name="SEC102_4">E</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#SEC1">examples of manuals</a></td><td valign="top"><a href="#SEC1">1. Overview</a></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC58">external manual</a></td><td valign="top"><a href="#SEC58">7.7.1 Reference to external manual</a></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC64">external manual</a></td><td valign="top"><a href="#SEC64">7.7.1 Reference to external manual</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC89_5">F</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC60">flushing text</a></td><td valign="top"><a href="#SEC60">7.8 Commands used for centering and flushing of text</a></td></tr>
+<tr><th><a name="SEC102_5">F</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC66">flushing text</a></td><td valign="top"><a href="#SEC66">7.8 Commands used for centering and flushing of text</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC89_6">I</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC56">i18n</a></td><td valign="top"><a href="#SEC56">7.6 Customizing strings written by <code>texi2html</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC85">i18n</a></td><td valign="top"><a href="#SEC85">A.1 Translating strings</a></td></tr>
+<tr><th><a name="SEC102_6">I</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC62">i18n</a></td><td valign="top"><a href="#SEC62">7.6 Customizing strings written by <code>texi2html</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC94">i18n</a></td><td valign="top"><a href="#SEC94">A.1 Translating strings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#SEC4">Installation</a></td><td valign="top"><a href="#SEC4">3. Installation of <code>texi2html</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC13">internationalization</a></td><td valign="top"><a href="#SEC13">4.8 Use initialization files for fine tuning</a></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC86">internationalized strings</a></td><td valign="top"><a href="#SEC86">A.2 Adding new strings written to document</a></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC17">internationalization</a></td><td valign="top"><a href="#SEC17">4.8 Use initialization files for fine tuning</a></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC97">internationalized strings</a></td><td valign="top"><a href="#SEC97">A.2 Adding new strings written to document</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC89_7">M</a></th><td></td><td></td></tr>
+<tr><th><a name="SEC102_7">M</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#SEC2">makeinfo</a></td><td valign="top"><a href="#SEC2">1.1 Why <code>texi2html</code> and not <code>makeinfo</code>?</a></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC86"><code>manage_i18n.pl</code></a></td><td valign="top"><a href="#SEC86">A.2 Adding new strings written to document</a></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC97"><code>manage_i18n.pl</code></a></td><td valign="top"><a href="#SEC97">A.2 Adding new strings written to document</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC89_8">P</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC62">paragraph</a></td><td valign="top"><a href="#SEC62">7.9.1 Paragraph and preformatted region formatting</a></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC62">preformatted region</a></td><td valign="top"><a href="#SEC62">7.9.1 Paragraph and preformatted region formatting</a></td></tr>
+<tr><th><a name="SEC102_8">P</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC68">paragraph</a></td><td valign="top"><a href="#SEC68">7.9.1 Paragraph and preformatted region formatting</a></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC68">preformatted region</a></td><td valign="top"><a href="#SEC68">7.9.1 Paragraph and preformatted region formatting</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC89_9">R</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC57">reference</a></td><td valign="top"><a href="#SEC57">7.7 References</a></td></tr>
+<tr><th><a name="SEC102_9">R</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC63">reference</a></td><td valign="top"><a href="#SEC63">7.7 References</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC89_10">S</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC83">skipped command</a></td><td valign="top"><a href="#SEC83">7.19 Customizing other commands, and unknown commands</a></td></tr>
+<tr><th><a name="SEC102_10">S</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC92">skipped command</a></td><td valign="top"><a href="#SEC92">7.20 Customizing other commands, and unknown commands</a></td></tr>
 <tr><td></td><td valign="top"><a href="#SEC3">source code for <code>texi2html</code>, downloading</a></td><td valign="top"><a href="#SEC3">2. Obtaining <code>texi2html</code></a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC89_11">T</a></th><td></td><td></td></tr>
+<tr><th><a name="SEC102_11">T</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#SEC3"><code>texi2html</code> source, downloading</a></td><td valign="top"><a href="#SEC3">2. Obtaining <code>texi2html</code></a></td></tr>
 <tr><td></td><td valign="top"><a href="#SEC1">Texinfo</a></td><td valign="top"><a href="#SEC1">1. Overview</a></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC60">text alignement</a></td><td valign="top"><a href="#SEC60">7.8 Commands used for centering and flushing of text</a></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC85">Translation</a></td><td valign="top"><a href="#SEC85">A.1 Translating strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC66">text alignement</a></td><td valign="top"><a href="#SEC66">7.8 Commands used for centering and flushing of text</a></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC94">Translation</a></td><td valign="top"><a href="#SEC94">A.1 Translating strings</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="SEC89_12">U</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#SEC83">unknown command</a></td><td valign="top"><a href="#SEC83">7.19 Customizing other commands, and unknown commands</a></td></tr>
+<tr><th><a name="SEC102_12">U</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#SEC92">unknown command</a></td><td valign="top"><a href="#SEC92">7.20 Customizing other commands, and unknown commands</a></td></tr>
 <tr><td colspan="3"> <hr></td></tr>
 </table>
-<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#SEC89_0" class="summary-letter"><b>A</b></a>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#SEC102_0" class="summary-letter"><b>A</b></a>
  &nbsp; 
-<a href="#SEC89_1" class="summary-letter"><b>B</b></a>
+<a href="#SEC102_1" class="summary-letter"><b>B</b></a>
  &nbsp; 
-<a href="#SEC89_2" class="summary-letter"><b>C</b></a>
+<a href="#SEC102_2" class="summary-letter"><b>C</b></a>
  &nbsp; 
-<a href="#SEC89_3" class="summary-letter"><b>D</b></a>
+<a href="#SEC102_3" class="summary-letter"><b>D</b></a>
  &nbsp; 
-<a href="#SEC89_4" class="summary-letter"><b>E</b></a>
+<a href="#SEC102_4" class="summary-letter"><b>E</b></a>
  &nbsp; 
-<a href="#SEC89_5" class="summary-letter"><b>F</b></a>
+<a href="#SEC102_5" class="summary-letter"><b>F</b></a>
  &nbsp; 
-<a href="#SEC89_6" class="summary-letter"><b>I</b></a>
+<a href="#SEC102_6" class="summary-letter"><b>I</b></a>
  &nbsp; 
-<a href="#SEC89_7" class="summary-letter"><b>M</b></a>
+<a href="#SEC102_7" class="summary-letter"><b>M</b></a>
  &nbsp; 
-<a href="#SEC89_8" class="summary-letter"><b>P</b></a>
+<a href="#SEC102_8" class="summary-letter"><b>P</b></a>
  &nbsp; 
-<a href="#SEC89_9" class="summary-letter"><b>R</b></a>
+<a href="#SEC102_9" class="summary-letter"><b>R</b></a>
  &nbsp; 
-<a href="#SEC89_10" class="summary-letter"><b>S</b></a>
+<a href="#SEC102_10" class="summary-letter"><b>S</b></a>
  &nbsp; 
-<a href="#SEC89_11" class="summary-letter"><b>T</b></a>
+<a href="#SEC102_11" class="summary-letter"><b>T</b></a>
  &nbsp; 
-<a href="#SEC89_12" class="summary-letter"><b>U</b></a>
+<a href="#SEC102_12" class="summary-letter"><b>U</b></a>
  &nbsp; 
 </td></tr></table>
 <hr size="6">
@@ -5797,7 +6867,7 @@
 <table cellpadding="1" cellspacing="1" border="0">
 <tr><td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h1>Table of Contents</h1>
@@ -5809,122 +6879,139 @@
     <li><a name="TOC2" href="#SEC2">1.1 Why <code>texi2html</code> and not <code>makeinfo</code>?</a></li>
   </ul></li>
   <li><a name="TOC3" href="#SEC3">2. Obtaining <code>texi2html</code></a></li>
-  <li><a name="TOC4" href="#SEC4">3. Installation of <code>texi2html</code></a></li>
-  <li><a name="TOC5" href="#SEC5">4. Invoking <code>texi2html</code></a>
+  <li><a name="TOC4" href="#SEC4">3. Installation of <code>texi2html</code></a>
+  <ul class="toc">
+    <li><a name="TOC5" href="#SEC5">3.1 Requirements</a></li>
+    <li><a name="TOC6" href="#SEC6">3.2 Configuring the source and rebuilding</a></li>
+    <li><a name="TOC7" href="#SEC7">3.3 Installing</a></li>
+    <li><a name="TOC8" href="#SEC8">3.4 Advanced build features</a></li>
+  </ul></li>
+  <li><a name="TOC9" href="#SEC9">4. Invoking <code>texi2html</code></a>
   <ul class="toc">
-    <li><a name="TOC6" href="#SEC6">4.1 Specifying where to split the generated document</a></li>
-    <li><a name="TOC7" href="#SEC7">4.2 Setting output file and directory names</a></li>
-    <li><a name="TOC8" href="#SEC8">4.3 Specifying which regions get expanded</a></li>
-    <li><a name="TOC9" href="#SEC9">4.4 Command line options related to Texinfo language features</a></li>
-    <li><a name="TOC10" href="#SEC10">4.5 Page layout related command line options</a></li>
-    <li><a name="TOC11" href="#SEC11">4.6 Customizing the <acronym>HTML</acronym> and text style</a></li>
-    <li><a name="TOC12" href="#SEC12">4.7 Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a></li>
-    <li><a name="TOC13" href="#SEC13">4.8 Use initialization files for fine tuning</a></li>
+    <li><a name="TOC10" href="#SEC10">4.1 Specifying where to split the generated document</a></li>
+    <li><a name="TOC11" href="#SEC11">4.2 Setting output file and directory names</a></li>
+    <li><a name="TOC12" href="#SEC12">4.3 Specifying which regions get expanded</a></li>
+    <li><a name="TOC13" href="#SEC13">4.4 Command line options related to Texinfo language features</a></li>
+    <li><a name="TOC14" href="#SEC14">4.5 Page layout related command line options</a></li>
+    <li><a name="TOC15" href="#SEC15">4.6 Customizing the <acronym>HTML</acronym> and text style</a></li>
+    <li><a name="TOC16" href="#SEC16">4.7 Expanding <code>@tex</code> and <code>@math</code> regions using LaTeX2HTML</a></li>
+    <li><a name="TOC17" href="#SEC17">4.8 Use initialization files for fine tuning</a></li>
   </ul></li>
-  <li><a name="TOC14" href="#SEC14">5. Overview of initialization files content and loading</a>
+  <li><a name="TOC18" href="#SEC18">5. Overview of initialization files content and loading</a>
   <ul class="toc">
-    <li><a name="TOC15" href="#SEC15">5.1 Redefining functions in initialization files</a></li>
-    <li><a name="TOC16" href="#SEC16">5.2 Conventions used for function prototypes</a></li>
+    <li><a name="TOC19" href="#SEC19">5.1 Setting the encodings</a></li>
+    <li><a name="TOC20" href="#SEC20">5.2 Redefining functions in initialization files</a></li>
+    <li><a name="TOC21" href="#SEC21">5.3 Conventions used for function prototypes</a></li>
   </ul></li>
-  <li><a name="TOC17" href="#SEC17">6. Fine tuning of the page layout</a>
+  <li><a name="TOC22" href="#SEC22">6. Fine tuning of the page layout</a>
   <ul class="toc">
-    <li><a name="TOC18" href="#SEC18">6.1 The different categories of pages and sectioning elements</a></li>
-    <li><a name="TOC19" href="#SEC19">6.2 Page layout and navigation panel overview</a></li>
-    <li><a name="TOC20" href="#SEC21">6.3 Customization of the navigation panels buttons</a>
+    <li><a name="TOC23" href="#SEC23">6.1 The different categories of pages and sectioning elements</a></li>
+    <li><a name="TOC24" href="#SEC24">6.2 Page layout and navigation panel overview</a></li>
+    <li><a name="TOC25" href="#SEC26">6.3 Customization of the navigation panels buttons</a>
     <ul class="toc">
-      <li><a name="TOC21" href="#SEC22">6.3.1 Controlling the navigation panel panel at a high level</a></li>
-      <li><a name="TOC22" href="#SEC23">6.3.2 Specifying the buttons formatting</a></li>
-      <li><a name="TOC23" href="#SEC24">6.3.3 Changing the navigation panel formatting</a></li>
+      <li><a name="TOC26" href="#SEC27">6.3.1 Controlling the navigation panel panel at a high level</a></li>
+      <li><a name="TOC27" href="#SEC28">6.3.2 Specifying the buttons formatting</a></li>
+      <li><a name="TOC28" href="#SEC29">6.3.3 Changing the navigation panel formatting</a></li>
     </ul></li>
-    <li><a name="TOC24" href="#SEC25">6.4 Main program variables and usefull functions</a>
+    <li><a name="TOC29" href="#SEC30">6.4 Main program variables and usefull functions</a>
     <ul class="toc">
-      <li><a name="TOC25" href="#SEC26">6.4.1 Accessing elements informations</a></li>
-      <li><a name="TOC26" href="#SEC27">6.4.2 Accessing global informations</a></li>
-      <li><a name="TOC27" href="#SEC31">6.4.3 Function usefull in page formatting</a></li>
+      <li><a name="TOC30" href="#SEC31">6.4.1 Accessing elements informations</a></li>
+      <li><a name="TOC31" href="#SEC32">6.4.2 Accessing global informations</a></li>
+      <li><a name="TOC32" href="#SEC36">6.4.3 Function usefull in page formatting</a></li>
     </ul></li>
-    <li><a name="TOC28" href="#SEC32">6.5 Preparing the output</a></li>
-    <li><a name="TOC29" href="#SEC33">6.6 Finalizing the output</a></li>
-    <li><a name="TOC30" href="#SEC34">6.7 Customizing the <code>texi2html</code> css lines</a></li>
-    <li><a name="TOC31" href="#SEC35">6.8 Customizing the page header</a></li>
-    <li><a name="TOC32" href="#SEC36">6.9 Customizing the sections</a></li>
-    <li><a name="TOC33" href="#SEC37">6.10 Customizing the page footer</a></li>
-    <li><a name="TOC34" href="#SEC38">6.11 Special pages formatting</a>
+    <li><a name="TOC33" href="#SEC37">6.5 Preparing the output</a></li>
+    <li><a name="TOC34" href="#SEC38">6.6 Finalizing the output</a></li>
+    <li><a name="TOC35" href="#SEC39">6.7 Customizing the <code>texi2html</code> css lines</a></li>
+    <li><a name="TOC36" href="#SEC40">6.8 Customizing the page header</a></li>
+    <li><a name="TOC37" href="#SEC41">6.9 Customizing the sections</a></li>
+    <li><a name="TOC38" href="#SEC42">6.10 Customizing the page footer</a></li>
+    <li><a name="TOC39" href="#SEC43">6.11 Special pages formatting</a>
     <ul class="toc">
-      <li><a name="TOC35" href="#SEC39">6.11.1 Customizing the content of the special pages</a>
+      <li><a name="TOC40" href="#SEC44">6.11.1 Customizing the content of the special pages</a>
       <ul class="toc">
-        <li><a name="TOC36" href="#SEC40">6.11.1.1 Top element text formatting</a></li>
-        <li><a name="TOC37" href="#SEC41">6.11.1.2 Table of contents and Short table of contents</a></li>
-        <li><a name="TOC38" href="#SEC42">6.11.1.3 Formatting of footnotes text</a></li>
-        <li><a name="TOC39" href="#SEC43">6.11.1.4 Formatting of about text</a></li>
+        <li><a name="TOC41" href="#SEC45">6.11.1.1 Top element text formatting</a></li>
+        <li><a name="TOC42" href="#SEC46">6.11.1.2 Table of contents and Short table of contents</a></li>
+        <li><a name="TOC43" href="#SEC47">6.11.1.3 Formatting of footnotes text</a></li>
+        <li><a name="TOC44" href="#SEC48">6.11.1.4 Formatting of about text</a></li>
+        <li><a name="TOC45" href="#SEC49">6.11.1.5 Formatting of title page</a></li>
       </ul></li>
-      <li><a name="TOC40" href="#SEC44">6.11.2 Customizing the layout of the special pages</a></li>
+      <li><a name="TOC46" href="#SEC50">6.11.2 Customizing the layout of the special pages</a></li>
     </ul></li>
-    <li><a name="TOC41" href="#SEC45">6.12 Customizing the file names</a></li>
-    <li><a name="TOC42" href="#SEC46">6.13 Generation of external files for index entries</a></li>
+    <li><a name="TOC47" href="#SEC51">6.12 Customizing the file names</a></li>
+    <li><a name="TOC48" href="#SEC52">6.13 Generation of external files for index entries</a></li>
   </ul></li>
-  <li><a name="TOC43" href="#SEC47">7. Customizing <acronym>HTML</acronym> and text style in init files</a>
+  <li><a name="TOC49" href="#SEC53">7. Customizing <acronym>HTML</acronym> and text style in init files</a>
   <ul class="toc">
-    <li><a name="TOC44" href="#SEC48">7.1 Three contexts for expansions: preformatted, normal and string</a></li>
-    <li><a name="TOC45" href="#SEC49">7.2 Customizing the formatting of commands without argument</a></li>
-    <li><a name="TOC46" href="#SEC50">7.3 Customizing accent, style and other simple commands</a>
+    <li><a name="TOC50" href="#SEC54">7.1 Three contexts for expansions: preformatted, normal and string</a></li>
+    <li><a name="TOC51" href="#SEC55">7.2 Customizing the formatting of commands without argument</a></li>
+    <li><a name="TOC52" href="#SEC56">7.3 Customizing accent, style and other simple commands</a>
     <ul class="toc">
-      <li><a name="TOC47" href="#SEC51">7.3.1 An interface for commands formatting with a hash reference</a></li>
-      <li><a name="TOC48" href="#SEC52">7.3.2 An interface for commands formatting with a string</a></li>
-      <li><a name="TOC49" href="#SEC53">7.3.3 Defining the style and indicatric commands interface</a></li>
+      <li><a name="TOC53" href="#SEC57">7.3.1 An interface for commands formatting with a hash reference</a></li>
+      <li><a name="TOC54" href="#SEC58">7.3.2 An interface for commands formatting with a string</a></li>
+      <li><a name="TOC55" href="#SEC59">7.3.3 Defining the style and indicatric commands interface</a></li>
     </ul></li>
-    <li><a name="TOC50" href="#SEC54">7.4 Formatting of special simple commands</a></li>
-    <li><a name="TOC51" href="#SEC55">7.5 Processing special characters in text</a></li>
-    <li><a name="TOC52" href="#SEC56">7.6 Customizing strings written by <code>texi2html</code></a></li>
-    <li><a name="TOC53" href="#SEC57">7.7 References</a>
+    <li><a name="TOC56" href="#SEC60">7.4 Formatting of special simple commands</a></li>
+    <li><a name="TOC57" href="#SEC61">7.5 Processing special characters in text</a></li>
+    <li><a name="TOC58" href="#SEC62">7.6 Customizing strings written by <code>texi2html</code></a></li>
+    <li><a name="TOC59" href="#SEC63">7.7 References</a>
     <ul class="toc">
-      <li><a name="TOC54" href="#SEC58">7.7.1 Reference to external manual</a></li>
-      <li><a name="TOC55" href="#SEC59">7.7.2 Reference to an internal node</a></li>
+      <li><a name="TOC60" href="#SEC64">7.7.1 Reference to external manual</a></li>
+      <li><a name="TOC61" href="#SEC65">7.7.2 Reference to an internal node</a></li>
     </ul></li>
-    <li><a name="TOC56" href="#SEC60">7.8 Commands used for centering and flushing of text</a></li>
-    <li><a name="TOC57" href="#SEC61">7.9 Formatting or not a paragraph or a preformatted region</a>
+    <li><a name="TOC62" href="#SEC66">7.8 Commands used for centering and flushing of text</a></li>
+    <li><a name="TOC63" href="#SEC67">7.9 Formatting (or not) a paragraph and a preformatted region</a>
     <ul class="toc">
-      <li><a name="TOC58" href="#SEC62">7.9.1 Paragraph and preformatted region formatting</a></li>
-      <li><a name="TOC59" href="#SEC63">7.9.2 Avoiding paragraphs in formats</a></li>
+      <li><a name="TOC64" href="#SEC68">7.9.1 Paragraph and preformatted region formatting</a></li>
+      <li><a name="TOC65" href="#SEC69">7.9.2 Avoiding paragraphs in formats</a></li>
     </ul></li>
-    <li><a name="TOC60" href="#SEC64">7.10 Formatting of complex formats (<code>@example</code>, <code>@display</code>&hellip;)</a></li>
-    <li><a name="TOC61" href="#SEC65">7.11 Customizing the formatting of lists and tables</a>
+    <li><a name="TOC66" href="#SEC70">7.10 Formatting of complex formats (<code>@example</code>, <code>@display</code>&hellip;)</a></li>
+    <li><a name="TOC67" href="#SEC71">7.11 Customizing the formatting of lists and tables</a>
     <ul class="toc">
-      <li><a name="TOC62" href="#SEC66">7.11.1 Formatting individual table and list items</a></li>
-      <li><a name="TOC63" href="#SEC67">7.11.2 Formatting of a whole table or list</a></li>
+      <li><a name="TOC68" href="#SEC72">7.11.1 Formatting individual table and list items</a></li>
+      <li><a name="TOC69" href="#SEC73">7.11.2 Formatting of a whole table or list</a></li>
     </ul></li>
-    <li><a name="TOC64" href="#SEC68">7.12 Definition commands formatting</a>
+    <li><a name="TOC70" href="#SEC74">7.12 Definition commands formatting</a>
     <ul class="toc">
-      <li><a name="TOC65" href="#SEC69">7.12.1 Customizing the interpretation of a definition line</a></li>
-      <li><a name="TOC66" href="#SEC70">7.12.2 Customization of the definition formatting</a></li>
+      <li><a name="TOC71" href="#SEC75">7.12.1 Customizing the interpretation of a definition line</a></li>
+      <li><a name="TOC72" href="#SEC76">7.12.2 Customization of the definition formatting</a></li>
     </ul></li>
-    <li><a name="TOC67" href="#SEC71">7.13 Customizing headings formatting</a></li>
-    <li><a name="TOC68" href="#SEC72">7.14 Formatting of special regions (<code>@verbatim</code>, <code>@cartouche</code>, <code>@quotation</code>)</a></li>
-    <li><a name="TOC69" href="#SEC73">7.15 Menu formatting</a>
+    <li><a name="TOC73" href="#SEC77">7.13 Customizing headings formatting</a></li>
+    <li><a name="TOC74" href="#SEC78">7.14 Formatting of special regions (<code>@verbatim</code>, <code>@cartouche</code>, <code>@quotation</code>)</a></li>
+    <li><a name="TOC75" href="#SEC79">7.15 Menu formatting</a>
     <ul class="toc">
-      <li><a name="TOC70" href="#SEC74">7.15.1 The structure of a menu</a></li>
-      <li><a name="TOC71" href="#SEC75">7.15.2 The formatting of the different menu components</a></li>
+      <li><a name="TOC76" href="#SEC80">7.15.1 The structure of a menu</a></li>
+      <li><a name="TOC77" href="#SEC81">7.15.2 The formatting of the different menu components</a></li>
+      <li><a name="TOC78" href="#SEC82">7.15.3 Simple menu formatting in a preformatted environment</a></li>
+      <li><a name="TOC79" href="#SEC83">7.15.4 The formatting of the menu in a table</a></li>
     </ul></li>
-    <li><a name="TOC72" href="#SEC76">7.16 Indices formatting</a>
+    <li><a name="TOC80" href="#SEC84">7.16 Indices formatting</a>
     <ul class="toc">
-      <li><a name="TOC73" href="#SEC77">7.16.1 Formatting of index entries</a></li>
-      <li><a name="TOC74" href="#SEC78">7.16.2 Customizing the formatting of index lists</a></li>
+      <li><a name="TOC81" href="#SEC85">7.16.1 Formatting of index entries</a></li>
+      <li><a name="TOC82" href="#SEC86">7.16.2 Customizing the formatting of index lists</a></li>
     </ul></li>
-    <li><a name="TOC75" href="#SEC79">7.17 Floats and lists of floats</a>
+    <li><a name="TOC83" href="#SEC87">7.17 Floats and lists of floats</a>
     <ul class="toc">
-      <li><a name="TOC76" href="#SEC80">7.17.1 Formatting a float</a></li>
-      <li><a name="TOC77" href="#SEC81">7.17.2 Formatting lists of floats</a></li>
+      <li><a name="TOC84" href="#SEC88">7.17.1 Formatting a float</a></li>
+      <li><a name="TOC85" href="#SEC89">7.17.2 Formatting lists of floats</a></li>
     </ul></li>
-    <li><a name="TOC78" href="#SEC82">7.18 Customizing the footnotes formatting</a></li>
-    <li><a name="TOC79" href="#SEC83">7.19 Customizing other commands, and unknown commands</a></li>
+    <li><a name="TOC86" href="#SEC90">7.18 Customizing the footnotes formatting</a></li>
+    <li><a name="TOC87" href="#SEC91">7.19 Bypassing normal formatting</a></li>
+    <li><a name="TOC88" href="#SEC92">7.20 Customizing other commands, and unknown commands</a></li>
   </ul></li>
-  <li><a name="TOC80" href="#SEC84">A. Internationalization</a>
+  <li><a name="TOC89" href="#SEC93">A. Internationalization</a>
   <ul class="toc">
-    <li><a name="TOC81" href="#SEC85">A.1 Translating strings</a></li>
-    <li><a name="TOC82" href="#SEC86">A.2 Adding new strings written to document</a></li>
+    <li><a name="TOC90" href="#SEC94">A.1 Translating strings</a>
+    <ul class="toc">
+      <li><a name="TOC91" href="#SEC95">A.1.1 Contributing to existing translations</a></li>
+      <li><a name="TOC92" href="#SEC96">A.1.2 Contributing translations to another language</a></li>
+    </ul></li>
+    <li><a name="TOC93" href="#SEC97">A.2 Adding new strings written to document</a></li>
   </ul></li>
-  <li><a name="TOC83" href="#SEC87">B. Command Line Option Index</a></li>
-  <li><a name="TOC84" href="#SEC88">C. Variable Index</a></li>
-  <li><a name="TOC85" href="#SEC89">D. Concept Index</a></li>
+  <li><a name="TOC94" href="#SEC98">B. Incompatibilities with previous versions</a></li>
+  <li><a name="TOC95" href="#SEC99">C. How little texi2html texinfo differs from GNU texinfo</a></li>
+  <li><a name="TOC96" href="#SEC100">D. Command Line Option Index</a></li>
+  <li><a name="TOC97" href="#SEC101">E. Variable Index</a></li>
+  <li><a name="TOC98" href="#SEC102">F. Concept Index</a></li>
 </ul>
 </div>
 <hr size="1">
@@ -5932,7 +7019,7 @@
 <table cellpadding="1" cellspacing="1" border="0">
 <tr><td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h1>Short Table of Contents</h1>
@@ -5941,14 +7028,16 @@
 <li><a name="TOC1" href="#SEC1">1. Overview</a></li>
 <li><a name="TOC3" href="#SEC3">2. Obtaining <code>texi2html</code></a></li>
 <li><a name="TOC4" href="#SEC4">3. Installation of <code>texi2html</code></a></li>
-<li><a name="TOC5" href="#SEC5">4. Invoking <code>texi2html</code></a></li>
-<li><a name="TOC14" href="#SEC14">5. Overview of initialization files content and loading</a></li>
-<li><a name="TOC17" href="#SEC17">6. Fine tuning of the page layout</a></li>
-<li><a name="TOC43" href="#SEC47">7. Customizing <acronym>HTML</acronym> and text style in init files</a></li>
-<li><a name="TOC80" href="#SEC84">A. Internationalization</a></li>
-<li><a name="TOC83" href="#SEC87">B. Command Line Option Index</a></li>
-<li><a name="TOC84" href="#SEC88">C. Variable Index</a></li>
-<li><a name="TOC85" href="#SEC89">D. Concept Index</a></li>
+<li><a name="TOC9" href="#SEC9">4. Invoking <code>texi2html</code></a></li>
+<li><a name="TOC18" href="#SEC18">5. Overview of initialization files content and loading</a></li>
+<li><a name="TOC22" href="#SEC22">6. Fine tuning of the page layout</a></li>
+<li><a name="TOC49" href="#SEC53">7. Customizing <acronym>HTML</acronym> and text style in init files</a></li>
+<li><a name="TOC89" href="#SEC93">A. Internationalization</a></li>
+<li><a name="TOC94" href="#SEC98">B. Incompatibilities with previous versions</a></li>
+<li><a name="TOC95" href="#SEC99">C. How little texi2html texinfo differs from GNU texinfo</a></li>
+<li><a name="TOC96" href="#SEC100">D. Command Line Option Index</a></li>
+<li><a name="TOC97" href="#SEC101">E. Variable Index</a></li>
+<li><a name="TOC98" href="#SEC102">F. Concept Index</a></li>
 </ul>
 </div>
 <hr size="1">
@@ -5956,12 +7045,12 @@
 <table cellpadding="1" cellspacing="1" border="0">
 <tr><td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC87" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC100" title="Index">Index</a>]</td>
 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
 </tr></table>
 <h1>About This Document</h1>
 <p>
-  This document was generated by <em>Derek R. Price</em> on <em>February, 3 2005</em> using <a href="http://texi2html.cvshome.org/"><em>texi2html 1.76</em></a>.
+  This document was generated by <em>Derek Price</em> on <em>June, 5 2007</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html @PACKAGE_VERSION@</em></a>.
 </p>
 <p>
   The buttons in the navigation panels have the following meaning:
@@ -5976,55 +7065,55 @@
   <tr>
     <td align="center"> [ &lt; ] </td>
     <td align="center">Back</td>
-    <td>previous section in reading order</td>
+    <td>Previous section in reading order</td>
     <td>1.2.2</td>
   </tr>
   <tr>
     <td align="center"> [ &gt; ] </td>
     <td align="center">Forward</td>
-    <td>next section in reading order</td>
+    <td>Next section in reading order</td>
     <td>1.2.4</td>
   </tr>
   <tr>
     <td align="center"> [ &lt;&lt; ] </td>
     <td align="center">FastBack</td>
-    <td>beginning of this chapter or previous chapter</td>
+    <td>Beginning of this chapter or previous chapter</td>
     <td>1</td>
   </tr>
   <tr>
     <td align="center"> [ Up ] </td>
     <td align="center">Up</td>
-    <td>up section</td>
+    <td>Up section</td>
     <td>1.2</td>
   </tr>
   <tr>
     <td align="center"> [ &gt;&gt; ] </td>
     <td align="center">FastForward</td>
-    <td>next chapter</td>
+    <td>Next chapter</td>
     <td>2</td>
   </tr>
   <tr>
     <td align="center"> [Top] </td>
     <td align="center">Top</td>
-    <td>cover (top) of document</td>
+    <td>Cover (top) of document</td>
     <td> &nbsp; </td>
   </tr>
   <tr>
     <td align="center"> [Contents] </td>
     <td align="center">Contents</td>
-    <td>table of contents</td>
+    <td>Table of contents</td>
     <td> &nbsp; </td>
   </tr>
   <tr>
     <td align="center"> [Index] </td>
     <td align="center">Index</td>
-    <td>index</td>
+    <td>Index</td>
     <td> &nbsp; </td>
   </tr>
   <tr>
     <td align="center"> [ ? ] </td>
     <td align="center">About</td>
-    <td>about (help)</td>
+    <td>About (help)</td>
     <td> &nbsp; </td>
   </tr>
 </table>
@@ -6063,7 +7152,7 @@
 <hr size="1">
 <p>
  <font size="-1">
-  This document was generated by <em>Derek R. Price</em> on <em>February, 3 2005</em> using <a href="http://texi2html.cvshome.org/"><em>texi2html 1.76</em></a>.
+  This document was generated by <em>Derek Price</em> on <em>June, 5 2007</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html @PACKAGE_VERSION@</em></a>.
  </font>
  <br>
 
--- tetex-src-3.0/utils/texi2html/doc/Makefile.am.texi176	2005-02-03 03:30:26.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/doc/Makefile.am	2007-02-18 00:36:22.000000000 +0100
@@ -12,14 +12,33 @@
 # an old one which is installed on the client.
 TEXI2HTML = $(top_builddir)/texi2html
 
-EXTRA_DIST = texi2html.html
+man_MANS = texi2html.1
 
+EXTRA_DIST = \
+	texi2html.1.in \
+	texi2html.html
+
+CLEANFILES = texi2html.1
+
+#texi2html.html: texi2html.texi $(srcdir)/version.texi \
+#  $(TEXI2HTML)
 texi2html.html: texi2html.texi $(srcdir)/version.texi \
-  $(top_builddir)/texi2html.pl $(top_builddir)/texi2html.init \
-  $(top_builddir)/MySimple.pm $(top_builddir)/T2h_i18n.pm \
-  $(top_builddir)/translations.pl
-	TEXINPUTS=$(srcdir)::$$TEXINPUTS \
-	  $(SHELL) $(top_srcdir)/missing-texi2html --run $(TEXI2HTML) -V $<
+  $(top_srcdir)/texi2html.pl $(top_srcdir)/texi2html.init \
+  $(top_srcdir)/MySimple.pm $(top_srcdir)/T2h_i18n.pm
+	TEXINPUTS=$(srcdir)::$$TEXINPUTS T2H_HOME=$(top_srcdir) \
+	  $(SHELL) $(top_srcdir)/missing-texi2html --run \
+	    $(PERL) -x $(top_srcdir)/texi2html.pl -V $<
+
+$(TEXI2HTML):
+	@(cd $(top_builddir) && make texi2html)
+
+texi2html.1: texi2html.1.in ../config.status
+	@echo Generating $@...
+	@sed -e "s/[@]PACKAGE_VERSION[@]/$(PACKAGE_VERSION)/" \
+	     -e "s/[@]PACKAGE_DATE[@]/$(PACKAGE_DATE)/" \
+	     -e "s#[@]sysconfdir[@]#$(sysconfdir)#" \
+	     -e "s#[@]pkgdatadir[@]#$(pkgdatadir)#" $< >texi2html.tmp
+	@mv texi2html.tmp $@
 
 txt: texi2html.txt
 
@@ -27,7 +46,7 @@
 
 check-local: $(TEXI2HTML) 
 	TEXINPUTS=$(srcdir)::$$TEXINPUTS \
-	   $(PERL) $(TEXI2HTML) -V $(srcdir)/texi2html.texi
+	   $(TEXI2HTML) -V $(srcdir)/texi2html.texi
 
 # texinfo based targets automake neglects to include
 .texinfo.txt:
--- tetex-src-3.0/utils/texi2html/doc/texi2html.info.texi176	2005-02-04 00:37:35.000000000 +0100
+++ tetex-src-3.0/utils/texi2html/doc/texi2html.info	2007-06-05 06:17:17.000000000 +0200
@@ -1,17 +1,14 @@
-This is texi2html.info, produced by makeinfo version 4.5 from
+This is texi2html.info, produced by makeinfo version 4.8 from
 texi2html.texi.
 
-Copyright (C) 1999, 2000, 2001, 2002, 2003                        Free
-Software Foundation, Inc.
-
 Portions  
 of        
 `texi2html'
           Copyright (C) 1999, 2000 Lionel Cons
           Copyright (C) 1999, 2000 Karl Berry
           Copyright (C) 1999, 2000 Olaf Bachmann
-          Copyright (C) 2002, 2003 Patrice Dumas
-          Copyright (C) 2001, 2002, 2003 Derek Price
+          Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Patrice Dumas
+          Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Derek Price
           Copyright (C) many others.
 
 
@@ -19,8 +16,10 @@
 of this   
 manual    
           Copyright (C) 1999, 2000 Karl Heinz Marbaise (manual)
-          Copyright (C) 2003 Patrice Dumas (manual)
-          Copyright (C) 2003 Derek Price (manual)
+          Copyright (C) 2003, 2007 Derek Price (manual)
+          Copyright (C) 2003, 2004, 2005, 2006, 2007 Patrice Dumas
+          (manual)
+
    Permission is granted to make and distribute verbatim copies of this
 manual provided the copyright notice and this permission notice are
 preserved on all copies.
@@ -34,17 +33,62 @@
 manual into another language, under the above conditions for modified
 versions, except that this permission notice may be stated in a
 translation approved by the Free Software Foundation.
+
 INFO-DIR-SECTION Texinfo documentation system
 START-INFO-DIR-ENTRY
 * Texi2HTML: (texi2html).  Texinfo to HTML Converter.
 END-INFO-DIR-ENTRY
 
-   This file, last updated 1 February 2005, documents the `texi2html'
+   This file, last updated 2 June 2007, documents the `texi2html'
 script which converts Texinfo (http://www.texinfo.org) into HTML
-(http://w3c.org).  This edition is for `texi2html' version 1.76.
+(http://w3c.org).  This edition is for `texi2html' version 1.78.
+
+Portions  
+of        
+`texi2html'
+          Copyright (C) 1999, 2000 Lionel Cons
+          Copyright (C) 1999, 2000 Karl Berry
+          Copyright (C) 1999, 2000 Olaf Bachmann
+          Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Patrice Dumas
+          Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Derek Price
+          Copyright (C) many others.
+
+
+Portions  
+of this   
+manual    
+          Copyright (C) 1999, 2000 Karl Heinz Marbaise (manual)
+          Copyright (C) 2003, 2007 Derek Price (manual)
+          Copyright (C) 2003, 2004, 2005, 2006, 2007 Patrice Dumas
+          (manual)
+
+   Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+   Permission is granted to copy and distribute modified versions of
+this manual under the conditions for verbatim copying, provided that
+the entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+   Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be stated in a
+translation approved by the Free Software Foundation.
+
+
+File: texi2html.info,  Node: Top,  Next: Overview,  Up: (dir)
+
+Texi2HTML
+*********
 
-Copyright (C) 1999, 2000, 2001, 2002, 2003                        Free
-Software Foundation, Inc.
+This manual, last updated 2 June 2007, describes version 1.78 of the
+`texi2html' Perl script which converts Texinfo (*note Texinfo:
+(Texinfo)Top.) into HTML.
+
+   Please send bug reports concerning this manual to the Texi2HTML
+developement list <texi2html-bug@nongnu.org>. Please state the exact
+version of the manual which contains the bug, as given above.
 
 Portions  
 of        
@@ -52,8 +96,8 @@
           Copyright (C) 1999, 2000 Lionel Cons
           Copyright (C) 1999, 2000 Karl Berry
           Copyright (C) 1999, 2000 Olaf Bachmann
-          Copyright (C) 2002, 2003 Patrice Dumas
-          Copyright (C) 2001, 2002, 2003 Derek Price
+          Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Patrice Dumas
+          Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Derek Price
           Copyright (C) many others.
 
 
@@ -61,8 +105,10 @@
 of this   
 manual    
           Copyright (C) 1999, 2000 Karl Heinz Marbaise (manual)
-          Copyright (C) 2003 Patrice Dumas (manual)
-          Copyright (C) 2003 Derek Price (manual)
+          Copyright (C) 2003, 2007 Derek Price (manual)
+          Copyright (C) 2003, 2004, 2005, 2006, 2007 Patrice Dumas
+          (manual)
+
    Permission is granted to make and distribute verbatim copies of this
 manual provided the copyright notice and this permission notice are
 preserved on all copies.
@@ -76,101 +122,4263 @@
 manual into another language, under the above conditions for modified
 versions, except that this permission notice may be stated in a
 translation approved by the Free Software Foundation.
+
+     *This manual is currently under construction and of course incomplete.  ;-)*
+
+* Menu:
+
+* Overview::
+* Obtaining texi2html::
+                              Obtaining a copy of the `texi2html'
+                              source code distribution
+* Installation::              Installing `texi2html'
+* Invoking texi2html::        Description of the command line options
+* Initialization files::      What kind of variables and subroutines appear
+                              in init files and how they are called
+* Changing the page layout::  Fine tuning of the page layout
+* Customizing HTML::          Fine tuning of the HTML elements
+                              associated with the texinfo constructs
+* Internationalization::      Help translating!
+* Incompatibilities::         Incompatibilities with previous versions
+* Specificities::             The minor differences with regard with texinfo
+                              valid for makeinfo or texi2dvi
+* Indexop::                   Command Line Option Index
+* Indexvr::                   Variable Index
+* Indexcp::                   Concept Index
+
+
+File: texi2html.info,  Node: Overview,  Next: Obtaining texi2html,  Prev: Top,  Up: Top
+
+1 Overview
+**********
+
+Texinfo (http://www.texinfo.org) is the official documentation format
+of the GNU (http://www.gnu.org) project.  It uses a single source file
+to produce both online information and printed output.
+
+   It is often desirable to have a way to produce HTML from Texinfo
+sources, as GNU-Info files are produced.  It is much simpler to run a
+converter than it is to rewrite all the documentation in HTML,
+especially considering that there is so much Texinfo documentation in
+the world.
+
+   Some time ago `makeinfo' wasn't able to produce HTML output format,
+but people still wanted documentation in HTML.  This was the birthing
+hour for `texi2html'.  The basic purpose of `texi2html' is to convert
+Texinfo documents into HTML.
+
+   Since then, HTML support in `makeinfo' has improved, but `texi2html'
+is still stronger in many areas, including the degree to which it
+allows customization.  With `texi2html', some important aspects of the
+resulting HTML files may be specified via command line options, and
+configuration files provide an even finer degree of control over the
+final output, allowing most every aspect of the final output not
+specified in the Texinfo input file to be specified.  Configuration
+files are written in `perl', like the main program, and anything which
+may be specified on the command line may also be specified within a
+configuration file.
+
+   For an example of the kind of pages `texi2html' is capable of
+producing, have a look at the following sites: the Singular Manual
+(http://www.singular.uni-kl.de/Manual/html/), the Cederqvist (CVS
+Manual) (http://ccvs.cvshome.org/docs/manual).
+
+* Menu:
+
+* whytexi2html::       Why `texi2html' and not `makeinfo'?.
+
+
+File: texi2html.info,  Node: whytexi2html,  Up: Overview
+
+1.1 Why `texi2html' and not `makeinfo'?
+=======================================
+
+You would like to produce HTML files from your existing Texinfo files?
+There are two programs you can use to do this.  The first is `makeinfo'
+(*note Generating HTML: (texinfo)Generating HTML.).  The second is
+`texi2html'.
+
+   The design goal of `makeinfo''s HTML output was to produce readable
+HTML output. It is now possible to use CSS for HTML customization.
+Another possibility is to use intermediate formats, like docbook or
+`makeinfo' XML and XSL stylesheets to customize the resulting document.
+Still the output produced by `makeinfo' isn't customizable.
+
+   The current development of `texi2html' tries to provide for
+producing the more interesting and sophisticated HTML pages that
+today's Internet users have come to expect.  The goal behind
+`texi2html' is to generate attractive HTML by default but also to allow
+users considerable freedom to affect the final style and design of the
+output HTML pages.  This is achieved via command line options and
+flexible configuration files.
+
+   In contrast to the HTML produced by `makeinfo --html' (the
+`makeinfo' program is part of the Texinfo distribution), the
+`texi2html' program, among other differences, allows for the
+customization of the entire page layout, including headers, footers,
+style sheets, etc., allows for customization of the low level HTML
+formatting, provides for splitting documents at various levels, and
+provides for using the `latex2html' program to convert `@tex' sections
+of the Texinfo source.
+
+   The focus on HTML is still present but with the help of the
+customization files it is now possible to use `texi2html' to produce
+other formats as well. `texi2html' may for example be turned into a
+texinfo to roff translator with the help of a customization file
+provided with the distribution.
+
+   `texi2html' should reasonably convert all Texinfo 4.8 constructs.
+If you find it does not, please send a bug report to the
+<texi2html-bug@nongnu.org> email list.
+
+
+File: texi2html.info,  Node: Obtaining texi2html,  Next: Installation,  Prev: Overview,  Up: Top
+
+2 Obtaining `texi2html'
+***********************
+
+The latest version of the source code for `texi2html' should be
+available from www.nongnu.org/texi2html/
+(http://www.nongnu.org/texi2html/).  `texi2html' is also available with
+teTeX (http://www.tug.org/teTeX/) and TeX Live
+(http://www.tug.org/texlive/).
+
+
+File: texi2html.info,  Node: Installation,  Next: Invoking texi2html,  Prev: Obtaining texi2html,  Up: Top
+
+3 Installation of `texi2html'
+*****************************
+
+* Menu:
+
+* Requirements::
+* Configuring and rebuilding::
+* Installing::
+* Advanced build features::
+
+
+File: texi2html.info,  Node: Requirements,  Next: Configuring and rebuilding,  Up: Installation
+
+3.1 Requirements
+================
+
+To install `texi2html', you must first obtain a copy of the source
+distribution.  *Note Obtaining texi2html::.
+
+   `texi2html' requires `perl' version 5.00405 or above to be run. An
+older perl 5 version with `File::Spec' is also likely to work.  The
+current version has been lightly tested on a wide range of perl, but
+has not been tested extensively on versions of `perl' below 5.6.  To
+play nice with encodings you also need the `Encode' and
+`Unicode::Normalize' modules.
+
+   To rebuild the script perl isn't required in most cases. For more
+information about advanced build features, see *Note Advanced build
+features::.
+
+
+File: texi2html.info,  Node: Configuring and rebuilding,  Next: Installing,  Prev: Requirements,  Up: Installation
+
+3.2 Configuring the source and rebuilding
+=========================================
+
+`texi2html' is a standard Automake-based distribution.  If you have a
+source version, you should run `./configure' to configure the sources
+and `make' to build the script.
+
+   `./configure' accepts options to select the installation directory
+for the `texi2html' file, the default directories `texi2html' will use
+to look for configuration files, and other details.  Run `./configure
+--help' for more information.  Running `./configure' creates
+`texi2html_configured.pl' from `texi2html.pl', and also builds the
+`make' configuration files (`Makefile's).
+
+   Running `make' combines five files into the final `texi2html'
+program file:
+   * `texi2html_configured.pl' contains the base program,
+
+   * `MySimple.pm' handles the command line options,
+
+   * `texi2html.init' is the default configuration file, and
+
+   * `T2h_i18n.pm' is used for internationalization.
+
+   * `translations.pl' contains the translations of the strings used in
+     documents.
+
+   Running `make' also rebuilds the documentation if needed.
+
+
+File: texi2html.info,  Node: Installing,  Next: Advanced build features,  Prev: Configuring and rebuilding,  Up: Installation
+
+3.3 Installing
+==============
+
+`make install' performs the installation to the locations specified to
+the `./configure' script.  This usually involves placing the actual
+`texi2html' file someplace in your path, such as `/usr/local/bin' or
+`/usr/bin'.
+
+   Installing `texi2html' in your path should be sufficient to run it.
+To use default initialization files, or a configuration file for
+LaTeX2HTML when using `latex2html' to convert `@tex' sections (*note
+Expanding TeX regions::), install them in the package data directory
+specified to configure.  This is `/usr/local/share/texi2html/' by
+default, but depends on the value of the `--pkgdatadir=DIR' option
+passed to the `./configure' script. Files used for strings
+customization and internationalization are also searched for in the
+`i18n' directory of this directory. *Note Using init files:: for more.
+
+
+File: texi2html.info,  Node: Advanced build features,  Prev: Installing,  Up: Installation
+
+3.4 Advanced build features
+===========================
+
+This section documents features that are unlikely to be used but deserve
+a bit of documentation.
+
+   A `./configure' switch, `--with-unicode' allows to choose whether
+the unicode code should be used or not. The default is to detect it
+with a test. This code requires `Encode' and `Unicode::Normalize'
+modules.
+
+   A similar `./configure' switch, `--with-unidecode' allows to choose
+whether the perl module `Text::Unidecode' should be used or not. The
+default is to detect it with a test. This code requires the
+`Text::Unidecode' module.
+
+   `perl' isn't needed to build the script. the script is build by
+`./configure' and a shell script launched by `make' which is a simple
+wrapper around a `sed' one-liner. The `perl' command can be specified
+with the environment variable `$PERL', otherwise it is detected. `perl'
+is required to rebuild the documentation as the HTML documentation is
+rebuild with `texi2html' itself.
+
+   The translations are managed by a script `manage_i18n.pl', created
+by `./configure'. `manage_i18n.pl' requires `Data::Dumper' to function
+normally. If this module isn't there `./configure' detects it and
+`manage_i18n.pl' doesn't really rebuild the translations, but only copy
+files. It is possible to use the `./configure' switch `--enable-translations'
+to override the `./configure' detection. For more about translations,
+see *Note Internationalization::.
+
+   It is possible to build from outside of the source directory, for
+example the following should work:
+
+     tar xzvf texi2html-1.78.tar.gz
+     mkdir texi2html_build
+     cd texi2html_build
+     ../texi2html-1.78/configure && make
+
+   All these features enables to build `texi2html' on a platform in
+order to run it on another platform, a kind of cross-building. The
+`./configure' switches and `$PERL' allows to specify everything needed
+for the build of the `texi2html' script.
+
+
+File: texi2html.info,  Node: Invoking texi2html,  Next: Initialization files,  Prev: Installation,  Up: Top
+
+4 Invoking `texi2html'
+**********************
+
+To produce an HTML manual, run `texi2html' with a Texinfo file as an
+argument.  For example, this manual is created with:
+
+     $ texi2html texi2html.texi
+
+   The behaviour of `texi2html' may be changed with command line
+options.  These command line options are always associated with
+corresponding `perl' variables which may appear in init files, and these
+variables are presented in this chapter each time a switch is described.
+
+   Boolean command line switches always have a corresponding negated
+switch, obtained by prepending `no' or `no-' to the switch name. For
+example `--nomenu' does the reverse of `--menu'.
+
+* Menu:
+
+* Splitting output::          The HTML output may be split at
+                              different levels
+* Output files::
+* Expansion::
+* Texinfo related options::
+* Page layout options::       Customizing page layout
+* Style options::             Customizing the HTML and text style
+* Expanding TeX regions::
+* Using init files::          Specifying initialization files for fine tuning
+
+
+File: texi2html.info,  Node: Splitting output,  Next: Output files,  Up: Invoking texi2html
+
+4.1 Specifying where to split the generated document
+====================================================
+
+The HTML manual resulting from the processing of the Texinfo source may
+be split into files at different levels.  This is specified with the
+option `--split' which takes an argument, namely the level of splitting
+(variable: `$SPLIT'). This level may be:
+
+`chapter'
+     The document is split at `@chapter', `@appendix', or `@unnumbered'.
+
+`section'
+     The document is split at the same places as it is using the
+     `chapter' argument, and also at `@section', `@appendixsec' or
+     `@unnumberedsec'.
+
+`node'
+     The document is split at every sectioning command.  It is not
+     necessarily split at each node, if the `@node' structure doesn't
+     correspond with the sectioning command structure (see below).
+
+`none'
+     The document isn't split.  This is the default.
+
+   There are two kinds of commands which may be used to define
+sectioning elements in Texinfo: `@node' and the structuring commands
+(`@top', `@section', `@appendixsubsec',  and so on).  A node just
+preceding a structuring command is considered to be part of the same
+sectioning element as that command.  If the `@node Top' isn't
+associated with a structuring command it also defines a sectioning
+element.
+
+   By default, nodes which aren't associated with a structuring command
+are not considered to be sectioning commands.  They are always
+considered to be part of a sectioning element defined by a structuring
+command.  It is possible to change this behaviour via the `--use-nodes'
+option (variable `$USE_NODES').  In this case, nodes not associated
+with structuring commands are also considered to be sectioning commands
+defining a sectioning element.
+
+   This default behaviour mimics `texi2dvi' behaviour, which ignores
+`@node' commands for the purprose of sectioning, while the second looks
+like `makeinfo' behaviour (*note Two Paths: (texinfo)Two Paths.).
+
+   As an illustration, the following table shows how a sample Texinfo
+document is divided into sectioning elements when `--use-nodes' is used
+and not:
+
+Texinfo code           default case           with
+                                              `--use-nodes'
+     @node node1        first element:         first element:
+     @chapter node 1                               
+     node1 text             @node node1             @node node1
+                            @chapter node 1             @chapter node 1
+     @node node2             node1 text             node1 text
+     node2 text                                  second
+                            @node node2        element:
+     @node node3             node2 text        
+     node3 text           second                   @node node2
+     @chapter node 3        element:                    node2 text
+     chapter text                                  third
+                            @node node3        element:
+                            node3 text        
+                            @chapter node 3             @node node3
+                            chapter text             node3 text
+                                                   @chapter node 3
+                                                   chapter text
+
+
+File: texi2html.info,  Node: Output files,  Next: Expansion,  Prev: Splitting output,  Up: Invoking texi2html
+
+4.2 Setting output file and directory names
+===========================================
+
+The manual name is constructed by stripping the `.texi', `.txi',
+`.texinfo', or `.txinfo' extension from the Texinfo file name.
+
+   By default, `texi2html' generates the manual file in the current
+directory if the manual isn't split. A `.html' file extension is
+appended to the manual name.
+
+   If the manual is split the files are put in a directory named after
+the manual name. The file name is constructed using the manual name as
+basename.  An underscore followed by a number is appended to the
+basename for each files corresponding with sectioning elements, with the
+exception of the top element. For the top element there is nothing
+appended.  The files containing special elements pages have an
+underscore and a 3 letter code corresponding to their content (`toc'
+for table of contents, `abt' for about, `ovr' for overview, `fot' for
+footnotes if they are separated) appended.  Lastly, an `.html' file
+extension is appended.
+
+   Thus, if the texinfo file `afile.texi' is processed and split at
+chapters into 3 files, the generated files (in directory `afile') will
+be:
+
+     afile.html         --> `@node Top' or `@top' section
+     afile_1.html       --> Chapter 1
+     afile_2.html       --> Chapter 2
+     afile_toc.html     --> Table of Contents
+     afile_abt.html     --> About Page
+
+   This default behavior may be modified by several command line
+options. If the output isn't split, the prefix file name may be
+overrided by the `--output' command line option (variable `$OUT'). If
+the output is split, and `--output' is set, the files are placed in the
+directory specified by the argument to the option.
+
+   The basename may be overridden with `--prefix' (variable `$PREFIX').
+If `--short-ext' is given, `.htm' is appended instead of `.html' in
+the final step (variable `$SHORTEXTN').  The `--top-file' option
+overrides the top element file name (variable `$TOP_FILE').  This can
+be used to name the top element file `index.html'.  Similarly, `--toc-file'
+changes the name of the table of contents file (variable `$TOC_FILE').
+
+   Reusing the example above, but this time calling `texi2html' like so:
+
+     $ texi2html -split chapter -prefix manual -short-ext -top-file index.htm -toc-file contents.htm afile.texi
+
+   we get, in `manual':
+
+     index.htm          --> `@node Top' or `@top' section
+     manual_1.htm       --> Chapter 1
+     manual_2.htm       --> Chapter 2
+     contents.htm       --> Table of Contents
+     manual_abt.htm     --> About Page
+
+   The file names generated by `texi2html' differ from those generated
+by `makeinfo'. `makeinfo' uses the node name to construct the file
+names while splitting at nodes.  It is possible to get the same
+behaviour out of `texi2html' by specifying the `--node-files' option
+(variable `$NODE_FILES').  If the output isn't split at nodes,
+`texi2html' will still output files named after the nodes, without real
+content but redirecting to the right file.  The default is false for
+this option.  This trick enables the generated HTML manual to be a
+target for the cross-references of other manuals generated by
+`makeinfo' or `texi2html'.
+
+
+File: texi2html.info,  Node: Expansion,  Next: Texinfo related options,  Prev: Output files,  Up: Invoking texi2html
+
+4.3 Specifying which regions get expanded
+=========================================
+
+The default for `texi2html' is to expand the `@ifhtml', `@html', and
+`@menu' regions, all the `@ifnot' regions except `@ifnothtml', and no
+other `@if' regions.
+
+   It is possible to expand other regions by setting `--if<region>',
+where `<region>' is replaced by the literal name of the region (for
+example, `--iftex').  Symetrically, if `--no-if<region>' is specified,
+the `<region>' region is ignored.  The configuration file array, `@EXPAND',
+holds the names of regions which should be expanded. The only region
+name present in `@EXPAND' in the default case is `html'.
+
+   If `--nomenu' is set, the `@menu' sections are not expanded
+(variable `$SHOW_MENU'). The default is to expand `@menu' sections.
+
+
+File: texi2html.info,  Node: Texinfo related options,  Next: Page layout options,  Prev: Expansion,  Up: Invoking texi2html
+
+4.4 Command line options related to Texinfo language features
+=============================================================
+
+Miscalleneous Texinfo related things may be specified via command line
+options.
+
+`--lang=LANG'
+     Sets the document language similar to the Texinfo directive,
+     `@documentlanguage LANG' (variable `$LANG').  The default is `en',
+     that is, use the english language strings.
+
+`-DVAR'
+     Sets VAR.  Equivalent to, `@set VAR 1', in Texinfo.
+
+`-UVAR'
+     Clears VAR.  Equivalent to, `@clear VAR', in Texinfo.
+
+`-PDIR'
+     Prepend DIR to the list of directories to search for `@include'
+     files (the associated array is `@PREPEND_DIRS', empty in the
+     default case).
+
+`-IDIR'
+     Append DIR to the list of directories to search for `@include'
+     files (the associated array is `@INCLUDE_DIRS', empty in the
+     default case).
+
+   The include files are always searched for in the current directory.
+
+
+File: texi2html.info,  Node: Page layout options,  Next: Style options,  Prev: Texinfo related options,  Up: Invoking texi2html
+
+4.5 Page layout related command line options
+============================================
+
+If the `--frames' option is specified, HTML frames are used.  A file
+describing the frame layout is generated, and the document page is
+associated with a frame where the short table of content appears
+(variable `$FRAMES'). The default is not to use frames.
+
+   It is also possible to suppress the section navigation panel with `--nosec-nav'
+(variable `$SECTION_NAVIGATION', the default is to output all the
+navigation panels), and to specify whether footnotes should appear at
+the foot of the same page which contains the reference to the note or
+on a separate page with `--separated-footnotes' (variable `$SEPARATED_FOOTNOTES').
+The default is to have separated footnotes.
+
+
+File: texi2html.info,  Node: Style options,  Next: Expanding TeX regions,  Prev: Page layout options,  Up: Invoking texi2html
+
+4.6 Customizing the HTML and text style
+=======================================
+
+Miscalleneous style changes may be achieved with command line options.
+
+`--doctype=DTD'
+`--frameset-doctype=DTD'
+     You can specify the document DTD by setting these options.  `--frameset-doctype'
+     applies to the file describing the frames when frames are used
+     (corresponding variables are `$DOCTYPE' and `$FRAMESET_DOCTYPE').
+
+     The default for the document doctype is:
+          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+     And for the frameset doctype:
+          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html401/frameset.dtd">
+
+`--iso'
+     If this option is set, ISO8859 entities are used for some special
+     symbols, like Copyright (C) (variable `$USE_ISO'). It is the
+     default.
+
+`--css-include=FILE'
+     This command line switch provides for the inclusion of an external
+     Cascading Style Sheet (CSS) file.  More than one file may be
+     specified, and `-' stands for the standard input (array `@CSS_FILES').
+
+     The option use is the same than for `makeinfo' and is described
+     extensively in *Note HTML CSS: (texinfo)HTML CSS.  Briefly, the
+     CSS `@import' lines from the external file CSS file are pasted
+     before the `texi2html' CSS rules, and the external file CSS rules
+     are pasted after the `texi2html' CSS rules.
+
+`--html-xref-prefix=PATH'
+     This option sets the base directory for external HTML texinfo
+     manuals (variable `$EXTERNAL_DIR').  Defaults to `../'.
+
+`--def-table'
+     If this option is set, HTML tables are used to format definition
+     commands, rather than HTML definition tables (variable `$DEF_TABLE').
+     Default is false.
+
+`--short-ref'
+     If this option is set, cross-references are given without section
+     numbers (variable `$SHORT_REF'). Default is false.
+
+`--number'
+     If this option is set, sections are numbered (variable `$NUMBER_SECTIONS').
+     This is the default.
+
+`--toc-links'
+     If this option is set, links from headings to TOC entries are
+     created (variable `$TOC_LINKS'). Default is false.
+
+
+File: texi2html.info,  Node: Expanding TeX regions,  Next: Using init files,  Prev: Style options,  Up: Invoking texi2html
+
+4.7 Expanding `@tex' and `@math' regions using LaTeX2HTML
+=========================================================
+
+It is possible to use LaTeX2HTML (http://www.latex2html.org/) to
+process `@tex' regions and `@math{}' commands.  This is an attractive
+way to display mathematical constructs in the HTML manual.  The `--l2h'
+option activates this feature (variable $L2H).  It is usually desirable
+to expand `@tex' sections when this option is specified (*note
+Expansion::). The default is not to use this feature.
+
+   The `--l2h-l2h=PROGRAM' option enables changing the name/location of
+the LaTeX2HTML program processing TeX regions (variable `$L2H_L2H').
+The default is `latex2html'.
+
+   `--l2h-tmp' sets the directory used for temporary files, this name
+shouldn't contain a dot `.' (variable is `$L2H_TMP'). Defaults to the
+current dir.
+
+   The file specified by `--l2h-file' is used as LaTeX2HTML init file.
+It is searched at the same places than init files (*note Using init
+files::), and the default is `l2h.init'.
+
+
+File: texi2html.info,  Node: Using init files,  Prev: Expanding TeX regions,  Up: Invoking texi2html
+
+4.8 Use initialization files for fine tuning
+============================================
+
+Initialization variables are read first from
+`/usr/local/share/texi2html/Config' (the exact location being
+changeable with the `--pkgdatadir=dir' option of the `configure'
+script, see *Note Installation::), `/usr/local/etc/texi2html/Config'
+(the exact location being changeable with the `--sysconfdir=dir' option
+of the `configure' script, see *Note Installation::), from `./Config'
+then from `$HOME/.texi2html/Config'. Any command-line option can
+override the corresponding option set in init file, and the option `--init-file'
+specifies an init file to be loaded, with later settings overriding
+earlier ones.
+
+   The init files specified with `--init-file' are searched first in
+the current directory, then in the `$HOME/.texi2html/' directory, in
+the `/usr/local/etc/texi2html/' directory and lastly in the
+`/usr/local/share/texi2html/' directory.
+
+   A file is also included based on the language selected, by `$LANG', `--lang'
+or `@documentlanguage'.  If no language was selected `en' is considered
+to be the language. All the files with name the language name in
+`/usr/local/share/texi2html/i18n/', `/usr/local/etc/texi2html/i18n/',
+`$HOME/.texi2html/i18n/' and then `./i18n/' are included.
+
+   The default initialization options are defined in the
+`texi2html.init' file contained in the `texi2html' distribution (which
+gets included near the beginning of the `texi2html' script that gets
+installed).
+
+   To customize `texi2html' it is best if you copy the appropriate
+sections from the `texi2html.init' contents into an appropriate local
+initialization file, make the necessary changes there, and then have
+`texi2html' read this initialization file by one of the means described
+above.
+
+   Some init files are provided with `texi2html', for example
+`book.init' which produces an output more in line with what could be in
+a book, or `chm.init' outputs files that can be used to produce a CHM
+file.
+
+
+File: texi2html.info,  Node: Initialization files,  Next: Changing the page layout,  Prev: Invoking texi2html,  Up: Top
+
+5 Overview of initialization files content and loading
+******************************************************
+
+The initialization files are `perl' files, read as explained in *Note
+Using init files::. You don't need to know much of `perl' to do some
+simple changes in variable values, however, to be able to really take
+advantage of all the features of the initialization file, a good
+knowledge of `perl' is required.
+
+   In initialization file two kind of variables appear. These are normal
+variables (including arrays and hashes) and references on functions.
+The later permits the dynamic redefinition of functions used to produce
+the HTML manual. You should be able to change the value of some normal
+variables without a deep knowledge of `perl', by looking at the
+existing examples. The possible mistakes in that case could be omitted
+`;', and bad quoting.
+
+   Initialization file are loaded from the main program by the mean of
+a `require', while in the `Texi2HTML::Config' namespace. This means
+that the namespace of the main program and the namespace of
+inititalization files are distinct, which ensures that no name clash
+should happen. The variables are declared with the `our' specifier,
+such that it should be possible to use the `use strict' pragma in the
+initialization file code.
+
+   To avoid messing with the variables in the `main' namespace all the
+global variables which could be of use in the init files are in the
+`Texi2HTML' namespace. Notice that the functions of the main program
+are still in the `main' namespace.
+
+* Menu:
+
+* Encodings::                 Setting the encodings.
+* Redefining functions::      Function redefinition is achieved with
+                              redefinition of references on functions.
+* Function prototypes::       Conventions used in that manual for function
+                              reference prototypes display.
+
+
+File: texi2html.info,  Node: Encodings,  Next: Redefining functions,  Up: Initialization files
+
+5.1 Setting the encodings
+=========================
+
+There are four encodings relevant for `texi2html', they are associated
+with corresponding variables:
+  1. The encoding appearing in `@documentencoding'. The associated
+     value overrides the `$DOCUMENT_ENCODING' variable value.
+
+  2. The texinfo files encoding, associated with the variable `$IN_ENCODING'.
+     This variable is overriden when `$DOCUMENT_ENCODING' is set, if
+     the encoding is supported by perl.
+
+  3. The out files encoding, associated with the variable `$OUT_ENCODING'.
+     If not defined, the value of `$ENCODING_NAME' or `$IN_ENCODING' is
+     used if one of these variables is set.
+
+  4. The encoding advertized in out files, associated with the variable `$ENCODING_NAME'.
+     If unset the value of this variable is based on the other ENCODING
+     variables, and if they are all undefined, the variable `$DEFAULT_ENCODING'
+     is used.
+
+   The values for the encoding related variables are set in the default
+`init_out' function reference (*note Output initialization::).
+
+   In general the `$DOCUMENT_ENCODING' and `$IN_ENCODING' are set to
+the right values, and to force a given encoding for the output, the
+`$ENCODING_NAME' value may be set. The current default output encoding
+is UTF-8.
+
+
+File: texi2html.info,  Node: Redefining functions,  Next: Function prototypes,  Prev: Encodings,  Up: Initialization files
+
+5.2 Redefining functions in initialization files
+================================================
+
+To redefine a function you must replace the corresponding funtion
+reference with a reference on your function.  Thus you should write
+your function, give it a name you are certain it is unique in the
+`Texi2HTML::Config' namespace, and override the value of the function
+reference with your own function reference. When another function from
+the main program (or from another functions of an initialization file)
+calls the reference, your function will be used.
+
+   For example the function reference corresponding with the function
+called when doing an anchor is called `$anchor'. Thus if you want to
+override the corresponding function you could write:
+
+     # override the function reference
+     $anchor = \&my_own_function;
+
+     # the function reference now refers to
+     sub my_own_function {
+     # process arguments and return an html anchor
+     }
+
+
+File: texi2html.info,  Node: Function prototypes,  Prev: Redefining functions,  Up: Initialization files
+
+5.3 Conventions used for function prototypes
+============================================
+
+As the functions are defined by a reference name, we will always use
+the reference name in function prototypes. For the function arguments
+we will use `\@array' for a reference on an array and similarly
+`\%hash' for a reference on a hash.
+
+   Thus, the prototype for the function associated with the function
+reference `$formatting_function' will be:
+
+ -- Function Reference: $text formatting_function $arg1 \@arg2
+     `formatting_function' takes as first argument $ARG2, as second
+     argument a reference on an array \@ARG2 and returns the formatted
+     text $TEXT.
+
+   To redefined the corresponding function, you should write:
+
+     $formatting_function = \&my_formatting_function
+
+     sub my_formatting_function($ $)
+     {
+         my $arg1 = shift;
+         my $arg2 = shift;
+         # prepare $formatted_text
+         .....
+         return $formatted_text
+     }
+
+
+File: texi2html.info,  Node: Changing the page layout,  Next: Customizing HTML,  Prev: Initialization files,  Up: Top
+
+6 Fine tuning of the page layout
+********************************
+
+Some features of the page layout might be specified with command line
+options, the corresponding variables are described in *Note Page layout
+options::.  Fine tuning of the page layout may be achieved with
+redefinition of other variables and function references in the
+initialization files.
+
+* Menu:
+
+* The different pages::       The different categories of pages.
+* The page layout::           The elements of a page.
+* Navigation panel::          How to change the navigation panel.
+* Program variables::         The available main program variables and some
+                              usefull functions from the main program.
+* Output initialization::     Setting variables before the document
+                              production but after the texinfo parsing.
+* Output finalization::       Cleaning after document generation.
+* css::                       Customizing css lines.
+* Customizing header::
+* Customizing section::
+* Customizing footer::
+* Special pages::             Customizing table of contents, top, about page.
+* File names::                Customizing the file names.
+* External index files::      Putting index entries in external files.
+
+
+File: texi2html.info,  Node: The different pages,  Next: The page layout,  Up: Changing the page layout
+
+6.1 The different categories of pages and sectioning elements
+=============================================================
+
+The following sectioning elements can be associated with pages:
+
+_Normal elements_
+     These are normal sections or nodes. Their association with pages is
+     determined by the splitting of the document. *Note Splitting
+     output::.
+
+_Top element_
+     The top element is the higher element in the document structure.
+     If there is a `@top' section it is the element associated with
+     that section. Otherwise it is the element associated with the
+     `@node Top'. If there is no `@node Top' the first element is the
+     top element.
+
+     The top element is formatted differently than a normal element if
+     there is a `@top' section or the `@node Top' isn't associated with
+     a sectioning command.
+
+_Misc elements_
+     These elements are associated with pages if the document is split.
+     There are four misc elements:
+       1. Table of contents
+
+       2. Short table of contents, also called Overview
+
+       3. Footnotes page
+
+       4. About page
+
+     The _About page_ shouldn't be present for documents consisting in
+     only one sectioning element, or for documents unsplit and without
+     navigation information. The _Footnote page_ should only be present
+     if the footnotes appear on a separated page (*note Page layout
+     options::), however a footnote element is present if the document
+     isn't split. The _Table of contents_ should only be formatted if
+     `@contents' is present in the document.  Similarly the _Overview_
+     should only appear if `@shortcontents' or `@summarycontents' is
+     present. The Table of contents and the Overview may also be
+     directly included within the document, not as separate pages
+     (*note Contents and Overview text::).
+
 
-Indirect:
-texi2html.info-1: 2995
-texi2html.info-2: 51146
-texi2html.info-3: 101110
+File: texi2html.info,  Node: The page layout,  Next: Navigation panel,  Prev: The different pages,  Up: Changing the page layout
+
+6.2 Page layout and navigation panel overview
+=============================================
+
+A page is broken up in three parts. A page header, the sections and a
+page footer. A common element in the page layout is a navigation panel
+with icons or text linking to other sections or pages. Another common
+element is a rule, separating sections or footer. The navigation panel
+and the rules may be part of the sections or part of headers or
+footers. You may use the variables `$SMALL_RULE', `$DEFAULT_RULE', `$MIDDLE_RULE'
+and `$BIG_RULE' for rules of different sizes.  The defaults are
+     $SMALL_RULE = '<hr size="1">';
+     $DEFAULT_RULE = '<hr>';
+     $MIDDLE_RULE = '<hr size="2">';
+     $BIG_RULE = '<hr size="6">';
+
+   In the header some important meta data may be defined, like the
+title or style information, and textual informations may be present in
+comments. All this doesn't appear directly in the displayed HTML,
+though.
+
+   The page layout is mainly controlled by functions, the precise
+functions called depending on the document splitting. The navigation
+panel, however, can be customized with variables.
+
+Element labels
+--------------
+
+There are 19 items associated with elements. Each of these is
+associated with a name and a reference to the element they represent,
+when such an element exists.  The element is either a global element or
+an element relative to the current element. The relative elements are
+found with respect with the document structure defined by the section
+structuring commands (`@chapter', `@unnumbered'...) or by the nodes (in
+that case the node directions are specified on node line or in menu
+organization).  These items are called "element labels". They may be
+associated with a button (*note Button specifications::), and used in
+the formatting functions (*note Program variables::).
+
+   Here is the list:
+
+_` '_
+     An empty button
+
+_Top_
+     Top element. The associated name is `$TOP_HEADING' if that
+     variable is defined. This variable is not set by default.
+
+_Contents_
+     Table of contents
+
+_About_
+     About (help) page
+
+_Overview_
+     Overview, short table of contents
+
+_First_
+     First element in reading order
+
+_Last_
+     Last element in reading order
+
+_Index_
+     The first chapter with `@printindex'. The associated name is  `$INDEX_CHAPTER',
+     if the variable is set. This variable is not set by default.
+
+_This_
+     The current element
+
+_Back_
+     Preceding element in reading order
+
+_FastBack_
+     Beginning of this chapter or previous chapter if the element is a
+     chapter
+
+_Prev_
+     Previous section on the same level
+
+_NodePrev_
+     Previous node
+
+_Forward_
+     Next element in reading order
+
+_FastForward_
+     Next chapter
+
+_Next_
+     Next section on the same level
+
+_NodeNext_
+     Next node
+
+_Following_
+     Next node in node reading order
+
+_Up_
+     Up section
+
+_NodeUp_
+     Up node
+
+
+File: texi2html.info,  Node: Navigation panel,  Next: Program variables,  Prev: The page layout,  Up: Changing the page layout
+
+6.3 Customization of the navigation panels buttons
+==================================================
+
+A lot of customization of the navigation panel may be achieved without
+redefining functions, with variables redefinition.  In case it isn't
+enough, it is also possible to redefine the function doing the
+navigation panel formatting.
+
+* Menu:
+
+* General purpose variables::      Variables controlling the navigation panel
+                                   at a global level
+* Button specifications::
+* Panel formatting function::
+
+
+File: texi2html.info,  Node: General purpose variables,  Next: Button specifications,  Up: Navigation panel
+
+6.3.1 Controlling the navigation panel panel at a high level
+------------------------------------------------------------
+
+The global formatting of the navigation panels may be changed with the
+following variables:
+
+`$VERTICAL_HEAD_NAVIGATION'
+     A vertical navigation panel will be used for the header navigation
+     panel if this variable is true.
+
+`$ICONS'
+     Icons are used instead of textual buttons if this variable is true.
+
+`$SECTION_NAVIGATION'
+     If this variable is false there is no section navigation, no
+     navigation panels for the elements within the pages, only at the
+     beginning and the end of the page (*note Page layout options::).
+
+
+File: texi2html.info,  Node: Button specifications,  Next: Panel formatting function,  Prev: General purpose variables,  Up: Navigation panel
+
+6.3.2 Specifying the buttons formatting
+---------------------------------------
+
+Several arrays and hashes enable a precise control on the buttons and
+their display.  The following arrays determine the buttons present in
+navigation panels:
+
+`@SECTION_BUTTONS'
+     This array is used for the navigation panel buttons present at the
+     begining of sectioning elements. If split at node or section they
+     are also used at the page footer, and in the case of section
+     navigation at the page header.
+
+`@SECTION_FOOTER_BUTTONS'
+`@NODE_FOOTER_BUTTONS'
+     This array is used for the navigation panel buttons present at the
+     footer of pages when split at node or at section.
+
+     If `$WORDS_IN_PAGE' is set and the output is split at nodes, these
+     buttons are only present if there are more than `$WORDS_IN_PAGE'
+     words in the sectioning element text. This counting is very rough
+     and include punctuation marks, html elements, numbers.  The
+     default is to include the buttons after 300 words.
+
+`@CHAPTER_BUTTONS'
+     This array is used for the buttons appearing at the page footer if
+     split at chapter, and at the page header if split at chapter and
+     there is no section navigation.
+
+`@MISC_BUTTONS'
+     These buttons appear at the beginning of special and sections and
+     at the end of these section pages if the output is split.
+
+   The array specify the buttons displayed in navigation panels, and
+how the button is displayed.  Each element is associated with a button
+of the navigation panel from left to right.  The signification of the
+array element value is the following:
+
+_reference on a function_
+     The function is called with first argument a filehandle reference
+     on the current file and second argument a boolean true if the
+     navigation panel should be vertical.
+
+_reference on a scalar_
+     The scalar value is printed. For some possibly usefull scalars,
+     *Note Elements hashes::.
+
+_reference on an array_
+     In this case the first array element should be a reference on text
+     and the second element an element label. In that case a link to the
+     element associated with the element label with the scalar value
+     text is generated.
+
+     For example if the buttons array element is
+          [ 'Next', \$Texi2HTML::NODE{Next} ]
+
+     The button will be a link to the next section with text `$Texi2HTML::NODE{Next}'.
+
+_element label_
+     If icons are not used, the button is a link to the corresponding
+     element which text is defined by the value associated with the
+     element label in the `%NAVIGATION_TEXT' hash, surrounded by `['
+     and `]'. If the element label is ` ', there is no `[' and `]'.
+     The element of the `%NAVIGATION_TEXT' hash are defined
+     dynamically, in the `init_out' function reference (*note Output
+     initialization::).
+
+     If icons are used, the button is an image with file determined by
+     the value associated with the element label in the `%ACTIVE_ICONS'
+     hash if the the link really leads to an element, or in the `%PASSIVE_ICONS'
+     hash if there is no element to link to. Of course if there is a
+     link to the element the icon links to that element. The button
+     name and the button description are used in HTML attributes to
+     have a textual description of the icon. The corresponding strings
+     are in `%BUTTONS_NAME'  for the button name and  `%NAVIGATION_TEXT'
+     for the description.
+
+
+File: texi2html.info,  Node: Panel formatting function,  Prev: Button specifications,  Up: Navigation panel
+
+6.3.3 Changing the navigation panel formatting
+----------------------------------------------
+
+If you are not satisfied with this scheme, it is possible to control
+exactly the formatting of navigation panels by redefining a function
+reference. The function controlling the display of navigation panel is
+associated with the following function reference:
+
+ -- Function Reference: print_navigation $filehandle \@buttons $vertical
+     $FILEHANDLE is the opened filehandle the function should write to.
+     \@BUTTONS is an array reference which should hold the
+     specification of the buttons for that navigation panel. $VERTICAL
+     is true if the navigation panel should be vertical.
+
+
+File: texi2html.info,  Node: Program variables,  Next: Output initialization,  Prev: Navigation panel,  Up: Changing the page layout
+
+6.4 Main program variables and usefull functions
+================================================
+
+In the functions controlling the page layout some global variables set
+by the main program are available, with value corresponding with the
+current layout element.
+
+* Menu:
+
+* Elements hashes::             Accessing information related with the
+                                different elements
+* Global informations::         Accessing global informations, like date,
+                                title...
+* Global functions::            main program usefull functions
+
+
+File: texi2html.info,  Node: Elements hashes,  Next: Global informations,  Up: Program variables
+
+6.4.1 Accessing elements informations
+-------------------------------------
+
+Four hashes are available, with key the elements labels (as described
+in *Note Element labels::) and values:
+
+`%Texi2HTML::NAME'
+     The formatted element name
+
+`%Texi2HTML::HREF'
+     The element hypertext reference
+
+`%Texi2HTML::NODE'
+     The element node name
+
+`%Texi2HTML::NO_TEXI'
+     The element name after removal of texi commands
+
+
+File: texi2html.info,  Node: Global informations,  Next: Global functions,  Prev: Elements hashes,  Up: Program variables
+
+6.4.2 Accessing global informations
+-----------------------------------
+
+Three kinds of global informations are available, miscalleneous global
+strings, flags set by `@set' and special flags and section lines.
+
+Global strings
+..............
+
+The `%Texi2HTML::THISDOC' hash holds some global informations:
+
+`fulltitle'
+     title set by `@title'. If there is no `@title' other possibilities
+     are tried (`@settitle', `@shorttitlepage'...).
+
+`title'
+     title set by `@settitle', or `fulltitle'.
+
+`title_no_texi'
+     title without texi formatting
+
+`title_texi'
+     title with texi commands
+
+`author'
+     Authors list set by `@author'.
+
+`authors'
+     A reference on an array containing each author set by `@author'.
+
+`copying'
+     Text appearing in `@copying' with all the texinfo commands removed,
+     put in comments.
+
+`program'
+     The name and version of `texi2html'.
+
+`program_homepage'
+     Homepage for `texi2html'.
+
+`program_authors'
+     Authors of `texi2html'.
+
+`file_base_name'
+     base name of the texinfo manual file.
+
+`filename'
+     This is a reference on a hash that holds the filenames for special
+     elements.  These files may not be used in certain cases, for
+     example the `toc' element file name may not be relevant if table
+     of contents is not output separately.  The keys are
+    `doc'
+          the document file if not split, if split should be the top
+          element file.
+
+    `top'
+          Top element file name.
+
+    `toc'
+          Table of contents element file name.
+
+    `stoc'
+          Overview (also called short table of contents) element file
+          name.
+
+    `about'
+          About element file name.
+
+    `foot'
+          Footnotes element file name.
+
+`destination_directory'
+     Destination directory for the resulting files.
+
+`extension'
+     Extension for the output files.
+
+`toc_file'
+     The file name of the table of contents, should always be valid,
+     even when table of contents are output directly in the document.
+
+`inline_contents'
+     A reference on a hash containing two key, one for each type of
+     table of contents:
+    `contents'
+          The associated value is a reference on an array containg the
+          line resulting from formatting the table of contents,
+          including a heading and a reference.
+
+    `shortcontents'
+          The associated value is a reference on an array containg the
+          line resulting from formatting the short table of contents,
+          including a heading and a reference.
+
+`today'
+     The date. May be overriden by `$DATE'.
+
+`user'
+     The user running `texi2html'. Maybe overriden by `$USER'.
+
+`css_import_lines'
+     reference on an array containing the `@import' lines of CSS files.
+
+`css_lines'
+     reference on an array containing the normal lines of CSS files.
+
+   It also holds the arg of the following commands, associated with the
+command name: kbdinputstyle, paragraphindent, setchapternewpage,
+headings, footnotestyle,  exampleindent, firstparagraphindent,
+everyheading, everyfooting,  evenheading, evenfooting, oddheading,
+oddfooting, setcontentsaftertitlepage, setshortcontentsaftertitlepage,
+frenchspacing.  If the command doesn't have any arg, it will be true is
+it was set.
+
+Flags
+.....
+
+Flags defined by `@set' may be accessed through the `%main::value'
+hash. The key is the flag name, the value is the flag value at the end
+of the document.
+
+   Special flags are set by the main program. They correspond with a
+texinfo command, like `@setfilename', or `@settitle', `@author'... The
+corresponding flag is the command name with `_' appended, for example,
+`_titlefont' corresponds with `@titlefont'. Like other flags they are
+available in `%main::value'.
+
+Section lines
+.............
+
+The following array references or arrays holds formatted lines:
+
+`$Texi2HTML::THIS_SECTION'
+     Lines of the current element.
+
+`$Texi2HTML::THIS_HEADER'
+     Lines of the current element appearing before the element label
+     (anchors).
+
+`$Texi2HTML::OVERVIEW'
+     Lines of short table of contents. *Note Special pages::.
+
+`$Texi2HTML::TOC_LINES'
+     Lines of table of contents. *Note Special pages::.
+
+`$Texi2HTML::TITLEPAGE'
+     The title page formatted with special title commands (`@author',
+     `@title') expanded. *Note Title page::.
+
+
+File: texi2html.info,  Node: Global functions,  Prev: Global informations,  Up: Program variables
+
+6.4.3 Function usefull in page formatting
+-----------------------------------------
+
+The usefull function is a function used to print an array of lines,
+which also counts the number of words in the array, if needed.
+
+ -- Function: $words_number main::print_lines $filehandle \@lines_array
+     $FILEHANDLE is the opened filehandle the function should write to.
+     \@LINES_ARRAY is the array line the function should write to the
+     file.  If this argument is omitted, the function uses `$Texi2HTML::THIS_SECTION'.
+     $WORDS_NUMBER is the number of words in the array, only defined if
+     split at nodes and `$WORDS_IN_PAGE' is defined.
+
+
+File: texi2html.info,  Node: Output initialization,  Next: Output finalization,  Prev: Program variables,  Up: Changing the page layout
+
+6.5 Preparing the output
+========================
+
+After the texinfo file has been parsed, some information is available
+which can be used to modify some variables and prepare the outputting.
+For example the document language, the document encoding, values set
+with `@set' or `@setfilename' and other similar @-commands are not
+known before the texinfo parsing.
+
+   The following function reference may be redefined to be called after
+texinfo processing and before document generation:
+
+ -- Function Reference: init_out
+     This function perform the initialization of variables and any other
+     task before document outputting.
+
+   In the default case the `$BODYTEXT' (*note Customizing header::) and
+the hashes `%NAVIGATION_TEXT', `%BUTTONS_NAME'  (*note Button
+specifications::), `%BUTTONS_GOTO' (*note About text::) are initialized.
+Indeed the initialization of these variables is dependent upon the
+document language selection. Similarly the encoding variables are set
+based on the information now available (*note Encodings::).
+
+   To perform the default initializations and also add more code, you
+could do as in the following example (save the default function
+reference and call it in your own function) :
+
+     my $default_init_out = $init_out;
+     $init_out = \&makeinfo_like_init_out;
+     sub makeinfo_like_init_out()
+     {
+        &$default_init_out();
+        $NAVIGATION_TEXT{'Following'} = ' &gt; ';
+     }
+
+
+File: texi2html.info,  Node: Output finalization,  Next: css,  Prev: Output initialization,  Up: Changing the page layout
+
+6.6 Finalizing the output
+=========================
+
+If you want to do some cleaning after the document was generated (close
+files, write at the end of files and so on), the following function
+reference may be redefined:
+
+ -- Function Reference: finish_out
+     This function is called after the document generation.
+
+   The default is to do nothing.
+
+
+File: texi2html.info,  Node: css,  Next: Customizing header,  Prev: Output finalization,  Up: Changing the page layout
+
+6.7 Customizing the `texi2html' css lines
+=========================================
+
+It is possible to modify the `texi2html' css lines by modifying the
+entries or adding to the `%css_map' hash. Each key is a css selector,
+the corresponding value is a style string.
+
+   The whole css text is in the variable `$CSS_LINES'. If this variable
+is defined the variable value is used instead of being constructed
+using the `%css_map' entries. For example if you don't want any css
+entries, set
+
+     $CSS_LINES = '';
+
+   Another possiblility is to modify the array corresponding with the
+array reference `$Texi2HTML::THISDOC{'css_import_lines'}' that contains
+the `@import' lines of CSS files, and similarly it is possible to
+modify the array corresponding with the array reference
+`$Texi2HTML::THISDOC{'css_lines'}'  that contains the normal CSS files
+lines (for details on what corresponds with those different lines, see
+*Note HTML CSS: (texinfo)HTML CSS.).  The right place to modify these
+arrays is in a function appearing in the `@command_handler_process'
+array (*note Bypassing normal formatting::). Later, the CSS lines are
+allready expanded, by the function reference below.
+
+   It is also possible to change completely the way `$CSS_LINES' are
+generated by redefining the following function reference:
+
+ -- Function Reference: css_lines \@import_lines \@rule_lines
+     This function should be used to construct the `$CSS_LINES'.
+     \@IMPORT_LINES are the `@import' lines of the files specified with `--include-css',
+     and \@RULE_LINES are the css commands lines of these files.  *Note
+     Style options::.
+
+
+File: texi2html.info,  Node: Customizing header,  Next: Customizing section,  Prev: css,  Up: Changing the page layout
+
+6.8 Customizing the page header
+===============================
+
+It is possible to add lines to the text within the `<head>' HTML
+elements, by defining the variable `$EXTRA_HEAD'.  Similarly it is
+possible to add text just after the `<body>' element with the variable `$AFTER_BODY_OPEN'.
+These variables are empty by default.
+
+   The HTML encoding of the resulting document is defined by `$ENCODING_NAME'.
+If the variable isn't defined, the `@documentencoding' value is used,
+or the `$OUT_ENCODING' value, if set. `$ENCODING_NAME' may influence
+the value of `$OUT_ENCODING', which corresponds with the encoding used
+when writing to the resulting files.  *Note Encodings::.
+
+   The description of the document may be specified in `$DOCUMENT_DESCRIPTION'.
+If this variable is undef, the text associated with
+`@documentdescription' is used, and if there isn't such test a default
+description is constructed using the document title and the name of the
+first section of the file.
+
+   The `<body>' element attributes may be set by defining the variable `$BODYTEXT'.
+If you want to define that variable dynamically, you should use the
+`init_out' function reference (*note Output initialization::).
+
+   The default functions call the function associated with `$print_head_navigation'
+to format the navigation panel for the page header. Thus you can
+control parts of the formatting by redefining the function reference.
+
+ -- Function Reference: print_head_navigation $filehandle \@buttons
+     $FILEHANDLE is the opened filehandle the function should write to.
+     \@BUTTONS is an array reference which should hold the
+     specification of the buttons for the navigation panel.
+
+   If you want even more control, you can have full control over the
+page header formatting by redefining three function references. The
+function associated with `$print_page_head' is called for all the
+pages, and after that, the function associated with `$print_chapter_header'
+is called if the document is split at chapters, or the function
+associated with `$print_section_header' is called if the document is
+split at sections.
+
+ -- Function Reference: print_page_head $filehandle
+     $FILEHANDLE is the opened filehandle the function should write to.
+     This function should print the page head, including the `<body>'
+     element.
+
+ -- Function Reference: print_chapter_header $filehandle
+     $FILEHANDLE is the opened filehandle the function should write to.
+     This function is called if the document is split at chapters, after
+     `print_page_head'.
+
+ -- Function Reference: print_section_header $filehandle
+     $FILEHANDLE is the opened filehandle the function should write to.
+     This function is called if the document is split at sections, after
+     `print_page_head'.
+
+
+File: texi2html.info,  Node: Customizing section,  Next: Customizing footer,  Prev: Customizing header,  Up: Changing the page layout
+
+6.9 Customizing the sections
+============================
+
+The functions associated with the following function references are
+used for the formatting of sections:
+
+ -- Function Reference: print_section $filehandle $first_in_page
+          $previous_is_top
+     $FILEHANDLE is the opened filehandle the function should write to.
+     $FIRST_IN_PAGE is true if this section is the first section in the
+     page.  $PREVIOUS_IS_TOP is true if this section is the section
+     following the Top section.  This function should print the current
+     section.
+
+ -- Function Reference: end_section $filehandle
+          $last_element_or_before_top
+     $FILEHANDLE is the opened filehandle the function should write to.
+     $LAST_ELEMENT_OR_BEFORE_TOP is true if this section precedes the
+     top element or is the last one in page, or before the special
+     elements.
+
+
+File: texi2html.info,  Node: Customizing footer,  Next: Special pages,  Prev: Customizing section,  Up: Changing the page layout
+
+6.10 Customizing the page footer
+================================
+
+It is possible to add text just before the `</body>' element with the
+variable `$PRE_BODY_CLOSE'. Nothing is added by default.
+
+   A user name and  a date are collected to be output in the footer.
+You can change them by defining `$USER' and `$DATE' in the
+initialization file.
+
+   The default functions call the function associated with `$print_foot_navigation'
+to format the navigation panel for the page footer. Thus you can
+control parts of the formatting by redefining the function reference.
+
+ -- Function Reference: print_foot_navigation $filehandle \@buttons
+     $FILEHANDLE is the opened filehandle the function should write to.
+     \@BUTTONS is an array reference which should hold the
+     specification of the buttons for the navigation panel.
+
+   If you want even more control, you can have full control the page
+footer formatting by redefining three function references.  The
+function associated with `$print_chapter_footer' is called if the
+document is split at chapters, or the function associated with `$print_section_footer'
+is called if the document is split at sections.   After that the
+function associated with `$print_page_foot' is called.
+
+ -- Function Reference: print_page_foot $filehandle
+     $FILEHANDLE is the opened filehandle the function should write to.
+     This function should print the page foot, including the `</body>'
+     element.
+
+ -- Function Reference: print_chapter_footer $filehandle
+     $FILEHANDLE is the opened filehandle the function should write to.
+     This function is called if the document is split at chapters,
+     before `print_page_foot'.
+
+ -- Function Reference: print_section_footer $filehandle
+     $FILEHANDLE is the opened filehandle the function should write to.
+     This function is called if the document is split at sections,
+     before `print_page_foot'.
+
+
+File: texi2html.info,  Node: Special pages,  Next: File names,  Prev: Customizing footer,  Up: Changing the page layout
+
+6.11 Special pages formatting
+=============================
+
+For the special elements, two things must be formatted: the content and
+the page layout
+
+* Menu:
+
+* Special pages content::
+* Special pages layout::
+
+
+File: texi2html.info,  Node: Special pages content,  Next: Special pages layout,  Up: Special pages
+
+6.11.1 Customizing the content of the special pages
+---------------------------------------------------
+
+* Menu:
+
+* Top element text::
+* Contents and Overview text::
+* Footnotes text::
+* About text::
+* Title page::
+
+
+File: texi2html.info,  Node: Top element text,  Next: Contents and Overview text,  Up: Special pages content
+
+6.11.1.1 Top element text formatting
+....................................
+
+The top element formatting is controlled by three function which also
+controls the layout of the top element page or section. The associated
+function references are:
+
+ -- Function Reference: print_Top_header $filehandle $begin_page
+     $FILEHANDLE is the opened filehandle the function should write to.
+     $BEGIN_PAGE is true if the element is the first in a page.  This
+     function should begin the Top element. At the time this function
+     is called the top element text hasn't been parsed.
+
+ -- Function Reference: print_Top $filehandle $has_top_heading
+     $FILEHANDLE is the opened filehandle the function should write to.
+     $HAS_TOP_HEADING is true if there is a `@heading' command or
+     `@titlefont' command appearing in the Top element text.  This
+     function should be used to format the Top element text and
+     navigation panel.
+
+ -- Function Reference: print_Top_footer $filehandle $end_page
+     $FILEHANDLE is the opened filehandle the function should write to.
+     $END_PAGE is true if the element is the last in a page.  This
+     function should end the Top element.
+
+
+File: texi2html.info,  Node: Contents and Overview text,  Next: Footnotes text,  Prev: Top element text,  Up: Special pages content
+
+6.11.1.2 Table of contents and Short table of contents
+......................................................
+
+Two possibilities exist for the formatting of table of contents (and
+short table of contents). In the default case, the table of contents
+are in separate elements, at the end of the document if the document is
+unsplit or in separate files. This is consistent with `makeinfo' where
+menus are used for navigation. Another mode may be selected by setting `$INLINE_CONTENTS'.
+In that case the table of contents are not output as separate elements
+but are instead output where the corresponding @-command, for example
+`@contents', is set. This behaviour is more consistent with `texi2dvi'.
+If `@setcontentsaftertitlepage' appears in the document, and even if
+`$INLINE_CONTENTS' is set, the table of contents are merged in the
+title (which isn't output in the default case, see *Note Title page::).
+
+   Several variables may be used to control the formatting of table of
+contents and short table of contents:
+
+`$DO_CONTENTS'
+     If the variable is true a table of contents is done even if there
+     is no `@contents' command.
+
+`$DO_SCONTENTS'
+     If the variable is true a short table of contents is done even if
+     there is no `@summarycontents' command.
+
+`$BEFORE_OVERVIEW'
+     The variable value is inserted before the short table of contents
+     text.
+
+`$AFTER_OVERVIEW'
+     The variable value is inserted after the short table of contents
+     text.
+
+`$BEFORE_TOC_LINES'
+     The variable value is inserted before the table of contents text.
+
+`$AFTER_TOC_LINES'
+     The variable value is inserted after the table of contents text.
+
+`$TOC_LIST_STYLE'
+     This should contain a css style used for the list style if the
+     tables of content are formatted with a list.
+
+`$TOC_LIST_ATTRIBUTE'
+     This should contain an attribute text used for the list element if
+     the tables of content are formatted with a list.
+
+   More control on the table of contents and short table of contents
+formatting may be achieved by redefining a function with the following
+associated function reference:
+
+ -- Function Reference: toc_body \@elements
+     \@ELEMENTS is an array reference contining informations about all
+     the elements of the document. Each of the entry of this array is
+     an hash reference which entries correspond with different
+     informations about the element. Interesting keys have the
+     following meaning:
+
+    `top'
+          true if the element is the top element,
+
+    `index_page'
+          true if the element is an index page added because of index
+          splitting,
+
+    `toc_level'
+          level of the element in the table of content. Highest level
+          is 1 for the top element and for chapters, appendix and so on,
+          2 for section, unnumberedsec and so on...
+
+    `tocid'
+          label used for reference linking to the element in table of
+          contents,
+
+    `file'
+          the file containing the element, usefull to do href to that
+          file in case the document is split,
+
+    `text'
+          text of the element, with section number,
+
+    `name'
+          text of the element, without section number.
+
+     This function doesn't return anything but should fill the array
+     corresponding with the `$Texi2HTML::TOC_LINES' and `$Texi2HTML::OVERVIEW'
+     references with the table of contents and short table of contents.
+
+
+   Another function reference is used to add a heading and a reference,
+to be used with `$INLINE_CONTENTS' or merged in the title. Its output
+is not used when the table of contents are separate elements.
+
+ -- Function Reference: \ @inline_contents_lines inline_contents
+          $filehandle $command $element
+     This function reference returns a reference on an array holding
+     the lines containing the contents, heading and reference.
+     $FILEHANDLE is a reference on the currently opened file if the
+     function is called because a `@contents' or `@shortcontents'
+     command was encountered, it is undef otherwise.  $COMMAND is
+     either `contents' or  `shortcontents'.  $ELEMENT is a hash
+     reference containing informations about the table of contents
+     context. Relevant keys are:
+    `id'
+          The identifier associated with the table of contents, used
+          for example to do references to the table of contents using
+          href in HTML.
+
+    `file'
+          The file name containing the table of contents.
+
+
+
+File: texi2html.info,  Node: Footnotes text,  Next: About text,  Prev: Contents and Overview text,  Up: Special pages content
+
+6.11.1.3 Formatting of footnotes text
+.....................................
+
+The footnotes text is allready formatting when `@footnote' commands are
+expanded. *Note Footnotes::.
+
+
+File: texi2html.info,  Node: About text,  Next: Title page,  Prev: Footnotes text,  Up: Special pages content
+
+6.11.1.4 Formatting of about text
+.................................
+
+The default about element contains an explaination of the buttons used
+in the document (`@SECTION_BUTTONS', *Note Button specifications::) and
+an example locating the buttons targets in an example.  The formatting
+of this text may be influenced by the following hashes and variables:
+
+`$PRE_ABOUT'
+`$AFTER_ABOUT'
+     This variable may be a scalar or a function reference.  If it is a
+     scalar, the value is used.  If this is a function reference it is
+     expanded and the returned text is used. The text is added before
+     or after the main about text.
+
+`%BUTTONS_GOTO'
+     The keys of this hash are element labels (*note Element labels::).
+     The value is the text associated with the element label in the
+     about text.  The element of the hash are defined dynamically, you
+     should in the `init_out' function reference (*note Output
+     initialization::).
+
+`%BUTTONS_EXAMPLE'
+     The keys of this hash are  element labels (*note Element
+     labels::). The value is the text associated with the element label
+     in the about example, typically a section number.
+
+
+   If this is not enough and you want to control exactly the formatting
+of the about text, you can redefine the function associated with the
+following function reference:
+
+ -- Function Reference: $about_text print_about
+     This function should return the about text.
+
+
+File: texi2html.info,  Node: Title page,  Prev: About text,  Up: Special pages content
+
+6.11.1.5 Formatting of title page
+.................................
+
+The title page is first formatted using the text appearing in the
+`@titlepage' section, and put in `$Texi2HTML::TITLEPAGE'.  The
+information appearing in `@title', `@subtitle' or `@author' is then
+added using the following function reference:
+
+ -- Function Reference: titlepage
+     This function should complete `$Texi2HTML::TITLEPAGE'.
+
+   In the default case, in this function the table of contents and short
+table of contents are also added if they are to be output and
+`@setcontentsaftertitlepage' or `@setshortcontentsaftertitlepage'
+appear in the document (*note Contents and Overview text::).
+
+   In the default case the resulting title page output is not used in
+the document, except if the top node is not associated with any content.
+
+
+File: texi2html.info,  Node: Special pages layout,  Prev: Special pages content,  Up: Special pages
+
+6.11.2 Customizing the layout of the special pages
+--------------------------------------------------
+
+The formatting of each of the special pages, or section in case the
+document is not split, is controlled by a function.  The associated
+function reference is called accordingly:
+
+`print_Top'
+
+`print_Top_header'
+
+`print_Top_footer'
+     Formatting of top element page or section. It is also used for the
+     formatting of the top element text (*note Top element text::).
+
+`print_Toc'
+     Formatting of table of contents page or section
+
+`print_Overview'
+     Formatting of short table of contents page or section
+
+`print_About'
+     Formatting of about (help) page or section
+
+`print_Footnotes'
+     Formatting of footnotes section or page in case footnotes are on a
+     separated page or the document isn't split.
+
+   In the default case, `$print_Top' calls `$print_Top_header' for the
+header and `$print_Top_footer' for the footer of top element.  All the
+other function call `$print_misc' which in turn calls `$print_misc_header'
+for the headers and  `$print_misc_footer' for the footers.
+
+
+File: texi2html.info,  Node: File names,  Next: External index files,  Prev: Special pages,  Up: Changing the page layout
+
+6.12 Customizing the file names
+===============================
+
+It is possible to specify the file names with more control than with the
+command line options (*note Output files::).  First the extension may
+be overrided by the variable `$EXTENSION' value.  Two function
+references enable further customization. One is usefull in case `$NODE_FILES'
+is true and it is used to customize the node file name.
+
+ -- Function Reference: $node_file node_file_name $node
+     $NODE is a hash reference with the following interesting keys
+     (there are much more keys):
+    `texi'
+          The texinfo node name.
+
+    `with_section'
+          True if associated with a section.
+     The result is the node file name $NODE_FILE.
+
+   The other is used to customize the file names associated with each
+element, and the name of the file associated with the special elements.
+
+ -- Function Reference: $file element_file_name $element $type
+          $docu_name
+     $ELEMENT is undefined for the special elements (about, overview,
+     table of contents, footnotes).  Otherwise it is a hash reference
+     with the following interesting keys (there are much more keys):
+    `texi'
+          The texinfo element name.
+
+    `number'
+          The number associated with a section.
+
+    `doc_nr'
+          A number incremented whenever a new file should begin, based
+          on how the document is split (*note Splitting output::).
+
+    `text'
+          The element text.
+
+    `name'
+          The element text without section number.
+     $TYPE is empty for normal elements.  For the top element it is
+     `top', for the table of contents it is `toc', for the overview it
+     is `stoc', for the footnotes it is `foot' and for about is `about'.
+     $DOCU_NAME is the basename of the texinfo manual.  The result is
+     the element or special element file name.
+
+
+File: texi2html.info,  Node: External index files,  Prev: File names,  Up: Changing the page layout
+
+6.13 Generation of external files for index entries
+===================================================
+
+Within the document, `@printindex' commands are expanded as explained
+in *Note Index list::. In case you want to do something special with
+index entries, outside of the document, you should first set the
+variable `$IDX_SUMMARY' true. After that some function reference will
+be called for each non empty index. For each index there are 3 function
+references, one called for initialization, one called for each index
+entry and the last one called for finalization.
+
+ -- Function Reference: index_summary_file_begin $index_name $is_printed
+     $INDEX_NAME is the two letters name for the index.  This function
+     is called for each index appearing in the document, before
+     `index_summary_file_entry'.  $IS_PRINTED is true if there is a
+     `@printindex' for that index.
+
+ -- Function Reference: index_summary_file_entry $index_name
+          $entry_text $entry_reference $formatted_entry $texi_entry
+          $entry_element_reference $entry_element_header $is_printed
+     This function is called for each entry of an index. INDEX_NAME is
+     the name of the index. $ENTRY_TEXT is the entry in plain text,
+     $FORMATTED_ENTRY is the index entry formatted, $TEXI_ENTRY is the
+     entry with texinfo commands. $ENTRY_REFERENCE is the reference
+     placed at the index entry place, in the form `file#id'.
+     $ENTRY_ELEMENT_HEADER is the formatted header of the element
+     containing the index entry. ENTRY_ELEMENT_HEADER is the reference
+     to the beginning of the element containing the index entry, in the
+     form `file#id'.  $IS_PRINTED is true if there is a `@printindex'
+     for that index.
+
+ -- Function Reference: index_summary_file_end $index_name $is_printed
+     $INDEX_NAME is the two letters name for the index. This function
+     is called for each index appearing in the document, after
+     `index_summary_file_entry'.  $IS_PRINTED is true if there is a
+     `@printindex' for that index.
+
+
+File: texi2html.info,  Node: Customizing HTML,  Next: Internationalization,  Prev: Changing the page layout,  Up: Top
+
+7 Customizing HTML and text style in init files
+***********************************************
+
+Some simple customization may be achieved with the redefinition of the
+variables associated with the command line options. For the description
+and an explanation of the meaning of these variables, *Note Style
+options::.
+
+   Other variables and hash entries can be modified in initialization
+file to achieve more customization.  Lastly, functions references
+corresponding with functions called from the main program and
+initialization files may be redefined.
+
+* Menu:
+
+* Three contexts::               there are three different contexts for command
+                                 expansion: normal text, preformatted text and
+                                 strings.
+* Commands without argument::
+* Style and accent commands::
+* Anchors images and spaces::    Formatting of `@anchor', `@image', `@sp', `@acronym', `@abbr'
+* Text::                         Some characters are processed specially
+* Strings::                      `texi2html' write some strings in the output
+                                 different for each languages
+* References::
+* Alignement commands::           `@center', `@flushleft'...
+* Paragraph and preformatted region::
+* Complex formats::              `@example', `@display'...
+* Lists tables::
+* Definitions::
+* Headings::
+* Special regions::              `@verbatim', `@cartouche', `@quotation'
+* Menus::
+* Indices::
+* Floats and lists of floats::   `@float' and `@listoffloats'
+* Footnotes::
+* Bypassing normal formatting::
+* Other and unknown commands::   You can handle specifically other commands
+
+
+File: texi2html.info,  Node: Three contexts,  Next: Commands without argument,  Up: Customizing HTML
+
+7.1 Three contexts for expansions: preformatted, normal and string
+==================================================================
+
+There are three contexts of interest, one is the normal context, the
+other is a special context, called the "preformatted" context and the
+last is the string context. The preformatted context occurs when the
+spacing between words is kept. This is the case, for example, in
+`@display' or `@example' regions, and in menu comments (*note Menus::).
+The preformatted regions are usually rendered in `<pre>' elements in
+HTML.  The string context occurs when rendering strings without
+formatting elements, in comments or titles for example.
+
+
+File: texi2html.info,  Node: Commands without argument,  Next: Style and accent commands,  Prev: Three contexts,  Up: Customizing HTML
+
+7.2 Customizing the formatting of commands without argument
+===========================================================
+
+This includes the commands whose name is a nonletter character like
+`@@', the commands with lettered characters and braces but whose braces
+should be empty, like `@TeX{}', or some commands associated with
+accentted letters like `@AA{}'. If there happens to be something within
+the braces, it is put after the command, thus
+     @TeX{something}
+   leads to the same than
+     @TeX{} something
+
+   Each of these categories of commands have three associated hashes,
+one for normal context, the other for preformatted context and the last
+in strings. The keys of the hashes are the command names, the
+associated value is the text replacing the command.
+
+   The hashes are:
+command type                normal text   preformatted text   string
+one nonlettered character   `%simple_map' `%simple_map_pre'   `%simple_map_texi'
+nothing in braces           `%things_map' `%pre_map'          `%texi_map'
+
+   To change the HTML resulting from these constructs, just change the
+value. For example, if you want `&shy;' to be outputted for `@-' in
+normal and preformatted context, write in your init file:
+
+     $simple_map{'-'} = '&shy;';
+     $simple_map_pre{'-'} = '&shy;';
+
+
+File: texi2html.info,  Node: Style and accent commands,  Next: Anchors images and spaces,  Prev: Commands without argument,  Up: Customizing HTML
+
+7.3 Customizing accent, style and other simple commands
+=======================================================
+
+The formatting of the HTML produced by style and indicatric commands
+(`@tt', `@code', `@email', `@titlefont'), the accentuation related
+commands taking argument (`@'', `@udotaccent', `@dotless') and
+miscalleneous commands (`@email', `@verb', `@w', `@uref', `@math',
+`@asis') is controlled by two hash in the default case, `%style_map'
+for normal context, `%style_map_pre' for preformatted context and `%style_map_texi'
+in string context.
+
+   The key of the hashes are the command names. There are two
+possibilities for the values corresponding with two interfaces. The
+values may be strings or hash references, and you can chose the
+interface depending on the one you prefer. The interface with hash
+reference is a bit more flexible but might also be regarded as more
+complex. If you don't like either of these interfaces you can define
+your own.
+
+   Some remarks are in order:
+
+   * The nonlettered accent commands which following character is
+     considered to be the argument (like in `@`a') should be keys of the
+     hash `%accent_map' hash, even if no value is associated.
+
+   * `@math' is handled differently if LaTeX2HTML is used.
+
+* Menu:
+
+* Hash reference interface::
+* String interface::
+* Define your own interface::
+
+
+File: texi2html.info,  Node: Hash reference interface,  Next: String interface,  Up: Style and accent commands
+
+7.3.1 An interface for commands formatting with a hash reference
+----------------------------------------------------------------
+
+The key of the hashes are the command names. The value determine how
+the command argument is formatted. This value is a reference on a hash.
+In this hash each key corresponds with a type of information for the
+formatting, and the value is the corresponding information. For
+example, in
+
+     $style_map{'command'} = { 'args' => ['code'], 'attribute' => 'code'};
+
+   the arguments for `@command' are interpreted as specified by the
+values associated with the `args' key while the attribute associated
+with that command is `code'.
+
+   The following keys in the hashes associated with each command have
+the following meaning:
+
+`args'
+     The value associated is a reference on an array. Each element of
+     the array defines how the arguments (separated by `,' in the
+     texinfo code) for the @-command should be formatted. The
+     possibilities are
+    `normal'
+          for normal text,
+
+    `code'
+          for text with `---', `--', `''' and  ```' kept as is,
+
+    `keep'
+          if the texinfo should be kept as is, without interpretation
+          of the @-commands.
+
+     For example, we have
+          $style_map{'email'}->{'args'} = ['code', 'normal'];
+
+     because `---', `--', `''' and  ```' should be kept as is in the
+     first argument of `@email'.
+
+     The default is `['normal']'.
+
+`attribute'
+     If the associated value is a word, it is considered to be an HTML
+     element name, and the argument is enclosed between the element
+     opening and the element closing. For example, if the value is
+     `elem', the resulting HTML is `<elem>ARG</elem>'.
+
+     If the text is a word followed by some text, the word and is
+     interpreted as above, and the text is considered to be the
+     attributes text of the element.  Thus `elem class="elem"' leads to
+     `<elem class="elem">ARG</elem>'.
+
+     This works only if there is only one argument.
+
+`begin'
+     The associated value is added in front of the text.
+
+`begin'
+     The associated value is added after the text.
+
+`quotes'
+     If the corresponding value is true, the result is enclosed in
+     quotes `$OPEN_QUOTE_SYMBOL' and `$CLOSE_QUOTE_SYMBOL', with
+     defaults ``' and `''.
+
+`function'
+     The corresponding value should be a function reference. The
+     corresponding function is called with the following arguments:
+
+    `$command'
+          The @-command name
+
+    `$args'
+          A reference on an array containing the arguments of the
+          @-command.
+
+    `$command_stack'
+          A reference on an array containing the name of the @-commands
+          containing the @-command being formatted, latest on top.
+
+    `$state'
+          A reference on a hash containing a lot of informations about
+          the context of the @-command.
+
+    `$line_nr'
+          An opaque structure containing the information about the line
+          number of the @-command. It can be used to call
+          `main::echo_error' or `main::echo_warning' with first
+          argument a message, and second argument `$line_nr'.
+
+
+File: texi2html.info,  Node: String interface,  Next: Define your own interface,  Prev: Hash reference interface,  Up: Style and accent commands
+
+7.3.2 An interface for commands formatting with a string
+--------------------------------------------------------
+
+The keys of the hashes are the command names. The value determine how
+the command argument is formatted. If the value begins with `"', the
+result is enclosed in quotes `$OPEN_QUOTE_SYMBOL' and `$CLOSE_QUOTE_SYMBOL',
+with defaults ``' and `''.
+
+   The command argument is allready formatted as HTML.  The remaining
+of the value text (or the value text if there were no `"') is
+interpreted as follow:
+
+   * If the text is empty the argument of the command is left as is.
+
+   * If the text is a `&' followed by a name, like `&function', the
+     name is considered to be a function name, and this function is
+     called to format the argument of the command. The first argument
+     of the function is the command name, the second is the command
+     argument. For example, if the value associated with the
+     (fictituous) command `@foo' is `&my_func' and we have:
+
+          sub my_func
+          {
+              my @args = split /,\s*/ $_[1];
+              return "$_[0]: $args[0]" if ($args[1] = 1);
+              return "$args[0]";
+          }
+
+     The result of
+          @foo{truc, 1}
+          @foo{truc, bidule}
+     will be
+          foo: truc
+          truc
+
+   * If the text is a word, it is considered to be an HTML element
+     name, and the argument is enclosed between the element opening and
+     the element closing. For example, if the value is `elem', the
+     resulting HTML is `<elem>ARG</elem>'.  Similarly `"quoted' leads to
+     ``<quoted>ARG</quoted>''.
+
+   * If the text is a word followed by some text, the word and is
+     interpreted as above, and the text is considered to be the
+     attributes text of the element.  Thus `elem class="elem"' leads to
+     `<elem class="elem">ARG</elem>'.
+
+
+File: texi2html.info,  Node: Define your own interface,  Prev: String interface,  Up: Style and accent commands
+
+7.3.3 Defining the style and indicatric commands interface
+----------------------------------------------------------
+
+If you don't like this scheme, it is possible to change how those
+commands are processed by redefining the following function reference:
+
+ -- Function Reference: $resulting_text style $style $command $text
+          $args $no_close $no_open $line_nr $state $command_stack
+     $COMMAND is the @-command, $STYLE is the value associated with the
+     $COMMAND in the `%style_map', `%style_map_pre' or
+     `%style_map_texi' hashes.  The $TEXT is the text appearing within
+     the @-command braces.  ARGS is a reference on an array contening
+     the command arguments formatted according to the same conventions
+     than with the reference hash style (provided the value associated
+     with the @-command is a hash reference with a $ARG key as
+     described in *Note Reference hash args::).  If $TEXT is split in
+     paragraphs each paragraph is passed through the function, and
+     $NO_CLOSE is true if it is not the last paragraph, while $NO_OPEN
+     is true if it is not the first paragraph.  $LINE_NR is an opaque
+     structure containing the information about the line number of the
+     @-command. It can be used to call `main::echo_error' or
+     `main::echo_warning' with first argument a message, and second
+     argument `$line_nr'.  $STATE is a reference on a hash containing a
+     lot of informations about the context of the @-command.
+     $COMMAND_STACK is a reference on an array containing the name of
+     the @-commands containing the @-command being formatted.
+
+
+
+File: texi2html.info,  Node: Anchors images and spaces,  Next: Text,  Prev: Style and accent commands,  Up: Customizing HTML
+
+7.4 Formatting of special simple commands
+=========================================
+
+The formatting of special simple commands is controlled by functions. To
+customize the output, the corresponding function references should be
+redefined. All these functions return a formatted text.
+
+   The formatting of anchors is controlled by `$anchor', but the
+function associated with the function reference does more, it is usefull
+to produce a reference target or link.
+
+ -- Function Reference: $anchor anchor $identifier $href $text
+          $attributes
+     If $IDENTIFIER is not empty, this value should be used to create a
+     target for links (typically associated with a name or id attribute
+     in HTML).  The $HREF argument specifies a hpertextual reference
+     which should be used to link to a target.  In case both
+     $IDENTIFIER and  $HREF are given the text produced should be both
+     a target for $IDENTIFIER and a link to $HREF.  $TEXT is the text
+     to be displayed.  $ATTRIBUTES are additional attributes.  It
+     should be reasonable to assume that the attributes are for a `<a>'
+     HTML element.
+
+   To customize the images produced by `@image', the first possibility
+is to modify the `@IMAGE_EXTENSIONS', which holds a list of filename
+extensions for image files. It is also possible to redefine the
+function used to determine the filename of the image:
+
+ -- Function Reference: $filename image_files $basename $extension
+     $BASENAME is the first `@image' argument, $EXTENSION is the
+     corresponding `@image' argument. This function reference should
+     return an array of image filenames without path that the main
+     program should look for.
+
+   Last, it is possible to control the formatting of `@image' by
+redefining:
+
+ -- Function Reference: $image image $file_path $basename $preformatted
+          $file_name $alt_text $width $height $raw_alt $extension
+          $working_dir $file_path
+     $FILE_PATH is the image file name with the path, $BASENAME the
+     file name without extension. $PREFORMATTED is true if the image
+     appears in preformatted text. $FILE_NAME is the file name without
+     path but with extension. $ALT_TEXT is the alternate text, it may be
+     undefined. $WIDTH and $HEIGHT are the corresponding arguments of
+     `@image', $RAW_ALT is the unmodified alt argument of `@image' and
+     $EXTENSION holds the corresponding `@image' argument.
+     $WORKING_DIR is the path to working dir relative to the output
+     directory. $FILE_PATH is the file name relative to the
+     $WORKING_DIR.
+
+   The formatting of `@sp' is controlled by:
+
+ -- Function Reference: $sp sp $number $preformatted
+     $NUMBER is the numeric argument of `@sp'.  $PREFORMATTED is true
+     if the `@sp' appears in preformatted text.
+
+   The formatting of `@acronym' and `@abbr' is controlled by:
+
+ -- Function Reference: $acronym acronym_like $acronym_texi
+          $acronym_text $with_explanation \@explanation_lines
+          $explanation_text $explanation_simply_formatted
+     $ACRONYM_TEXI is the acronym argument with texinfo @-commands,
+     $ACRONYM_TEXT is formatted.
+
+     The other arguments are related with the explanation, the second
+     arg of the acronym. $WITH_EXPLANATION is true if the second
+     argument of the acronym command is present. If an explanation
+     exists, coming from previous `@acronym' or as an arg of this
+     command, the other args are defined: \@EXPLANATION_LINES is a
+     reference on an array containing the simply fomatted explanation
+     lines, $EXPLANATION_TEXT is the explanation text formatted,
+     $EXPLANATION_SIMPLY_FORMATTED is the explanation with a light
+     formatting, unabling in HTML (or XML) the explanation to be in an
+     attribute.
+
+
+File: texi2html.info,  Node: Text,  Next: Strings,  Prev: Anchors images and spaces,  Up: Customizing HTML
+
+7.5 Processing special characters in text
+=========================================
+
+Some characters are processed especially in text: `---', `--', ```' and
+`'''. This is done only if in normal text and not in some commands
+(`@code', `@env'...). A function reference is called to process the
+text and should take care of those constructs.  It may also be used to
+transform the text, for example set it in upper case if it is in `@sc'.
+This function should also take care of protecting special characters
+
+ -- Function Reference: $processed_text normal_text $text $in_raw_text
+          $in_preformatted $in_code $command_stack
+     The function processes $TEXT and returns $PROCESSED_TEXT.  The
+     other arguments give some information about the context of the
+     text.  $IN_RAW_TEXT is true if the text appears in special place
+     where there is no formatting, typically in comments.
+     $IN_PREFORMATTED is true if in a preformatted environemnt, and
+     $IN_CODE is true if in a special command like `@code', `@env' where
+     `---', `--', ```' and `''' should not be touched. $COMMAND_STACK
+     is an array containing the name of the formatting @-command that
+     enclose the text.
+
+     In the default case the `---', `--', ```' and `''' constructs are
+     expanded if needed and the text is upper-cased if in `@sc'.
+     Special characters (`&', `"', `<' and `>' in HTML) are protected
+     if needed.
+
+   Some characters are special, for example we have  `&', `"', `<' and
+`>' in HTML. In some cases some pieces of text don't go through the
+above function, but still needs to be protected to appear in text.
+This is done by the function associated with the function reference
+
+ -- Function Reference: $protected_text protect_text $text
+     The function processes the unprotected text $TEXT and returns the
+     resulting protected text $PROTECTED_TEXT.
+
+   Empty lines are processed by the following function reference, which
+could be usefull if empty lines are to be removed for example
+
+ -- Function Reference: $resulting_text empty_line $empty_line $state
+     This function processes an $EMPTY_LINE and returns the resulting
+     text $RESULTING_TEXT. $STATE is a structure that holds informations
+     about the state of the parsing.  Empty lines are left as is by
+     default except right after a definition @-command.
+
+
+File: texi2html.info,  Node: Strings,  Next: References,  Prev: Text,  Up: Customizing HTML
+
+7.6 Customizing strings written by `texi2html'
+==============================================
+
+`texi2html' writes some strings in the generated document at various
+places, at the page footers, on the help page, for special section
+headings, buttons alt text and so on. These strings are customizable.
+The string chosen depends on the language of the document (set by `--lang', `$LANG'
+or `@documentlanguage'). This is the basis for internationalization as
+it allows for strings translations.
+
+   The strings are found in a hash reference, `$LANGUAGES'.  Each key
+is a language code. The associated value is also a hash reference. The
+key is an english string and the associated value is the string
+replacing the english string, if present. For example, we have
+
+     $LANGUAGES->{'fr'} = {
+                   ' Up ' => 'Plus haut',
+     };
+
+   It means that whenever the string ` Up ' is to be written and the
+language is `fr', `Plus haut' is written. It is possible to customize
+the english strings by redefining the `en' language hash.
+
+   When a string contains a `%' followed by `{' NAME `}' it means that
+the string will be expanded by `texi2html'. For example, if we have
+
+     $LANGUAGES->{'fr'} = {
+                   'See %{node_file_href}' => 'Voir %{node_file_href}',
+     };
+
+   `%{node_file_href}' will be expanded to an href for a node in a file
+by `texi2html' in the string. A `%%' will be expanded as `%'.
+
+   For more on internationalization, see *Note Internationalization::.
+
+
+File: texi2html.info,  Node: References,  Next: Alignement commands,  Prev: Strings,  Up: Customizing HTML
+
+7.7 References
+==============
+
+* Menu:
+
+* Reference to external manual::
+* Internal reference::
+
+
+File: texi2html.info,  Node: Reference to external manual,  Next: Internal reference,  Up: References
+
+7.7.1 Reference to external manual
+----------------------------------
+
+The references are produced with two function references, one for the
+hypertextual reference construction, the other for the full reference to
+external manual.
+
+ -- Function Reference: $href external_href $node $node_identifier
+          $xml_node_identifier $manual_file_name
+     $NODE is the node name, with @-commands. $NODE_IDENTIFER is the
+     node name mapped to an identifier acceptable as a file name.
+     $XML_NODE_IDENTIFIER is the node name mapped to an identifier
+     acceptable as an XML identifier.  Those identifiers are built as
+     explained in *Note HTML Xref: (texinfo)HTML Xref, thus allowing
+     for cross references to external manuals. $FILE is the manual or
+     file name of the external reference. This function should return an
+     href leading to the external manual.
+
+     The default for this function is to make a reference compatible
+     with `makeinfo'  (*note HTML Xref: (texinfo)HTML Xref.).
+
+ -- Function Reference: $text external_ref $command $section $book
+          $node_and_file $href $cross_ref_name
+     This function formats a reference to an external texinfo manual.
+     The $COMMAND is the ref command (`ref', `xref' or `pxref', in
+     text, at sentence beginning or in parenthesis).  The optionnal
+     $SECTION argument is the section in the book and  BOOK is the book
+     title.  $NODE_AND_FILE is the node and file name formatted
+     according to the convention used in info: `(file)node'. $HREF it
+     an hypertextual reference to the distant manual constructed using
+     the above function.  $CROSS_REF_NAME is an optionnal cross
+     reference name appearing in the reference command. This function
+     returns the text corresponding with the external html manual
+     reference.  This function returns the full formatted text of the
+     external reference.
+
+
+File: texi2html.info,  Node: Internal reference,  Prev: Reference to external manual,  Up: References
+
+7.7.2 Reference to an internal node
+-----------------------------------
+
+A function reference is available for internal references.
+
+ -- Function Reference: $text internal_ref $command $href $short_name
+          $name $is_section
+     This function formats a reference to a node in the current manual.
+     The $COMMAND is the ref command (`ref', `xref' or `pxref', in
+     text, at sentence beginning or in parenthesis).  $HREF it an
+     hypertextual reference linking to the corresponding node or
+     section. $SHORT_NAME and $NAME hold the text for the reference but
+     $SHORT_NAME can be the node name which is assumed to be shorter
+     than the section name.  $IS_SECTION is a boolean true if the
+     reference is a reference to a section. This function returns the
+     full formatted text of the internal reference.
+
+
+File: texi2html.info,  Node: Alignement commands,  Next: Paragraph and preformatted region,  Prev: References,  Up: Customizing HTML
+
+7.8 Commands used for centering and flushing of text
+====================================================
+
+When a command controlling the alignement of text is used (`@center',
+`@flushleft' and `@flushright'), the main program takes care of opening
+and closing paragraphs. The alignement commands are the key of the `%paragraph_style'
+hash.  The value is used in the function doing the formatting of the
+paragraphs.  *Note Paragraph and preformatted region::.
+
+   A function references allows for a customization of the formatting
+of the text appearing in the command block.
+
+ -- Function Reference: $result paragraph_style_command $command $text
+     $COMMAND is the command name, $TEXT is the text appearing within
+     the command. This function returns a formatted text.  The default
+     is to return the text unmodified.
+
+
+File: texi2html.info,  Node: Paragraph and preformatted region,  Next: Complex formats,  Prev: Alignement commands,  Up: Customizing HTML
+
+7.9 Formatting (or not) a paragraph and a preformatted region
+=============================================================
+
+* Menu:
+
+* Paragraph and preformatted formatting::
+* Avoiding paragraphs::
+
+
+File: texi2html.info,  Node: Paragraph and preformatted formatting,  Next: Avoiding paragraphs,  Up: Paragraph and preformatted region
+
+7.9.1 Paragraph and preformatted region formatting
+--------------------------------------------------
+
+The formatting of a paragraph region or a preformatted region, is
+controlled by function references:
+
+ -- Function Reference: $paragraph_text paragraph $text $alignement
+          $index $formatting_command $formatting_command_formatted
+          \$paragraph_number $format $item_number $enumerate_style
+          $number $command_stack_at_end $command_stack_at_begin
+     This function formats a paragraph. $TEXT is the text of the
+     paragraph, $ALIGNEMENT is the empty string when no alignement
+     command has been seen, otherwise it is the current alignement
+     command name.  *Note Alignement commands::.  $INDENT holds
+     `noindent' or `indent' if the corresponding @-command appeared in
+     the paragraph.  $COMMAND_STACK_AT_END and $COMMAND_STACK_AT_BEGIN
+     are arrays containing the opened @-commands at end and at
+     beginning of the paragraph, latest on top.
+
+     The remaining arguments are usefull when the paragraph appears
+     within a list or table. It is usefull whenever the paragraph has
+     to be formatted differently when appearing in such environments.
+     Moreover in that case the format command (`@itemize'...)  may have
+     an associated formatting command.  $FORMATTING_COMMAND is this
+     formatting command (like `@minus').  $FORMATTING_COMMAND_FORMATTED
+     is the command formatted in html in case the formatting command is
+     a leading command (like `@minus') which should be leading the
+     first paragraph.  \$PARAGRAPH_NUMBER is a reference on the number
+     of paragraphs in that format command. The corresponding variable
+     should be increased when a paragraph is added. $FORMAT is the
+     format command.  *Note Table and list items::.
+
+     If the $FORMAT is an enumerate, $ITEM_NUMBER is the number of the
+     item in the list, $ENUMERATE_STYLE is the argument of the
+     enumerate, $NUMBER is the number or letter corresponding with this
+     item.
+
+ -- Function Reference: $preformatted_text preformatted $text $style
+          $region_name $formatting_command
+          $formatting_command_formatted \$preformatted_number $format
+          $item_number $enumerate_style $number $command_stack_at_end
+          $command_stack_at_begin
+     This function formats a preformatted region. $TEXT is the text of
+     the preformatted region, $STYLE is the css style associated with
+     that preformatted region (*note css::). $REGION_NAME is the name
+     of the command opening the preformatted region (`example'..., see
+     *Note Complex formats::) or a identifier for the preformatted
+     context (for example `menu-comment', see *Note Menus::).  The
+     alignment commands are not taken into account, as the spaces are
+     preserved in preformatted regions, you should flush and center by
+     hand.  $COMMAND_STACK_AT_END and $COMMAND_STACK_AT_BEGIN are arrays
+     containing the opened @-commands at end and at beginning of the
+     preformatted region, latest on top.
+
+     The remaining arguments are usefull when the preformatted region
+     appears within a list or table. It is usefull whenever the
+     preformatted region has to be formatted differently when appearing
+     in such environments.  Moreover in that case the format command
+     (`@itemize'...)  may have an associated formatting command.
+     $FORMATTING_COMMAND is this  formatting command (like `@minus').
+     $FORMATTING_COMMAND_FORMATTED is the command formatted in html in
+     case the formatting command is a leading command (like `@minus')
+     which should be leading the first preformatted region.
+     \$PREFORMATTED_NUMBER is a reference on the number of preformatted
+     regions in that format command. The corresponding variable should
+     be increased when a preformatted region is added. $FORMAT is the
+     format command.  *Note Table and list items::.
+
+     If the $FORMAT is an enumerate, $ITEM_NUMBER is the number of the
+     item in the list, $ENUMERATE_STYLE is the argument of the
+     enumerate, $NUMBER is the number or letter corresponding with this
+     item.
+
+
+File: texi2html.info,  Node: Avoiding paragraphs,  Prev: Paragraph and preformatted formatting,  Up: Paragraph and preformatted region
+
+7.9.2 Avoiding paragraphs in formats
+------------------------------------
+
+It is possible to avoid that a format closes the previous paragraph or
+preformatted region and reopens one, by putting the format command in a
+hash, `%format_in_paragraph' with a true value.
+
+
+File: texi2html.info,  Node: Complex formats,  Next: Lists tables,  Prev: Paragraph and preformatted region,  Up: Customizing HTML
+
+7.10 Formatting of complex formats (`@example', `@display'...)
+==============================================================
+
+Here we see how a whole complex format is formatted. For the formatting
+of the text, see *Note Paragraph and preformatted region::.
+
+   The formatting of the complex formats is ultimately controlled by a
+function, however the default for this function uses a hash reference
+and changing the hash reference values should be enough in most cases.
+This hash reference is called `$complex_format_map'. It has a key for
+each of the complex format commands (`example', `smallexample', `lisp',
+`smalllisp', `display', `smalldisplay', `format', `smallformat').
+
+   The associated value is also a reference on a hash. The keys are:
+
+`begin'
+     An eval of `begin' should lead to the beginning of the formatted
+     HTML.
+
+`end'
+     An eval of `end' should lead to the end of the formatted HTML.
+
+`class'
+     The HTML class. If not defined, the command name.
+
+`pre_style'
+     The preformatted style. If not defined the corresponding CSS style
+     is used.
+   The enclosed text will be formatted as described in *Note Paragraph
+and preformatted region::, and the name of the complex format will be
+available to the function formatting the text.
+
+   If you aren't satisfied with this scheme, you can redefine the
+following function reference for a better control over the complex
+format formatting:
+
+ -- Function Reference: $complex_format_text complex_format
+          $format_name $preformatted_text
+     $FORMAT_NAME is the complex format name, $PREFORMATTED_TEXT is the
+     text allready formatted as described in *Note Paragraph and
+     preformatted region::.  This function returns the whole complex
+     format.
+
+
+File: texi2html.info,  Node: Lists tables,  Next: Definitions,  Prev: Complex formats,  Up: Customizing HTML
+
+7.11 Customizing the formatting of lists and tables
+===================================================
+
+The formatting of lists and tables is done at two levels:
+   * At the level of the whole region (table or list),
+
+   * At the level of the individual items, rows or cells of the list or
+     table.
+
+* Menu:
+
+* Table and list items::
+* Whole table list::
+
+
+File: texi2html.info,  Node: Table and list items,  Next: Whole table list,  Up: Lists tables
+
+7.11.1 Formatting individual table and list items
+-------------------------------------------------
+
+In texinfo it is possible to give `@itemize' or table command (hereafter
+called a "format command") a "formatting command".  For example
+`@minus' is the formatting command here:
+     @table @minus
+
+   The default is to apply the command to the text item, however it is
+possible to avoid it.  The hash `%special_list_commands' has an entry
+for each of the format command. Each of these entries is a hash
+reference. If a formatting command is a key of the hash reference, then
+the formatting command is not applied to the text item for that format
+command. For example, if we have:
+
+     $special_list_commands{'itemize'} = { 'bullet' => '' };
+
+   and we have the following `@itemize':
+     @itemize @bullet
+     @item an item
+     @end itemize
+
+   then `@bullet' will not be applied to `an item'.
+
+_lists_
+     The items of lists are formatted using the following function
+     reference:
+
+      -- Function Reference: $list_item list_item $text $format
+               $command $formatted_command $item_number
+               $enumerate_style $number
+          This function formats the text between `@item' commands. $TEXT
+          is the text corresponding with the item. $FORMAT is the type
+          of format, `itemize' or `enumerate'. $COMMAND is the
+          formatting command given in argument to `@itemize',
+          $FORMATTED_COMMAND is this command formatted if it is a
+          leading command, like `@minus'.
+
+          If the $FORMAT is an enumerate, $ITEM_NUMBER is the number of
+          the item in the list, $ENUMERATE_STYLE is the argument of the
+          enumerate, $NUMBER is the number or letter corresponding with
+          this item.
+
+_two column tables_
+     The two columns tables (`@table', `@ftable' and `@vtable'), items
+     are formatted using two function references, one for the first
+     line located on the `@item' line corresponding with the first
+     column, the other for the text appearing on the following lines,
+     corresponding with the second column text.
+
+      -- Function Reference: $table_item table_item $item_text
+               $index_label_text $format $command $formatted_command
+               $command_stack
+          This function is used to format the text on the `@item' line.
+          $TEXT_ITEM is the text line. In case there is an index entry
+          associated with the `@item' (as with `@ftable' and
+          `@vtable'), $INDEX_LABEL_TEXT is the text inserted at the
+          place where an index entry appears. *Note Index entry place::.
+          $FORMAT is the type of format, `table', `ftable' or `vtable'.
+          $COMMAND is the formatting command given in argument to the
+          table format command, $FORMATTED_COMMAND is this command
+          formatted if it is a leading command, like `@minus'.
+          $COMMAND_STACK is an array with all the @-commands opened,
+          latest on top.
+
+      -- Function Reference: $table_line table_line $text
+          This function is used to format the text on the lines
+          following the `@item' line. $TEXT is the corresponding text.
+
+_multitable_
+     The multitable elements formatting is controlled by the functions
+     associated with two function references. One for a cell, and the
+     other for a row.
+
+      -- Function Reference: $multitable_cell cell $text
+          This function is used to format the text of a multitable
+          cell, the text following a `@item' or a `@tab'.  $TEXT is the
+          corresponding text.
+
+      -- Function Reference: $multitable_row row $text $item_command
+          This function is used to format a multitable row. $TEXT is
+          the row text, with cells allready formatted with the `$cell'
+          function reference. $ITEM_COMMAND is the command used to
+          introduce the row, such that it is possible to distinguish
+          between `@item' and `@headitem'.
+
+
+File: texi2html.info,  Node: Whole table list,  Prev: Table and list items,  Up: Lists tables
+
+7.11.2 Formatting of a whole table or list
+------------------------------------------
+
+If the Texinfo command is a key of the `%format_map', the associated
+value is used to specify the formatting of the construct, otherwise a
+function is called.  The value in `%format_map' associated with a
+command is interpreted similarly with values associated with more
+simpler commands:
+
+   * If the text is a word, it is considered to be an HTML element
+     name, and the whole table or list is enclosed between the element
+     opening and the element closing.
+
+   * If the text is a word followed by some text, the word and is
+     interpreted as above, and the text is considered to be the
+     attributes text of the element.
+
+   * If the text is empty nothing is added to the text.
+
+   In case the `%format_map' isn't used, a function reference called
+`$table_list' should be redefined, the associated function will be
+called each time a command isn't found in `%format_map'.
+
+ -- Function Reference: $whole_table_list table_list $command $text
+     $COMMAND is the Texinfo command name, $TEXT is the formatted items.
+
+   If you still want to use `%format_map' but differently from the
+default, it is possible to redefine the following function reference:
+
+ -- Function Reference: $whole_table_list format $command $format $text
+     $COMMAND is the @-command, $FORMAT is the entry associated with
+     $COMMAND in `%format_map'. $TEXT is the formatted items.
+
+
+File: texi2html.info,  Node: Definitions,  Next: Headings,  Prev: Lists tables,  Up: Customizing HTML
+
+7.12 Definition commands formatting
+===================================
+
+The formatting of definition commands is controlled by a hash and four
+functions. The hash describes how the text on the definition line is
+interpreted, the functions control the formatting of the definition line
+and the definition function text.
+
+* Menu:
+
+* Definition line::
+* Definition formatting::
+
+
+File: texi2html.info,  Node: Definition line,  Next: Definition formatting,  Up: Definitions
+
+7.12.1 Customizing the interpretation of a definition line
+----------------------------------------------------------
+
+The keys of the hash `%def_map' are definition command names.  There
+are two types of entries:
+
+   * If the command is a shortcut for another definition command the
+     value is a text and the definition command is replaced by the text.
+
+     For example if we have:
+          $def_map{'deftruc'} = '@defvr {A truc}';
+
+     and a line like
+          @deftruc var
+
+     the line will be transformed in
+          @defvr {A truc} var
+
+   * If the command isn't a shortcut, it is associated with an array
+     reference. The first element is `f', `v' or `t' corresponding with
+     the index type (`f' for function, `v' for variable, `t' for type).
+
+     The remaining of the array describes how to interpret the text
+     following the definition command on the definition command line.
+     The entry item specify what corresponds with the next bracketed
+     item or word. Currently the possibilities are `category', `name',
+     `type', `class' and `arg'.
+
+     For example if we have
+          def_map{'defvr'} = [ 'v', 'category', 'name' ];
+
+     The first bracketed item following `@defvr' is considered to be
+     the category and the next one is the name. The index associated
+     with the definition line is the variables index.
+
+
+File: texi2html.info,  Node: Definition formatting,  Prev: Definition line,  Up: Definitions
+
+7.12.2 Customization of the definition formatting
+-------------------------------------------------
+
+Four functions are used when formatting a definition command:
+
+*category name*
+      -- Function Reference: $category definition_category
+               $category_or_name $class $style
+          This function precise a category or an index entry name
+          associating a class $CLASS (if given) with $CATEGORY_OR_NAME.
+          The $STYLE of the definition may be `f', for function, `v',
+          for variable or `t', for type.
+
+*formatting of the definition line*
+      -- Function Reference: $line def_line $category $name $type
+               $arguments $index_label
+          This function formats the definition line. $CATEGORY is the
+          category formatted with `$definition_category', $NAME, $TYPE
+          and ARGUMENTS are the element of the definition line.
+          $INDEX_LABEL is the text inserted at the place where an index
+          entry appears.  *Note Index entry place::.
+
+*definition text*
+      -- Function Reference: $definition_text def_item $text
+          This function formats the definition text, $TEXT.
+
+*the whole definition*
+      -- Function Reference: $definition def $text
+          This function formats the whole definition. The definition
+          line and text formatted by the above functions are in $TEXT.
+
+
+
+File: texi2html.info,  Node: Headings,  Next: Special regions,  Prev: Definitions,  Up: Customizing HTML
+
+7.13 Customizing headings formatting
+====================================
+
+A function controls the formatting of sectioning element headings, with
+the corresponding function reference:
+
+ -- Function Reference: $heading_text heading \%element_reference
+     The \%ELEMENT_REFERENCE is a reference on a hash corresponding
+     with the sectioning element. The following keys are of interest:
+    `text'
+          The heading text
+
+    `name'
+          The heading text without section number
+
+    `node'
+          true if the sectioning element is a node without associated
+          structuring command
+
+    `level'
+          The level of the element in the document tree. `0' is for
+          `@top', `1' for `@chapter' and so on
+
+    `tag_level'
+          the sectioning element name, with `@raisesections' and
+          `@lowersections' taken into account
+
+   It is also possible to customize the heading text with section number
+with the following function reference (called for headings and nodes):
+
+ -- Function Reference: $result_texi heading_texi $heading_command
+          $heading $number
+     $HEADING_COMMAND is the sectioning @-command of that heading.
+     $HEADING is the texinfo for that heading. $NUMBER is the heading
+     number classicaly computed with dots between numbers, and letters
+     for top level appendix numbering. This function should return the
+     texinfo text corresponding with the numbered heading.
+
+
+File: texi2html.info,  Node: Special regions,  Next: Menus,  Prev: Headings,  Up: Customizing HTML
+
+7.14 Formatting of special regions (`@verbatim', `@cartouche', `@quotation')
+============================================================================
+
+Regions corresponding with raw text, like `@verbatim', `@html' or
+`@tex' are formatted according to the following function reference:
+
+ -- Function Reference: $raw_region raw $command $text
+     $COMMAND is the command name, $TEXT is the raw text.
+
+   If LaTeX2HTML is used, `@tex' regions are handled differently,
+(*note Bypassing normal formatting::).
+
+   The `@cartouche' command formatting is controlled by the function
+reference:
+
+ -- Function Reference: $cartouche cartouche $text
+     $TEXT is the text appearing within the cartouche.
+
+   The formatting of `@quotation' is controlled by two function
+references.  The first one is usefull in case the `@quotation' has an
+argument, as it allows to prepend a string to the quotation text:
+
+ -- Function Reference: $prepended_string quotation_prepend_text $text
+     $TEXT is the argument of the quotation with @-commands not
+     interpreted. This function can return a string which will be
+     prepended to the quotation text.
+
+   The whole quotation is formatted by:
+
+ -- Function Reference: $quotation quotation $quotation_text
+          $argument_text $argument_text_texi
+     $QUOTATION_TEXT is the quotation text, formatted, with the text
+     prepended by the function above. $ARGUMENT_TEXT is the argument of
+     the `@quotation', formatted. $ARGUMENT_TEXT_TEXI is the argument
+     of the `@quotation', simply formatted.
+
+
+File: texi2html.info,  Node: Menus,  Next: Indices,  Prev: Special regions,  Up: Customizing HTML
+
+7.15 Menu formatting
+====================
+
+There are two possibilities for menu formatting:
+
+   * format the whole menu in a preformatted environment, like in *Note
+     Complex formats::;
+
+   * format the menu in table with more specialized formatting for each
+     part of the menu;
+
+   The simple formatting is used if `$SIMPLE_MENU' is true, otherwise
+the format with tables is used (this is the default).
+
+   To understand how the formatting of menus is controlled, the
+different parts of a menu are first described, then how to control the
+formatting of each of these parts, for each possible formatting.
+
+* Menu:
+
+* Menu parts::                  A menu consists in menu entry and menu
+                                comments
+* Menu components formatting::
+* Simple menu formatting::      formatting of a whole menu in a simple
+                                preformatted environement
+* Table menu formatting::       formatting of a whole menu in a
+                                table environment
+
+
+File: texi2html.info,  Node: Menu parts,  Next: Menu components formatting,  Up: Menus
+
+7.15.1 The structure of a menu
+------------------------------
+
+In `texi2html', a menu is considered to be composed of 2 parts, the
+"menu entries" and the "menu comments". Menu entries are further
+divided in an "entry link" and optionnaly an "entry description".  The
+entry link consists in a node name and an optionnal menu entry name.
+
+   A menu entry begins with `*' at the beginning of the line. It begins
+with the entry link, followed by the description. The description spans
+until the next menu entry, or some text begining at the first character
+of a line or an empty line, not contained within a command block which
+begun in the description. An empty line or a line with text at the
+first character starts a menu comment, which spans until the next menu
+entry.
+
+   Here is an illustration of these rules:
+
+     @menu
+     * entry name: node name.        description begins
+        description continues
+     * another menu entry::
+        description begins
+                         description continues
+
+        A menu comment, after an empty line
+
+     * node::                        description begins
+     A menu comment. The line starts at the first character
+
+     * last entry::         description begins @emph{text
+     of the description, even if the line begins at the first character,
+     because we are in @emph}.
+     @end menu
+
+
+File: texi2html.info,  Node: Menu components formatting,  Next: Simple menu formatting,  Prev: Menu parts,  Up: Menus
+
+7.15.2 The formatting of the different menu components
+------------------------------------------------------
+
+Three function references are associated with the formatting of the
+different parts of a menu:
+
+ -- Function Reference: $link menu_link $section \%state $href $node
+          $name $ending
+     $SECTION is the section name corresponding with the link, $HREF is
+     the link hypertextual reference. $HREF may be absent. \%STATE
+     holds informations about the current context. The only key which
+     could be of interest is `preformatted', true if the context is a
+     preformatted context. *Note Three contexts::.  $NODE is the node
+     name, $NAME is the name of the node. $ENDING is the text ending
+     the link entry, in general `::' followed by some spaces.
+
+ -- Function Reference: $description menu_description $description_text
+          \%state $element_text
+     $DESCRIPTION_TEXT is the text of the menu description. \%STATE
+     should be used similarly than for the menu link. $ELEMENT_TEXT is
+     the heading of the element associated with the node.
+
+ -- Function Reference: $menu_comment menu_comment $text
+     $TEXT is the text of the menu comment. It is always in a
+     preformatted environment.
+
+   Another function reference corresponds with a special case. It is
+used when a menu entry appears within another block command, to avoid
+the possibilities of invalid HTML production.  In that case the menu
+description and menu comments are not formatted specially, but treated
+like normal text.
+
+ -- Function Reference: $link simple_menu_link $link_text $href $node
+          $name $ending
+     $LINK_TEXT is the text corresponding with the link name, $HREF is
+     the link hypertextual reference.  $NODE is the node name, $NAME is
+     the name of the node, and $ENDING is the text ending the link
+     entry.
+
+
+File: texi2html.info,  Node: Simple menu formatting,  Next: Table menu formatting,  Prev: Menu components formatting,  Up: Menus
+
+7.15.3 Simple menu formatting in a preformatted environment
+-----------------------------------------------------------
+
+If the menu is to be formatted in a single preformatted environment, an
+entry for `menu' should be added to the `$complex_format_map' hash
+reference (*note Complex formats::).  In the default case, if the user
+didn't add an entry himself, a very simple entry is used, with:
+
+     $complex_format_map->{'menu'} = { 'begin' => q{''} , 'end' => q{''},
+         'pre_style' => "$MENU_PRE_STYLE", 'class' => 'menu-preformatted' };
+
+
+File: texi2html.info,  Node: Table menu formatting,  Prev: Simple menu formatting,  Up: Menus
+
+7.15.4 The formatting of the menu in a table
+--------------------------------------------
+
+In the default case, the name of the section corresponding with the
+node is used instead of the node name. If `$NODE_NAME_IN_MENU' is true,
+however, node names are used. If `$AVOID_MENU_REDUNDANCY' is true and
+menu entry equal menu description the description isn't printed.  This
+is the default. Likewise, if node or section name equal entry name, do
+not print entry name.
+
+   A symbol, `$MENU_SYMBOL' is put at the beginning of menu entries
+when the node name is used. The default is `&bull;'.  If `$UNNUMBERED_SYMBOL_IN_MENU'
+is true it is also put at the beginning of unnumbered section names.
+This is not done by default.
+
+   The menu comments are considered to be preformatted text. The style
+associated with this preformatted text is determined by `$MENU_PRE_STYLE'.
+Default is `font-family: serif'.  The css class associated with menu
+comments is `menu-comments'.
+
+   The following function reference controls the formatting of a wole
+menu in that case:
+
+ -- Function Reference: $menu menu $menu_components_text
+     $MENU_COMPONENTS_TEXT is the formatted menu components text,
+     obtained as explained above.
+
+
+File: texi2html.info,  Node: Indices,  Next: Floats and lists of floats,  Prev: Menus,  Up: Customizing HTML
+
+7.16 Indices formatting
+=======================
+
+Two different things needs to be handled for indices formatting, the
+place where the index term appears, the index entry, and the index list
+itself.  The indexing commands like `@cindex' determines where index
+entries appear, and the index list is printed with a `@printindex'
+command.
+
+* Menu:
+
+* Index entry place::             Index entries in the main document are
+                                  targets for hypertext references
+* Index list::                    Customizing the formatting of the index list
+
+
+File: texi2html.info,  Node: Index entry place,  Next: Index list,  Up: Indices
+
+7.16.1 Formatting of index entries
+----------------------------------
+
+Index entry places in the main text may be the target for hypertext
+references. Their formatting is controlled by the function associated
+with the following function reference:
+
+ -- Function Reference: $target index_entry_label $identifier
+          $preformatted
+     $IDENTIFIER should be used to create a target for links (typically
+     associated with a name or id attribute in HTML).  $PREFORMATTED is
+     true if the index entry appeared in preformatted text.
+
+
+File: texi2html.info,  Node: Index list,  Prev: Index entry place,  Up: Indices
+
+7.16.2 Customizing the formatting of index lists
+------------------------------------------------
+
+The index entries are sorted alphabetically. A whole index list is
+considered to be composed of letter entries. A letter entry is composed
+by all the index entries beginning with that letter. A letter may be a
+non alphabetical character, but we call it letter here.
+
+   An index summary appears at the beginning and at the end of an index
+list, and should be used to jump directly to a letter entry. Indices
+lists may be split across pages, thus the different letters may appear
+on different files. The number of index entries appearing on each page
+is determined by a variable `$SPLIT_INDEX' if set. The default is to
+split indices after 100 entries.
+
+   The formatting of all these elements is controlled by the following
+function references:
+
+_formatting of a letter in a summary_
+      -- Function Reference: $letter summary_letter $letter $file
+               $identifier
+          This function is used to format a letter appearing in a
+          summary, refering to a letter entry in the index list.
+          $LETTER is the letter. $FILE is the file name where the letter
+          entry appears. More precisely, it is empty when the letter
+          entry is on the same page than the summary, it contains the
+          file name when the index page is split accross page.
+          $IDENTIFIER is an identifier for the target letter entry.
+
+_formatting of a summary_
+      -- Function Reference: $summary index_summary
+               \@alphabetical_letters \@nonalphabetical_letters
+          \@ALPHABETICAL_LETTERS and \@NONALPHABETICAL_LETTERS contain
+          the formatted summary letters, formatted with the above
+          function.
+
+_formatting of an index entry_
+      -- Function Reference: $entry index_entry $entry_href $entry_text
+               $section_href $section_heading
+          $ENTRY_HREF is a reference to the place where the index entry
+          appeared, $ENTRY_TEXT is the corresponding text. $SECTION_HREF
+          is a reference to the beginning of the sectioning element
+          containing the index entry, $SECTION_HEADING is the heading
+          of the element.
+
+_formatting of letter entry_
+      -- Function Reference: $letter_entry index_letter $letter
+               $identifier $index_entries_text
+          This function formats a letter entry, consisting in all the
+          index entries beginning with this letter. $LETTER is the
+          letter, $IDENTIFIER should be used to create a target for
+          links (typically links from summaries), and
+          $INDEX_ENTRIES_TEXT is the text of the index entries
+          formatted as described above.
+
+_formatting of whole index_
+      -- Function Reference: $index print_index $index_text $index_name
+          $INDEX_TEXT is the text of all the index entries grouped by
+          letter appearing in that page formatted as above. INDEX_NAME
+          is the name of the index, the argument of `@printindex'.
+
+
+File: texi2html.info,  Node: Floats and lists of floats,  Next: Footnotes,  Prev: Indices,  Up: Customizing HTML
+
+7.17 Floats and lists of floats
+===============================
+
+Floats appear in the `@float' environment, optionaly with a style and a
+label, and with optionnal `@caption' and `@shortcaption'.  Their list
+appear after a `@listoffloats'.
+
+   A hash reference is associated with each float, it is available in
+some formatting functions. The keys are:
+`caption_texi'
+`shortcaption_texi'
+     A reference on an array containing the caption or shortcaption
+     lines, with texi @-commands.
+
+`style_texi'
+     The style with texi @-commands.
+
+`style_id'
+     The unique identifier associated with the style.
+
+`nr'
+     The number with the same conventions than makeinfo (use the
+     chapter number a dot and then the number of the float of that
+     style in the chapter, or an absolute number if in unnumbered).
+
+`chapter_nr'
+     The number of the chapter containing the float.
+
+`nr_in_chapter'
+     The number of the float in the chapter.
+
+`absolut_nr'
+     The number of the float in the document.
+
+`texi'
+     The label with @-commands.
+
+`id'
+     The unique identifier associated with the label. Usefull to make
+     an anchor or a reference.
+
+`element'
+     A reference on a structure representing the element the float
+     appear in.
+
+* Menu:
+
+* Floats::                           Formatting of floats
+* Lists of floats::                  Formatting the lists of floats
+
+
+File: texi2html.info,  Node: Floats,  Next: Lists of floats,  Up: Floats and lists of floats
+
+7.17.1 Formatting a float
+-------------------------
+
+First there is an occasion to construct a texinfo text for the caption,
+using the caption texinfo lines and the informations in the float
+structure.  The returned lines will be formatted in the main program. A
+function reference is used here:
+
+ -- Function Reference: (\@caption_lines_returned,
+\@shortcaption_lines_returned) caption_shortcaption \%float
+          \@caption_lines \@shortcaption_lines
+     \%FLOAT is the structure defined above. \@CAPTION_LINES and
+     \@SHORTCAPTION_LINES are references on arrays containing the
+     texinfo lines for caption and short caption.
+     \@CAPTION_LINES_RETURNED and \@SHORTCAPTION_LINES_RETURNED are
+     references on an array containing the texinfo lines for the
+     caption and shortcaption.
+
+   Then the float is formatted with the following function reference:
+
+ -- Function Reference: $text float $float_text \%float $caption_text
+          $shortcaption_text
+     $FLOAT_TEXT is the text appearing within the `@float', formatted.
+     \%FLOAT is still the structure defined above. $CAPTION_TEXT and
+     $SHORTCAPTION_TEXT are the caption and short caption build with the
+     above function and formatted.
+
+
+File: texi2html.info,  Node: Lists of floats,  Prev: Floats,  Up: Floats and lists of floats
+
+7.17.2 Formatting lists of floats
+---------------------------------
+
+A list of floats is introduced by `@listoffloats'. The argument of
+`@listoffloats' is the "style". First the style texinfo can be modified
+with the following function reference:
+
+ -- Function Reference: $style_texi_returned listoffloats_style
+          $style_texi
+     $STYLE_TEXI is the `@listoffloats' argument with texinfo
+     @-commands kept. It is possible to make changes to the $STYLE_TEXI
+     and return a modified string, still with @-commands. The modified
+     string is formatted in the main program.
+
+   After that, for each of the floats with that style, first there is a
+possibility to modify the float style and the float caption before they
+are formatted in the main program, with the following function
+references:
+
+ -- Function Reference: $float_style_texi_returned
+listoffloats_float_style $style_texi \%float
+     $STYLE_TEXI is the style, and \%FLOAT is the structure described
+     above. This function reference returns a style to be formatted in
+     the main program.
+
+ -- Function Reference: $caption_texi_returned listoffloats_caption
+          \%float
+     \%FLOAT is the structure described above. This function reference
+     returns a caption to be formatted in the main program.
+
+   Each entry is formatted by:
+
+ -- Function Reference: $listoffloats_entry listoffloats_entry
+          $style_texi \%float $float_style $caption $href
+     $STYLE_TEXI is the style with @-commands, $FLOAT_STYLE is the
+     style returned by the above function and formatted. $CAPTION is the
+     caption returned by the above function formatted. \%FLOAT is the
+     structure corresponding with the float, and $HREF is an href
+     pointing to the float location.
+
+   Lastly, the whole `@listoffloats' is formatted by:
+
+ -- Function Reference: $listoffloats listoffloats $style_texi $style
+          \@listoffloats_entries
+     $STYLE_TEXI is the style with @-commands, $STYLE is the style
+     returned by the above function and formatted. The array reference
+     \@LISTOFFLOATS_ENTRIES holds the entries formatted by the above
+     function.
+
+
+File: texi2html.info,  Node: Footnotes,  Next: Bypassing normal formatting,  Prev: Floats and lists of floats,  Up: Customizing HTML
+
+7.18 Customizing the footnotes formatting
+=========================================
+
+Each footnote is associated with a footnote entry. Several footnote
+entries are grouped in a footnote section. When a footnote appears, two
+things must be formatted: in the main text the place where the footnote
+appear and the footnote text.
+
+   Two functions, with corresponding function references control the
+formatting of the footnotes:
+
+ -- Function Reference: (\@lines $text_for_document) foot_line_and_ref
+          $number_in_doc $number_in_page $footnote_id $place_id
+          $document_file $footnote_file \@lines \%state
+     $NUMBER_IN_DOC is the footnote number in the whole document,
+     $NUMBER_IN_PAGE is the footnote number in the current page.
+     $FOOTNOTE_ID is an identifier for the footnote in the footnote text
+     which should be used to make target for references to that
+     footnote, while $PLACE_ID is an identifier for the location of the
+     footnote in the main document. Similarly, $DOCUMENT_FILE is the
+     file name of the file containing the text where the footnote
+     appears in the main document, while $FOOTNOTE_FILE is the file
+     name of the file where the footnote text appears.
+
+     \@LINES is a reference on an array containing the footnote text
+     lines, allready formatted.  And \%STATE holds informations about
+     the context at the footnote place in the main document. As usual
+     the most usefull entry is `preformatted' which is true if the
+     footnote appears in a preformatted context.
+
+     This function returns a reference on an array, \@LINES containing
+     the updated footnote text for the footnote entry, and
+     $TEXT_FOR_DOCUMENT, the text appearing at the footnote place in
+     the main document, linking to the footnote entry.
+
+   The following function is only used when footnotes are at the bottom
+of a page and the document is split.  For customization of the
+footnotes page in case they are on a separated page or section, *Note
+Special pages layout::. For the determination of the footnote
+locations, *Note Page layout options::.
+
+ -- Function Reference: foot_section \@footnotes_lines
+     This function formats a group of footnotes. \@FOOTNOTES_LINES is a
+     reference on an array holding the lines of all the footnote entries
+     formatted as explained above. This function modifies the reference.
+
+
+File: texi2html.info,  Node: Bypassing normal formatting,  Next: Other and unknown commands,  Prev: Footnotes,  Up: Customizing HTML
+
+7.19 Bypassing normal formatting
+================================
+
+It is possible to bypass completely the normal formatting of @-commands
+with braces and raw regions (`@html', `@tex', `@xml'... regions).  In
+that case the @-commands and the text within are passed to a user
+defined function early, in a pass when no expansion of output takes
+place, called the collecting pass. Another user defined function is
+called during the output expansion phase.
+
+   Moreover, arbitrary user defined functions may be called between the
+different texinfo parsing and outputting passes. This could be used, for
+example to initialize some things before collecting the @-commands and
+their text, expanding them between the collecting and expansion phase
+and doing some cleaning after the expansion pass. These possibilities
+are used for the interface to LaTeX2HTML (*note Expanding TeX
+regions::), and the examples are taken from that use.
+
+   The @-commands that are keys of the `%command_handler' hash are
+collected in the collecting pass and expanded in the expansion pass
+using user defined functions. The associated value is a reference on a
+hash used to specify the user defined function references.  The key of
+the hash reference are `'init'' for the function reference called
+during the collecting pass, and `'expand'' during the expansion pass.
+Here is an example for an @-command with braces:
+
+     $command_handler{'math'} =
+          { 'init' => \&Texi2HTML::LaTeX2HTML::to_latex,
+            'expand' => \&Texi2HTML::LaTeX2HTML::do_tex
+          };
+
+   And an example for a raw region @-command:
+
+     $command_handler{'tex'} =
+          { 'init' => \&Texi2HTML::LaTeX2HTML::to_latex,
+            'expand' => \&Texi2HTML::LaTeX2HTML::do_tex
+          };
+
+   The function references are called like:
+
+ -- Function Reference: $status $command_handler{'$command'}->{'init'}
+          $command $text $count
+     $COMMAND is the @-command name, $TEXT is the text appearing within
+     the @-command. $COUNT is a counter counting how many times this
+     @-command appeared. $STATUS is a boolean which should be true if
+     the collecting was succesfull. If false the @-command and the text
+     is discarded.
+
+ -- Function Reference: $result
+          $command_handler{'$command'}->{'expand'} $command $count
+          $state $text
+     $COMMAND is the @-command name, $COUNT is a counter counting how
+     many times this @-command appeared. $STATE is a reference on a
+     hash containing many informations about the context. $TEXT should
+     be empty. $RESULT is the expanded resulting text.
+
+   There are three places for user defined functions, associated with
+arrays:
+`@command_handler_init'
+     The function references in that array are called before the
+     collecting pass.  At that time the information available is
+     essentially the file names.
+
+`@command_handler_process'
+     The function references in that array are called between the
+     collecting pass and the expansion pass. At that time all the
+     special @-commands have been collected as explained above but no
+     output has been produced.
+
+`@command_handler_finish'
+     he function references in that array are called after the end of
+     the output generation.
+
+   Here is an example of these arrays use:
+
+     push @command_handler_init, \&Texi2HTML::LaTeX2HTML::init;
+     push @command_handler_process, \&Texi2HTML::LaTeX2HTML::latex2html;
+     push @command_handler_finish, \&Texi2HTML::LaTeX2HTML::finish;
+
+
+File: texi2html.info,  Node: Other and unknown commands,  Prev: Bypassing normal formatting,  Up: Customizing HTML
+
+7.20 Customizing other commands, and unknown commands
+=====================================================
+
+Many commands without braces are available in texinfo, sometimes with a
+specific syntax. For example we have `@sp', `@noindent',
+`@documentlanguage', `@oddheading', `@headings', `@shortcontents',
+`@shorttitlepage' or `@comment'.  `texi2html' interprets some of these
+commands and some functions or variables are used for their formatting
+or to access their information.  In the default case, however, most of
+these constructs are ignored.
+
+   It is possible to change how the things following these commands on
+the line are handled, what is considered to be an arg for those
+commands and it is also possible to keep them instead of discarding
+them such that it is possible to handle them specially, with the same
+function than the one used for unknown commands.
+
+   Those special commands without braces are the key of a hash: `%misc_command'.
+The associated value is a reference on a hash enabling to set the
+properties of these commands. The keys of this hash reference is the
+name of a property, the value is the value of the property. For example
+here we have `line' for the `arg' property for the `command' @-command.
+
+     $misc_command{'command'} = {'arg' => 'line', 'skip' => 'space'};
+
+   The properties and possible values are:
+
+`skip'
+     This property enables to set what is skipped after the command
+     arguments.  Here are the possible values:
+    `line'
+          The remaining of the line is skipped.
+
+    `space'
+          Spaces are skipped but not newline.
+
+    `whitespace'
+          Spaces are skipped
+
+    `linewhitespace'
+          Spaces are skipped if there are only spaces remaining on the
+          line.
+
+    `linespace'
+          Spaces are skipped, but not newline if there are only spaces
+          remaining on the line
+
+`arg'
+     If the associated value is `line' the line is considered to be the
+     argument. If it is a number it is the number of args (separated by
+     spaces).
+
+`texi'
+     If true the arguments are considered to real texinfo, therefore
+     `@value' and `@macro' are expanded.
+
+`keep'
+     If true the args and the macro are kept, otherwise they are
+     discarded.  The defaut is to have `keep' undef for all the
+     commands.  If `keep' is true for `@verbatiminclude' the default
+     action for this macro isn't done.
+
+   Commands which don't appear in the hashes `%simple_map', `%simple_map_pre', `%simple_map_texi'
+and `%misc_command', or that appear in `%misc_command' but with `keep'
+true are processed by the following function reference:
+
+ -- Function Reference: ($result_line, $result, $result_text, $message)
+unknown $command $line
+     $COMMAND is the @-command, $LINE is the line following the
+     $COMMAND. $RESULT is a boolean. If it is true then the other return
+     values are taken into account otherwise the default actions are
+     used. In case $RESULT is true, $RESULT_LINE is the new line to be
+     processed further, $RESULT_TEXT is the resulting formatted text
+     and $MESSAGE, if defined is a message outputted to the output with
+     line number added by `texi2html'.
+
+   Commands with braces not specified above nor in `%style_map', `%style_map_pre'
+and `%style_map_texi' are processed by the following function reference
+
+ -- Function Reference: ($result, $result_text, $message) unknown_style
+          $command $text
+     $COMMAND is the @-command, $TEXT is the text appearing within the
+     braces (allready formatted). $RESULT is a boolean. If it is true
+     then the other return values are taken into account otherwise the
+     default actions are used. In case $RESULT is true, $RESULT_TEXT is
+     the resulting formatted text and $MESSAGE, if defined is a message
+     outputted to the output with line number added by `texi2html'.
+
+
+File: texi2html.info,  Node: Internationalization,  Next: Incompatibilities,  Prev: Customizing HTML,  Up: Top
+
+Appendix A Internationalization
+*******************************
+
+The strings written in the document are selected based on the document
+language. This can be used to customize the strings, as described in
+*Note Strings::. This also enables translation of the strings.
+
+* Menu:
+
+* Translating strings::
+* Adding new strings::
+
+
+File: texi2html.info,  Node: Translating strings,  Next: Adding new strings,  Up: Internationalization
+
+A.1 Translating strings
+=======================
+
+* Menu:
+
+* Supported language::
+* New language::
+
+
+File: texi2html.info,  Node: Supported language,  Next: New language,  Up: Translating strings
+
+A.1.1 Contributing to existing translations
+-------------------------------------------
+
+If the language is allready supported, then there will be a file in the
+`i18n' directory with name the two-letter ISO-639 language code. In
+that case you can enhance the translations by editing this file. There
+is a `$LANGUAGES->{'LANGUAGE'}' hash in that file. The keys are the
+english strings, in `''', the values (in `''' after `=>') are the
+translations.  When a string contains a `%' followed by `{' NAME `}' it
+means that the string will be expanded by `texi2html'. For an example,
+see *Note Strings::.
+
+   After that you should run the command `./manage_i18n.pl merge' in
+the top directory, it should merge your file with the existing files in
+`translations.pl', which is incorporated to the `texi2html' script by
+`make'.
+
+
+File: texi2html.info,  Node: New language,  Prev: Supported language,  Up: Translating strings
+
+A.1.2 Contributing translations to another language
+---------------------------------------------------
+
+If the language isn't currently supported, copy the `en' file in `i18n'
+to a file with name the two-letter ISO-639 language code of your
+language  and then add your translations to the strings. You could also
+add your two-letter language code in the `manage_i18n.pl' file in the
+`@known_languages' array.
+
+   After that you should run the command `./manage_i18n.pl update LANG'
+and `./manage_i18n.pl merge' in the top directory.
+
+   Obsoleted strings are not removed from the files, they are still
+present in the `$T2H_OBSOLETE_STRINGS->{'LANGUAGE'}' hash in case the
+string is reused later.
+
+   If you made change to strings specified in installed files (*note
+Installation::) you will have to reinstall them otherwise the
+installated files will take precedence (*note Using init files::).
+
+
+File: texi2html.info,  Node: Adding new strings,  Prev: Translating strings,  Up: Internationalization
+
+A.2 Adding new strings written to document
+==========================================
+
+If you need to write strings, for example the new string A STRING to
+the resulting document, call `&$I('a string')'. Use simple quotes.  If
+you want to substitute a value in the string put `%{STRING_VALUE}', in
+the string, and give a second argument to `&$I', a hash reference with
+key STRING_VALUE and value the what you want to substitute.  Here is an
+example:
+
+     return &$I('%{name} of %{class}',
+            { 'name' => $name, 'class' => $class });
+
+   In that case `%{name}' is substituted by `$name' in the translated
+string.
+
+   After that you should run the command `./manage_i18n.pl' in the top
+directory, to add your new strings to the template file, that is the
+file for english and to all the files in the `i18n' directory. This is
+achieved with
+
+     ./manage_i18n.pl template
+     ./manage_i18n.pl update
+
+   These two commands won't work if you don't have the `Data::Dumper'
+module installed.  And to merge the new translation files in
+`translations.pl', do
+
+     ./manage_i18n.pl merge
+
+   All these steps may be performed by `make', once the language file
+is added to `Makefile.am' in the `i18n_files' variable.
+
+
+File: texi2html.info,  Node: Incompatibilities,  Next: Specificities,  Prev: Internationalization,  Up: Top
+
+2 Incompatibilities with previous versions
+******************************************
+
+`texi2html' has accumulated a lot of incompatibilities with previous
+versions. They are documented in the `NEWS' file, we discuss them here
+nevertheless. most of the incompatibilities were introduced in version
+1.68.
+
+   * When the manual is split the default is to put resulting files in
+     a directory with name the manual file basename (previously they
+     were left in  the current directory). To avoid that, call
+     texi2html with `-output .'. This has been changed to be compatible
+     with `makeinfo' and also because it fits better with the cross
+     manuals reference scheme.
+
+   * The option `--output' signification changed. It now has the same
+     meaning than for `makeinfo'. It seems that in 1.66 it was the same
+     than `-out-file'.  `--output' new meaning allows to replace
+     `-out-file' and `-subdir' with a unique option.
+
+     More precisely `-out-file' forces the output to be unsplit while
+     `--output' behaves differently when split (it specifies the
+     directory where the manual files should be outputted) and unsplit
+     (it specifies the output file). `-subdir' is retained for backward
+     compatibility.
+
+     If you want a backward compatibility you can use `-subdir' for the
+     output directory if the document is split, and `-out-file' if the
+     document isn't split. This hasn't been tested extensively though.
+
+   * Many options has been obsoleted but they are retained for backward
+     compatibility.
+
+   * The init files are searched in new directories, however they are
+     still searched for in the old directories for backward
+     compatibility.
+
+   * the option `--glossary' doesn't do anything. Likely nothing
+     specific is done regarding bibliographies. This has been decided
+     because this added some semantics to the texinfo formatting
+     language that weren't part of texinfo.
+
+     It should be possible to do something similar with macros. See for
+     example `glossary.texi' for glossary and `my-bib-macros.texi' for
+     bibliography in the directory `examples'. In the web2c package
+     there is an example of use of BibTeX, see
+     `http://tug.org/texlive/devsrc/Build/source/TeX/texk/web2c/doc/'
+     (the examples for bibliography are taken from the texinfo home
+     page `http://www.gnu.org/software/texinfo/texinfo.html').
+
+   * don't use `T2H_CENTER_IMAGE'. `@center' should be used insead, it
+     will give the right output for all the formats.
+
+   * If a directory creation fails the program aborts. This is much
+     safer.
+
+   * The interface for internationalisation changed, although the
+     previous wasn't documented a lot.
+
+   * the API described in this manual changed a lot. A important change
+     was to use the `Texi2HTML::Config' names space instead of
+     variables prefixed with `T2H_' or  `t2h_'. To cope with the change
+     the prefix should be removed from variables in init files.  Some
+     variables are now in `%Texi2HTML::THISDOC'.
+
+   * API changes between 1.76 and 1.78:
+        * paragraph has new arguments with indentation information,
+          added as the third argument, and other context information.
+          The formatting linked with commands opened before the
+          paragraph and closed after the paragraph are done in the
+          formatting function. Similar things are done for preformatted.
+
+        * normal_text changed completely. There are much more arguments
+          to give informations about the context, and normal_text now
+          does more text manipulation.
+
+        * New arguments for image the alt text, the height and width,
+          the path to working dir and the path to image file relative
+          to working dir. More image formatting is done in the
+          formatting function.
+
+        * New argument for empty_line.
+
+        * End of line removal is done in formatting function of
+          definition line formatting.
+
+        * node_file_name now should only returns the node file, since
+          the redirection file isn't used anymore. element_file_name
+          only is used for file names, whatever NODES_FILES is.
+
+   * `@ifinfo' regions are not expanded by default. This may lead to
+     warnings or errors especially if the Top node is enclosed in
+     `@ifinfo', as some node won't appear in menus. The quick fix is to
+     call `texi2html' with the option `--ifinfo' and the right way
+     should be to make more use of `@ifnottex'.
+
+   * The code appearing before the first node is now outputted, it was
+     ignored before. `--ignore-preamble-text' revert to the previous
+     behaviour. Enclosing in `@ifnothtml' would be much cleaner.
+
+
+File: texi2html.info,  Node: Specificities,  Next: Indexop,  Prev: Incompatibilities,  Up: Top
+
+3 How little texi2html texinfo differs from GNU texinfo
+*******************************************************
+
+For features documented in the texinfo manual, the texinfo
+interpretation by `texi2html' shouldn't differ from the interpretation
+of `makeinfo' or `texi2dvi'. However for constructs with unspecified
+behaviour `texi2html' often doesn't lead to the same result than
+`makeinfo' or `texi2dvi'. `makeinfo' and `texi2dvi' are also
+inconsistent in most of these cases (or broken). You are urged not to
+use these features unless absolutely necessary.  This information is
+only here to help understand why `texi2html' differ from other texinfo
+interpreters, it may be inacurate and the `texi2html' behaviour may
+change in the future and was different in the past.
+
+@-commands with text on the line
+     In the texinfo manual it is specified that block @-commands should
+     appear on a line without text and the closing `@end' should also
+     be on a line by himself. With `texi2html' it is possible to add
+     text before and after the command, so the following is right:
+
+          something @example the example @end example after the example
+
+     `makeinfo' and `texi2dvi' may also accept text before the command
+     and text after the `@end' command, sometimes ignoring it after the
+     `@end'.
+
+     This is a feature you should especially not rely on.
+
+special @-commands handling
+     The special @-commands are commands like `@pagesizes', `@sp',
+     `@evenheading', `@raisesections', `@defindex' and a lot more. In
+     many cases `makeinfo' and `texi2dvi' don't parse those commands
+     the same way too. `texi2html' may also show some differences in
+     parsing of the arguments of these commands, in case there are
+     wrong arguments, and also ignore differently things following
+     those commands. How user defined macros, set and values are
+     expanded in those commands may also be different.  Part of the
+     specification of how these commands are handled is configureable
+     (*note Other and unknown commands::), but not what happens during
+     the beginning of the parsing for some of those commands.
+
+features different between `makeinfo' and `texi2dvi'
+     When `makeinfo' or `texi2dvi' use a feature which is reserved for
+     one or the other translator, `texi2html' uses that feature. So for
+     example `@definfoenclose' which is ignored by `texi2dvi' is taken
+     into account and `@kbdinputstyle' which is ignored by `makeinfo'
+     is taken into account.
+
+user defined macros and values
+     In this area `makeinfo' and `texi2dvi' also differ a lot.  The
+     reference implementation is the `makeinfo' implementation as
+     `texi2dvi' is easily broken when macros are not used simply.
+
+        * `@rmacro' and `@macro' behave exactly the same. In fact this
+          goes against a documented behaviour, however if a user don't
+          want a recursive macro he can simply avoid reusing the macro
+          in the definition. If somebody report that the feature is
+          usefull we could try to implement it.
+
+        * It is possible to escape the end of a macro definition with
+               \@end macro
+          with the `\' being removed after the first expansion.
+          Otherwise it is not possible to produce a `\@end macro' in a
+          macro.
+
+        * `@unmacro' is interpreted during the macro argument expansion.
+          Don't know what `makeinfo' exactly do.
+
+        * Some `@value' may be expanded later than the others, those
+          that are in special commands, like `@node'.
+
+`@,' in `@node'
+     Like `texi2dvi' but unlike `makeinfo' `@,' don't break `@node'
+     arguments like a regular `,'.
+
+Things before first node or preamble
+     Things before the first node or before the preamble may not be
+     exactly interpreted or discarded as `makeinfo' or `texi2dvi' do.
+
+encodings
+     `texi2html' knows more encodings, in fact all encodings `perl'
+     knows about.
+
+commands in `@ifset' and `@ifclear'
+     `texi2html' doesn't need a proper nesting of internal `@ifset' or
+     `@ifclear' if they are in ignored or raw regions (like `@html' or
+     `@verbatim'). For example the following is accepted by `texi2html'
+     and not by `makeinfo':
+
+          @ifset notset
+          @ignore
+          @ifset
+          @end ignore
+          @end ifset
+
+     In `@ifset' and `@ifclear' texi2html also accepts a lot more of
+     invalid constructs. For example the following is accepted by
+     `texi2html' but not by `makeinfo':
+
+          @set flag
+          @ifset flag
+          @itemize
+          @item my item
+          @end ifset
+          text
+          @ifset flag
+          @end itemize
+          @end ifset
+
+
+File: texi2html.info,  Node: Indexop,  Next: Indexvr,  Prev: Specificities,  Up: Top
+
+Appendix A Command Line Option Index
+************************************
+
+