texi2html-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Texi2html-cvs] texi2html ./ChangeLog ./NEWS ./T2h_l2h.pm ./TOD...


From: Patrice Dumas
Subject: [Texi2html-cvs] texi2html ./ChangeLog ./NEWS ./T2h_l2h.pm ./TOD...
Date: Mon, 29 May 2006 23:36:11 +0000

CVSROOT:        /cvsroot/texi2html
Module name:    texi2html
Branch:         
Changes by:     Patrice Dumas <address@hidden>  06/05/29 23:36:10

Modified files:
        .              : ChangeLog NEWS T2h_l2h.pm TODO texi2html.init 
                         texi2html.pl 
        Tests          : Makefile.am Makefile.in test.sh 
        Tests/formatting: .cvsignore footnote_not_closed.texi 
                          formats_not_closed.texi 
        Tests/formatting_res: exotic_formatting.2 footnote_not_closed.2 
                              footnote_not_closed.html 
                              footnote_not_closed.passfirst 
                              footnote_not_closed.passtexi 
                              formats_not_closed.2 
                              formats_not_closed.html 
                              formats_not_closed.passfirst 
                              formats_not_closed.passtexi formatting.2 
                              fr_formatting.2 icons_fr_formatting.2 
                              tables.2 to_utf8_formatting.2 
                              weird_quotes_formatting.2 
        doc            : texi2html.html texi2html.texi 
Added files:
        Tests/floats   : caption_not_closed.texi 
        Tests/floats_res: caption_not_closed.2 caption_not_closed.html 
                          caption_not_closed.passfirst 
                          caption_not_closed.passtexi 
        Tests/formatting: bad_nesting.texi commands_not_closed.texi 
                          math_not_closed.texi 
        Tests/formatting_res: bad_nesting.2 bad_nesting.html 
                              bad_nesting.passfirst bad_nesting.passtexi 
                              commands_not_closed.2 
                              commands_not_closed.html 
                              commands_not_closed.passfirst 
                              commands_not_closed.passtexi 
                              math_not_closed.html 
                              math_not_closed.passfirst 
                              math_not_closed.passtexi 

Log message:
        * 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.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/ChangeLog.diff?tr1=1.246&tr2=1.247&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/NEWS.diff?tr1=1.53&tr2=1.54&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/T2h_l2h.pm.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/TODO.diff?tr1=1.29&tr2=1.30&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/texi2html.init.diff?tr1=1.105&tr2=1.106&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/texi2html.pl.diff?tr1=1.167&tr2=1.168&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/Makefile.am.diff?tr1=1.16&tr2=1.17&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/Makefile.in.diff?tr1=1.36&tr2=1.37&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/test.sh.diff?tr1=1.60&tr2=1.61&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/floats/caption_not_closed.texi?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/floats_res/caption_not_closed.2?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/floats_res/caption_not_closed.html?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/floats_res/caption_not_closed.passfirst?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/floats_res/caption_not_closed.passtexi?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting/.cvsignore.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting/bad_nesting.texi?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting/commands_not_closed.texi?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting/footnote_not_closed.texi.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting/formats_not_closed.texi.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting/math_not_closed.texi?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/bad_nesting.2?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/bad_nesting.html?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/bad_nesting.passfirst?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/bad_nesting.passtexi?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/commands_not_closed.2?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/commands_not_closed.html?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/commands_not_closed.passfirst?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/commands_not_closed.passtexi?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/exotic_formatting.2.diff?tr1=1.25&tr2=1.26&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/footnote_not_closed.2.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/footnote_not_closed.html.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/footnote_not_closed.passfirst.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/footnote_not_closed.passtexi.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/formats_not_closed.2.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/formats_not_closed.html.diff?tr1=1.20&tr2=1.21&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/formats_not_closed.passfirst.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/formats_not_closed.passtexi.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/formatting.2.diff?tr1=1.25&tr2=1.26&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/fr_formatting.2.diff?tr1=1.24&tr2=1.25&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/icons_fr_formatting.2.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/math_not_closed.html?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/math_not_closed.passfirst?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/math_not_closed.passtexi?rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/tables.2.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/to_utf8_formatting.2.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/Tests/formatting_res/weird_quotes_formatting.2.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/doc/texi2html.html.diff?tr1=1.39&tr2=1.40&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/texi2html/texi2html/doc/texi2html.texi.diff?tr1=1.50&tr2=1.51&r1=text&r2=text

Patches:
Index: texi2html/ChangeLog
diff -u texi2html/ChangeLog:1.246 texi2html/ChangeLog:1.247
--- texi2html/ChangeLog:1.246   Wed May 17 01:51:45 2006
+++ texi2html/ChangeLog Mon May 29 23:36:10 2006
@@ -1,5 +1,23 @@
 2006-05-17  Patrice Dumas  <address@hidden>
 
+       * 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  <address@hidden>
+
        * texi2html.pl, texi2html.init: teletype style is set in 
        table item formatting in texi2html.init, not in the main
        program.
Index: texi2html/NEWS
diff -u texi2html/NEWS:1.53 texi2html/NEWS:1.54
--- texi2html/NEWS:1.53 Mon Apr 17 23:11:09 2006
+++ texi2html/NEWS      Mon May 29 23:36:10 2006
@@ -43,7 +43,7 @@
   file names are in the hash reference $Texi2HTML::THISDOC{'filename'}
   for use in init files.
 
-* The API for image and normal_text and paragraph is changed.
+* The API for image, normal_text and paragraph has changed.
 
 * The $ENCODING variable is deprecated, replaced by $ENCODING_NAME
   and $OUT_ENCODING.
@@ -51,6 +51,12 @@
 * 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.
+
 * BUG FIXES
   ---------
 
Index: texi2html/T2h_l2h.pm
diff -u texi2html/T2h_l2h.pm:1.3 texi2html/T2h_l2h.pm:1.4
--- texi2html/T2h_l2h.pm:1.3    Sun Apr 23 20:47:27 2006
+++ texi2html/T2h_l2h.pm        Mon May 29 23:36:10 2006
@@ -101,7 +101,7 @@
     $docu_ext = $Texi2HTML::THISDOC{'extension'};
     $l2h_name =  "${docu_name}_l2h";
     $l2h_latex_file = "$docu_rdir${l2h_name}.tex";
-    $l2h_cache_file = "${docu_rdir}l2h_cache.pm";
+    $l2h_cache_file = "${docu_rdir}${docu_name}-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";
Index: texi2html/TODO
diff -u texi2html/TODO:1.29 texi2html/TODO:1.30
--- texi2html/TODO:1.29 Sun Apr 23 20:47:27 2006
+++ texi2html/TODO      Mon May 29 23:36:10 2006
@@ -105,3 +105,5 @@
   test of missing files.
 
 * many FIXME in the code
+
+* test @printindex in diverse contexts
Index: texi2html/Tests/Makefile.am
diff -u texi2html/Tests/Makefile.am:1.16 texi2html/Tests/Makefile.am:1.17
--- texi2html/Tests/Makefile.am:1.16    Sun Apr 23 20:47:27 2006
+++ texi2html/Tests/Makefile.am Mon May 29 23:36:10 2006
@@ -13,7 +13,8 @@
        -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
+       -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:
@@ -25,5 +26,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 *.out; fi) ; \
+       *_l2h_labels.pl *-l2h_cache.pm l2h_cache.pm *.out; fi) ; \
        done
Index: texi2html/Tests/Makefile.in
diff -u texi2html/Tests/Makefile.in:1.36 texi2html/Tests/Makefile.in:1.37
--- texi2html/Tests/Makefile.in:1.36    Sun Apr 23 20:47:27 2006
+++ texi2html/Tests/Makefile.in Mon May 29 23:36:10 2006
@@ -282,7 +282,8 @@
        -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
+       -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:
@@ -294,7 +295,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 *.out; 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.
Index: texi2html/Tests/formatting/.cvsignore
diff -u texi2html/Tests/formatting/.cvsignore:1.2 
texi2html/Tests/formatting/.cvsignore:1.3
--- texi2html/Tests/formatting/.cvsignore:1.2   Sun Apr 23 20:47:27 2006
+++ texi2html/Tests/formatting/.cvsignore       Mon May 29 23:36:10 2006
@@ -13,4 +13,7 @@
 tex_in_copying_l2h_images.log
 tex_in_copying_l2h_images.out
 tex_l2h_images.out
-l2h_cache.pm
+math_not_closed_l2h.css
+math_not_closed_l2h_images.log
+math_not_closed_l2h_images.out
+*-l2h_cache.pm
Index: texi2html/Tests/formatting/footnote_not_closed.texi
diff -u texi2html/Tests/formatting/footnote_not_closed.texi:1.1 
texi2html/Tests/formatting/footnote_not_closed.texi:1.2
--- texi2html/Tests/formatting/footnote_not_closed.texi:1.1     Sun Apr 23 
20:47:28 2006
+++ texi2html/Tests/formatting/footnote_not_closed.texi Mon May 29 23:36:10 2006
@@ -11,11 +11,19 @@
 
 @menu
 * chapter::           the chapter
+* chapter2::           the second chapter
 @end menu
 
 @node chapter
 @chapter Chapter
 
-In chapter
+In address@hidden footnote
+
address@hidden
+In a quotation
+
address@hidden chapter2
address@hidden Chapter2
+
 
 @bye
Index: texi2html/Tests/formatting/formats_not_closed.texi
diff -u texi2html/Tests/formatting/formats_not_closed.texi:1.2 
texi2html/Tests/formatting/formats_not_closed.texi:1.3
--- texi2html/Tests/formatting/formats_not_closed.texi:1.2      Sun Jan  4 
20:52:32 2004
+++ texi2html/Tests/formatting/formats_not_closed.texi  Mon May 29 23:36:10 2006
@@ -53,4 +53,12 @@
 
 text flushed right
 
address@hidden a section
+
+group not closed
+
address@hidden
+
+text in group
+
 @bye
Index: texi2html/Tests/formatting_res/exotic_formatting.2
diff -u texi2html/Tests/formatting_res/exotic_formatting.2:1.25 
texi2html/Tests/formatting_res/exotic_formatting.2:1.26
--- texi2html/Tests/formatting_res/exotic_formatting.2:1.25     Wed May 17 
01:51:46 2006
+++ texi2html/Tests/formatting_res/exotic_formatting.2  Mon May 29 23:36:10 2006
@@ -31,11 +31,11 @@
 *** Unknown node in menu entry `description' (l. 11)
 ** Unknown command address@hidden' (left as is) (l. 474 in mymacro)
 ** TeX requires {} (l. 474 in mymacro)
-** no image file for f-ile, (using f-ile.jpg) (l. 474 in mymacro)
+** no image file for f-ile, (using f-ile.jpg) 
 *** no file argument for @image (l. 474 in mymacro)
 *** no file argument for @image (l. 474 in mymacro)
-** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) (l. 474 in mymacro)
-** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) (l. 474 in mymacro)
+** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) 
+** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) 
 *** '}' without opening '{' before:  
 *** '}' without opening '{' before:  after 
 *** '{' without macro. Before:  
@@ -52,11 +52,11 @@
 *** Need a node name for @inforef (l. 474 in mymacro)
 ** Unknown command address@hidden' (left as is) (l. 477 in mymacro)
 ** TeX requires {} (l. 477 in mymacro)
-** no image file for f-ile, (using f-ile.jpg) (l. 477 in mymacro)
+** no image file for f-ile, (using f-ile.jpg) 
 *** no file argument for @image (l. 477 in mymacro)
 *** no file argument for @image (l. 477 in mymacro)
-** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) (l. 477 in mymacro)
-** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) (l. 477 in mymacro)
+** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) 
+** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) 
 *** '}' without opening '{' before:  
 *** '}' without opening '{' before:  after 
 *** '{' without macro. Before:  
Index: texi2html/Tests/formatting_res/footnote_not_closed.2
diff -u texi2html/Tests/formatting_res/footnote_not_closed.2:1.1 
texi2html/Tests/formatting_res/footnote_not_closed.2:1.2
--- texi2html/Tests/formatting_res/footnote_not_closed.2:1.1    Sun Apr 23 
20:47:28 2006
+++ texi2html/Tests/formatting_res/footnote_not_closed.2        Mon May 29 
23:36:10 2006
@@ -1 +1,3 @@
-** closing footnote (l. 16)
+** closing @-command footnote (l. 17)
+** closing @-command footnote (l. 25)
+** closing `quotation' 
Index: texi2html/Tests/formatting_res/footnote_not_closed.html
diff -u texi2html/Tests/formatting_res/footnote_not_closed.html:1.1 
texi2html/Tests/formatting_res/footnote_not_closed.html:1.2
--- texi2html/Tests/formatting_res/footnote_not_closed.html:1.1 Sun Apr 23 
20:47:28 2006
+++ texi2html/Tests/formatting_res/footnote_not_closed.html     Mon May 29 
23:36:10 2006
@@ -56,11 +56,11 @@
 <a name="SEC1"></a>
 <table cellpadding="1" cellspacing="1" border="0">
 <tr><td valign="middle" align="left">[<a href="#SEC_Top" title="Previous 
section in reading order"> &lt; </a>]</td>
-<td valign="middle" align="left">[ &gt; ]</td>
+<td valign="middle" align="left">[<a href="#SEC2" title="Next section in 
reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[ &lt;&lt; ]</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">[<a href="#SEC2" 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>
@@ -72,8 +72,28 @@
 </tr></table>
 <h1 class="chapter"> 1. Chapter </h1>
 
-<p>In chapter
-</p>
+<p>In chapter<a name="DOCF2" href="#FOOT2">(2)</a></p><hr size="6">
+<a name="chapter2"></a>
+<a name="SEC2"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC1" 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="#SEC1" 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>
+<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">[Contents]</td>
+<td valign="middle" align="left">[Index]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? 
</a>]</td>
+</tr></table>
+<h1 class="chapter"> 2. Chapter2 </h1>
+
+
 <hr size="6">
 <a name="SEC_Foot"></a>
 <table cellpadding="1" cellspacing="1" border="0">
@@ -91,7 +111,14 @@
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top"><a href="#SEC1">1. 
Chapter</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           
the chapter
 </td></tr>
+<tr><td align="left" valign="top"><a href="#SEC2">2. 
Chapter2</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           
the second chapter
+</td></tr>
 </table>
+<h3><a name="FOOT2" href="#DOCF2">(2)</a></h3>
+<p>Another footnote
+</p>
+<blockquote><p>In a quotation
+</p></blockquote>
 <hr size="1">
 <a name="SEC_About"></a>
 <table cellpadding="1" cellspacing="1" border="0">
Index: texi2html/Tests/formatting_res/footnote_not_closed.passfirst
diff -u texi2html/Tests/formatting_res/footnote_not_closed.passfirst:1.1 
texi2html/Tests/formatting_res/footnote_not_closed.passfirst:1.2
--- texi2html/Tests/formatting_res/footnote_not_closed.passfirst:1.1    Sun Apr 
23 20:47:28 2006
+++ texi2html/Tests/formatting_res/footnote_not_closed.passfirst        Mon May 
29 23:36:10 2006
@@ -10,11 +10,19 @@
 footnote_not_closed.texi(,11) 
 footnote_not_closed.texi(,12) @menu
 footnote_not_closed.texi(,13) * chapter::           the chapter
-footnote_not_closed.texi(,14) @end menu
-footnote_not_closed.texi(,15) 
-footnote_not_closed.texi(,16) @node chapter
-footnote_not_closed.texi(,17) @chapter Chapter
-footnote_not_closed.texi(,18) 
-footnote_not_closed.texi(,19) In chapter
-footnote_not_closed.texi(,20) 
-footnote_not_closed.texi(,21) @bye
+footnote_not_closed.texi(,14) * chapter2::           the second chapter
+footnote_not_closed.texi(,15) @end menu
+footnote_not_closed.texi(,16) 
+footnote_not_closed.texi(,17) @node chapter
+footnote_not_closed.texi(,18) @chapter Chapter
+footnote_not_closed.texi(,19) 
+footnote_not_closed.texi(,20) In address@hidden footnote
+footnote_not_closed.texi(,21) 
+footnote_not_closed.texi(,22) @quotation
+footnote_not_closed.texi(,23) In a quotation
+footnote_not_closed.texi(,24) 
+footnote_not_closed.texi(,25) @node chapter2
+footnote_not_closed.texi(,26) @chapter Chapter2
+footnote_not_closed.texi(,27) 
+footnote_not_closed.texi(,28) 
+footnote_not_closed.texi(,29) @bye
Index: texi2html/Tests/formatting_res/footnote_not_closed.passtexi
diff -u texi2html/Tests/formatting_res/footnote_not_closed.passtexi:1.1 
texi2html/Tests/formatting_res/footnote_not_closed.passtexi:1.2
--- texi2html/Tests/formatting_res/footnote_not_closed.passtexi:1.1     Sun Apr 
23 20:47:28 2006
+++ texi2html/Tests/formatting_res/footnote_not_closed.passtexi Mon May 29 
23:36:10 2006
@@ -10,11 +10,19 @@
 footnote_not_closed.texi(,11) 
 footnote_not_closed.texi(,12) @menu
 footnote_not_closed.texi(,13) * chapter::           the chapter
-footnote_not_closed.texi(,14) @end menu
-footnote_not_closed.texi(,15) 
-footnote_not_closed.texi(,16) @node chapter
-footnote_not_closed.texi(,17) @chapter Chapter
-footnote_not_closed.texi(,18) 
-footnote_not_closed.texi(,19) In chapter
-footnote_not_closed.texi(,20) 
-footnote_not_closed.texi(,21) @bye
+footnote_not_closed.texi(,14) * chapter2::           the second chapter
+footnote_not_closed.texi(,15) @end menu
+footnote_not_closed.texi(,16) 
+footnote_not_closed.texi(,17) @node chapter
+footnote_not_closed.texi(,18) @chapter Chapter
+footnote_not_closed.texi(,19) 
+footnote_not_closed.texi(,20) In address@hidden footnote
+footnote_not_closed.texi(,21) 
+footnote_not_closed.texi(,22) @quotation
+footnote_not_closed.texi(,23) In a quotation
+footnote_not_closed.texi(,24) 
+footnote_not_closed.texi(,25) @node chapter2
+footnote_not_closed.texi(,26) @chapter Chapter2
+footnote_not_closed.texi(,27) 
+footnote_not_closed.texi(,28) 
+footnote_not_closed.texi(,29) @bye
Index: texi2html/Tests/formatting_res/formats_not_closed.2
diff -u texi2html/Tests/formatting_res/formats_not_closed.2:1.5 
texi2html/Tests/formatting_res/formats_not_closed.2:1.6
--- texi2html/Tests/formatting_res/formats_not_closed.2:1.5     Sat Jan 15 
23:45:34 2005
+++ texi2html/Tests/formatting_res/formats_not_closed.2 Mon May 29 23:36:10 2006
@@ -8,3 +8,4 @@
 ** closing `defvar' (l. 48)
 ** closing `deffn' (l. 48)
 ** closing `flushright' (l. 56)
+** closing `group' (l. 64)
Index: texi2html/Tests/formatting_res/formats_not_closed.html
diff -u texi2html/Tests/formatting_res/formats_not_closed.html:1.20 
texi2html/Tests/formatting_res/formats_not_closed.html:1.21
--- texi2html/Tests/formatting_res/formats_not_closed.html:1.20 Wed May 17 
01:51:46 2006
+++ texi2html/Tests/formatting_res/formats_not_closed.html      Mon May 29 
23:36:10 2006
@@ -171,11 +171,11 @@
 <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">[ &gt; ]</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="#Top" title="Up section"> Up 
</a>]</td>
-<td valign="middle" align="left">[ &gt;&gt; ]</td>
+<td valign="middle" align="left">[<a href="#SEC6" 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>
@@ -193,6 +193,31 @@
 <p align="right">text flushed right
 </p>
 <hr size="6">
+<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">[ &gt; ]</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="#Top" title="Up section"> Up 
</a>]</td>
+<td valign="middle" align="left">[ &gt;&gt; ]</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="#Top" title="Cover (top) of 
document">Top</a>]</td>
+<td valign="middle" align="left">[Contents]</td>
+<td valign="middle" align="left">[Index]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? 
</a>]</td>
+</tr></table>
+<h2 class="section"> 6. a section </h2>
+
+<p>group not closed
+</p>
+
+<p>text in group
+</p>
+<hr size="6">
 <a name="SEC_About"></a>
 <table cellpadding="1" cellspacing="1" border="0">
 <tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of 
document">Top</a>]</td>
Index: texi2html/Tests/formatting_res/formats_not_closed.passfirst
diff -u texi2html/Tests/formatting_res/formats_not_closed.passfirst:1.6 
texi2html/Tests/formatting_res/formats_not_closed.passfirst:1.7
--- texi2html/Tests/formatting_res/formats_not_closed.passfirst:1.6     Sat Jan 
15 23:45:34 2005
+++ texi2html/Tests/formatting_res/formats_not_closed.passfirst Mon May 29 
23:36:10 2006
@@ -52,4 +52,12 @@
 formats_not_closed.texi(,53) 
 formats_not_closed.texi(,54) text flushed right
 formats_not_closed.texi(,55) 
-formats_not_closed.texi(,56) @bye
+formats_not_closed.texi(,56) @section a section
+formats_not_closed.texi(,57) 
+formats_not_closed.texi(,58) group not closed
+formats_not_closed.texi(,59) 
+formats_not_closed.texi(,60) @group
+formats_not_closed.texi(,61) 
+formats_not_closed.texi(,62) text in group
+formats_not_closed.texi(,63) 
+formats_not_closed.texi(,64) @bye
Index: texi2html/Tests/formatting_res/formats_not_closed.passtexi
diff -u texi2html/Tests/formatting_res/formats_not_closed.passtexi:1.3 
texi2html/Tests/formatting_res/formats_not_closed.passtexi:1.4
--- texi2html/Tests/formatting_res/formats_not_closed.passtexi:1.3      Sun Jan 
 4 20:52:32 2004
+++ texi2html/Tests/formatting_res/formats_not_closed.passtexi  Mon May 29 
23:36:10 2006
@@ -52,4 +52,12 @@
 formats_not_closed.texi(,53) 
 formats_not_closed.texi(,54) text flushed right
 formats_not_closed.texi(,55) 
-formats_not_closed.texi(,56) @bye
+formats_not_closed.texi(,56) @section a section
+formats_not_closed.texi(,57) 
+formats_not_closed.texi(,58) group not closed
+formats_not_closed.texi(,59) 
+formats_not_closed.texi(,60) @group
+formats_not_closed.texi(,61) 
+formats_not_closed.texi(,62) text in group
+formats_not_closed.texi(,63) 
+formats_not_closed.texi(,64) @bye
Index: texi2html/Tests/formatting_res/formatting.2
diff -u texi2html/Tests/formatting_res/formatting.2:1.25 
texi2html/Tests/formatting_res/formatting.2:1.26
--- texi2html/Tests/formatting_res/formatting.2:1.25    Wed May 17 01:51:46 2006
+++ texi2html/Tests/formatting_res/formatting.2 Mon May 29 23:36:10 2006
@@ -31,11 +31,11 @@
 *** Unknown node in menu entry `description' (l. 11)
 ** Unknown command address@hidden' (left as is) (l. 474 in mymacro)
 ** TeX requires {} (l. 474 in mymacro)
-** no image file for f-ile, (using f-ile.jpg) (l. 474 in mymacro)
+** no image file for f-ile, (using f-ile.jpg) 
 *** no file argument for @image (l. 474 in mymacro)
 *** no file argument for @image (l. 474 in mymacro)
-** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) (l. 474 in mymacro)
-** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) (l. 474 in mymacro)
+** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) 
+** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) 
 *** '}' without opening '{' before:  
 *** '}' without opening '{' before:  after 
 *** '{' without macro. Before:  
@@ -52,11 +52,11 @@
 *** Need a node name for @inforef (l. 474 in mymacro)
 ** Unknown command address@hidden' (left as is) (l. 477 in mymacro)
 ** TeX requires {} (l. 477 in mymacro)
-** no image file for f-ile, (using f-ile.jpg) (l. 477 in mymacro)
+** no image file for f-ile, (using f-ile.jpg) 
 *** no file argument for @image (l. 477 in mymacro)
 *** no file argument for @image (l. 477 in mymacro)
-** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) (l. 477 in mymacro)
-** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) (l. 477 in mymacro)
+** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) 
+** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) 
 *** '}' without opening '{' before:  
 *** '}' without opening '{' before:  after 
 *** '{' without macro. Before:  
Index: texi2html/Tests/formatting_res/fr_formatting.2
diff -u texi2html/Tests/formatting_res/fr_formatting.2:1.24 
texi2html/Tests/formatting_res/fr_formatting.2:1.25
--- texi2html/Tests/formatting_res/fr_formatting.2:1.24 Wed May 17 01:51:46 2006
+++ texi2html/Tests/formatting_res/fr_formatting.2      Mon May 29 23:36:10 2006
@@ -31,11 +31,11 @@
 *** Unknown node in menu entry `description' (l. 11)
 ** Unknown command address@hidden' (left as is) (l. 474 in mymacro)
 ** TeX requires {} (l. 474 in mymacro)
-** no image file for f-ile, (using f-ile.jpg) (l. 474 in mymacro)
+** no image file for f-ile, (using f-ile.jpg) 
 *** no file argument for @image (l. 474 in mymacro)
 *** no file argument for @image (l. 474 in mymacro)
-** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) (l. 474 in mymacro)
-** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) (l. 474 in mymacro)
+** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) 
+** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) 
 *** '}' without opening '{' before:  
 *** '}' without opening '{' before:  after 
 *** '{' without macro. Before:  
@@ -52,11 +52,11 @@
 *** Need a node name for @inforef (l. 474 in mymacro)
 ** Unknown command address@hidden' (left as is) (l. 477 in mymacro)
 ** TeX requires {} (l. 477 in mymacro)
-** no image file for f-ile, (using f-ile.jpg) (l. 477 in mymacro)
+** no image file for f-ile, (using f-ile.jpg) 
 *** no file argument for @image (l. 477 in mymacro)
 *** no file argument for @image (l. 477 in mymacro)
-** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) (l. 477 in mymacro)
-** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) (l. 477 in mymacro)
+** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) 
+** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) 
 *** '}' without opening '{' before:  
 *** '}' without opening '{' before:  after 
 *** '{' without macro. Before:  
Index: texi2html/Tests/formatting_res/icons_fr_formatting.2
diff -u texi2html/Tests/formatting_res/icons_fr_formatting.2:1.5 
texi2html/Tests/formatting_res/icons_fr_formatting.2:1.6
--- texi2html/Tests/formatting_res/icons_fr_formatting.2:1.5    Wed May 17 
01:51:46 2006
+++ texi2html/Tests/formatting_res/icons_fr_formatting.2        Mon May 29 
23:36:10 2006
@@ -31,11 +31,11 @@
 *** Unknown node in menu entry `description' (l. 11)
 ** Unknown command address@hidden' (left as is) (l. 474 in mymacro)
 ** TeX requires {} (l. 474 in mymacro)
-** no image file for f-ile, (using f-ile.jpg) (l. 474 in mymacro)
+** no image file for f-ile, (using f-ile.jpg) 
 *** no file argument for @image (l. 474 in mymacro)
 *** no file argument for @image (l. 474 in mymacro)
-** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) (l. 474 in mymacro)
-** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) (l. 474 in mymacro)
+** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) 
+** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) 
 *** '}' without opening '{' before:  
 *** '}' without opening '{' before:  after 
 *** '{' without macro. Before:  
@@ -52,11 +52,11 @@
 *** Need a node name for @inforef (l. 474 in mymacro)
 ** Unknown command address@hidden' (left as is) (l. 477 in mymacro)
 ** TeX requires {} (l. 477 in mymacro)
-** no image file for f-ile, (using f-ile.jpg) (l. 477 in mymacro)
+** no image file for f-ile, (using f-ile.jpg) 
 *** no file argument for @image (l. 477 in mymacro)
 *** no file argument for @image (l. 477 in mymacro)
-** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) (l. 477 in mymacro)
-** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) (l. 477 in mymacro)
+** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) 
+** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) 
 *** '}' without opening '{' before:  
 *** '}' without opening '{' before:  after 
 *** '{' without macro. Before:  
Index: texi2html/Tests/formatting_res/tables.2
diff -u texi2html/Tests/formatting_res/tables.2:1.1 
texi2html/Tests/formatting_res/tables.2:1.2
--- texi2html/Tests/formatting_res/tables.2:1.1 Wed May 17 01:51:46 2006
+++ texi2html/Tests/formatting_res/tables.2     Mon May 29 23:36:10 2006
@@ -1,6 +1,6 @@
-** closing ref (l. 16)
+** closing @-command ref (l. 16)
 ** closing `table' (l. 16)
 ** @item outside of table or list 
 *** @end table without corresponding opening 
-** closing ref (l. 19)
+** closing @-command ref (l. 19)
 *** '}' without opening '{' before:  (l. 20)
Index: texi2html/Tests/formatting_res/to_utf8_formatting.2
diff -u texi2html/Tests/formatting_res/to_utf8_formatting.2:1.4 
texi2html/Tests/formatting_res/to_utf8_formatting.2:1.5
--- texi2html/Tests/formatting_res/to_utf8_formatting.2:1.4     Wed May 17 
01:51:46 2006
+++ texi2html/Tests/formatting_res/to_utf8_formatting.2 Mon May 29 23:36:10 2006
@@ -31,11 +31,11 @@
 *** Unknown node in menu entry `description' (l. 11)
 ** Unknown command address@hidden' (left as is) (l. 474 in mymacro)
 ** TeX requires {} (l. 474 in mymacro)
-** no image file for f-ile, (using f-ile.jpg) (l. 474 in mymacro)
+** no image file for f-ile, (using f-ile.jpg) 
 *** no file argument for @image (l. 474 in mymacro)
 *** no file argument for @image (l. 474 in mymacro)
-** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) (l. 474 in mymacro)
-** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) (l. 474 in mymacro)
+** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) 
+** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) 
 *** '}' without opening '{' before:  
 *** '}' without opening '{' before:  after 
 *** '{' without macro. Before:  
@@ -52,11 +52,11 @@
 *** Need a node name for @inforef (l. 474 in mymacro)
 ** Unknown command address@hidden' (left as is) (l. 477 in mymacro)
 ** TeX requires {} (l. 477 in mymacro)
-** no image file for f-ile, (using f-ile.jpg) (l. 477 in mymacro)
+** no image file for f-ile, (using f-ile.jpg) 
 *** no file argument for @image (l. 477 in mymacro)
 *** no file argument for @image (l. 477 in mymacro)
-** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) (l. 477 in mymacro)
-** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) (l. 477 in mymacro)
+** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) 
+** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) 
 *** '}' without opening '{' before:  
 *** '}' without opening '{' before:  after 
 *** '{' without macro. Before:  
Index: texi2html/Tests/formatting_res/weird_quotes_formatting.2
diff -u texi2html/Tests/formatting_res/weird_quotes_formatting.2:1.3 
texi2html/Tests/formatting_res/weird_quotes_formatting.2:1.4
--- texi2html/Tests/formatting_res/weird_quotes_formatting.2:1.3        Wed May 
17 01:51:46 2006
+++ texi2html/Tests/formatting_res/weird_quotes_formatting.2    Mon May 29 
23:36:10 2006
@@ -31,11 +31,11 @@
 *** Unknown node in menu entry `description' (l. 11)
 ** Unknown command address@hidden' (left as is) (l. 474 in mymacro)
 ** TeX requires {} (l. 474 in mymacro)
-** no image file for f-ile, (using f-ile.jpg) (l. 474 in mymacro)
+** no image file for f-ile, (using f-ile.jpg) 
 *** no file argument for @image (l. 474 in mymacro)
 *** no file argument for @image (l. 474 in mymacro)
-** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) (l. 474 in mymacro)
-** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) (l. 474 in mymacro)
+** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) 
+** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) 
 *** '}' without opening '{' before:  
 *** '}' without opening '{' before:  after 
 *** '{' without macro. Before:  
@@ -52,11 +52,11 @@
 *** Need a node name for @inforef (l. 474 in mymacro)
 ** Unknown command address@hidden' (left as is) (l. 477 in mymacro)
 ** TeX requires {} (l. 477 in mymacro)
-** no image file for f-ile, (using f-ile.jpg) (l. 477 in mymacro)
+** no image file for f-ile, (using f-ile.jpg) 
 *** no file argument for @image (l. 477 in mymacro)
 *** no file argument for @image (l. 477 in mymacro)
-** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) (l. 477 in mymacro)
-** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) (l. 477 in mymacro)
+** no image file for address@hidden:jk _" %@:}, (using address@hidden:jk _" 
%@:}.jpg) 
+** no image file for @file{f--ile}@@@., (using @file{f--ile}@@@address@hidden 
ext} address@hidden) 
 *** '}' without opening '{' before:  
 *** '}' without opening '{' before:  after 
 *** '{' without macro. Before:  
Index: texi2html/Tests/test.sh
diff -u texi2html/Tests/test.sh:1.60 texi2html/Tests/test.sh:1.61
--- texi2html/Tests/test.sh:1.60        Wed May 17 01:51:45 2006
+++ texi2html/Tests/test.sh     Mon May 29 23:36:10 2006
@@ -44,7 +44,7 @@
        echo "  !!! no file $dir/$texi_file"
        return
 fi
-(cd $dir && rm $basename.html ${basename}_???.html ${basename}_??.html 
${basename}_?.html ${basename}_frame.html ${basename}_toc_frame.html 
${basename}_???.htm ${basename}_??.htm ${basename}_?.htm ${basename}_????.png 
${basename}_???.png ${basename}_??.png ${basename}_?.png ${basename}_l2h.css 
${basename}_l2h.html ${basename}_l2h_images.* ${basename}_l2h_labels.pl 
${basename}_l2h.tex $basename.passfirst $basename.passtexi $basename.2 
l2h_cache.pm) > /dev/null 2>&1
+(cd $dir && rm $basename.html ${basename}_???.html ${basename}_??.html 
${basename}_?.html ${basename}_frame.html ${basename}_toc_frame.html 
${basename}_???.htm ${basename}_??.htm ${basename}_?.htm ${basename}_????.png 
${basename}_???.png ${basename}_??.png ${basename}_?.png ${basename}_l2h.css 
${basename}_l2h.html ${basename}_l2h_images.* ${basename}_l2h_labels.pl 
${basename}_l2h.tex $basename.passfirst $basename.passtexi $basename.2 
${basename}-l2h_cache.pm) > /dev/null 2>&1
 export T2H_HOME=../..
 
 # generate a dump of the first pass
@@ -221,6 +221,7 @@
 #test_texi floats float.texi "-split chapter -node-files -top-file index.html" 
0  texi float_node_files 
 test_texi floats float_with_at_commands.texi
 test_texi floats float_copying.texi "-split chapter -output ."
+test_texi floats caption_not_closed.texi
 test_texi formatting clean.texi
 test_texi formatting formatting.texi
 test_texi formatting formatting.texi "-split section -nosec-nav -nonumber 
-toc-links -def-table -short-ref -no-separated-footnotes -prefix 
exotic_formatting -output ." 0 texi exotic_formatting
@@ -253,7 +254,10 @@
 test_texi formatting comments.texi
 test_texi formatting comments.texi "-init redefine_need.init -prefix 
comments_redefined" 0 texi  comments_redefined 
 test_texi formatting equivalent_nodes.texi "" 5
+test_texi formatting bad_nesting.texi
 test_texi formatting formats_not_closed.texi "" 12
+test_texi formatting commands_not_closed.texi "" 4
+test_texi formatting math_not_closed.texi "--l2h --iftex" 8
 test_texi formatting not_closed_in_menu.texi "" 7
 test_texi formatting macro_call_not_closed.texi "" 1
 test_texi formatting macro_def_not_closed.texi "" 1
Index: texi2html/doc/texi2html.html
diff -u texi2html/doc/texi2html.html:1.39 texi2html/doc/texi2html.html:1.40
--- texi2html/doc/texi2html.html:1.39   Wed May 17 01:51:46 2006
+++ texi2html/doc/texi2html.html        Mon May 29 23:36:10 2006
@@ -31,7 +31,7 @@
 permission notice may be stated in a translation approved
 by the Free Software Foundation.
  -->
-<!-- Created on May, 17 2006 by texi2html @PACKAGE_VERSION@ -->
+<!-- Created on May, 30 2006 by texi2html 1.77 -->
 <!--
 Written by: Lionel Cons <address@hidden> (original author)
             Karl Berry  <address@hidden>
@@ -48,7 +48,7 @@
 <meta name="keywords" content="Texi2HTML &ndash; Texinfo to HTML v1.77: 
Texi2HTML">
 <meta name="resource-type" content="document">
 <meta name="distribution" content="global">
-<meta name="Generator" content="texi2html @PACKAGE_VERSION@">
+<meta name="Generator" content="texi2html 1.77">
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <style type="text/css">
 <!--
@@ -3212,7 +3212,7 @@
 </td></tr>
 <tr><td align="left" valign="top"><a href="#SEC65">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="#SEC66">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="#SEC66">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="#SEC69">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>
@@ -3702,21 +3702,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="IDX212"></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="IDX213"></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 $alt_text</i>
-<a name="IDX212"></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="IDX214"></a>
 </dt>
 <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. <var>$alt_text</var> is the alternate text, it may be 
undefined.
+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="IDX213"></a>
+<a name="IDX215"></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.
@@ -3725,7 +3749,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 address@hidden $explanation_text 
$explanation_simply_formatted</i>
-<a name="IDX214"></a>
+<a name="IDX216"></a>
 </dt>
 <dd><p><var>$acronym_texi</var> is the acronym argument with texinfo 
@-commands, 
 <var>$acronym_text</var> is formatted. 
@@ -3733,13 +3757,13 @@
 <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>address@hidden</var> is a 
+explanation exists, coming from previous <code>@acronym</code> or as an arg of 
+this command, the other args are defined: <var>address@hidden</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">
@@ -3774,7 +3798,7 @@
 
 <dl>
 <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="IDX215"></a>
+<a name="IDX217"></a>
 </dt>
 <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.
@@ -3800,7 +3824,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $protected_text <b>protect_text</b><i> $text</i>
-<a name="IDX216"></a>
+<a name="IDX218"></a>
 </dt>
 <dd><p>The function processes the unprotected text <var>$text</var> and returns
 the resulting protected text <var>$protected_text</var>.
@@ -3811,7 +3835,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $resulting_text <b>empty_line</b><i> 
$empty_line $state</i>
-<a name="IDX217"></a>
+<a name="IDX219"></a>
 </dt>
 <dd><p>This function processes an <var>$empty_line</var> and returns the 
resulting
 text <var>$resulting_text</var>. <var>$state</var> is a structure that holds 
informations
@@ -3846,13 +3870,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="IDX218"></a>
-&lsquo;<samp>--lang</samp>&rsquo;, <a name="IDX219"></a>
+document (set by <a name="IDX220"></a>
+&lsquo;<samp>--lang</samp>&rsquo;, <a name="IDX221"></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="IDX220"></a>
+<p>The strings are found in a hash reference, <a name="IDX222"></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
@@ -3938,7 +3962,7 @@
 </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="IDX221"></a>
+<a name="IDX223"></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. 
@@ -3955,7 +3979,7 @@
 
 <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="IDX222"></a>
+<a name="IDX224"></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 
@@ -3996,7 +4020,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $text <b>internal_ref</b><i> $command $href 
$short_name $name $is_section</i>
-<a name="IDX223"></a>
+<a name="IDX225"></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 
@@ -4036,17 +4060,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="IDX224"></a>
+key of the <a name="IDX226"></a>
 <code>%paragraph_style</code> hash. 
 The value is used in the function doing the formatting of the paragraphs. 
-See section <a href="#SEC66">Formatting or not a paragraph or a preformatted 
region</a>.
+See section <a href="#SEC66">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="IDX225"></a>
+<a name="IDX227"></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.
@@ -4072,7 +4096,7 @@
 <td valign="middle" align="left">[<a href="#SEC99" 
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">
@@ -4109,7 +4133,7 @@
 </p>
 <dl>
 <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="IDX226"></a>
+<a name="IDX228"></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
@@ -4144,7 +4168,7 @@
 
 <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 
$command_stack_at_end $command_stack_at_begin</i>
-<a name="IDX227"></a>
+<a name="IDX229"></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
@@ -4206,7 +4230,7 @@
 
 <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="IDX228"></a>
+hash, <a name="IDX230"></a>
 <code>%format_in_paragraph</code> with a true value.
 </p>
 <hr size="6">
@@ -4232,12 +4256,12 @@
 
 
 <p>Here we see how a whole complex format is formatted. For the formatting
-of the text, see <a href="#SEC66">Formatting or not a paragraph or a 
preformatted region</a>.
+of the text, see <a href="#SEC66">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="IDX229"></a>
+hash reference is called <a name="IDX231"></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>, 
@@ -4264,7 +4288,7 @@
 </dl>
 
 <p>The enclosed text will be formatted as described in
-<a href="#SEC66">Formatting or not a paragraph or a preformatted region</a>, 
and the name of the complex
+<a href="#SEC66">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
@@ -4272,10 +4296,10 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $complex_format_text <b>complex_format</b><i> 
$format_name $preformatted_text</i>
-<a name="IDX230"></a>
+<a name="IDX232"></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="#SEC66">Formatting or not a 
paragraph or a preformatted region</a>.
+text allready formatted as described in <a href="#SEC66">Formatting (or not) a 
paragraph and a preformatted region</a>.
 This function returns the whole complex format.
 </p></dd></dl>
 
@@ -4344,7 +4368,7 @@
 
 <p>The default is to apply the command to the text item, however it is possible
 to avoid it.
-The hash <a name="IDX231"></a>
+The hash <a name="IDX233"></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
@@ -4366,7 +4390,7 @@
 <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="IDX232"></a>
+<a name="IDX234"></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,
@@ -4389,7 +4413,7 @@
 </p>
 <dl>
 <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="IDX233"></a>
+<a name="IDX235"></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 
@@ -4406,7 +4430,7 @@
 
 <dl>
 <dt><u>Function Reference:</u> $table_line <b>table_line</b><i> $text</i>
-<a name="IDX234"></a>
+<a name="IDX236"></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. 
@@ -4419,7 +4443,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $multitable_cell <b>cell</b><i> $text</i>
-<a name="IDX235"></a>
+<a name="IDX237"></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>.
@@ -4428,10 +4452,10 @@
 
 <dl>
 <dt><u>Function Reference:</u> $multitable_row <b>row</b><i> $text 
$item_command</i>
-<a name="IDX236"></a>
+<a name="IDX238"></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="IDX237"></a>
+the row text, with cells allready formatted with the <a name="IDX239"></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
@@ -4461,7 +4485,7 @@
 </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="IDX238"></a>
+<p>If the Texinfo command is a key of the <a name="IDX240"></a>
 <code>%format_map</code>, the associated
 value is used to specify the formatting of the construct, otherwise a function 
 is called. 
@@ -4488,19 +4512,19 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $whole_table_list <b>table_list</b><i> $command 
$text</i>
-<a name="IDX239"></a>
+<a name="IDX241"></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="IDX240"></a>
+<p>If you still want to use <a name="IDX242"></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="IDX241"></a>
+<a name="IDX243"></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.
@@ -4560,7 +4584,7 @@
 </tr></table>
 <h3 class="subsection"> 7.12.1 Customizing the interpretation of a definition 
line </h3>
 
-<p>The keys of the hash <a name="IDX242"></a>
+<p>The keys of the hash <a name="IDX244"></a>
 <code>%def_map</code> are definition command names.
 There are two types of entries:
 </p>
@@ -4626,10 +4650,10 @@
 <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="IDX243"></a>
+<a name="IDX245"></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
@@ -4637,13 +4661,13 @@
 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="IDX244"></a>
+<a name="IDX246"></a>
 </dt>
 <dd><p>This function formats the definition line. <var>$category</var> is the 
category
-formatted with <a name="IDX245"></a>
+formatted with <a name="IDX247"></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. 
@@ -4651,19 +4675,19 @@
 </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="IDX246"></a>
+<a name="IDX248"></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="IDX247"></a>
+<a name="IDX249"></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>.
@@ -4697,7 +4721,7 @@
 with the corresponding function reference:
 </p><dl>
 <dt><u>Function Reference:</u> $heading_text <b>heading</b><i> 
\%element_reference</i>
-<a name="IDX248"></a>
+<a name="IDX250"></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:
@@ -4726,7 +4750,7 @@
 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="IDX249"></a>
+<a name="IDX251"></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
@@ -4761,20 +4785,20 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $raw_region <b>raw</b><i> $command $text</i>
-<a name="IDX250"></a>
+<a name="IDX252"></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="#SEC90">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="IDX251"></a>
+<a name="IDX253"></a>
 </dt>
 <dd><p><var>$text</var> is the text appearing within the cartouche.
 </p></dd></dl>
@@ -4785,7 +4809,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $prepended_string 
<b>quotation_prepend_text</b><i> $text</i>
-<a name="IDX252"></a>
+<a name="IDX254"></a>
 </dt>
 <dd><p><var>$text</var> is the argument of the quotation with @-commands not 
 interpreted. This function
@@ -4797,7 +4821,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $quotation <b>quotation</b><i> $quotation_text 
$argument_text $argument_text_texi</i>
-<a name="IDX253"></a>
+<a name="IDX255"></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 argument 
@@ -4836,7 +4860,7 @@
 part of the menu; 
 </li></ul>
 
-<p>The simple formatting is used if <a name="IDX254"></a>
+<p>The simple formatting is used if <a name="IDX256"></a>
 <code>$SIMPLE_MENU</code> is true, 
 otherwise the format with tables is used (this is the default).
 </p>
@@ -4937,7 +4961,7 @@
 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="IDX255"></a>
+<a name="IDX257"></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>
@@ -4950,16 +4974,17 @@
 </p></dd></dl>
 
 <dl>
-<dt><u>Function Reference:</u> $description <b>menu_description</b><i> 
$description_text \%state</i>
-<a name="IDX256"></a>
+<dt><u>Function Reference:</u> $description <b>menu_description</b><i> 
$description_text \%state $element_text</i>
+<a name="IDX258"></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="IDX257"></a>
+<a name="IDX259"></a>
 </dt>
 <dd><p><var>$text</var> is the text of the menu comment. It is always in a 
preformatted 
 environment.
@@ -4972,7 +4997,7 @@
 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="IDX258"></a>
+<a name="IDX260"></a>
 </dt>
 <dd><p><var>$link_text</var> is the text corresponding with the link name, 
<var>$href</var>
 is the link hypertextual reference.
@@ -5033,25 +5058,25 @@
 <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="IDX259"></a>
+node is used instead of the node name. If <a name="IDX261"></a>
 <code>$NODE_NAME_IN_MENU</code> is 
-true, however, node names are used. If <a name="IDX260"></a>
+true, however, node names are used. If <a name="IDX262"></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="IDX261"></a>
+<p>A symbol, <a name="IDX263"></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="IDX262"></a>
+If <a name="IDX264"></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="IDX263"></a>
+<a name="IDX265"></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>
@@ -5060,7 +5085,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $menu <b>menu</b><i> $menu_components_text</i>
-<a name="IDX264"></a>
+<a name="IDX266"></a>
 </dt>
 <dd><p><var>$menu_components_text</var> is the formatted menu components text, 
obtained
 as explained above.
@@ -5128,7 +5153,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $target <b>index_entry_label</b><i> $identifier 
$preformatted</i>
-<a name="IDX265"></a>
+<a name="IDX267"></a>
 </dt>
 <dd><p><var>$identifier</var> should be used to create
 a target for links (typically associated with a name or id 
@@ -5166,7 +5191,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="IDX266"></a>
+by a variable <a name="IDX268"></a>
 <code>$SPLIT_INDEX</code> if set. The default is to split
 indices after 100 entries.
 </p>
@@ -5177,7 +5202,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="IDX267"></a>
+<a name="IDX269"></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.
@@ -5192,7 +5217,7 @@
 <dt> <em>formatting of a summary</em></dt>
 <dd><dl>
 <dt><u>Function Reference:</u> $summary <b>index_summary</b><i> address@hidden 
address@hidden</i>
-<a name="IDX268"></a>
+<a name="IDX270"></a>
 </dt>
 <dd><p><var>address@hidden</var> and <var>address@hidden</var> contain the
 formatted summary letters, formatted with the above function.
@@ -5202,7 +5227,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="IDX269"></a>
+<a name="IDX271"></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>
@@ -5214,7 +5239,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="IDX270"></a>
+<a name="IDX272"></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> 
@@ -5227,7 +5252,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="IDX271"></a>
+<a name="IDX273"></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
@@ -5336,7 +5361,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> (address@hidden, address@hidden) 
<b>caption_shortcaption</b><i> \%float address@hidden address@hidden</i>
-<a name="IDX272"></a>
+<a name="IDX274"></a>
 </dt>
 <dd><p><var>\%float</var> is the structure defined above. 
<var>address@hidden</var> and 
 <var>address@hidden</var> are references on arrays containing the 
@@ -5349,7 +5374,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $text <b>float</b><i> $float_text \%float 
$caption_text $shortcaption_text</i>
-<a name="IDX273"></a>
+<a name="IDX275"></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
@@ -5384,7 +5409,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $style_texi_returned 
<b>listoffloats_style</b><i> $style_texi</i>
-<a name="IDX274"></a>
+<a name="IDX276"></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
@@ -5398,7 +5423,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $float_style_texi_returned 
<b>listoffloats_float_style</b><i> $style_texi \%float</i>
-<a name="IDX275"></a>
+<a name="IDX277"></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
@@ -5407,7 +5432,7 @@
 
 <dl>
 <dt><u>Function Reference:</u> $caption_texi_returned 
<b>listoffloats_caption</b><i> \%float</i>
-<a name="IDX276"></a>
+<a name="IDX278"></a>
 </dt>
 <dd><p><var>\%float</var> is the structure described 
 above. This function reference returns a caption to be formatted in the
@@ -5418,7 +5443,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="IDX277"></a>
+<a name="IDX279"></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
@@ -5431,7 +5456,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $listoffloats <b>listoffloats</b><i> 
$style_texi $style address@hidden</i>
-<a name="IDX278"></a>
+<a name="IDX280"></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 
@@ -5470,7 +5495,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> (address@hidden $text_for_document) 
<b>foot_line_and_ref</b><i> $number_in_doc $number_in_page $footnote_id 
$place_id $document_file $footnote_file address@hidden \%state</i>
-<a name="IDX279"></a>
+<a name="IDX281"></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.
@@ -5503,7 +5528,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> <b>foot_section</b><i> address@hidden</i>
-<a name="IDX280"></a>
+<a name="IDX282"></a>
 </dt>
 <dd><p>This function formats a group of footnotes. <var>address@hidden</var> 
is a
 reference on an array holding the lines of all the footnote entries
@@ -5548,7 +5573,7 @@
 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="IDX281"></a>
+<p>The @-commands that are keys of the <a name="IDX283"></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
@@ -5576,7 +5601,7 @@
 </p>
 <dl>
 <dt><u>Function Reference:</u> $status 
<b>$command_handler{'$command'}</b><i>-&gt;{'init'} $command $text $count</i>
-<a name="IDX282"></a>
+<a name="IDX284"></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
@@ -5587,7 +5612,7 @@
 
 <dl>
 <dt><u>Function Reference:</u> $result 
<b>$command_handler{'$command'}</b><i>-&gt;{'expand'} $command $count $state 
$text</i>
-<a name="IDX283"></a>
+<a name="IDX285"></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 
@@ -5598,20 +5623,20 @@
 <p>There are three places for user defined functions, associated with arrays:
 </p><dl compact="compact">
 <dt> <code>@command_handler_init</code>
-<a name="IDX284"></a>
+<a name="IDX286"></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="IDX285"></a>
+<a name="IDX287"></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="IDX286"></a>
+<a name="IDX288"></a>
 </dt>
 <dd><p>he function references in that array are called after the end of the
 output generation.
@@ -5667,7 +5692,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="IDX287"></a>
+<a name="IDX289"></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
@@ -5721,17 +5746,17 @@
 
 
 <p>Commands which don't appear in the hashes 
-<a name="IDX288"></a>
-<code>%simple_map</code>, <a name="IDX289"></a>
-<code>%simple_map_pre</code>,
 <a name="IDX290"></a>
+<code>%simple_map</code>, <a name="IDX291"></a>
+<code>%simple_map_pre</code>,
+<a name="IDX292"></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="IDX291"></a>
+<a name="IDX293"></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
@@ -5743,16 +5768,16 @@
 </p></dd></dl>
 
 <p>Commands with braces not specified above 
-nor in <a name="IDX292"></a>
-<code>%style_map</code>, <a name="IDX293"></a>
+nor in <a name="IDX294"></a>
+<code>%style_map</code>, <a name="IDX295"></a>
 <code>%style_map_pre</code> and
-<a name="IDX294"></a>
+<a name="IDX296"></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="IDX295"></a>
+<a name="IDX297"></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
@@ -6049,8 +6074,10 @@
 changed completely. There
 are much more arguments to give informations about the context, and
 normal_text now does more text manipulation. 
-</li><li> New argument for image
-(the alt text). 
+</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.
@@ -6289,7 +6316,7 @@
 <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="#IDX218">lang</a></td><td 
valign="top"><a href="#SEC61">7.6 Customizing strings written by 
<code>texi2html</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX220">lang</a></td><td 
valign="top"><a href="#SEC61">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="SEC99_7">M</a></th><td></td><td></td></tr>
@@ -6402,16 +6429,16 @@
 <tr><td></td><td valign="top"><a 
href="#IDX167"><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="#IDX210"><code>$anchor</code></a></td><td valign="top"><a 
href="#SEC59">7.4 Formatting of special simple commands</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#IDX260"><code>$AVOID_MENU_REDUNDANCY</code></a></td><td valign="top"><a 
href="#SEC82">7.15.4 The formatting of the menu in a table</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX262"><code>$AVOID_MENU_REDUNDANCY</code></a></td><td valign="top"><a 
href="#SEC82">7.15.4 The formatting of the menu in a table</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#IDX164"><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="#IDX166"><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="#IDX120"><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="#IDX137"><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="#IDX237"><code>$cell</code></a></td><td 
valign="top"><a href="#SEC71">7.11.1 Formatting individual table and list 
items</a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX239"><code>$cell</code></a></td><td 
valign="top"><a href="#SEC71">7.11.1 Formatting individual table and list 
items</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#IDX206"><code>$CLOSE_QUOTE_SYMBOL</code></a></td><td valign="top"><a 
href="#SEC56">7.3.1 An interface for commands formatting with a hash 
reference</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#IDX208"><code>$CLOSE_QUOTE_SYMBOL</code></a></td><td valign="top"><a 
href="#SEC57">7.3.2 An interface for commands formatting with a 
string</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#IDX229"><code>$complex_format_map</code></a></td><td valign="top"><a 
href="#SEC69">7.10 Formatting of complex formats (<code>@example</code>, 
<code>@display</code>&hellip;)</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX231"><code>$complex_format_map</code></a></td><td valign="top"><a 
href="#SEC69">7.10 Formatting of complex formats (<code>@example</code>, 
<code>@display</code>&hellip;)</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#IDX126"><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="#IDX128"><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="#IDX130"><code>$CSS_LINES</code></a></td><td valign="top"><a 
href="#SEC39">6.7 Customizing the <code>texi2html</code> css lines</a></td></tr>
@@ -6419,7 +6446,7 @@
 <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="#IDX245"><code>$definition_category</code></a></td><td valign="top"><a 
href="#SEC75">7.12.2 Customization of the definition formatting</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX247"><code>$definition_category</code></a></td><td valign="top"><a 
href="#SEC75">7.12.2 Customization of the definition formatting</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#IDX162"><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="#IDX163"><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>
@@ -6440,15 +6467,15 @@
 <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="#IDX219"><code>$LANG</code></a></td><td 
valign="top"><a href="#SEC61">7.6 Customizing strings written by 
<code>texi2html</code></a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#IDX220"><code>$LANGUAGES</code></a></td><td valign="top"><a 
href="#SEC61">7.6 Customizing strings written by 
<code>texi2html</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="#IDX221"><code>$LANG</code></a></td><td 
valign="top"><a href="#SEC61">7.6 Customizing strings written by 
<code>texi2html</code></a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX222"><code>$LANGUAGES</code></a></td><td valign="top"><a 
href="#SEC61">7.6 Customizing strings written by 
<code>texi2html</code></a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#SEC93"><code>$LANGUAGES</code></a></td><td valign="top"><a 
href="#SEC93">A.1 Translating strings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#IDX263"><code>$MENU_PRE_STYLE</code></a></td><td valign="top"><a 
href="#SEC82">7.15.4 The formatting of the menu in a table</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#IDX261"><code>$MENU_SYMBOL</code></a></td><td valign="top"><a 
href="#SEC82">7.15.4 The formatting of the menu in a table</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX265"><code>$MENU_PRE_STYLE</code></a></td><td valign="top"><a 
href="#SEC82">7.15.4 The formatting of the menu in a table</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX263"><code>$MENU_SYMBOL</code></a></td><td valign="top"><a 
href="#SEC82">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="#IDX188"><code>$NODE_FILES</code></a></td><td valign="top"><a 
href="#SEC50">6.12 Customizing the file names</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#IDX259"><code>$NODE_NAME_IN_MENU</code></a></td><td valign="top"><a 
href="#SEC82">7.15.4 The formatting of the menu in a table</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX261"><code>$NODE_NAME_IN_MENU</code></a></td><td valign="top"><a 
href="#SEC82">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="#IDX205"><code>$OPEN_QUOTE_SYMBOL</code></a></td><td valign="top"><a 
href="#SEC56">7.3.1 An interface for commands formatting with a hash 
reference</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#IDX207"><code>$OPEN_QUOTE_SYMBOL</code></a></td><td valign="top"><a 
href="#SEC57">7.3.2 An interface for commands formatting with a 
string</a></td></tr>
@@ -6477,10 +6504,10 @@
 <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="#IDX254"><code>$SIMPLE_MENU</code></a></td><td valign="top"><a 
href="#SEC78">7.15 Menu formatting</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX256"><code>$SIMPLE_MENU</code></a></td><td valign="top"><a 
href="#SEC78">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="#IDX266"><code>$SPLIT_INDEX</code></a></td><td valign="top"><a 
href="#SEC85">7.16.2 Customizing the formatting of index lists</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX268"><code>$SPLIT_INDEX</code></a></td><td valign="top"><a 
href="#SEC85">7.16.2 Customizing the formatting of index lists</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#SEC93"><code>$T2H_OBSOLETE_STRINGS</code></a></td><td valign="top"><a 
href="#SEC93">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>
@@ -6496,7 +6523,7 @@
 <tr><td></td><td valign="top"><a 
href="#IDX168"><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="#IDX262"><code>$UNNUMBERED_SYMBOL_IN_MENU</code></a></td><td 
valign="top"><a href="#SEC82">7.15.4 The formatting of the menu in a 
table</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX264"><code>$UNNUMBERED_SYMBOL_IN_MENU</code></a></td><td 
valign="top"><a href="#SEC82">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="#IDX149"><code>$USER</code></a></td><td 
valign="top"><a href="#SEC42">6.10 Customizing the page footer</a></td></tr>
@@ -6511,34 +6538,34 @@
 <tr><td></td><td valign="top"><a 
href="#IDX123"><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="#IDX122"><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="#IDX281"><code>%command_handler</code></a></td><td valign="top"><a 
href="#SEC90">7.19 Bypassing normal formatting</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX283"><code>%command_handler</code></a></td><td valign="top"><a 
href="#SEC90">7.19 Bypassing normal formatting</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#IDX125"><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="#IDX127"><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="#IDX242"><code>%def_map</code></a></td><td valign="top"><a 
href="#SEC74">7.12.1 Customizing the interpretation of a definition 
line</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#IDX228"><code>%format_in_paragraph</code></a></td><td valign="top"><a 
href="#SEC68">7.9.2 Avoiding paragraphs in formats</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#IDX238"><code>%format_map</code></a></td><td valign="top"><a 
href="#SEC72">7.11.2 Formatting of a whole table or list</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX244"><code>%def_map</code></a></td><td valign="top"><a 
href="#SEC74">7.12.1 Customizing the interpretation of a definition 
line</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX230"><code>%format_in_paragraph</code></a></td><td valign="top"><a 
href="#SEC68">7.9.2 Avoiding paragraphs in formats</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#IDX240"><code>%format_map</code></a></td><td valign="top"><a 
href="#SEC72">7.11.2 Formatting of a whole table or list</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX242"><code>%format_map</code></a></td><td valign="top"><a 
href="#SEC72">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="#IDX287"><code>%misc_command</code></a></td><td valign="top"><a 
href="#SEC91">7.20 Customizing other commands, and unknown 
commands</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX289"><code>%misc_command</code></a></td><td valign="top"><a 
href="#SEC91">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="#IDX121"><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="#IDX224"><code>%paragraph_style</code></a></td><td valign="top"><a 
href="#SEC65">7.8 Commands used for centering and flushing of text</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX226"><code>%paragraph_style</code></a></td><td valign="top"><a 
href="#SEC65">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="#IDX199"><code>%pre_map</code></a></td><td valign="top"><a 
href="#SEC54">7.2 Customizing the formatting of commands without 
argument</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#IDX195"><code>%simple_map</code></a></td><td valign="top"><a 
href="#SEC54">7.2 Customizing the formatting of commands without 
argument</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#IDX288"><code>%simple_map</code></a></td><td valign="top"><a 
href="#SEC91">7.20 Customizing other commands, and unknown 
commands</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX290"><code>%simple_map</code></a></td><td valign="top"><a 
href="#SEC91">7.20 Customizing other commands, and unknown 
commands</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#IDX196"><code>%simple_map_pre</code></a></td><td valign="top"><a 
href="#SEC54">7.2 Customizing the formatting of commands without 
argument</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#IDX289"><code>%simple_map_pre</code></a></td><td valign="top"><a 
href="#SEC91">7.20 Customizing other commands, and unknown 
commands</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX291"><code>%simple_map_pre</code></a></td><td valign="top"><a 
href="#SEC91">7.20 Customizing other commands, and unknown 
commands</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#IDX197"><code>%simple_map_texi</code></a></td><td valign="top"><a 
href="#SEC54">7.2 Customizing the formatting of commands without 
argument</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#IDX290"><code>%simple_map_texi</code></a></td><td valign="top"><a 
href="#SEC91">7.20 Customizing other commands, and unknown 
commands</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#IDX231"><code>%special_list_commands</code></a></td><td valign="top"><a 
href="#SEC71">7.11.1 Formatting individual table and list items</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX292"><code>%simple_map_texi</code></a></td><td valign="top"><a 
href="#SEC91">7.20 Customizing other commands, and unknown 
commands</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX233"><code>%special_list_commands</code></a></td><td valign="top"><a 
href="#SEC71">7.11.1 Formatting individual table and list items</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#IDX201"><code>%style_map</code></a></td><td valign="top"><a 
href="#SEC55">7.3 Customizing accent, style and other simple 
commands</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#IDX292"><code>%style_map</code></a></td><td valign="top"><a 
href="#SEC91">7.20 Customizing other commands, and unknown 
commands</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX294"><code>%style_map</code></a></td><td valign="top"><a 
href="#SEC91">7.20 Customizing other commands, and unknown 
commands</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#IDX202"><code>%style_map_pre</code></a></td><td valign="top"><a 
href="#SEC55">7.3 Customizing accent, style and other simple 
commands</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#IDX293"><code>%style_map_pre</code></a></td><td valign="top"><a 
href="#SEC91">7.20 Customizing other commands, and unknown 
commands</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX295"><code>%style_map_pre</code></a></td><td valign="top"><a 
href="#SEC91">7.20 Customizing other commands, and unknown 
commands</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#IDX203"><code>%style_map_texi</code></a></td><td valign="top"><a 
href="#SEC55">7.3 Customizing accent, style and other simple 
commands</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#IDX294"><code>%style_map_texi</code></a></td><td valign="top"><a 
href="#SEC91">7.20 Customizing other commands, and unknown 
commands</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX296"><code>%style_map_texi</code></a></td><td valign="top"><a 
href="#SEC91">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>
@@ -6549,11 +6576,12 @@
 <tr><td colspan="3"> <hr></td></tr>
 <tr><th><a name="SEC100_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="#IDX286"><code>@command_handler_finish</code></a></td><td valign="top"><a 
href="#SEC90">7.19 Bypassing normal formatting</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#IDX284"><code>@command_handler_init</code></a></td><td valign="top"><a 
href="#SEC90">7.19 Bypassing normal formatting</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#IDX285"><code>@command_handler_process</code></a></td><td 
valign="top"><a href="#SEC90">7.19 Bypassing normal formatting</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX288"><code>@command_handler_finish</code></a></td><td valign="top"><a 
href="#SEC90">7.19 Bypassing normal formatting</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX286"><code>@command_handler_init</code></a></td><td valign="top"><a 
href="#SEC90">7.19 Bypassing normal formatting</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#IDX287"><code>@command_handler_process</code></a></td><td 
valign="top"><a href="#SEC90">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="#IDX212"><code>@IMAGE_EXTENSIONS</code></a></td><td valign="top"><a 
href="#SEC59">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>
@@ -6797,7 +6825,7 @@
       <li><a name="TOC60" href="#SEC64">7.7.2 Reference to an internal 
node</a></li>
     </ul></li>
     <li><a name="TOC61" href="#SEC65">7.8 Commands used for centering and 
flushing of text</a></li>
-    <li><a name="TOC62" href="#SEC66">7.9 Formatting or not a paragraph or a 
preformatted region</a>
+    <li><a name="TOC62" href="#SEC66">7.9 Formatting (or not) a paragraph and 
a preformatted region</a>
     <ul class="toc">
       <li><a name="TOC63" href="#SEC67">7.9.1 Paragraph and preformatted 
region formatting</a></li>
       <li><a name="TOC64" href="#SEC68">7.9.2 Avoiding paragraphs in 
formats</a></li>
@@ -6888,7 +6916,7 @@
 </tr></table>
 <h1>About This Document</h1>
 <p>
-  This document was generated by <em>Patrice Dumas</em> on <em>May, 17 
2006</em> using <a href="http://www.nongnu.org/texi2html/";><em>texi2html 
@PACKAGE_VERSION@</em></a>.
+  This document was generated by <em>Patrice Dumas</em> on <em>May, 30 
2006</em> using <a href="http://www.nongnu.org/texi2html/";><em>texi2html 
1.77</em></a>.
 </p>
 <p>
   The buttons in the navigation panels have the following meaning:
@@ -6990,7 +7018,7 @@
 <hr size="1">
 <p>
  <font size="-1">
-  This document was generated by <em>Patrice Dumas</em> on <em>May, 17 
2006</em> using <a href="http://www.nongnu.org/texi2html/";><em>texi2html 
@PACKAGE_VERSION@</em></a>.
+  This document was generated by <em>Patrice Dumas</em> on <em>May, 30 
2006</em> using <a href="http://www.nongnu.org/texi2html/";><em>texi2html 
1.77</em></a>.
  </font>
  <br>
 
Index: texi2html/doc/texi2html.texi
diff -u texi2html/doc/texi2html.texi:1.50 texi2html/doc/texi2html.texi:1.51
--- texi2html/doc/texi2html.texi:1.50   Wed May 17 01:51:46 2006
+++ texi2html/doc/texi2html.texi        Mon May 29 23:36:10 2006
@@ -2379,12 +2379,32 @@
 @acronym{HTML} element. 
 @end deftypefn
 
-The formatting of @code{@@image} is controlled by:
address@hidden {Function Reference} $image image $file_path $basename 
$preformatted $file_name $alt_text
+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:
+
address@hidden {Function Reference} $filename image_files $basename $extension
address@hidden 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.
address@hidden deftypefn
+
+Last, it is possible to control 
+the formatting of @code{@@image} by redefining:
address@hidden {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. @var{$alt_text} is the alternate text, it may be undefined.
+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 
address@hidden@@image} and @var{$extension} holds the corresponding 
address@hidden@@image} argument.
address@hidden is the path to working dir relative to the output
+directory. @var{$file_path} is the file name relative to the 
address@hidden
 @end deftypefn
 
 The formatting of @code{@@sp} is controlled by:
@@ -2401,13 +2421,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 
+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,
address@hidden is the explanation with a light formatting,
-unabling in @acronym{HTML} (or @acronym{XML}) the explanation to be in an 
-attribute.
address@hidden is the explanation with a light 
+formatting, unabling in @acronym{HTML} (or @acronym{XML}) the explanation 
+to be in an attribute.
 @end deftypefn
 
 @c --------------------------------------------------------
@@ -2600,7 +2620,7 @@
 
 @c --------------------------------------------------------
 @node Paragraph and preformatted region
address@hidden Formatting or not a paragraph or a preformatted region
address@hidden Formatting (or not) a paragraph and a preformatted region
 
 
 @menu
@@ -2960,7 +2980,7 @@
 
 Four functions are used when formatting a definition command:
 
address@hidden @asis
address@hidden @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 
@@ -3037,7 +3057,7 @@
 @end deftypefn
 
 If address@hidden 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:
@@ -3171,9 +3191,10 @@
 in general @samp{::} followed by some spaces.
 @end deftypefn
 
address@hidden {Function Reference} $description menu_description 
$description_text \%state
address@hidden {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
@@ -3889,8 +3910,10 @@
 changed completely. There
 are much more arguments to give informations about the context, and
 normal_text now does more text manipulation. 
address@hidden New argument for image
-(the alt text). 
address@hidden 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.
Index: texi2html/texi2html.init
diff -u texi2html/texi2html.init:1.105 texi2html/texi2html.init:1.106
--- texi2html/texi2html.init:1.105      Wed May 17 01:51:45 2006
+++ texi2html/texi2html.init    Mon May 29 23:36:10 2006
@@ -12,7 +12,7 @@
 # Afterwards, load the file with command-line 
 # option -init-file <your_init_file>
 #
-# $Id: texi2html.init,v 1.105 2006/05/17 01:51:45 pertusus Exp $
+# $Id: texi2html.init,v 1.106 2006/05/29 23:36:10 pertusus Exp $
 
 ######################################################################
 # The following variables can also be set by command-line options
@@ -487,6 +487,7 @@
      'Last',        '',
     );
 
address@hidden = ('png','jpg','jpeg','gif');
 
 $init_out    = \&t2h_default_init_out;
 $finish_out    = \&t2h_default_finish_out;
@@ -3158,6 +3159,7 @@
 $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;
@@ -3660,6 +3662,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
@@ -3668,16 +3677,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\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";
 }
 
@@ -4370,6 +4385,20 @@
     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:
@@ -4378,19 +4407,44 @@
 # a boolean true if we are in a preformatted format
 # image file name without path
 # alt text
-sub t2h_default_image($$$$$)
+# 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;
-   my $alt = shift;
-   $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\">";
+    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
Index: texi2html/texi2html.pl
diff -u texi2html/texi2html.pl:1.167 texi2html/texi2html.pl:1.168
--- texi2html/texi2html.pl:1.167        Wed May 17 01:51:45 2006
+++ texi2html/texi2html.pl      Mon May 29 23:36:10 2006
@@ -59,7 +59,7 @@
 #--##########################################################################
 
 # CVS version:
-# $Id: texi2html.pl,v 1.167 2006/05/17 01:51:45 pertusus Exp $
+# $Id: texi2html.pl,v 1.168 2006/05/29 23:36:10 pertusus Exp $
 
 # Homepage:
 my $T2H_HOMEPAGE = "http://www.nongnu.org/texi2html/";;
@@ -298,6 +298,7 @@
 @SECTION_BUTTONS
 @SECTION_FOOTER_BUTTONS
 @NODE_FOOTER_BUTTONS
address@hidden
 );
 
 # customization variables which may be guessed in the script
@@ -384,6 +385,7 @@
 $foot_section
 $address
 $image
+$image_files
 $index_entry_label
 $index_entry
 $index_letter
@@ -1458,8 +1460,8 @@
 # specified for texinfo
 sub cross_manual_links()
 {
-    print STDERR "# Doing ".scalar(keys(%nodes)) . 
-        " cross manual links\n" if ($T2H_DEBUG);
+    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;
@@ -1469,6 +1471,7 @@
     foreach my $key (keys(%nodes))
     {
         my $node = $nodes{$key};
+        #print STDERR "CROSS_MANUAL:$key,$node\n";
         next if ($node->{'index_page'});
         if (!defined($node->{'texi'}))
         {
@@ -3194,13 +3197,13 @@
             print STDERR "# Report (with texinfo file) if you want, otherwise 
ignore that message.\n";
             next unless ($state->{'bye'});
         }
-        push @lines, split_lines ($_);
+        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, address@hidden, $state, 
$texi_line_number);
-    push @lines, split_lines ($text);
+    push @lines, split_lines($text);
     print STDERR "# end of pass texi\n" if $T2H_VERBOSE;
 }
 
@@ -3394,12 +3397,12 @@
                     close_stack_texi_structure(\$text, address@hidden, $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 = '';
                 }
@@ -3615,11 +3618,11 @@
         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)
@@ -3630,11 +3633,11 @@
             if (exists($state->{'region_lines'}))
             {
                 push @{$region_lines{$state->{'region_lines'}->{'format'}}}, 
-                   split_lines ($text);
+                   split_lines($text);
             }
             else
             {
-                push @doc_lines, split_lines ($text);
+                push @doc_lines, split_lines($text);
             }
         }
     }
@@ -3643,6 +3646,8 @@
 }
 
 # 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;
@@ -5852,7 +5857,7 @@
 sub pass_text()
 {
     my %state;
-    initialise_state (\%state);
+    initialise_state(\%state);
     my @stack;
     my $text;
     my $doc_nr;
@@ -6923,6 +6928,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'});
 }
 
@@ -7214,13 +7223,6 @@
         }
         return '';
     }
-#    if ($style eq 'tex')
-#    {
-        # add space to the end -- tex(i2dvi) does this, as well
-        #return (l2h_ToLatex($text . " "));
-#        return (Texi2HTML::LaTeX2HTML::to_latex($style,$text));
-#    }
-    
 }
 
 sub do_insertcopying($)
@@ -7469,10 +7471,11 @@
     
     if (defined($Texi2HTML::Config::def_map{$format}))
     {
-        close_stack($text, $stack, $state, $line_nr, undef, '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";
@@ -7480,6 +7483,7 @@
              dump_stack($text, $stack, $state);
              pop @$stack;  
         }
+        ######################################### end debug
         elsif ($format_ref->{'format'} ne $format)
         {
              $format_mismatch = 1;
@@ -7493,20 +7497,17 @@
     }
     elsif ($format eq 'float')
     {
-        if (!defined($state->{'float'}))
-        {
-             $format_mismatch = 1;
-             echo_warn ("Waiting for address@hidden $format_ref->{'format'}, 
found address@hidden $format ", $line_nr);
-        }
-        else
+        unless (defined($state->{'float'}))
         {
-            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'};
+            print STDERR "Bug: state->{'float'} not defined in float\n";
+            next;
         }
+        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 (exists ($Texi2HTML::Config::complex_format_map->{$format}))
     {
@@ -7530,7 +7531,8 @@
         pop @{$state->{'table_list_stack'}};
        #dump_stack($text, $stack, $state); 
         if ($format_ref->{'format'} ne $format)
-        {
+        { # for example vtable closing a table. Cannot be known 
+          # before if in a cell
              $format_mismatch = 1;
              echo_warn ("Waiting for address@hidden $format_ref->{'format'}, 
found address@hidden $format  ", $line_nr);
         }
@@ -7571,11 +7573,6 @@
     }
     elsif (exists($Texi2HTML::Config::format_map{$format}))
     {
-        if ($format_ref->{'format'} ne $format)
-        { # FIXME hasn't that case been handled before ?
-             $format_mismatch = 1;
-             echo_warn ("Waiting for address@hidden $format_ref->{'format'}, 
found address@hidden $format   ", $line_nr);
-        }
         add_prev($text, $stack, end_simple_format($format_ref->{'format'}, 
$format_ref->{'text'}));
     }
     else
@@ -7655,7 +7652,7 @@
     }
 }
 
-# Format menu link, the  
+# Format menu link
 sub do_menu_link($$;$)
 {
     my $state = shift;
@@ -7664,23 +7661,19 @@
     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_formatted = substitute_line($menu_entry->{'node'}, 
$substitution_state);
 
-    if (($name ne '') and !$state->{'preformatted'} and 
$Texi2HTML::Config::AVOID_MENU_REDUNDANCY)
-    { # FIXME ths should be configureable
-        $name = '' unless (clean_text(remove_texi($menu_entry->{'text'}))
-            ne clean_text(remove_texi($menu_entry->{'node'})))
-    }
-
     my $entry = '';
     my $href;
     my $element = $nodes{$node_name};
+
+    # menu points to an unknown node
     if (!$element->{'seen'})
     {
-        if ($menu_entry->{'node'} =~ /^\s*\(.*\)/ or $novalidate)
+        if ($menu_entry->{'node'} =~ /^\s*\(.*\)/o or $novalidate)
         {
             # menu entry points to another info manual or invalid nodes
             # and novalidate is set
@@ -7690,6 +7683,7 @@
         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)
@@ -7707,7 +7701,8 @@
             }
         }
     }
-         
+
+    # the original node or an equivalent node was seen
     if ($element->{'seen'})
     {
         if ($element->{'reference_element'})
@@ -7719,11 +7714,12 @@
         $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);
         }
     }
+    # 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'});
@@ -7734,42 +7730,21 @@
     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->{'reference_element'})
-        {
-            $element = $element->{'reference_element'};
-        }
-        if ($Texi2HTML::Config::AVOID_MENU_REDUNDANCY && ($descr ne '') && 
!$state->{'preformatted'})
-        { # FIXME this should be configurable
-            $descr = '' if (clean_text($element->{'text_nonumber'}) eq 
clean_text($descr));
-        }
-    }
-    return &$Texi2HTML::Config::menu_description($descr, 
duplicate_state($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;
@@ -7778,7 +7753,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
@@ -7866,9 +7840,9 @@
             else
             {
                 echo_warn ("address@hidden 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 to node `$node_texi': $_";
@@ -8079,7 +8053,7 @@
         $from_file = $state->{'element'}->{'file'};
     }
     my %state;
-    initialise_state (\%state); 
+    initialise_state(\%state); 
     if ($Texi2HTML::Config::SEPARATED_FOOTNOTES)
     {
         $state{'element'} = $footnote_element;
@@ -8121,42 +8095,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]";
-    }
-    # FIXME there should instead be a list of file extension to search for,
-    # set by the user.
-    elsif ($image = locate_include_file("$base.png"))
+    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.png";
-    }
-    elsif ($image = locate_include_file("$base.jpg"))
-    {
-         $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_warn ("no image file for $base, (using $image)", $line_nr); 
-    } 
+    $image = '' if (!defined($image));
+    
     my $alt; 
     if ($args[3] =~ /\S/)
     {
-        # FIXME makeinfo don't do that. Maybe it should be remove_texi or
-        # simple_format?
-        $args[3] = do_text($args[3]);
-        $alt = $args[3] if ($args[3] =~ /\S/);
+        # 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);
+        $state->{'preformatted'}, $file_name, $alt, $args[1], $args[2], 
+        $args[3], $args[4], $path_to_working_dir, $image);
 }
 
 sub duplicate_state($)
@@ -8387,10 +8348,11 @@
            }
           else
            {
-               # If the $indexed_element element and the $index entry are on 
the same
-               # file the indexed_element is prefered. If they aren't on 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.
+               # 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'})
                {
@@ -8930,11 +8892,11 @@
                 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 address@hidden", $line_nr);
+                    echo_error("Bad address@hidden", $line_nr);
                 }
                 return if (/^\s*$/);
                 s/^\s*//;
@@ -8997,11 +8959,11 @@
             { #FIXME with 'arg_expansion' should it be passed unmodified ?
                 if ($state->{'ignored'})
                 {
-                     s/^\s+(\w+)//;
+                    s/^\s+(\w+)//;
                 }
                 else
                 {
-                     delete $macros->{$1} if (s/^\s+(\w+)//);
+                    delete $macros->{$1} if (s/^\s+(\w+)//);
                 }
                 return if (/^\s*$/);
                 s/^\s*//;
@@ -9094,11 +9056,11 @@
                     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
                     {
@@ -9136,6 +9098,69 @@
     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"} = address@hidden;
+    }
+    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 address@hidden 
$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;
@@ -9355,7 +9380,7 @@
             }
             elsif (defined($text_macros{$macro}))
             {
-                   #print STDERR "TEXT_MACRO: $macro\n";
+                #print STDERR "TEXT_MACRO: $macro\n";
                 if ($text_macros{$macro} eq 'raw')
                 {
                     $state->{'raw'} = $macro;
@@ -9372,20 +9397,20 @@
                 {
                     if (exists($state->{'region_lines'}) and 
($state->{'region_lines'}->{'format'} ne $macro))
                     {
-                         echo_error("address@hidden not allowed within 
$state->{'region_lines'}->{'format'}", $line_nr);
-                         next;
+                        echo_error("address@hidden 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'}->{'kept_place'} = 
$state->{'place'};
-                         $state->{'place'} = $region_place;
+                        $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;
                 }
@@ -9530,54 +9555,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 'caption' or $style->{'style'}
-eq 'shortcaption' and $state->{'float'})
-                    {
-                         my @texi_lines = map {$_ = $_."\n"} split (/\n/, 
$style->{'text'});
-                         $state->{'float'}->{$style->{'style'} . "_texi"} = 
address@hidden;
-                    }
-                    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 
(defined($Texi2HTML::Config::command_handler{$style->{'style'}}))
-                    {
-                         $result = 
init_special($style->{'style'},$style->{'text'});
-                    }
-                    elsif ($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
@@ -9757,7 +9736,7 @@
     while(1)
     {
         # scan_line
-        #print STDERR "WHILE (l): $_";
+        #print STDERR "WHILE (l): $_|";
         #dump_stack($text, $stack, $state);
         # we're in a raw format (html, tex if !L2H, verbatim)
         if (defined($state->{'raw'})) 
@@ -9893,7 +9872,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); 
             }
 
@@ -9949,6 +9929,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 ("address@hidden $end_tag without corresponding 
opening element", $line_nr);
+                    add_prev($text, $stack, "address@hidden $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 
address@hidden $end_tag", $line_nr);
@@ -10244,14 +10237,12 @@
                  {
                      my ($style, $category, $name, $type, $class, $arguments);
                      ($style, $category, $name, $type, $class, $arguments) = 
parse_def($macro, $_, $line_nr); 
+                     # 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));
@@ -10411,15 +10402,13 @@
                     $state->{'deff_line'}->{'style'} = $style;
                     $state->{'deff_line'}->{'category'} = 
substitute_line($category) if (defined($category));
                     $state->{'deff_line'}->{'category'} = '' if 
(!defined($category));
-                    # FIXME -- --- ''... should be protected (not by makeinfo)
+                    # 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));
-                    # FIXME -- --- ''... should be protected (not by makeinfo)
                     $state->{'deff_line'}->{'type'} = substitute_line($type) 
if (defined($type));
-                    # FIXME -- --- ''... should be protected (not by makeinfo)
                     $state->{'deff_line'}->{'class'} = substitute_line($class) 
if (defined($class));
-                    # FIXME -- --- ''... should be protected 
-                    # for the remaining of the line (the argument)
+                    # the remaining of the line (the argument)
                     open_cmd_line($stack, $state, ['keep'], \&do_def_line);
                     next;
                 }
@@ -10451,7 +10440,7 @@
                         # 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 tosamp being kept in the 'command_stack'
+                        # 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
@@ -10595,7 +10584,6 @@
                 }
                 else
                 {
-                       
                     echo_error("'}' without opening '{' before: $_", $line_nr);
                 }
             }
@@ -10623,7 +10611,7 @@
                 if ($command)
                 {
                     $style->{'no_close'} = 1 if ($state->{'no_close'});
-                    if ($::style_map_ref->{$command} and !$style->{'no_close'} 
and (defined($style_type{$command})) and (($style_type{$command} eq 'style') or 
($style_type{$command} eq 'accent')))
+                    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')))
                     {
                         my $style_command = pop @{$state->{'command_stack'}};
                         if ($style_command ne $command)
@@ -10643,7 +10631,6 @@
                     }
                     else
                     {
-                        #print STDERR "# Unstack from main $command 
(@{$state->{'command_stack'}})\n" if ($T2H_DEBUG); 
                         $result = do_simple($command, $style->{'text'}, 
$state, $style->{'args'}, $line_nr, $style->{'no_open'}, $style->{'no_close'});
                         if ($state->{'code_style'} < 0)
                         {
@@ -10993,25 +10980,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)
-              {# 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'};
-              }
-         }
+            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);
@@ -11025,7 +11012,7 @@
         my $formatted_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'}));
@@ -11064,25 +11051,25 @@
         # \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 "address@hidden";
+            return "address@hidden";
         }
         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}))
@@ -11090,20 +11077,20 @@
         my $result;
         if ($state->{'keep_texi'})
         {
-             $result = "address@hidden" . '{}';
+            $result = "address@hidden" . '{}';
         }
         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;
     }
@@ -11111,34 +11098,34 @@
     {
         if ($state->{'keep_texi'})
         {
-             return "address@hidden" . '{' . $text . '}';
+            return "address@hidden" . '{' . $text . '}';
         }
         else 
         {
-             my $style;
-             my $result;
-             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->{'command_stack'});
-             }
-             if (!$no_close)
-             { 
-                  close_arg($macro,$arg_nr, $state);
-             }
-             return $result;
+                $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)
@@ -11148,17 +11135,17 @@
         print STDERR "Bug? text in address@hidden not empty.\n" if ($text ne 
'');  
         if ($state->{'keep_texi'})
         {# text should be empty
-             return "address@hidden" . '{' . $text . '}';
+            return "address@hidden" . '{' . $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 address@hidden $style and 
structure $struct_count differ\n";
-             }
-             $special_commands{$style}->{'count'}--;  
+            my $struct_count = 1+ $special_commands{$style}->{'max'} - 
$special_commands{$style}->{'count'};
+            if (($count != $struct_count) and $T2H_DEBUG)
+            {
+                print STDERR "count $count in address@hidden $style and 
structure $struct_count differ\n";
+            }
+            $special_commands{$style}->{'count'}--;  
         }
         my $result = $Texi2HTML::Config::command_handler{$style}->{'expand'}
               ($style,$count,$state,$text);
@@ -11170,19 +11157,19 @@
     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 address@hidden'", 
$line_nr);
-             $result = do_text("address@hidden") . "{";
+            echo_warn ("Unknown command with braces address@hidden'", 
$line_nr);
+            $result = do_text("address@hidden") . "{";
         }
         $result .= $text;
         $result .= '}' unless ($no_close);
@@ -11323,35 +11310,43 @@
 
     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 = "address@hidden" . $stack_text;
-               }
-          }
-          elsif (defined($stack->[$stack_level]->{'style'}))
-          {
-              my $style = $stack->[$stack_level]->{'style'};
-              if ($style ne '')
-              {
-                   $stack_text = "address@hidden" . $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);
+        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 = "address@hidden" . $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 = "address@hidden" . $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 = [ ];
 
@@ -11461,23 +11456,33 @@
         {
             my $style =  $stack->[$stack_level]->{'style'};
             # 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 .= '}';
                 }
-                elsif (exists($style_type{$style}) and ($style_type{$style} eq 
'simple_style'))
+                elsif (($style_type{$style} eq 'simple_style') or 
($style_type{$style} eq 'accent'))
                 {
                     $string .= '}';
                 }
+                else
+                {
+                    print STDERR "$style while closing paragraph\n";
+                }
             }
             else
             {
                 dump_stack ($text, $stack, $state) if (!defined($style)); # bug
                 $string .= '}';
-                echo_warn ("closing $style", $line_nr) if ($style); 
+                echo_warn ("closing address@hidden $style", $line_nr) if 
($style); 
             }
         }
     }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]