texinfo-commits
[Top][All Lists]
Advanced

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

[no subject]


From: Patrice Dumas
Date: Thu, 26 Sep 2024 17:15:29 -0400 (EDT)

branch: master
commit 340c1cf174e4facdd67b354c3934eb5d52e0ef9d
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Thu Sep 26 23:15:16 2024 +0200

    * tp/Texinfo/Convert/HTML.pm (_formatted_nodedescription_nr)
    (_convert_menu_entry_type): add _formatted_nodedescription_nr based on
    _convert_menu_entry_type code.
    
    * tp/Texinfo/Convert/HTML.pm (command_description, _translate_names)
    (_file_header_information), tp/Texinfo/XS/convert/convert_html.c
    (html_command_description, file_header_information)
    (reset_html_targets_list, html_translate_names),
    tp/Texinfo/XS/main/converter_types.h (HTML_TARGET): add
    command_description to get the description associated to a node or
    sectioning command node.  Use it to set description if there is no
    documentdescription (and to set keywords).  Inspired by Benjamin
    Kalish report.
    
    * tp/Texinfo/Convert/HTML.pm (%XS_conversion_overrides),
    tp/Texinfo/XS/convert/ConvertXS.xs (html_command_description): XS
    override for html_command_description.
    
    * tp/Makefile.tres, tp/t/html_tests.t
    ($nodedescription_description_texinfo)
    (nodedescription_description)
    (nodedescription_description_no_use_nodes): test nodedescription used
    as meta description.
---
 ChangeLog                                          |  26 +
 tp/Makefile.tres                                   |   4 +
 tp/Texinfo/Convert/HTML.pm                         | 138 +++-
 tp/Texinfo/XS/convert/ConvertXS.xs                 |  40 +
 tp/Texinfo/XS/convert/convert_html.c               | 150 +++-
 tp/Texinfo/XS/convert/convert_html.h               |   2 +
 tp/Texinfo/XS/main/converter_types.h               |   1 +
 tp/t/html_tests.t                                  |  35 +
 .../html_tests/nodedescription_description.pl      | 838 +++++++++++++++++++++
 .../res_html/index.html                            |  53 ++
 .../res_html/other.html                            |  41 +
 .../nodedescription_description/res_html/titi.html |  45 ++
 .../nodedescription_description/res_html/toto.html |  44 ++
 .../nodedescription_description_no_use_nodes.pl    | 838 +++++++++++++++++++++
 .../res_html/index.html                            |  44 ++
 .../res_html/other.html                            |  41 +
 .../res_html/titi.html                             |  45 ++
 .../res_html/toto.html                             |  44 ++
 18 files changed, 2413 insertions(+), 16 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index d2601cba18..92cf181bd9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,29 @@
+2024-09-26  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/Convert/HTML.pm (_formatted_nodedescription_nr)
+       (_convert_menu_entry_type): add _formatted_nodedescription_nr based on
+       _convert_menu_entry_type code.
+
+       * tp/Texinfo/Convert/HTML.pm (command_description, _translate_names)
+       (_file_header_information), tp/Texinfo/XS/convert/convert_html.c
+       (html_command_description, file_header_information)
+       (reset_html_targets_list, html_translate_names),
+       tp/Texinfo/XS/main/converter_types.h (HTML_TARGET): add
+       command_description to get the description associated to a node or
+       sectioning command node.  Use it to set description if there is no
+       documentdescription (and to set keywords).  Inspired by Benjamin
+       Kalish report.
+
+       * tp/Texinfo/Convert/HTML.pm (%XS_conversion_overrides),
+       tp/Texinfo/XS/convert/ConvertXS.xs (html_command_description): XS
+       override for html_command_description.
+
+       * tp/Makefile.tres, tp/t/html_tests.t
+       ($nodedescription_description_texinfo)
+       (nodedescription_description)
+       (nodedescription_description_no_use_nodes): test nodedescription used
+       as meta description.
+
 2024-09-26  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/Convert/HTML.pm (_file_header_information)
diff --git a/tp/Makefile.tres b/tp/Makefile.tres
index 6637a9b575..5b39143cd9 100644
--- a/tp/Makefile.tres
+++ b/tp/Makefile.tres
@@ -738,6 +738,10 @@ test_files_generated_list = 
$(test_tap_files_generated_list) \
   t/results/html_tests/node_footnote_use_node/res_html \
   t/results/html_tests/node_footnote_use_node_separate.pl \
   t/results/html_tests/node_footnote_use_node_separate/res_html \
+  t/results/html_tests/nodedescription_description.pl \
+  t/results/html_tests/nodedescription_description/res_html \
+  t/results/html_tests/nodedescription_description_no_use_nodes.pl \
+  t/results/html_tests/nodedescription_description_no_use_nodes/res_html \
   t/results/html_tests/raw_html.pl \
   t/results/html_tests/redirection_same_labels.pl \
   t/results/html_tests/redirection_same_labels/res_html \
diff --git a/tp/Texinfo/Convert/HTML.pm b/tp/Texinfo/Convert/HTML.pm
index fba025c265..33b373734e 100644
--- a/tp/Texinfo/Convert/HTML.pm
+++ b/tp/Texinfo/Convert/HTML.pm
@@ -145,6 +145,8 @@ my %XS_conversion_overrides = (
    => "Texinfo::Convert::ConvertXS::html_internal_command_tree",
   "Texinfo::Convert::HTML::_internal_command_text"
    => "Texinfo::Convert::ConvertXS::html_internal_command_text",
+  "Texinfo::Convert::HTML::command_description"
+   => "Texinfo::Convert::ConvertXS::html_command_description",
 
   "Texinfo::Convert::HTML::_XS_set_shared_conversion_state"
    => "Texinfo::Convert::ConvertXS::html_set_shared_conversion_state",
@@ -1426,7 +1428,7 @@ sub _internal_command_text($$$)
   return undef;
 }
 
-# Return text to be used for a hyperlink to $COMMAND.
+# Return text to be used for $COMMAND.
 # $TYPE refers to the type of value returned from this function:
 #  'text' - return text
 #  'text_nonumber' - return text, without the section/chapter number
@@ -1475,6 +1477,100 @@ sub command_text($$;$)
   return _internal_command_text($self, $command, $type);
 }
 
+# Return text to be used for $COMMAND description.
+# $TYPE refers to the type of value returned from this function:
+#  'text' - return text
+#  'string' - return simpler text that can be used in element attributes
+sub command_description($$;$)
+{
+  my $self = shift;
+  my $command = shift;
+  my $type = shift;
+
+  if (!defined($type)) {
+    $type = 'text';
+  }
+
+  if (!defined($command)) {
+    cluck "in command_description($type) command not defined";
+  }
+
+  if ($command->{'extra'} and $command->{'extra'}->{'manual_content'}) {
+    return undef;
+  }
+
+  my $target = $self->_get_target($command);
+  if ($target) {
+    my $cached_type = 'description_'.${type};
+    if (defined($target->{$cached_type})) {
+      return $target->{$cached_type};
+    }
+
+    if (($command->{'type'}
+         and $command->{'type'} eq 'special_unit_element')
+        or ($command->{'cmdname'} and ($command->{'cmdname'} eq 'anchor'
+                                       or $command->{'cmdname'} eq 'float'))) {
+      $target->{$cached_type} = undef;
+      return undef;
+    }
+    my $node;
+
+    if ($command->{'cmdname'} and $command->{'cmdname'} eq 'node') {
+      $node = $command;
+    } elsif ($command->{'extra'}
+             and $command->{'extra'}->{'associated_node'}) {
+      $node = $command->{'extra'}->{'associated_node'};
+    }
+
+    if (!$node or !$node->{'extra'}) {
+      return undef;
+    }
+
+    my $node_description = $node->{'extra'}->{'node_description'};
+
+    if (!$node_description) {
+      return undef;
+    }
+
+    # TODO is it needed to have both $multiple_formatted and
+    # document_global_context ($explanation) set?
+    my $formatted_nodedescription_nr
+       = _formatted_nodedescription_nr($self, $node_description);
+
+    my $cmdname = $command->{'cmdname'};
+    my $context_name = "$cmdname description";
+    my $explanation = "command_description:$type \@$cmdname";
+
+    my $description_element;
+    if ($node_description->{'cmdname'} eq 'nodedescription') {
+      $description_element = $node_description->{'args'}->[0];
+    } else {
+      $description_element = {'contents' => $node_description->{'contents'}};
+    }
+    my $multiple_formatted;
+    if ($formatted_nodedescription_nr > 1) {
+      $multiple_formatted
+        = 'node-description-'.$formatted_nodedescription_nr;
+    }
+
+    my $tree_root;
+    if ($type eq 'string') {
+      $tree_root = {'type' => '_string',
+                    'contents' => [$description_element]};
+    } else {
+      $tree_root = $description_element;
+    }
+
+    $target->{$cached_type}
+      = $self->convert_tree_new_formatting_context($tree_root,
+                                                   $context_name,
+                                     $multiple_formatted, $explanation);
+
+    return $target->{$cached_type};
+  }
+  return undef;
+}
+
 
 # Return the element in the tree that $LABEL refers to.
 sub label_command($$)
@@ -2847,7 +2943,8 @@ sub _translate_names($)
       if ($command
           and $self->{'targets'}->{$command}) {
         my $target = $self->{'targets'}->{$command};
-        foreach my $key ('text', 'string', 'tree') {
+        foreach my $key ('text', 'string', 'tree', 'description_text',
+                         'description_string') {
           delete $target->{$key};
         }
       }
@@ -7556,6 +7653,25 @@ sub _convert_multitable_body_type($$$$) {
 
 $default_types_conversion{'multitable_body'} = \&_convert_multitable_body_type;
 
+sub _formatted_nodedescription_nr($$)
+{
+  my $self = shift;
+  my $node_description = shift;
+
+  # update the number of time the node description was formatted
+  my $formatted_nodedescription_nr
+    = $self->get_shared_conversion_state('nodedescription',
+                                    'formatted_nodedescriptions',
+                                     $node_description);
+  $formatted_nodedescription_nr = 0
+     if (!defined($formatted_nodedescription_nr));
+  $formatted_nodedescription_nr++;
+  $self->set_shared_conversion_state('nodedescription',
+                                    'formatted_nodedescriptions',
+                    $node_description, $formatted_nodedescription_nr);
+  return $formatted_nodedescription_nr;
+}
+
 sub _convert_menu_entry_type($$$)
 {
   my $self = shift;
@@ -7631,17 +7747,8 @@ sub _convert_menu_entry_type($$$)
                              and $menu_description->{'contents'}->[0]
                                   ->{'contents'}->[0]->{'text'} !~ /\S/)))) {
           $node_description = $node->{'extra'}->{'node_description'};
-          # update the number of time the node description was formatted
           $formatted_nodedescription_nr
-            = $self->get_shared_conversion_state('nodedescription',
-                                            'formatted_nodedescriptions',
-                                             $node_description);
-          $formatted_nodedescription_nr = 0
-             if (!defined($formatted_nodedescription_nr));
-          $formatted_nodedescription_nr++;
-          $self->set_shared_conversion_state('nodedescription',
-                                            'formatted_nodedescriptions',
-                            $node_description, $formatted_nodedescription_nr);
+            = _formatted_nodedescription_nr($self, $node_description);
         }
       }
     }
@@ -11300,6 +11407,7 @@ sub _file_header_information($$;$)
   my $filename = shift;
 
   my $title;
+  my $command_description;
   if ($command) {
     my $command_string = $self->command_text($command, 'string');
     if (defined($command_string) and $command_string ne ''
@@ -11335,12 +11443,16 @@ sub _file_header_information($$;$)
                                                      $context_str,
                                                      'element_title');
     }
+    $command_description = $self->command_description($command, 'string');
   }
   $title = $self->get_info('title_string') if (!defined($title));
 
-  my $keywords = $title;
+  my $keywords = $command_description;
+  $keywords = $title if (not defined($keywords) or $keywords eq '');
 
   my $description = $self->get_info('documentdescription_string');
+  $description = $command_description
+    if (not defined($description) or $description eq '');
   $description = $title
     if (not defined($description) or $description eq '');
   $description = $self->close_html_lone_element(
diff --git a/tp/Texinfo/XS/convert/ConvertXS.xs 
b/tp/Texinfo/XS/convert/ConvertXS.xs
index 5a25773a95..cad3ed0e0a 100644
--- a/tp/Texinfo/XS/convert/ConvertXS.xs
+++ b/tp/Texinfo/XS/convert/ConvertXS.xs
@@ -1420,6 +1420,46 @@ html_internal_command_text (SV *converter_in, SV 
*element_sv, const char *type)
     OUTPUT:
          RETVAL
 
+SV *
+html_command_description (SV *converter_in, SV *element_sv, const char *type=0)
+     PREINIT:
+         CONVERTER *self;
+         char *text = 0;
+         const ELEMENT *element;
+     CODE:
+         element = element_converter_from_sv (converter_in, element_sv,
+                                         "html_command_description", &self);
+         if (element)
+           {
+             int j;
+             enum html_text_type text_type = 0;
+             for (j = 0; j < HTT_string +1; j++)
+               {
+                 if (!strcmp (html_command_text_type_name[j], type))
+                   {
+                     text_type = j;
+                     break;
+                   }
+               }
+             text
+               = html_command_description (self, element, text_type);
+             if (self->modified_state)
+               {
+                 build_html_formatting_state (self, self->modified_state);
+                 self->modified_state = 0;
+               }
+           }
+
+         if (text)
+           {
+             RETVAL = newSVpv_utf8 (text, 0);
+             non_perl_free (text);
+           }
+         else
+           RETVAL = newSV (0);
+    OUTPUT:
+         RETVAL
+
 void
 html_set_shared_conversion_state (SV *converter_in, cmdname, state_name, ...)
          const char *cmdname = (char *)SvPVutf8_nolen($arg);
diff --git a/tp/Texinfo/XS/convert/convert_html.c 
b/tp/Texinfo/XS/convert/convert_html.c
index 8c9bab9e47..34d637b618 100644
--- a/tp/Texinfo/XS/convert/convert_html.c
+++ b/tp/Texinfo/XS/convert/convert_html.c
@@ -4122,6 +4122,130 @@ html_command_text (CONVERTER *self, const ELEMENT 
*command,
   return html_internal_command_text (self, command, type);
 }
 
+/* return value to be freed by caller */
+char *
+html_command_description (CONVERTER *self, const ELEMENT *command,
+                          const enum html_text_type type)
+{
+  HTML_TARGET *target_info;
+
+  ELEMENT *manual_content = lookup_extra_element (command,
+                                                  "manual_content");
+  if (manual_content)
+    return 0;
+
+  target_info = html_get_target (self, command);
+
+  if (target_info)
+    {
+      if (target_info->command_description[type])
+        return strdup (target_info->command_description[type]);
+      else
+        {
+          const ELEMENT *node = 0;
+          ELEMENT *tree_root;
+          char *explanation;
+          char *context_name;
+          const ELEMENT *node_description;
+          int formatted_nodedescription_nr = 0;
+          HTML_TARGET *node_target_info;
+          char *multiple_formatted = 0;
+          ELEMENT *description_element;
+          const char *command_name;
+
+          if (command->type == ET_special_unit_element)
+            return 0;
+
+          if (command->cmd && (command->cmd == CM_float
+                               || command->cmd == CM_anchor))
+            return 0;
+
+          if (command->cmd == CM_node)
+            node = command;
+          else
+            node = lookup_extra_element (command, "associated_node");
+
+          if (!node)
+            return 0;
+
+          node_description = lookup_extra_element (node, "node_description");
+
+          if (!node_description)
+            return 0;
+
+          node_target_info
+            = find_element_target (self->html_targets, node);
+          node_target_info->formatted_nodedescription_nr++;
+          formatted_nodedescription_nr
+            = node_target_info->formatted_nodedescription_nr;
+
+          if (formatted_nodedescription_nr > 1)
+            {
+              xasprintf (&multiple_formatted,
+                         "node-description-%d",
+                         formatted_nodedescription_nr);
+            }
+
+          if (node_description->cmd == CM_nodedescription)
+            description_element = node_description->args.list[0];
+          else
+            {
+              description_element = new_element (ET_NONE);
+              description_element->contents = node_description->contents;
+              add_tree_to_build (self, description_element);
+            }
+
+          command_name = element_command_name (command);
+          xasprintf (&context_name, "%s description", command_name);
+          xasprintf (&explanation, "command_description:%s @%s",
+                     html_command_text_type_name[type],
+                     command_name);
+
+          if (type == HTT_string)
+            {
+              tree_root = new_element (ET__string);
+              add_to_contents_as_array (tree_root, description_element);
+              add_tree_to_build (self, tree_root);
+            }
+          else
+            tree_root = description_element;
+
+          target_info->command_description[type]
+            = convert_tree_new_formatting_context (self, tree_root,
+                 context_name, multiple_formatted,
+                 explanation, 0);
+          free (context_name);
+          free (explanation);
+
+          if (formatted_nodedescription_nr > 1)
+            free (multiple_formatted);
+          if (node_description->cmd != CM_nodedescription)
+            {
+              remove_tree_to_build (self, description_element);
+              description_element->contents.list = 0;
+              destroy_element (description_element);
+            }
+          if (type == HTT_string)
+            {
+              remove_tree_to_build (self, tree_root);
+              destroy_element (tree_root);
+            }
+          return strdup (target_info->command_description[type]);
+        }
+    }
+ /*
+    Can happen
+    * if USE_NODES is 0 and there are no sectioning commands.
+    * if a special element target was set to undef in user defined code.
+    * for @*ref with missing targets (maybe @novalidate needed in that case).
+    * for @node header if the node consist only in spaces (example in 
sectioning
+      in_menu_only_special_ascii_spaces_node).
+    * for multiple targets with the same name, eg both @node and @anchor
+    * with @inforef with node argument only, without manual argument.
+  */
+  return 0;
+}
+
 /* return value to be freed by caller */
 char *
 from_element_direction (CONVERTER *self, int direction,
@@ -6520,7 +6644,7 @@ format_single_footnote (CONVERTER *self, const ELEMENT 
*element,
       char *footnote
         = call_formatting_function_format_single_footnote (self,
                                    formatting_reference, element, footid,
-                                   number_in_doc, footnote_location_href, 
+                                   number_in_doc, footnote_location_href,
                                    mark);
 
       text_append (result, footnote);
@@ -7041,6 +7165,7 @@ file_header_information (CONVERTER *self, const ELEMENT 
*command,
   BEGIN_FILE_INFORMATION *begin_info = (BEGIN_FILE_INFORMATION *)
                           malloc (sizeof (BEGIN_FILE_INFORMATION));
   const char *description = self->documentdescription_string;
+  char *command_description = 0;
   int status;
   TEXT text;
   char *root_html_element_attributes
@@ -7117,15 +7242,25 @@ file_header_information (CONVERTER *self, const ELEMENT 
*command,
           destroy_element_and_children (title_tree);
         }
       free (command_string);
+
+      command_description = html_command_description (self, command,
+                                                      HTT_string);
     }
   if (!begin_info->title)
     begin_info->title = strdup (self->title_string);
 
-  if (begin_info->title)
+  if (command_description && strlen (command_description))
+    begin_info->keywords = strdup (command_description);
+  else if (begin_info->title)
     begin_info->keywords = strdup (begin_info->title);
 
   if (!description || !strlen (description))
-    description = begin_info->title;
+    {
+      if (command_description && strlen (command_description))
+        description = command_description;
+      else
+        description = begin_info->title;
+    }
 
   if (description && strlen (description))
     {
@@ -7135,6 +7270,8 @@ file_header_information (CONVERTER *self, const ELEMENT 
*command,
       begin_info->description = strdup (text.text);
     }
 
+  free (command_description);
+
   text_reset (&text);
   if (self->conf->OUTPUT_ENCODING_NAME.o.string
       && strlen (self->conf->OUTPUT_ENCODING_NAME.o.string))
@@ -17054,6 +17191,9 @@ reset_html_targets_list (CONVERTER *self, 
HTML_TARGET_LIST *targets)
           for (j = 0; j < HTT_string_nonumber+1; j++)
             free (html_target->command_text[j]);
 
+          for (j = 0; j < HTT_string_nonumber+1; j++)
+            free (html_target->command_description[j]);
+
           free_tree_added_elements (self, &html_target->tree);
           free_tree_added_elements (self, &html_target->tree_nonumber);
         }
@@ -17823,6 +17963,10 @@ html_translate_names (CONVERTER *self)
                       target_info->command_text[HTT_string] = 0;
                       free (target_info->command_text[HTT_text]);
                       target_info->command_text[HTT_text] = 0;
+                      free (target_info->command_description[HTT_string]);
+                      target_info->command_description[HTT_string] = 0;
+                      free (target_info->command_description[HTT_text]);
+                      target_info->command_description[HTT_text] = 0;
                     }
                 }
             }
diff --git a/tp/Texinfo/XS/convert/convert_html.h 
b/tp/Texinfo/XS/convert/convert_html.h
index fcb92df6ef..fb431e1ea8 100644
--- a/tp/Texinfo/XS/convert/convert_html.h
+++ b/tp/Texinfo/XS/convert/convert_html.h
@@ -141,6 +141,8 @@ TREE_ADDED_ELEMENTS *html_internal_command_tree (CONVERTER 
*self,
                             const ELEMENT *command, int no_number);
 char *html_internal_command_text (CONVERTER *self, const ELEMENT *command,
                                   const enum html_text_type type);
+char *html_command_description (CONVERTER *self, const ELEMENT *command,
+                                const enum html_text_type type);
 
 EXPLAINED_COMMAND_TYPE *find_explained_command_string
                       (const EXPLAINED_COMMAND_TYPE_LIST *type_explanations,
diff --git a/tp/Texinfo/XS/main/converter_types.h 
b/tp/Texinfo/XS/main/converter_types.h
index 1077cfab92..78d3dd18b5 100644
--- a/tp/Texinfo/XS/main/converter_types.h
+++ b/tp/Texinfo/XS/main/converter_types.h
@@ -290,6 +290,7 @@ typedef struct HTML_TARGET {
     char *shortcontents_target;
 
     char *command_text[HTT_string_nonumber+1];
+    char *command_description[HTT_string_nonumber+1];
     TREE_ADDED_ELEMENTS tree;
     TREE_ADDED_ELEMENTS tree_nonumber;
     FILE_NUMBER_NAME file_number_name;
diff --git a/tp/t/html_tests.t b/tp/t/html_tests.t
index ef74dff5e5..0807aa6db7 100644
--- a/tp/t/html_tests.t
+++ b/tp/t/html_tests.t
@@ -986,6 +986,31 @@ my $css_init_file_texinfo = '@node Top
 @titlefont{in a new heading}
 ';
 
+my $nodedescription_description_texinfo = '@node Top
+@top test of descriptions with nodedescription*
+
+@node toto
+@chapter Toto
+
+@nodedescription toto is there:: and the @emph{is a description}@w{slightly 
long} and @verb{:vv somewhat:} @ringaccent anexpected
+
+@nodedescriptionblock
+Block along line node description for toto
+@end nodedescriptionblock
+
+@node titi
+@chapter Titi
+
+@nodedescriptionblock
+description of titi in block
+@end nodedescriptionblock
+
+@node other
+@chapter Other
+
+@nodedescription other comes here
+';
+
 my @file_tests = (
 ['empty_node_in_html_title_no_sec_name',
 '@node Top
@@ -1534,6 +1559,16 @@ undef, {'test_file' => 
'simple_only_special_spaces_node.texi',
 ', {}, {'USE_NODES' => 0,
         # needed for the test
         'SPLIT' => 'node'}],
+['nodedescription_description',
+$nodedescription_description_texinfo, {}, {'FORMAT_MENU' => 'menu',
+        # needed for the test
+        'SPLIT' => 'node'}],
+['nodedescription_description_no_use_nodes',
+$nodedescription_description_texinfo, {}, {'FORMAT_MENU' => 'menu',
+        'USE_NODES' => 0,
+        # needed for the test
+        'SPLIT' => 'node'}],
+
 );
 
 
diff --git a/tp/t/results/html_tests/nodedescription_description.pl 
b/tp/t/results/html_tests/nodedescription_description.pl
new file mode 100644
index 0000000000..0a6c0b5cfc
--- /dev/null
+++ b/tp/t/results/html_tests/nodedescription_description.pl
@@ -0,0 +1,838 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors 
+   %result_indices %result_sectioning %result_nodes %result_menus
+   %result_floats %result_converted %result_converted_errors 
+   %result_elements %result_directions_text %result_indices_sort_strings);
+
+use utf8;
+
+$result_trees{'nodedescription_description'} = {
+  'contents' => [
+    {
+      'contents' => [
+        {
+          'type' => 'preamble_before_content'
+        }
+      ],
+      'type' => 'before_node_section'
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Top'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'normalized' => 'Top'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 1
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'test of descriptions with nodedescription*'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'top',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {},
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 2
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'toto'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'node_description' => {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'text' => 'toto is there:: and the '
+                },
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'text' => 'is a description'
+                        }
+                      ],
+                      'type' => 'brace_command_arg'
+                    }
+                  ],
+                  'cmdname' => 'emph',
+                  'source_info' => {
+                    'line_nr' => 7
+                  }
+                },
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'text' => 'slightly long'
+                        }
+                      ],
+                      'type' => 'brace_command_arg'
+                    }
+                  ],
+                  'cmdname' => 'w',
+                  'source_info' => {
+                    'line_nr' => 7
+                  }
+                },
+                {
+                  'text' => ' and '
+                },
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'text' => 'vv somewhat',
+                          'type' => 'raw'
+                        }
+                      ],
+                      'type' => 'brace_command_arg'
+                    }
+                  ],
+                  'cmdname' => 'verb',
+                  'info' => {
+                    'delimiter' => ':'
+                  },
+                  'source_info' => {
+                    'line_nr' => 7
+                  }
+                },
+                {
+                  'text' => ' '
+                },
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'text' => 'a'
+                        }
+                      ],
+                      'type' => 'following_arg'
+                    }
+                  ],
+                  'cmdname' => 'ringaccent',
+                  'info' => {
+                    'spaces_after_cmd_before_arg' => {
+                      'text' => ' '
+                    }
+                  },
+                  'source_info' => {
+                    'line_nr' => 7
+                  }
+                },
+                {
+                  'text' => 'nexpected'
+                }
+              ],
+              'info' => {
+                'spaces_after_argument' => {
+                  'text' => '
+'
+                }
+              },
+              'type' => 'line_arg'
+            }
+          ],
+          'cmdname' => 'nodedescription',
+          'extra' => {
+            'element_node' => {}
+          },
+          'info' => {
+            'spaces_before_argument' => {
+              'text' => ' '
+            }
+          },
+          'source_info' => {
+            'line_nr' => 7
+          }
+        },
+        'node_long_description' => {
+          'args' => [
+            {
+              'info' => {
+                'spaces_after_argument' => {
+                  'text' => '
+'
+                }
+              },
+              'type' => 'block_line_arg'
+            }
+          ],
+          'cmdname' => 'nodedescriptionblock',
+          'contents' => [
+            {
+              'contents' => [
+                {
+                  'text' => 'Block along line node description for toto
+'
+                }
+              ],
+              'type' => 'paragraph'
+            },
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'text' => 'nodedescriptionblock'
+                    }
+                  ],
+                  'info' => {
+                    'spaces_after_argument' => {
+                      'text' => '
+'
+                    }
+                  },
+                  'type' => 'line_arg'
+                }
+              ],
+              'cmdname' => 'end',
+              'extra' => {
+                'text_arg' => 'nodedescriptionblock'
+              },
+              'info' => {
+                'spaces_before_argument' => {
+                  'text' => ' '
+                }
+              },
+              'source_info' => {
+                'line_nr' => 11
+              }
+            }
+          ],
+          'extra' => {
+            'element_node' => {}
+          },
+          'source_info' => {
+            'line_nr' => 9
+          }
+        },
+        'normalized' => 'toto'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 4
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Toto'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {},
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {},
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'section_number' => '1'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 5
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'titi'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'node_description' => {
+          'args' => [
+            {
+              'info' => {
+                'spaces_after_argument' => {
+                  'text' => '
+'
+                }
+              },
+              'type' => 'block_line_arg'
+            }
+          ],
+          'cmdname' => 'nodedescriptionblock',
+          'contents' => [
+            {
+              'contents' => [
+                {
+                  'text' => 'description of titi in block
+'
+                }
+              ],
+              'type' => 'paragraph'
+            },
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'text' => 'nodedescriptionblock'
+                    }
+                  ],
+                  'info' => {
+                    'spaces_after_argument' => {
+                      'text' => '
+'
+                    }
+                  },
+                  'type' => 'line_arg'
+                }
+              ],
+              'cmdname' => 'end',
+              'extra' => {
+                'text_arg' => 'nodedescriptionblock'
+              },
+              'info' => {
+                'spaces_before_argument' => {
+                  'text' => ' '
+                }
+              },
+              'source_info' => {
+                'line_nr' => 18
+              }
+            }
+          ],
+          'extra' => {
+            'element_node' => {}
+          },
+          'source_info' => {
+            'line_nr' => 16
+          }
+        },
+        'node_long_description' => {},
+        'normalized' => 'titi'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 13
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Titi'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {},
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'section_number' => '2'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 14
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'other'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'node_description' => {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'text' => 'other comes here'
+                }
+              ],
+              'info' => {
+                'spaces_after_argument' => {
+                  'text' => '
+'
+                }
+              },
+              'type' => 'line_arg'
+            }
+          ],
+          'cmdname' => 'nodedescription',
+          'extra' => {
+            'element_node' => {}
+          },
+          'info' => {
+            'spaces_before_argument' => {
+              'text' => ' '
+            }
+          },
+          'source_info' => {
+            'line_nr' => 23
+          }
+        },
+        'normalized' => 'other'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 20
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Other'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {}
+      ],
+      'extra' => {
+        'section_number' => '3'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 21
+      }
+    }
+  ],
+  'type' => 'document_root'
+};
+$result_trees{'nodedescription_description'}{'contents'}[3]{'extra'}{'node_description'}{'extra'}{'element_node'}
 = $result_trees{'nodedescription_description'}{'contents'}[3];
+$result_trees{'nodedescription_description'}{'contents'}[3]{'extra'}{'node_long_description'}{'extra'}{'element_node'}
 = $result_trees{'nodedescription_description'}{'contents'}[3];
+$result_trees{'nodedescription_description'}{'contents'}[4]{'contents'}[1] = 
$result_trees{'nodedescription_description'}{'contents'}[3]{'extra'}{'node_description'};
+$result_trees{'nodedescription_description'}{'contents'}[4]{'contents'}[3] = 
$result_trees{'nodedescription_description'}{'contents'}[3]{'extra'}{'node_long_description'};
+$result_trees{'nodedescription_description'}{'contents'}[5]{'extra'}{'node_description'}{'extra'}{'element_node'}
 = $result_trees{'nodedescription_description'}{'contents'}[5];
+$result_trees{'nodedescription_description'}{'contents'}[5]{'extra'}{'node_long_description'}
 = 
$result_trees{'nodedescription_description'}{'contents'}[5]{'extra'}{'node_description'};
+$result_trees{'nodedescription_description'}{'contents'}[6]{'contents'}[1] = 
$result_trees{'nodedescription_description'}{'contents'}[5]{'extra'}{'node_description'};
+$result_trees{'nodedescription_description'}{'contents'}[7]{'extra'}{'node_description'}{'extra'}{'element_node'}
 = $result_trees{'nodedescription_description'}{'contents'}[7];
+$result_trees{'nodedescription_description'}{'contents'}[8]{'contents'}[1] = 
$result_trees{'nodedescription_description'}{'contents'}[7]{'extra'}{'node_description'};
+
+$result_texis{'nodedescription_description'} = '@node Top
+@top test of descriptions with nodedescription*
+
+@node toto
+@chapter Toto
+
+@nodedescription toto is there:: and the @emph{is a description}@w{slightly 
long} and @verb{:vv somewhat:} @ringaccent anexpected
+
+@nodedescriptionblock
+Block along line node description for toto
+@end nodedescriptionblock
+
+@node titi
+@chapter Titi
+
+@nodedescriptionblock
+description of titi in block
+@end nodedescriptionblock
+
+@node other
+@chapter Other
+
+@nodedescription other comes here
+';
+
+
+$result_texts{'nodedescription_description'} = 'test of descriptions with 
nodedescription*
+******************************************
+
+1 Toto
+******
+
+
+
+2 Titi
+******
+
+
+3 Other
+*******
+
+';
+
+$result_sectioning{'nodedescription_description'} = {
+  'extra' => {
+    'section_childs' => [
+      {
+        'cmdname' => 'top',
+        'extra' => {
+          'associated_node' => {
+            'cmdname' => 'node',
+            'extra' => {
+              'normalized' => 'Top'
+            }
+          },
+          'section_childs' => [
+            {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'associated_node' => {
+                  'cmdname' => 'node',
+                  'extra' => {
+                    'normalized' => 'toto'
+                  }
+                },
+                'section_directions' => {
+                  'up' => {}
+                },
+                'section_level' => 1,
+                'section_number' => '1',
+                'toplevel_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                }
+              }
+            },
+            {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'associated_node' => {
+                  'cmdname' => 'node',
+                  'extra' => {
+                    'normalized' => 'titi'
+                  }
+                },
+                'section_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                },
+                'section_level' => 1,
+                'section_number' => '2',
+                'toplevel_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                }
+              }
+            },
+            {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'associated_node' => {
+                  'cmdname' => 'node',
+                  'extra' => {
+                    'normalized' => 'other'
+                  }
+                },
+                'section_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                },
+                'section_level' => 1,
+                'section_number' => '3',
+                'toplevel_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                }
+              }
+            }
+          ],
+          'section_level' => 0,
+          'sectioning_root' => {},
+          'toplevel_directions' => {}
+        }
+      }
+    ],
+    'section_level' => -1
+  }
+};
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'section_directions'}{'up'}
 = 
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'prev'}
 = 
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'up'}
 = 
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'prev'}
 = 
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'up'}
 = 
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'prev'}
 = 
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'up'}
 = 
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'prev'}
 = 
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'up'}
 = 
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[2]{'extra'}{'toplevel_directions'}{'prev'}
 = 
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[2]{'extra'}{'toplevel_directions'}{'up'}
 = 
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'sectioning_root'}
 = $result_sectioning{'nodedescription_description'};
+
+$result_nodes{'nodedescription_description'} = [
+  {
+    'cmdname' => 'node',
+    'extra' => {
+      'associated_section' => {
+        'cmdname' => 'top',
+        'extra' => {}
+      },
+      'node_directions' => {
+        'next' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'associated_section' => {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'section_number' => '1'
+              }
+            },
+            'node_directions' => {
+              'next' => {
+                'cmdname' => 'node',
+                'extra' => {
+                  'associated_section' => {
+                    'cmdname' => 'chapter',
+                    'extra' => {
+                      'section_number' => '2'
+                    }
+                  },
+                  'node_directions' => {
+                    'next' => {
+                      'cmdname' => 'node',
+                      'extra' => {
+                        'associated_section' => {
+                          'cmdname' => 'chapter',
+                          'extra' => {
+                            'section_number' => '3'
+                          }
+                        },
+                        'node_directions' => {
+                          'prev' => {},
+                          'up' => {}
+                        },
+                        'normalized' => 'other'
+                      }
+                    },
+                    'prev' => {},
+                    'up' => {}
+                  },
+                  'normalized' => 'titi'
+                }
+              },
+              'prev' => {},
+              'up' => {}
+            },
+            'normalized' => 'toto'
+          }
+        }
+      },
+      'normalized' => 'Top'
+    }
+  },
+  {},
+  {},
+  {}
+];
+$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = 
$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = $result_nodes{'nodedescription_description'}[0];
+$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = 
$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = $result_nodes{'nodedescription_description'}[0];
+$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = $result_nodes{'nodedescription_description'}[0];
+$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = $result_nodes{'nodedescription_description'}[0];
+$result_nodes{'nodedescription_description'}[1] = 
$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'nodedescription_description'}[2] = 
$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'nodedescription_description'}[3] = 
$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+
+$result_menus{'nodedescription_description'} = [
+  {
+    'extra' => {
+      'normalized' => 'Top'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'toto'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'titi'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'other'
+    }
+  }
+];
+
+$result_errors{'nodedescription_description'} = [
+  {
+    'error_line' => 'warning: @verb should not appear on @nodedescription line
+',
+    'line_nr' => 7,
+    'text' => '@verb should not appear on @nodedescription line',
+    'type' => 'warning'
+  }
+];
+
+
+$result_floats{'nodedescription_description'} = {};
+
+
+1;
diff --git 
a/tp/t/results/html_tests/nodedescription_description/res_html/index.html 
b/tp/t/results/html_tests/nodedescription_description/res_html/index.html
new file mode 100644
index 0000000000..8c681dd0ef
--- /dev/null
+++ b/tp/t/results/html_tests/nodedescription_description/res_html/index.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by texinfo, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Top (test of descriptions with nodedescription*)</title>
+
+<meta name="description" content="Top (test of descriptions with 
nodedescription*)">
+<meta name="keywords" content="Top (test of descriptions with 
nodedescription*)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="#Top" rel="start" title="Top">
+<link href="toto.html" rel="next" title="toto">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+td.menu-entry-description {vertical-align: top; padding-left: 1em}
+td.menu-entry-destination {vertical-align: top}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="top-level-extent" id="Top">
+<div class="nav-panel">
+<p>
+Next: <a href="toto.html" accesskey="n" rel="next">Toto</a> &nbsp; </p>
+</div>
+<hr>
+<h1 class="top" id="test-of-descriptions-with-nodedescription_002a"><span>test 
of descriptions with nodedescription*<a class="copiable-link" 
href="#test-of-descriptions-with-nodedescription_002a"> &para;</a></span></h1>
+
+<table class="menu">
+<tr><td class="menu-entry-destination">&bull; <a href="toto.html" 
accesskey="1">toto</a>:</td><td class="menu-entry-description">toto is there:: 
and the <em class="emph">is a description</em>slightly&nbsp;long<!-- /@w --> 
and <code class="verb">vv&nbsp;somewhat</code> &aring;nexpected</td></tr>
+<tr><td class="menu-entry-destination">&bull; <a href="titi.html" 
accesskey="2">titi</a>:</td><td class="menu-entry-description">description of 
titi in block
+</td></tr>
+<tr><td class="menu-entry-destination">&bull; <a href="other.html" 
accesskey="3">other</a>:</td><td class="menu-entry-description">other comes 
here</td></tr>
+</table>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="toto.html" accesskey="n" rel="next">Toto</a> &nbsp; </p>
+</div>
+
+
+
+</body>
+</html>
diff --git 
a/tp/t/results/html_tests/nodedescription_description/res_html/other.html 
b/tp/t/results/html_tests/nodedescription_description/res_html/other.html
new file mode 100644
index 0000000000..f181a67774
--- /dev/null
+++ b/tp/t/results/html_tests/nodedescription_description/res_html/other.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by texinfo, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>other (test of descriptions with nodedescription*)</title>
+
+<meta name="description" content="other comes here">
+<meta name="keywords" content="other comes here">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="index.html" rel="up" title="Top">
+<link href="titi.html" rel="prev" title="titi">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="chapter-level-extent" id="other">
+<div class="nav-panel">
+<p>
+Previous: <a href="titi.html" accesskey="p" rel="prev">Titi</a>, Up: <a 
href="index.html" accesskey="u" rel="up">test of descriptions with 
nodedescription*</a> &nbsp; </p>
+</div>
+<hr>
+<h2 class="chapter" id="Other"><span>3 Other<a class="copiable-link" 
href="#Other"> &para;</a></span></h2>
+
+</div>
+
+
+
+</body>
+</html>
diff --git 
a/tp/t/results/html_tests/nodedescription_description/res_html/titi.html 
b/tp/t/results/html_tests/nodedescription_description/res_html/titi.html
new file mode 100644
index 0000000000..0cfadecdd8
--- /dev/null
+++ b/tp/t/results/html_tests/nodedescription_description/res_html/titi.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by texinfo, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>titi (test of descriptions with nodedescription*)</title>
+
+<meta name="description" content="description of titi in block
+">
+<meta name="keywords" content="description of titi in block
+">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="index.html" rel="up" title="Top">
+<link href="other.html" rel="next" title="other">
+<link href="toto.html" rel="prev" title="toto">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="chapter-level-extent" id="titi">
+<div class="nav-panel">
+<p>
+Next: <a href="other.html" accesskey="n" rel="next">Other</a>, Previous: <a 
href="toto.html" accesskey="p" rel="prev">Toto</a>, Up: <a href="index.html" 
accesskey="u" rel="up">test of descriptions with nodedescription*</a> &nbsp; 
</p>
+</div>
+<hr>
+<h2 class="chapter" id="Titi"><span>2 Titi<a class="copiable-link" 
href="#Titi"> &para;</a></span></h2>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git 
a/tp/t/results/html_tests/nodedescription_description/res_html/toto.html 
b/tp/t/results/html_tests/nodedescription_description/res_html/toto.html
new file mode 100644
index 0000000000..2133563a1f
--- /dev/null
+++ b/tp/t/results/html_tests/nodedescription_description/res_html/toto.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by texinfo, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>toto (test of descriptions with nodedescription*)</title>
+
+<meta name="description" content="toto is there:: and the is a 
descriptionslightly&nbsp;long and vv&nbsp;somewhat &aring;nexpected">
+<meta name="keywords" content="toto is there:: and the is a 
descriptionslightly&nbsp;long and vv&nbsp;somewhat &aring;nexpected">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="index.html" rel="up" title="Top">
+<link href="titi.html" rel="next" title="titi">
+<link href="index.html" rel="prev" title="Top">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="chapter-level-extent" id="toto">
+<div class="nav-panel">
+<p>
+Next: <a href="titi.html" accesskey="n" rel="next">Titi</a>, Previous: <a 
href="index.html" accesskey="p" rel="prev">test of descriptions with 
nodedescription*</a>, Up: <a href="index.html" accesskey="u" rel="up">test of 
descriptions with nodedescription*</a> &nbsp; </p>
+</div>
+<hr>
+<h2 class="chapter" id="Toto"><span>1 Toto<a class="copiable-link" 
href="#Toto"> &para;</a></span></h2>
+
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git 
a/tp/t/results/html_tests/nodedescription_description_no_use_nodes.pl 
b/tp/t/results/html_tests/nodedescription_description_no_use_nodes.pl
new file mode 100644
index 0000000000..46bf378a61
--- /dev/null
+++ b/tp/t/results/html_tests/nodedescription_description_no_use_nodes.pl
@@ -0,0 +1,838 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors 
+   %result_indices %result_sectioning %result_nodes %result_menus
+   %result_floats %result_converted %result_converted_errors 
+   %result_elements %result_directions_text %result_indices_sort_strings);
+
+use utf8;
+
+$result_trees{'nodedescription_description_no_use_nodes'} = {
+  'contents' => [
+    {
+      'contents' => [
+        {
+          'type' => 'preamble_before_content'
+        }
+      ],
+      'type' => 'before_node_section'
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Top'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'normalized' => 'Top'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 1
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'test of descriptions with nodedescription*'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'top',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {},
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 2
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'toto'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'node_description' => {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'text' => 'toto is there:: and the '
+                },
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'text' => 'is a description'
+                        }
+                      ],
+                      'type' => 'brace_command_arg'
+                    }
+                  ],
+                  'cmdname' => 'emph',
+                  'source_info' => {
+                    'line_nr' => 7
+                  }
+                },
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'text' => 'slightly long'
+                        }
+                      ],
+                      'type' => 'brace_command_arg'
+                    }
+                  ],
+                  'cmdname' => 'w',
+                  'source_info' => {
+                    'line_nr' => 7
+                  }
+                },
+                {
+                  'text' => ' and '
+                },
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'text' => 'vv somewhat',
+                          'type' => 'raw'
+                        }
+                      ],
+                      'type' => 'brace_command_arg'
+                    }
+                  ],
+                  'cmdname' => 'verb',
+                  'info' => {
+                    'delimiter' => ':'
+                  },
+                  'source_info' => {
+                    'line_nr' => 7
+                  }
+                },
+                {
+                  'text' => ' '
+                },
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'text' => 'a'
+                        }
+                      ],
+                      'type' => 'following_arg'
+                    }
+                  ],
+                  'cmdname' => 'ringaccent',
+                  'info' => {
+                    'spaces_after_cmd_before_arg' => {
+                      'text' => ' '
+                    }
+                  },
+                  'source_info' => {
+                    'line_nr' => 7
+                  }
+                },
+                {
+                  'text' => 'nexpected'
+                }
+              ],
+              'info' => {
+                'spaces_after_argument' => {
+                  'text' => '
+'
+                }
+              },
+              'type' => 'line_arg'
+            }
+          ],
+          'cmdname' => 'nodedescription',
+          'extra' => {
+            'element_node' => {}
+          },
+          'info' => {
+            'spaces_before_argument' => {
+              'text' => ' '
+            }
+          },
+          'source_info' => {
+            'line_nr' => 7
+          }
+        },
+        'node_long_description' => {
+          'args' => [
+            {
+              'info' => {
+                'spaces_after_argument' => {
+                  'text' => '
+'
+                }
+              },
+              'type' => 'block_line_arg'
+            }
+          ],
+          'cmdname' => 'nodedescriptionblock',
+          'contents' => [
+            {
+              'contents' => [
+                {
+                  'text' => 'Block along line node description for toto
+'
+                }
+              ],
+              'type' => 'paragraph'
+            },
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'text' => 'nodedescriptionblock'
+                    }
+                  ],
+                  'info' => {
+                    'spaces_after_argument' => {
+                      'text' => '
+'
+                    }
+                  },
+                  'type' => 'line_arg'
+                }
+              ],
+              'cmdname' => 'end',
+              'extra' => {
+                'text_arg' => 'nodedescriptionblock'
+              },
+              'info' => {
+                'spaces_before_argument' => {
+                  'text' => ' '
+                }
+              },
+              'source_info' => {
+                'line_nr' => 11
+              }
+            }
+          ],
+          'extra' => {
+            'element_node' => {}
+          },
+          'source_info' => {
+            'line_nr' => 9
+          }
+        },
+        'normalized' => 'toto'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 4
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Toto'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {},
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {},
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'section_number' => '1'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 5
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'titi'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'node_description' => {
+          'args' => [
+            {
+              'info' => {
+                'spaces_after_argument' => {
+                  'text' => '
+'
+                }
+              },
+              'type' => 'block_line_arg'
+            }
+          ],
+          'cmdname' => 'nodedescriptionblock',
+          'contents' => [
+            {
+              'contents' => [
+                {
+                  'text' => 'description of titi in block
+'
+                }
+              ],
+              'type' => 'paragraph'
+            },
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'text' => 'nodedescriptionblock'
+                    }
+                  ],
+                  'info' => {
+                    'spaces_after_argument' => {
+                      'text' => '
+'
+                    }
+                  },
+                  'type' => 'line_arg'
+                }
+              ],
+              'cmdname' => 'end',
+              'extra' => {
+                'text_arg' => 'nodedescriptionblock'
+              },
+              'info' => {
+                'spaces_before_argument' => {
+                  'text' => ' '
+                }
+              },
+              'source_info' => {
+                'line_nr' => 18
+              }
+            }
+          ],
+          'extra' => {
+            'element_node' => {}
+          },
+          'source_info' => {
+            'line_nr' => 16
+          }
+        },
+        'node_long_description' => {},
+        'normalized' => 'titi'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 13
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Titi'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {},
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'section_number' => '2'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 14
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'other'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'node_description' => {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'text' => 'other comes here'
+                }
+              ],
+              'info' => {
+                'spaces_after_argument' => {
+                  'text' => '
+'
+                }
+              },
+              'type' => 'line_arg'
+            }
+          ],
+          'cmdname' => 'nodedescription',
+          'extra' => {
+            'element_node' => {}
+          },
+          'info' => {
+            'spaces_before_argument' => {
+              'text' => ' '
+            }
+          },
+          'source_info' => {
+            'line_nr' => 23
+          }
+        },
+        'normalized' => 'other'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 20
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Other'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {}
+      ],
+      'extra' => {
+        'section_number' => '3'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 21
+      }
+    }
+  ],
+  'type' => 'document_root'
+};
+$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[3]{'extra'}{'node_description'}{'extra'}{'element_node'}
 = $result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[3];
+$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[3]{'extra'}{'node_long_description'}{'extra'}{'element_node'}
 = $result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[3];
+$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[4]{'contents'}[1]
 = 
$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[3]{'extra'}{'node_description'};
+$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[4]{'contents'}[3]
 = 
$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[3]{'extra'}{'node_long_description'};
+$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[5]{'extra'}{'node_description'}{'extra'}{'element_node'}
 = $result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[5];
+$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[5]{'extra'}{'node_long_description'}
 = 
$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[5]{'extra'}{'node_description'};
+$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[6]{'contents'}[1]
 = 
$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[5]{'extra'}{'node_description'};
+$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[7]{'extra'}{'node_description'}{'extra'}{'element_node'}
 = $result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[7];
+$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[8]{'contents'}[1]
 = 
$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[7]{'extra'}{'node_description'};
+
+$result_texis{'nodedescription_description_no_use_nodes'} = '@node Top
+@top test of descriptions with nodedescription*
+
+@node toto
+@chapter Toto
+
+@nodedescription toto is there:: and the @emph{is a description}@w{slightly 
long} and @verb{:vv somewhat:} @ringaccent anexpected
+
+@nodedescriptionblock
+Block along line node description for toto
+@end nodedescriptionblock
+
+@node titi
+@chapter Titi
+
+@nodedescriptionblock
+description of titi in block
+@end nodedescriptionblock
+
+@node other
+@chapter Other
+
+@nodedescription other comes here
+';
+
+
+$result_texts{'nodedescription_description_no_use_nodes'} = 'test of 
descriptions with nodedescription*
+******************************************
+
+1 Toto
+******
+
+
+
+2 Titi
+******
+
+
+3 Other
+*******
+
+';
+
+$result_sectioning{'nodedescription_description_no_use_nodes'} = {
+  'extra' => {
+    'section_childs' => [
+      {
+        'cmdname' => 'top',
+        'extra' => {
+          'associated_node' => {
+            'cmdname' => 'node',
+            'extra' => {
+              'normalized' => 'Top'
+            }
+          },
+          'section_childs' => [
+            {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'associated_node' => {
+                  'cmdname' => 'node',
+                  'extra' => {
+                    'normalized' => 'toto'
+                  }
+                },
+                'section_directions' => {
+                  'up' => {}
+                },
+                'section_level' => 1,
+                'section_number' => '1',
+                'toplevel_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                }
+              }
+            },
+            {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'associated_node' => {
+                  'cmdname' => 'node',
+                  'extra' => {
+                    'normalized' => 'titi'
+                  }
+                },
+                'section_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                },
+                'section_level' => 1,
+                'section_number' => '2',
+                'toplevel_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                }
+              }
+            },
+            {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'associated_node' => {
+                  'cmdname' => 'node',
+                  'extra' => {
+                    'normalized' => 'other'
+                  }
+                },
+                'section_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                },
+                'section_level' => 1,
+                'section_number' => '3',
+                'toplevel_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                }
+              }
+            }
+          ],
+          'section_level' => 0,
+          'sectioning_root' => {},
+          'toplevel_directions' => {}
+        }
+      }
+    ],
+    'section_level' => -1
+  }
+};
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'section_directions'}{'up'}
 = 
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'prev'}
 = 
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'up'}
 = 
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'prev'}
 = 
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'up'}
 = 
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'prev'}
 = 
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'up'}
 = 
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'prev'}
 = 
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'up'}
 = 
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[2]{'extra'}{'toplevel_directions'}{'prev'}
 = 
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[2]{'extra'}{'toplevel_directions'}{'up'}
 = 
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'sectioning_root'}
 = $result_sectioning{'nodedescription_description_no_use_nodes'};
+
+$result_nodes{'nodedescription_description_no_use_nodes'} = [
+  {
+    'cmdname' => 'node',
+    'extra' => {
+      'associated_section' => {
+        'cmdname' => 'top',
+        'extra' => {}
+      },
+      'node_directions' => {
+        'next' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'associated_section' => {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'section_number' => '1'
+              }
+            },
+            'node_directions' => {
+              'next' => {
+                'cmdname' => 'node',
+                'extra' => {
+                  'associated_section' => {
+                    'cmdname' => 'chapter',
+                    'extra' => {
+                      'section_number' => '2'
+                    }
+                  },
+                  'node_directions' => {
+                    'next' => {
+                      'cmdname' => 'node',
+                      'extra' => {
+                        'associated_section' => {
+                          'cmdname' => 'chapter',
+                          'extra' => {
+                            'section_number' => '3'
+                          }
+                        },
+                        'node_directions' => {
+                          'prev' => {},
+                          'up' => {}
+                        },
+                        'normalized' => 'other'
+                      }
+                    },
+                    'prev' => {},
+                    'up' => {}
+                  },
+                  'normalized' => 'titi'
+                }
+              },
+              'prev' => {},
+              'up' => {}
+            },
+            'normalized' => 'toto'
+          }
+        }
+      },
+      'normalized' => 'Top'
+    }
+  },
+  {},
+  {},
+  {}
+];
+$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = 
$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = $result_nodes{'nodedescription_description_no_use_nodes'}[0];
+$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = 
$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = $result_nodes{'nodedescription_description_no_use_nodes'}[0];
+$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = $result_nodes{'nodedescription_description_no_use_nodes'}[0];
+$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = $result_nodes{'nodedescription_description_no_use_nodes'}[0];
+$result_nodes{'nodedescription_description_no_use_nodes'}[1] = 
$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'nodedescription_description_no_use_nodes'}[2] = 
$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'nodedescription_description_no_use_nodes'}[3] = 
$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+
+$result_menus{'nodedescription_description_no_use_nodes'} = [
+  {
+    'extra' => {
+      'normalized' => 'Top'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'toto'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'titi'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'other'
+    }
+  }
+];
+
+$result_errors{'nodedescription_description_no_use_nodes'} = [
+  {
+    'error_line' => 'warning: @verb should not appear on @nodedescription line
+',
+    'line_nr' => 7,
+    'text' => '@verb should not appear on @nodedescription line',
+    'type' => 'warning'
+  }
+];
+
+
+$result_floats{'nodedescription_description_no_use_nodes'} = {};
+
+
+1;
diff --git 
a/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/index.html
 
b/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/index.html
new file mode 100644
index 0000000000..e62123351f
--- /dev/null
+++ 
b/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/index.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by texinfo, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>test of descriptions with nodedescription*</title>
+
+<meta name="description" content="test of descriptions with nodedescription*">
+<meta name="keywords" content="test of descriptions with nodedescription*">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="#Top" rel="start" title="test of descriptions with 
nodedescription*">
+<link href="toto.html" rel="next" title="1 Toto">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+td.menu-entry-description {vertical-align: top; padding-left: 1em}
+td.menu-entry-destination {vertical-align: top}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="top-level-extent" id="Top">
+<h1 class="top" id="test-of-descriptions-with-nodedescription_002a"><span>test 
of descriptions with nodedescription*<a class="copiable-link" 
href="#test-of-descriptions-with-nodedescription_002a"> &para;</a></span></h1>
+
+<table class="menu">
+<tr><td class="menu-entry-destination">&bull; <a href="toto.html#toto" 
accesskey="1">toto</a>:</td><td class="menu-entry-description">toto is there:: 
and the <em class="emph">is a description</em>slightly&nbsp;long<!-- /@w --> 
and <code class="verb">vv&nbsp;somewhat</code> &aring;nexpected</td></tr>
+<tr><td class="menu-entry-destination">&bull; <a href="titi.html#titi" 
accesskey="2">titi</a>:</td><td class="menu-entry-description">description of 
titi in block
+</td></tr>
+<tr><td class="menu-entry-destination">&bull; <a href="other.html#other" 
accesskey="3">other</a>:</td><td class="menu-entry-description">other comes 
here</td></tr>
+</table>
+</div>
+<hr>
+
+
+
+</body>
+</html>
diff --git 
a/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/other.html
 
b/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/other.html
new file mode 100644
index 0000000000..7979f8abae
--- /dev/null
+++ 
b/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/other.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by texinfo, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>3 Other (test of descriptions with nodedescription*)</title>
+
+<meta name="description" content="other comes here">
+<meta name="keywords" content="other comes here">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="test of descriptions with 
nodedescription*">
+<link href="index.html" rel="up" title="test of descriptions with 
nodedescription*">
+<link href="titi.html" rel="prev" title="2 Titi">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="chapter-level-extent" id="other">
+<div class="nav-panel">
+<p>
+Prev: <a href="titi.html" accesskey="p" rel="prev">Titi</a>,  Up : <a 
href="index.html" accesskey="u" rel="up">test of descriptions with 
nodedescription*</a> &nbsp; </p>
+</div>
+<hr>
+<h2 class="chapter" id="Other"><span>3 Other<a class="copiable-link" 
href="#Other"> &para;</a></span></h2>
+
+</div>
+
+
+
+</body>
+</html>
diff --git 
a/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/titi.html
 
b/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/titi.html
new file mode 100644
index 0000000000..810412c3e6
--- /dev/null
+++ 
b/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/titi.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by texinfo, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>2 Titi (test of descriptions with nodedescription*)</title>
+
+<meta name="description" content="description of titi in block
+">
+<meta name="keywords" content="description of titi in block
+">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="test of descriptions with 
nodedescription*">
+<link href="index.html" rel="up" title="test of descriptions with 
nodedescription*">
+<link href="other.html" rel="next" title="3 Other">
+<link href="toto.html" rel="prev" title="1 Toto">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="chapter-level-extent" id="titi">
+<div class="nav-panel">
+<p>
+Next: <a href="other.html" accesskey="n" rel="next">Other</a>, Prev: <a 
href="toto.html" accesskey="p" rel="prev">Toto</a>,  Up : <a href="index.html" 
accesskey="u" rel="up">test of descriptions with nodedescription*</a> &nbsp; 
</p>
+</div>
+<hr>
+<h2 class="chapter" id="Titi"><span>2 Titi<a class="copiable-link" 
href="#Titi"> &para;</a></span></h2>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git 
a/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/toto.html
 
b/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/toto.html
new file mode 100644
index 0000000000..a5ae266102
--- /dev/null
+++ 
b/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/toto.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by texinfo, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>1 Toto (test of descriptions with nodedescription*)</title>
+
+<meta name="description" content="toto is there:: and the is a 
descriptionslightly&nbsp;long and vv&nbsp;somewhat &aring;nexpected">
+<meta name="keywords" content="toto is there:: and the is a 
descriptionslightly&nbsp;long and vv&nbsp;somewhat &aring;nexpected">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="test of descriptions with 
nodedescription*">
+<link href="index.html" rel="up" title="test of descriptions with 
nodedescription*">
+<link href="titi.html" rel="next" title="2 Titi">
+<link href="index.html" rel="prev" title="test of descriptions with 
nodedescription*">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="chapter-level-extent" id="toto">
+<div class="nav-panel">
+<p>
+Next: <a href="titi.html" accesskey="n" rel="next">Titi</a>,  Up : <a 
href="index.html" accesskey="u" rel="up">test of descriptions with 
nodedescription*</a> &nbsp; </p>
+</div>
+<hr>
+<h2 class="chapter" id="Toto"><span>1 Toto<a class="copiable-link" 
href="#Toto"> &para;</a></span></h2>
+
+
+
+</div>
+
+
+
+</body>
+</html>



reply via email to

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