texinfo-commits
[Top][All Lists]
Advanced

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

branch master updated: * tp/Texinfo/Convert/HTML.pm (direction_string),


From: Patrice Dumas
Subject: branch master updated: * tp/Texinfo/Convert/HTML.pm (direction_string), tp/Texinfo/XS/convert/convert_html.c (direction_string): do not access untranslated direction strings types for translated translations strings.
Date: Sat, 17 Feb 2024 14:19:41 -0500

This is an automated email from the git hooks/post-receive script.

pertusus pushed a commit to branch master
in repository texinfo.

The following commit(s) were added to refs/heads/master by this push:
     new d65d24bfd5 * tp/Texinfo/Convert/HTML.pm (direction_string), 
tp/Texinfo/XS/convert/convert_html.c (direction_string): do not access 
untranslated direction strings types for translated translations strings.
d65d24bfd5 is described below

commit d65d24bfd5dae25f854fcab08ccf9aed2b5f7adf
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Sat Feb 17 20:19:22 2024 +0100

    * tp/Texinfo/Convert/HTML.pm (direction_string),
    tp/Texinfo/XS/convert/convert_html.c (direction_string): do not
    access untranslated direction strings types for translated
    translations strings.
    
    * tp/Texinfo/Convert/HTML.pm (%default_converted_directions_strings):
    keep one empty direction string undef.
    
    * tp/Texinfo/Convert/HTML.pm (_default_panel_button_dynamic_direction)
    (_default_format_button, _default_format_special_body_about)
    (conversion_initialization), tp/Texinfo/XS/convert/convert_html.c
    (default_panel_button_dynamic_direction_internal)
    (html_default_format_button, default_format_special_body_about),
    tp/Texinfo/XS/convert/get_html_perl_info.c
    (html_conversion_initialization_sv): handle undef direction strings.
    
    * tp/Makefile.am (test_files), tp/Makefile.tres,
    tp/t/init_files_tests.t ($direction_strings_test_text)
    (directions_string_base, direction_strings_test_text)
    (directions_string_undef_texi2html),
    tp/t/init/directions_string_undef.pm: test directions strings undef.
---
 ChangeLog                                          |  24 +
 tp/Makefile.am                                     |   1 +
 tp/Makefile.tres                                   |   6 +
 tp/Texinfo/Convert/HTML.pm                         |  97 ++-
 tp/Texinfo/XS/convert/convert_html.c               |  59 +-
 tp/Texinfo/XS/convert/get_html_perl_info.c         |   4 +-
 tp/t/init/directions_string_undef.pm               |   9 +
 tp/t/init_files_tests.t                            |  31 +
 .../init_files_tests/directions_string_base.pl     | 740 +++++++++++++++++++++
 .../directions_string_base/res_html/chap.html      |  42 ++
 .../directions_string_base/res_html/chap2.html     |  46 ++
 .../directions_string_base/res_html/index.html     |  49 ++
 .../directions_string_base/res_html/sec1.html      |  41 ++
 .../directions_string_base/res_html/sec2.html      |  42 ++
 .../directions_string_base/res_html/sec3.html      |  40 ++
 .../init_files_tests/directions_string_undef.pl    | 740 +++++++++++++++++++++
 .../directions_string_undef/res_html/chap.html     |  42 ++
 .../directions_string_undef/res_html/chap2.html    |  46 ++
 .../directions_string_undef/res_html/index.html    |  49 ++
 .../directions_string_undef/res_html/sec1.html     |  41 ++
 .../directions_string_undef/res_html/sec2.html     |  42 ++
 .../directions_string_undef/res_html/sec3.html     |  40 ++
 .../directions_string_undef_texi2html.pl           | 740 +++++++++++++++++++++
 .../directions_string_undef_texi2html.html         | 285 ++++++++
 24 files changed, 3201 insertions(+), 55 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 6b549c50e8..849d2e6493 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,27 @@
+2024-02-17  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/Convert/HTML.pm (direction_string),
+       tp/Texinfo/XS/convert/convert_html.c (direction_string): do not
+       access untranslated direction strings types for translated
+       translations strings.
+
+       * tp/Texinfo/Convert/HTML.pm (%default_converted_directions_strings):
+       keep one empty direction string undef.
+
+       * tp/Texinfo/Convert/HTML.pm (_default_panel_button_dynamic_direction)
+       (_default_format_button, _default_format_special_body_about)
+       (conversion_initialization), tp/Texinfo/XS/convert/convert_html.c
+       (default_panel_button_dynamic_direction_internal)
+       (html_default_format_button, default_format_special_body_about),
+       tp/Texinfo/XS/convert/get_html_perl_info.c
+       (html_conversion_initialization_sv): handle undef direction strings.
+
+       * tp/Makefile.am (test_files), tp/Makefile.tres,
+       tp/t/init_files_tests.t ($direction_strings_test_text)
+       (directions_string_base, direction_strings_test_text)
+       (directions_string_undef_texi2html),
+       tp/t/init/directions_string_undef.pm: test directions strings undef.
+
 2024-02-17  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/Convert/HTML.pm (%format_context_commands),
diff --git a/tp/Makefile.am b/tp/Makefile.am
index ce5d1e4855..93568bd533 100644
--- a/tp/Makefile.am
+++ b/tp/Makefile.am
@@ -177,6 +177,7 @@ test_files = \
  t/init/command_translation_modified.init \
  t/init/css_in_node_redirection_page.pm \
  t/init/cvs.init \
+ t/init/directions_string_undef.pm \
  t/init/icons.init \
  t/init/ignore_and_comments_output.init \
  t/init/l2h.init \
diff --git a/tp/Makefile.tres b/tp/Makefile.tres
index 0cff35b5f0..72ea987d21 100644
--- a/tp/Makefile.tres
+++ b/tp/Makefile.tres
@@ -1023,6 +1023,12 @@ test_files_generated_list = 
$(test_tap_files_generated_list) \
   t/results/init_files_tests/customize_special_element/res_html \
   t/results/init_files_tests/customize_translations.pl \
   t/results/init_files_tests/customize_translations/res_html \
+  t/results/init_files_tests/directions_string_base.pl \
+  t/results/init_files_tests/directions_string_base/res_html \
+  t/results/init_files_tests/directions_string_undef.pl \
+  t/results/init_files_tests/directions_string_undef/res_html \
+  t/results/init_files_tests/directions_string_undef_texi2html.pl \
+  t/results/init_files_tests/directions_string_undef_texi2html/res_html \
   t/results/init_files_tests/documentation_examples.pl \
   t/results/init_files_tests/documentation_examples/res_html \
   t/results/init_files_tests/macro_defined_txiinternalvalue_in_translation.pl \
diff --git a/tp/Texinfo/Convert/HTML.pm b/tp/Texinfo/Convert/HTML.pm
index 360353f1c4..25bf784866 100644
--- a/tp/Texinfo/Convert/HTML.pm
+++ b/tp/Texinfo/Convert/HTML.pm
@@ -1254,7 +1254,8 @@ sub _internal_command_tree($$$)
       } elsif ($command->{'cmdname'}
                and ($command->{'cmdname'} eq 'node'
                     or $command->{'cmdname'} eq 'anchor')) {
-        # FIXME is it possible not to have contents (nor args)?
+        # to be a target, the node or anchor cannot be empty (nor expand to
+        # spaces only), so argument is necessarily set.
         $tree = {'type' => '_code',
                  'contents' => [$command->{'args'}->[0]]};
       } elsif ($command->{'cmdname'} and ($command->{'cmdname'} eq 'float')) {
@@ -1459,14 +1460,14 @@ sub command_text($$;$)
     } elsif ($command->{'type'}) {
       $context_str .= $command->{'type'};
     }
-    # NOTE the multiple pass argument is not unicized, however the
-    # external node manual label should in general be converted only
-    # once, and even if it is converted more than once, it is unlikely
-    # to contain @-commands which should better be converted only once.
+    # NOTE the multiple pass argument is not unicized, and no global
+    # context argument is given because the external node manual label
+    # should in general be converted only once.
+    # In addition, regarding multiple pass, it is unlikely for
+    # @-commands which should better be converted only once to be present.
     my $result
       = $self->convert_tree_new_formatting_context($tree,
                                                    $context_str,
-      # FIXME check if $document_global_context argument would be needed?
                                                'command_text-manual_content');
     return $result;
   }
@@ -1767,13 +1768,16 @@ sub direction_string($$$;$)
 
   $direction =~ s/^FirstInFile//;
 
+  my $translated_directions_strings = $self->{'translated_direction_strings'};
+
   if (not $self->{'directions_strings'}->{$string_type}->{$direction}
-      or not exists($self->{'directions_strings'}->{$string_type}
+       or not exists($self->{'directions_strings'}->{$string_type}
                                                 ->{$direction}->{$context})) {
     $self->{'directions_strings'}->{$string_type}->{$direction} = {}
       if not ($self->{'directions_strings'}->{$string_type}->{$direction});
-    my $translated_directions_strings = 
$self->{'translated_direction_strings'};
-    if (defined($translated_directions_strings->{$string_type}
+    if ($translated_directions_strings->{$string_type}
+        and $translated_directions_strings->{$string_type}->{$direction}
+        and defined($translated_directions_strings->{$string_type}
                                               ->{$direction}->{'converted'})) {
       # translate already converted direction strings
       my $converted_directions
@@ -1795,7 +1799,9 @@ sub direction_string($$$;$)
         $self->{'directions_strings'}->{$string_type}->{$direction}->{$context}
           = undef;
       }
-    } elsif (defined($translated_directions_strings->{$string_type}
+    } elsif ($translated_directions_strings->{$string_type}
+             and $translated_directions_strings->{$string_type}->{$direction}
+             and defined($translated_directions_strings->{$string_type}
                                             ->{$direction}->{'to_convert'})) {
       # translate direction strings that need to be translated and converted
       my $translation_context = $direction;
@@ -1835,7 +1841,6 @@ sub direction_string($$$;$)
       $self->{'directions_strings'}->{$string_type}->{$direction}->{$context}
         = $result_string;
     } else {
-      # FIXME or ''
       $self->{'directions_strings'}->{$string_type}->{$direction}->{$context}
          = undef;
     }
@@ -2592,7 +2597,9 @@ my %default_converted_directions_strings = (
   'accesskey' =>
    {
      'Top',         '',
-     'Contents',    '',
+     # this direction is set undef to make sure that it does not break
+     # any code.
+     #'Contents',    '',
      'Overview',    '',
      'Index',       '',
      'This',        '',
@@ -4238,7 +4245,9 @@ sub _default_panel_button_dynamic_direction($$;$$$)
       $hyperlink = $node;
     }
     # i18n
-    $result = $self->direction_string($direction, 'text').": $hyperlink";
+    my $direction_text = $self->direction_string($direction, 'text');
+    $direction_text = '' if (!defined($direction_text));
+    $result = $direction_text.": $hyperlink";
   }
   # 1 to communicate that a delimiter is needed for that button
   return ($result, 1);
@@ -4431,13 +4440,15 @@ sub _default_format_button($$;$)
                       $self->from_element_direction($button, 'string')) 
."</a>";
         } else {
           # use text
-          $active = '[' . "<a href=\"$href\"${btitle}>".
-            $self->direction_string($button, 'text')."</a>" . ']';
+          my $button_text = $self->direction_string($button, 'text');
+          $button_text = '' if (!defined($button_text));
+          $active = '['."<a href=\"$href\"${btitle}>".$button_text."</a>".']';
         }
       } else {
         # use text
-        $active = '[' . "<a href=\"$href\"${btitle}>".
-          $self->direction_string($button, 'text')."</a>" . ']';
+        my $button_text = $self->direction_string($button, 'text');
+        $button_text = '' if (!defined($button_text));
+        $active = '['."<a href=\"$href\"${btitle}>".$button_text."</a>".']';
       }
     } else {
       # button is passive
@@ -4456,10 +4467,14 @@ sub _default_format_button($$;$)
                       $self, $button_name_string, $passive_icon,
                       $self->from_element_direction($button, 'string'));
         } else {
-          $passive = '[' . $self->direction_string($button, 'text') . ']';
+          my $button_text = $self->direction_string($button, 'text');
+          $button_text = '' if (!defined($button_text));
+          $passive = '['.$button_text. ']';
         }
       } else {
-        $passive = '[' . $self->direction_string($button, 'text') . ']';
+        my $button_text = $self->direction_string($button, 'text');
+        $button_text = '' if (!defined($button_text));
+        $passive = '['.$button_text. ']';
       }
     }
     $need_delimiter = 0;
@@ -11406,20 +11421,29 @@ EOT
       my $button_name_string
           = $self->direction_string($direction, 'button', 'string');
       # FIXME strip FirstInFile from $button to get active icon file?
-      $about .=
-        (($active_icons and $active_icons->{$direction}) ?
-            &{$self->formatting_function('format_button_icon_img')}($self,
+      if ($active_icons and $active_icons->{$direction}) {
+        $about
+         .= &{$self->formatting_function('format_button_icon_img')}($self,
                          $button_name_string, $active_icons->{$direction})
-        : ' [' . $self->direction_string($direction, 'text') . '] ');
+      } else {
+        my $direction_text = $self->direction_string($direction, 'text');
+        $direction_text = '' if (!defined($direction_text));
+        $about .= ' ['. $direction_text .'] ';
+      }
     }
     $about .= "</td>\n";
-    my $button_name
-          = $self->direction_string($direction, 'button');
+    my $direction_description
+      = $self->direction_string($direction, 'description');
+    $direction_description = '' if (!defined($direction_description));
+    my $direction_example = $self->direction_string($direction, 'example');
+    $direction_example = '' if (!defined($direction_example));
+    my $button_name = $self->direction_string($direction, 'button');
+    $button_name = '' if (!defined($button_name));
     $about .=
 '    '.$self->html_attribute_class('td', ['name-direction-about']).'>'
-    .$button_name."</td>
-    <td>".$self->direction_string($direction, 'description')."</td>
-    <td>".$self->direction_string($direction, 'example')."</td>
+    ."$button_name</td>
+    <td>$direction_description</td>
+    <td>$direction_example</td>
   </tr>
 ";
   }
@@ -11833,19 +11857,26 @@ sub conversion_initialization($;$)
           $string_contexts
             = $customized_direction_strings->{$string_type}
                                           ->{$direction}->{'converted'};
+        } else {
+          $string_contexts = {'normal' => undef };
         }
       } else {
         my $string
           = $default_converted_directions_strings{$string_type}->{$direction};
-        $string_contexts
-          = {'normal' => $string};
+        $string_contexts = {'normal' => $string};
       }
       $string_contexts->{'string'} = $string_contexts->{'normal'}
         if (not defined($string_contexts->{'string'}));
       foreach my $context (keys(%$string_contexts)) {
-        $self->{'directions_strings'}->{$string_type}->{$direction}->{$context}
-          = $self->substitute_html_non_breaking_space(
-                                                  
$string_contexts->{$context});
+        if (defined($string_contexts->{$context})) {
+          $self->{'directions_strings'}->{$string_type}
+                                     ->{$direction}->{$context}
+            = $self->substitute_html_non_breaking_space(
+                                             $string_contexts->{$context});
+        } else {
+          $self->{'directions_strings'}->{$string_type}
+                                     ->{$direction}->{$context} = undef;
+        }
       }
     }
   }
diff --git a/tp/Texinfo/XS/convert/convert_html.c 
b/tp/Texinfo/XS/convert/convert_html.c
index 9b7c3a593c..280def38b4 100644
--- a/tp/Texinfo/XS/convert/convert_html.c
+++ b/tp/Texinfo/XS/convert/convert_html.c
@@ -2868,7 +2868,8 @@ direction_string (CONVERTER *self, int direction,
   else if (direction > NON_SPECIAL_DIRECTIONS_NR - 1)
     direction -= FIRSTINFILE_NR;
 
-  if (!self->directions_strings[string_type][direction][context])
+  if (!self->directions_strings[string_type][direction][context]
+      && string_type < TDS_TRANSLATED_MAX_NR)
     {
       HTML_DIRECTION_STRING_TRANSLATED *dir_translated
         = &self->translated_direction_strings[string_type][direction];
@@ -7320,7 +7321,9 @@ default_panel_button_dynamic_direction_internal 
(CONVERTER *self,
 
   if (node && node[strspn (node, whitespace_chars)] != '\0')
     {
-      char *text = direction_string (self, direction, TDS_type_text, 0);
+      const char *text = direction_string (self, direction, TDS_type_text, 0);
+      if (!text)
+        text = "";
       if (href && strlen (href))
         {
           char *hyperlink
@@ -7491,8 +7494,11 @@ html_default_format_button (CONVERTER *self,
             }
           else
             {
-              formatted_button->active = strdup (direction_string (self,
-                                    button->direction, TDS_type_text, 0));
+              const char *button_text = direction_string (self,
+                                    button->direction, TDS_type_text, 0);
+              if (!button_text)
+                button_text = "";
+              formatted_button->active = strdup (button_text);
             }
           formatted_button->need_delimiter = 0;
         }
@@ -7541,8 +7547,8 @@ html_default_format_button (CONVERTER *self,
               text_append_n (&active_text, ">", 1);
               if (active_icon)
                 {
-                  char *button_name_string = direction_string (self,
-                                     button->direction, TDS_type_button,
+                  const char *button_name_string = direction_string (self,
+                                       button->direction, TDS_type_button,
                                                       TDS_context_string);
                   char *icon_name = from_element_direction (self,
                                                         button->direction,
@@ -7557,9 +7563,12 @@ html_default_format_button (CONVERTER *self,
                   free (icon_img);
                 }
               else
-                text_append (&active_text,
-                             direction_string (self, button->direction,
-                                               TDS_type_text, 0));
+                {
+                  const char *button_text_string = direction_string (self,
+                                     button->direction, TDS_type_text, 0);
+                  if (button_text_string)
+                    text_append (&active_text, button_text_string);
+                }
 
               text_append_n (&active_text, "</a>", 4);
 
@@ -7604,10 +7613,11 @@ html_default_format_button (CONVERTER *self,
                 }
               else
                 {
+                  const char *button_text_string = direction_string (self,
+                                     button->direction, TDS_type_text, 0);
                   text_append_n (&passive_text, "[", 1);
-                  text_append (&passive_text,
-                             direction_string (self, button->direction,
-                                               TDS_type_text, 0));
+                  if (button_text_string)
+                    text_append (&passive_text, button_text_string);
                   text_append_n (&passive_text, "]", 1);
                 }
               formatted_button->passive = passive_text.text;
@@ -15537,6 +15547,9 @@ default_format_special_body_about (CONVERTER *self,
       const BUTTON_SPECIFICATION *button = &buttons->list[i];
       char * attribute_class;
       int direction = -1;
+      const char *button_name;
+      const char *button_description;
+      const char *button_example;
 
       if (button->type == BST_direction_info)
         direction = button->button_info->direction;
@@ -15573,9 +15586,11 @@ default_format_special_body_about (CONVERTER *self,
             }
           else
             {
+              const char *button_text = direction_string (self, direction,
+                                                          TDS_type_text, 0);
               text_append_n (result, " [", 2);
-              text_append (result, direction_string (self, direction,
-                                                     TDS_type_text, 0));
+              if (button_text)
+                text_append (result, button_text);
               text_append_n (result, "] ", 2);
             }
         }
@@ -15586,14 +15601,18 @@ default_format_special_body_about (CONVERTER *self,
       free (attribute_class);
       text_append_n (result, ">", 1);
 
-      text_append (result, direction_string (self, direction,
-                                             TDS_type_button, 0));
+      button_name = direction_string (self, direction, TDS_type_button, 0);
+      if (button_name)
+        text_append (result, button_name);
       text_append_n (result, "</td>\n    <td>", 14);
-      text_append (result, direction_string (self, direction,
-                                             TDS_type_description, 0));
+      button_description = direction_string (self, direction,
+                                             TDS_type_description, 0);
+      if (button_description)
+        text_append (result, button_description);
       text_append_n (result, "</td>\n    <td>", 14);
-      text_append (result, direction_string (self, direction,
-                                             TDS_type_example, 0));
+      button_example = direction_string (self, direction, TDS_type_example, 0);
+      if (button_example)
+        text_append (result, button_example);
       text_append_n (result, "</td>\n  </tr>\n", 14);
     }
 
diff --git a/tp/Texinfo/XS/convert/get_html_perl_info.c 
b/tp/Texinfo/XS/convert/get_html_perl_info.c
index e99072e7fe..b627d80180 100644
--- a/tp/Texinfo/XS/convert/get_html_perl_info.c
+++ b/tp/Texinfo/XS/convert/get_html_perl_info.c
@@ -966,6 +966,7 @@ html_conversion_initialization_sv (SV *converter_sv, 
CONVERTER *converter)
       int i;
       SV **direction_sv = 0;
       HV *direction_hv = 0;
+      const char *type_name = direction_string_type_names[DS_type];
 
       converter->directions_strings[DS_type] = (char ***)
         malloc (nr_string_directions * sizeof (char **));
@@ -974,7 +975,6 @@ html_conversion_initialization_sv (SV *converter_sv, 
CONVERTER *converter)
 
       if (directions_strings_sv)
         {
-          const char *type_name = direction_string_type_names[DS_type];
           direction_sv = hv_fetch (directions_strings_hv, type_name,
                                    strlen (type_name), 0);
           if (direction_sv)
@@ -1016,7 +1016,7 @@ html_conversion_initialization_sv (SV *converter_sv, 
CONVERTER *converter)
                       SV **value_sv = hv_fetch (context_hv, context_name,
                                                 strlen (context_name), 0);
 
-                      if (value_sv)
+                      if (value_sv && SvOK (*value_sv))
                         {
                            converter->directions_strings[DS_type][i][j]
                              = strdup ((char *) SvPVutf8_nolen (*value_sv));
diff --git a/tp/t/init/directions_string_undef.pm 
b/tp/t/init/directions_string_undef.pm
new file mode 100644
index 0000000000..79729b7894
--- /dev/null
+++ b/tp/t/init/directions_string_undef.pm
@@ -0,0 +1,9 @@
+
+
+foreach my $direction ('Next', 'NodeNext', 'Up', 'NodeUp') {
+  foreach my $type ('accesskey', 'button', 'description', 'example',
+                    'rel', 'text') {
+    texinfo_register_direction_string_info ($direction, $type, undef, undef);
+  }
+}
+
diff --git a/tp/t/init_files_tests.t b/tp/t/init_files_tests.t
index 3e4276abd5..c319e5d0ad 100644
--- a/tp/t/init_files_tests.t
+++ b/tp/t/init_files_tests.t
@@ -30,6 +30,25 @@ pt @error{}.
 }],
 );
 
+my $direction_strings_test_text = '@node Top
+@top top
+
+@node chap
+@chapter Chap
+
+@node chap2
+@chapter Chap 2
+
+@node sec1
+@section Sec 1
+
+@node sec2
+@section Sec 2
+
+@node sec3
+@section Sec 3
+';
+
 my @file_tests = (
 ['customize_translations',
 '
@@ -155,6 +174,18 @@ DOC
 @end deftypeop
 
 ', {'init_files' => ['translation_in_parser_in_translation.pm']}],
+# usefull to setup a base for comparison with the next test
+['directions_string_base',
+$direction_strings_test_text,],
+['directions_string_undef',
+$direction_strings_test_text,
+{'init_files' => ['directions_string_undef.pm']},],
+# test texi2html style buttons and directions strings undef
+['directions_string_undef_texi2html',
+$direction_strings_test_text,
+{'init_files' => ['directions_string_undef.pm']},
+{'TEXI2HTML' => 1},
+],
 );
 
 foreach my $test (@test_cases) {
diff --git a/tp/t/results/init_files_tests/directions_string_base.pl 
b/tp/t/results/init_files_tests/directions_string_base.pl
new file mode 100644
index 0000000000..f6c7191c15
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_base.pl
@@ -0,0 +1,740 @@
+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{'directions_string_base'} = {
+  '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' => 'top'
+            }
+          ],
+          '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' => 'chap'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'normalized' => 'chap'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 4
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Chap'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'section_number' => '1'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 5
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'chap2'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'normalized' => 'chap2'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 7
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Chap 2'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'section_number' => '2'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 8
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'sec1'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'normalized' => 'sec1'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 10
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Sec 1'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'section',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'section_number' => '2.1'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 11
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'sec2'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'normalized' => 'sec2'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 13
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Sec 2'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'section',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'section_number' => '2.2'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 14
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'sec3'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'normalized' => 'sec3'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 16
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Sec 3'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'section',
+      'extra' => {
+        'section_number' => '2.3'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 17
+      }
+    }
+  ],
+  'type' => 'document_root'
+};
+
+$result_texis{'directions_string_base'} = '@node Top
+@top top
+
+@node chap
+@chapter Chap
+
+@node chap2
+@chapter Chap 2
+
+@node sec1
+@section Sec 1
+
+@node sec2
+@section Sec 2
+
+@node sec3
+@section Sec 3
+';
+
+
+$result_texts{'directions_string_base'} = 'top
+***
+
+1 Chap
+******
+
+2 Chap 2
+********
+
+2.1 Sec 1
+=========
+
+2.2 Sec 2
+=========
+
+2.3 Sec 3
+=========
+';
+
+$result_sectioning{'directions_string_base'} = {
+  'extra' => {
+    'section_childs' => [
+      {
+        'cmdname' => 'top',
+        'extra' => {
+          'associated_node' => {
+            'cmdname' => 'node',
+            'extra' => {
+              'normalized' => 'Top'
+            }
+          },
+          'section_childs' => [
+            {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'associated_node' => {
+                  'cmdname' => 'node',
+                  'extra' => {
+                    'normalized' => 'chap'
+                  }
+                },
+                'section_directions' => {
+                  'up' => {}
+                },
+                'section_level' => 1,
+                'section_number' => '1',
+                'toplevel_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                }
+              }
+            },
+            {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'associated_node' => {
+                  'cmdname' => 'node',
+                  'extra' => {
+                    'normalized' => 'chap2'
+                  }
+                },
+                'section_childs' => [
+                  {
+                    'cmdname' => 'section',
+                    'extra' => {
+                      'associated_node' => {
+                        'cmdname' => 'node',
+                        'extra' => {
+                          'normalized' => 'sec1'
+                        }
+                      },
+                      'section_directions' => {
+                        'up' => {}
+                      },
+                      'section_level' => 2,
+                      'section_number' => '2.1'
+                    }
+                  },
+                  {
+                    'cmdname' => 'section',
+                    'extra' => {
+                      'associated_node' => {
+                        'cmdname' => 'node',
+                        'extra' => {
+                          'normalized' => 'sec2'
+                        }
+                      },
+                      'section_directions' => {
+                        'prev' => {},
+                        'up' => {}
+                      },
+                      'section_level' => 2,
+                      'section_number' => '2.2'
+                    }
+                  },
+                  {
+                    'cmdname' => 'section',
+                    'extra' => {
+                      'associated_node' => {
+                        'cmdname' => 'node',
+                        'extra' => {
+                          'normalized' => 'sec3'
+                        }
+                      },
+                      'section_directions' => {
+                        'prev' => {},
+                        'up' => {}
+                      },
+                      'section_level' => 2,
+                      'section_number' => '2.3'
+                    }
+                  }
+                ],
+                'section_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                },
+                'section_level' => 1,
+                'section_number' => '2',
+                'toplevel_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                }
+              }
+            }
+          ],
+          'section_level' => 0,
+          'sectioning_root' => {},
+          'toplevel_directions' => {}
+        }
+      }
+    ],
+    'section_level' => -1
+  }
+};
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'section_directions'}{'up'}
 = $result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'prev'}
 = $result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'up'}
 = $result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[0]{'extra'}{'section_directions'}{'up'}
 = 
$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'prev'}
 = 
$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'up'}
 = 
$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'prev'}
 = 
$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'up'}
 = 
$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'prev'}
 = 
$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'up'}
 = $result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'prev'}
 = 
$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'up'}
 = $result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'sectioning_root'}
 = $result_sectioning{'directions_string_base'};
+
+$result_nodes{'directions_string_base'} = [
+  {
+    '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' => {
+                    'prev' => {},
+                    'up' => {}
+                  },
+                  'normalized' => 'chap2'
+                }
+              },
+              'prev' => {},
+              'up' => {}
+            },
+            'normalized' => 'chap'
+          }
+        }
+      },
+      'normalized' => 'Top'
+    }
+  },
+  {},
+  {},
+  {
+    'cmdname' => 'node',
+    'extra' => {
+      'associated_section' => {
+        'cmdname' => 'section',
+        'extra' => {
+          'section_number' => '2.1'
+        }
+      },
+      'node_directions' => {
+        'next' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'associated_section' => {
+              'cmdname' => 'section',
+              'extra' => {
+                'section_number' => '2.2'
+              }
+            },
+            'node_directions' => {
+              'next' => {
+                'cmdname' => 'node',
+                'extra' => {
+                  'associated_section' => {
+                    'cmdname' => 'section',
+                    'extra' => {
+                      'section_number' => '2.3'
+                    }
+                  },
+                  'node_directions' => {
+                    'prev' => {},
+                    'up' => {}
+                  },
+                  'normalized' => 'sec3'
+                }
+              },
+              'prev' => {},
+              'up' => {}
+            },
+            'normalized' => 'sec2'
+          }
+        },
+        'up' => {}
+      },
+      'normalized' => 'sec1'
+    }
+  },
+  {},
+  {}
+];
+$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = 
$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = $result_nodes{'directions_string_base'}[0];
+$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = $result_nodes{'directions_string_base'}[0];
+$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = $result_nodes{'directions_string_base'}[0];
+$result_nodes{'directions_string_base'}[1] = 
$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_base'}[2] = 
$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_base'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = 
$result_nodes{'directions_string_base'}[3]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_base'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = 
$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_base'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = $result_nodes{'directions_string_base'}[3];
+$result_nodes{'directions_string_base'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = 
$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_base'}[3]{'extra'}{'node_directions'}{'up'} = 
$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_base'}[4] = 
$result_nodes{'directions_string_base'}[3]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_base'}[5] = 
$result_nodes{'directions_string_base'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+
+$result_menus{'directions_string_base'} = [
+  {
+    'extra' => {
+      'normalized' => 'Top'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'chap'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'chap2'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'sec1'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'sec2'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'sec3'
+    }
+  }
+];
+
+$result_errors{'directions_string_base'} = [];
+
+
+$result_floats{'directions_string_base'} = {};
+
+
+1;
diff --git 
a/tp/t/results/init_files_tests/directions_string_base/res_html/chap.html 
b/tp/t/results/init_files_tests/directions_string_base/res_html/chap.html
new file mode 100644
index 0000000000..90fdf7e92e
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_base/res_html/chap.html
@@ -0,0 +1,42 @@
+<!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>chap (top)</title>
+
+<meta name="description" content="chap (top)">
+<meta name="keywords" content="chap (top)">
+<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="chap2.html" rel="next" title="chap2">
+<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="chap">
+<div class="nav-panel">
+<p>
+Next: <a href="chap2.html" accesskey="n" rel="next">Chap 2</a>, Previous: <a 
href="index.html" accesskey="p" rel="prev">top</a>, Up: <a href="index.html" 
accesskey="u" rel="up">top</a> &nbsp; </p>
+</div>
+<hr>
+<h2 class="chapter" id="Chap"><span>1 Chap<a class="copiable-link" 
href="#Chap"> &para;</a></span></h2>
+
+</div>
+
+
+
+</body>
+</html>
diff --git 
a/tp/t/results/init_files_tests/directions_string_base/res_html/chap2.html 
b/tp/t/results/init_files_tests/directions_string_base/res_html/chap2.html
new file mode 100644
index 0000000000..a97d173a4b
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_base/res_html/chap2.html
@@ -0,0 +1,46 @@
+<!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>chap2 (top)</title>
+
+<meta name="description" content="chap2 (top)">
+<meta name="keywords" content="chap2 (top)">
+<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="chap.html" rel="prev" title="chap">
+<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="chap2">
+<div class="nav-panel">
+<p>
+Previous: <a href="chap.html" accesskey="p" rel="prev">Chap</a>, Up: <a 
href="index.html" accesskey="u" rel="up">top</a> &nbsp; </p>
+</div>
+<hr>
+<h2 class="chapter" id="Chap-2"><span>2 Chap 2<a class="copiable-link" 
href="#Chap-2"> &para;</a></span></h2>
+
+<ul class="mini-toc">
+<li><a href="sec1.html" accesskey="1">Sec 1</a></li>
+<li><a href="sec2.html" accesskey="2">Sec 2</a></li>
+<li><a href="sec3.html" accesskey="3">Sec 3</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git 
a/tp/t/results/init_files_tests/directions_string_base/res_html/index.html 
b/tp/t/results/init_files_tests/directions_string_base/res_html/index.html
new file mode 100644
index 0000000000..b2207dcdaf
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_base/res_html/index.html
@@ -0,0 +1,49 @@
+<!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 (top)</title>
+
+<meta name="description" content="Top (top)">
+<meta name="keywords" content="Top (top)">
+<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="chap.html" rel="next" title="chap">
+<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="top-level-extent" id="Top">
+<div class="nav-panel">
+<p>
+Next: <a href="chap.html" accesskey="n" rel="next">Chap</a> &nbsp; </p>
+</div>
+<hr>
+<h1 class="top" id="top"><span>top<a class="copiable-link" href="#top"> 
&para;</a></span></h1>
+
+<ul class="mini-toc">
+<li><a href="chap.html" accesskey="1">Chap</a></li>
+<li><a href="chap2.html" accesskey="2">Chap 2</a></li>
+</ul>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="chap.html" accesskey="n" rel="next">Chap</a> &nbsp; </p>
+</div>
+
+
+
+</body>
+</html>
diff --git 
a/tp/t/results/init_files_tests/directions_string_base/res_html/sec1.html 
b/tp/t/results/init_files_tests/directions_string_base/res_html/sec1.html
new file mode 100644
index 0000000000..bea459f936
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_base/res_html/sec1.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>sec1 (top)</title>
+
+<meta name="description" content="sec1 (top)">
+<meta name="keywords" content="sec1 (top)">
+<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="chap2.html" rel="up" title="chap2">
+<link href="sec2.html" rel="next" title="sec2">
+<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="section-level-extent" id="sec1">
+<div class="nav-panel">
+<p>
+Next: <a href="sec2.html" accesskey="n" rel="next">Sec 2</a>, Up: <a 
href="chap2.html" accesskey="u" rel="up">Chap 2</a> &nbsp; </p>
+</div>
+<hr>
+<h3 class="section" id="Sec-1"><span>2.1 Sec 1<a class="copiable-link" 
href="#Sec-1"> &para;</a></span></h3>
+
+</div>
+
+
+
+</body>
+</html>
diff --git 
a/tp/t/results/init_files_tests/directions_string_base/res_html/sec2.html 
b/tp/t/results/init_files_tests/directions_string_base/res_html/sec2.html
new file mode 100644
index 0000000000..11c7146ab5
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_base/res_html/sec2.html
@@ -0,0 +1,42 @@
+<!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>sec2 (top)</title>
+
+<meta name="description" content="sec2 (top)">
+<meta name="keywords" content="sec2 (top)">
+<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="chap2.html" rel="up" title="chap2">
+<link href="sec3.html" rel="next" title="sec3">
+<link href="sec1.html" rel="prev" title="sec1">
+<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="section-level-extent" id="sec2">
+<div class="nav-panel">
+<p>
+Next: <a href="sec3.html" accesskey="n" rel="next">Sec 3</a>, Previous: <a 
href="sec1.html" accesskey="p" rel="prev">Sec 1</a>, Up: <a href="chap2.html" 
accesskey="u" rel="up">Chap 2</a> &nbsp; </p>
+</div>
+<hr>
+<h3 class="section" id="Sec-2"><span>2.2 Sec 2<a class="copiable-link" 
href="#Sec-2"> &para;</a></span></h3>
+
+</div>
+
+
+
+</body>
+</html>
diff --git 
a/tp/t/results/init_files_tests/directions_string_base/res_html/sec3.html 
b/tp/t/results/init_files_tests/directions_string_base/res_html/sec3.html
new file mode 100644
index 0000000000..9e3a91435e
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_base/res_html/sec3.html
@@ -0,0 +1,40 @@
+<!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>sec3 (top)</title>
+
+<meta name="description" content="sec3 (top)">
+<meta name="keywords" content="sec3 (top)">
+<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="chap2.html" rel="up" title="chap2">
+<link href="sec2.html" rel="prev" title="sec2">
+<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="section-level-extent" id="sec3">
+<div class="nav-panel">
+<p>
+Previous: <a href="sec2.html" accesskey="p" rel="prev">Sec 2</a>, Up: <a 
href="chap2.html" accesskey="u" rel="up">Chap 2</a> &nbsp; </p>
+</div>
+<hr>
+<h3 class="section" id="Sec-3"><span>2.3 Sec 3<a class="copiable-link" 
href="#Sec-3"> &para;</a></span></h3>
+</div>
+
+
+
+</body>
+</html>
diff --git a/tp/t/results/init_files_tests/directions_string_undef.pl 
b/tp/t/results/init_files_tests/directions_string_undef.pl
new file mode 100644
index 0000000000..49067d14dc
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_undef.pl
@@ -0,0 +1,740 @@
+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{'directions_string_undef'} = {
+  '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' => 'top'
+            }
+          ],
+          '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' => 'chap'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'normalized' => 'chap'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 4
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Chap'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'section_number' => '1'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 5
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'chap2'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'normalized' => 'chap2'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 7
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Chap 2'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'section_number' => '2'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 8
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'sec1'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'normalized' => 'sec1'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 10
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Sec 1'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'section',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'section_number' => '2.1'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 11
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'sec2'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'normalized' => 'sec2'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 13
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Sec 2'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'section',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'section_number' => '2.2'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 14
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'sec3'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'normalized' => 'sec3'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 16
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Sec 3'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'section',
+      'extra' => {
+        'section_number' => '2.3'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 17
+      }
+    }
+  ],
+  'type' => 'document_root'
+};
+
+$result_texis{'directions_string_undef'} = '@node Top
+@top top
+
+@node chap
+@chapter Chap
+
+@node chap2
+@chapter Chap 2
+
+@node sec1
+@section Sec 1
+
+@node sec2
+@section Sec 2
+
+@node sec3
+@section Sec 3
+';
+
+
+$result_texts{'directions_string_undef'} = 'top
+***
+
+1 Chap
+******
+
+2 Chap 2
+********
+
+2.1 Sec 1
+=========
+
+2.2 Sec 2
+=========
+
+2.3 Sec 3
+=========
+';
+
+$result_sectioning{'directions_string_undef'} = {
+  'extra' => {
+    'section_childs' => [
+      {
+        'cmdname' => 'top',
+        'extra' => {
+          'associated_node' => {
+            'cmdname' => 'node',
+            'extra' => {
+              'normalized' => 'Top'
+            }
+          },
+          'section_childs' => [
+            {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'associated_node' => {
+                  'cmdname' => 'node',
+                  'extra' => {
+                    'normalized' => 'chap'
+                  }
+                },
+                'section_directions' => {
+                  'up' => {}
+                },
+                'section_level' => 1,
+                'section_number' => '1',
+                'toplevel_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                }
+              }
+            },
+            {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'associated_node' => {
+                  'cmdname' => 'node',
+                  'extra' => {
+                    'normalized' => 'chap2'
+                  }
+                },
+                'section_childs' => [
+                  {
+                    'cmdname' => 'section',
+                    'extra' => {
+                      'associated_node' => {
+                        'cmdname' => 'node',
+                        'extra' => {
+                          'normalized' => 'sec1'
+                        }
+                      },
+                      'section_directions' => {
+                        'up' => {}
+                      },
+                      'section_level' => 2,
+                      'section_number' => '2.1'
+                    }
+                  },
+                  {
+                    'cmdname' => 'section',
+                    'extra' => {
+                      'associated_node' => {
+                        'cmdname' => 'node',
+                        'extra' => {
+                          'normalized' => 'sec2'
+                        }
+                      },
+                      'section_directions' => {
+                        'prev' => {},
+                        'up' => {}
+                      },
+                      'section_level' => 2,
+                      'section_number' => '2.2'
+                    }
+                  },
+                  {
+                    'cmdname' => 'section',
+                    'extra' => {
+                      'associated_node' => {
+                        'cmdname' => 'node',
+                        'extra' => {
+                          'normalized' => 'sec3'
+                        }
+                      },
+                      'section_directions' => {
+                        'prev' => {},
+                        'up' => {}
+                      },
+                      'section_level' => 2,
+                      'section_number' => '2.3'
+                    }
+                  }
+                ],
+                'section_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                },
+                'section_level' => 1,
+                'section_number' => '2',
+                'toplevel_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                }
+              }
+            }
+          ],
+          'section_level' => 0,
+          'sectioning_root' => {},
+          'toplevel_directions' => {}
+        }
+      }
+    ],
+    'section_level' => -1
+  }
+};
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'section_directions'}{'up'}
 = $result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'prev'}
 = $result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'up'}
 = $result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[0]{'extra'}{'section_directions'}{'up'}
 = 
$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'prev'}
 = 
$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'up'}
 = 
$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'prev'}
 = 
$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'up'}
 = 
$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'prev'}
 = 
$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'up'}
 = $result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'prev'}
 = 
$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'up'}
 = $result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'sectioning_root'}
 = $result_sectioning{'directions_string_undef'};
+
+$result_nodes{'directions_string_undef'} = [
+  {
+    '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' => {
+                    'prev' => {},
+                    'up' => {}
+                  },
+                  'normalized' => 'chap2'
+                }
+              },
+              'prev' => {},
+              'up' => {}
+            },
+            'normalized' => 'chap'
+          }
+        }
+      },
+      'normalized' => 'Top'
+    }
+  },
+  {},
+  {},
+  {
+    'cmdname' => 'node',
+    'extra' => {
+      'associated_section' => {
+        'cmdname' => 'section',
+        'extra' => {
+          'section_number' => '2.1'
+        }
+      },
+      'node_directions' => {
+        'next' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'associated_section' => {
+              'cmdname' => 'section',
+              'extra' => {
+                'section_number' => '2.2'
+              }
+            },
+            'node_directions' => {
+              'next' => {
+                'cmdname' => 'node',
+                'extra' => {
+                  'associated_section' => {
+                    'cmdname' => 'section',
+                    'extra' => {
+                      'section_number' => '2.3'
+                    }
+                  },
+                  'node_directions' => {
+                    'prev' => {},
+                    'up' => {}
+                  },
+                  'normalized' => 'sec3'
+                }
+              },
+              'prev' => {},
+              'up' => {}
+            },
+            'normalized' => 'sec2'
+          }
+        },
+        'up' => {}
+      },
+      'normalized' => 'sec1'
+    }
+  },
+  {},
+  {}
+];
+$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = 
$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = $result_nodes{'directions_string_undef'}[0];
+$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = $result_nodes{'directions_string_undef'}[0];
+$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = $result_nodes{'directions_string_undef'}[0];
+$result_nodes{'directions_string_undef'}[1] = 
$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef'}[2] = 
$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = 
$result_nodes{'directions_string_undef'}[3]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = 
$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = $result_nodes{'directions_string_undef'}[3];
+$result_nodes{'directions_string_undef'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = 
$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef'}[3]{'extra'}{'node_directions'}{'up'} 
= 
$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef'}[4] = 
$result_nodes{'directions_string_undef'}[3]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef'}[5] = 
$result_nodes{'directions_string_undef'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+
+$result_menus{'directions_string_undef'} = [
+  {
+    'extra' => {
+      'normalized' => 'Top'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'chap'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'chap2'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'sec1'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'sec2'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'sec3'
+    }
+  }
+];
+
+$result_errors{'directions_string_undef'} = [];
+
+
+$result_floats{'directions_string_undef'} = {};
+
+
+1;
diff --git 
a/tp/t/results/init_files_tests/directions_string_undef/res_html/chap.html 
b/tp/t/results/init_files_tests/directions_string_undef/res_html/chap.html
new file mode 100644
index 0000000000..e62baea349
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_undef/res_html/chap.html
@@ -0,0 +1,42 @@
+<!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>chap (top)</title>
+
+<meta name="description" content="chap (top)">
+<meta name="keywords" content="chap (top)">
+<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" title="Top">
+<link href="chap2.html" title="chap2">
+<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="chap">
+<div class="nav-panel">
+<p>
+: <a href="chap2.html">Chap 2</a>, Previous: <a href="index.html" 
accesskey="p" rel="prev">top</a>, : <a href="index.html">top</a> &nbsp; </p>
+</div>
+<hr>
+<h2 class="chapter" id="Chap"><span>1 Chap<a class="copiable-link" 
href="#Chap"> &para;</a></span></h2>
+
+</div>
+
+
+
+</body>
+</html>
diff --git 
a/tp/t/results/init_files_tests/directions_string_undef/res_html/chap2.html 
b/tp/t/results/init_files_tests/directions_string_undef/res_html/chap2.html
new file mode 100644
index 0000000000..0b2385e850
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_undef/res_html/chap2.html
@@ -0,0 +1,46 @@
+<!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>chap2 (top)</title>
+
+<meta name="description" content="chap2 (top)">
+<meta name="keywords" content="chap2 (top)">
+<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" title="Top">
+<link href="chap.html" rel="prev" title="chap">
+<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="chap2">
+<div class="nav-panel">
+<p>
+Previous: <a href="chap.html" accesskey="p" rel="prev">Chap</a>, : <a 
href="index.html">top</a> &nbsp; </p>
+</div>
+<hr>
+<h2 class="chapter" id="Chap-2"><span>2 Chap 2<a class="copiable-link" 
href="#Chap-2"> &para;</a></span></h2>
+
+<ul class="mini-toc">
+<li><a href="sec1.html" accesskey="1">Sec 1</a></li>
+<li><a href="sec2.html" accesskey="2">Sec 2</a></li>
+<li><a href="sec3.html" accesskey="3">Sec 3</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git 
a/tp/t/results/init_files_tests/directions_string_undef/res_html/index.html 
b/tp/t/results/init_files_tests/directions_string_undef/res_html/index.html
new file mode 100644
index 0000000000..51ed98f569
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_undef/res_html/index.html
@@ -0,0 +1,49 @@
+<!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 (top)</title>
+
+<meta name="description" content="Top (top)">
+<meta name="keywords" content="Top (top)">
+<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="chap.html" title="chap">
+<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="top-level-extent" id="Top">
+<div class="nav-panel">
+<p>
+: <a href="chap.html">Chap</a> &nbsp; </p>
+</div>
+<hr>
+<h1 class="top" id="top"><span>top<a class="copiable-link" href="#top"> 
&para;</a></span></h1>
+
+<ul class="mini-toc">
+<li><a href="chap.html" accesskey="1">Chap</a></li>
+<li><a href="chap2.html" accesskey="2">Chap 2</a></li>
+</ul>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+: <a href="chap.html">Chap</a> &nbsp; </p>
+</div>
+
+
+
+</body>
+</html>
diff --git 
a/tp/t/results/init_files_tests/directions_string_undef/res_html/sec1.html 
b/tp/t/results/init_files_tests/directions_string_undef/res_html/sec1.html
new file mode 100644
index 0000000000..22e41d0b45
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_undef/res_html/sec1.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>sec1 (top)</title>
+
+<meta name="description" content="sec1 (top)">
+<meta name="keywords" content="sec1 (top)">
+<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="chap2.html" title="chap2">
+<link href="sec2.html" title="sec2">
+<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="section-level-extent" id="sec1">
+<div class="nav-panel">
+<p>
+: <a href="sec2.html">Sec 2</a>, : <a href="chap2.html">Chap 2</a> &nbsp; </p>
+</div>
+<hr>
+<h3 class="section" id="Sec-1"><span>2.1 Sec 1<a class="copiable-link" 
href="#Sec-1"> &para;</a></span></h3>
+
+</div>
+
+
+
+</body>
+</html>
diff --git 
a/tp/t/results/init_files_tests/directions_string_undef/res_html/sec2.html 
b/tp/t/results/init_files_tests/directions_string_undef/res_html/sec2.html
new file mode 100644
index 0000000000..6f7a08344c
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_undef/res_html/sec2.html
@@ -0,0 +1,42 @@
+<!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>sec2 (top)</title>
+
+<meta name="description" content="sec2 (top)">
+<meta name="keywords" content="sec2 (top)">
+<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="chap2.html" title="chap2">
+<link href="sec3.html" title="sec3">
+<link href="sec1.html" rel="prev" title="sec1">
+<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="section-level-extent" id="sec2">
+<div class="nav-panel">
+<p>
+: <a href="sec3.html">Sec 3</a>, Previous: <a href="sec1.html" accesskey="p" 
rel="prev">Sec 1</a>, : <a href="chap2.html">Chap 2</a> &nbsp; </p>
+</div>
+<hr>
+<h3 class="section" id="Sec-2"><span>2.2 Sec 2<a class="copiable-link" 
href="#Sec-2"> &para;</a></span></h3>
+
+</div>
+
+
+
+</body>
+</html>
diff --git 
a/tp/t/results/init_files_tests/directions_string_undef/res_html/sec3.html 
b/tp/t/results/init_files_tests/directions_string_undef/res_html/sec3.html
new file mode 100644
index 0000000000..57ca387445
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_undef/res_html/sec3.html
@@ -0,0 +1,40 @@
+<!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>sec3 (top)</title>
+
+<meta name="description" content="sec3 (top)">
+<meta name="keywords" content="sec3 (top)">
+<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="chap2.html" title="chap2">
+<link href="sec2.html" rel="prev" title="sec2">
+<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="section-level-extent" id="sec3">
+<div class="nav-panel">
+<p>
+Previous: <a href="sec2.html" accesskey="p" rel="prev">Sec 2</a>, : <a 
href="chap2.html">Chap 2</a> &nbsp; </p>
+</div>
+<hr>
+<h3 class="section" id="Sec-3"><span>2.3 Sec 3<a class="copiable-link" 
href="#Sec-3"> &para;</a></span></h3>
+</div>
+
+
+
+</body>
+</html>
diff --git a/tp/t/results/init_files_tests/directions_string_undef_texi2html.pl 
b/tp/t/results/init_files_tests/directions_string_undef_texi2html.pl
new file mode 100644
index 0000000000..df06b15a1d
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_undef_texi2html.pl
@@ -0,0 +1,740 @@
+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{'directions_string_undef_texi2html'} = {
+  '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' => 'top'
+            }
+          ],
+          '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' => 'chap'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'normalized' => 'chap'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 4
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Chap'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'section_number' => '1'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 5
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'chap2'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'normalized' => 'chap2'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 7
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Chap 2'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'section_number' => '2'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 8
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'sec1'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'normalized' => 'sec1'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 10
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Sec 1'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'section',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'section_number' => '2.1'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 11
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'sec2'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'normalized' => 'sec2'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 13
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Sec 2'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'section',
+      'contents' => [
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'section_number' => '2.2'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 14
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'sec3'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'extra' => {
+        'is_target' => 1,
+        'normalized' => 'sec3'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 16
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'text' => 'Sec 3'
+            }
+          ],
+          'info' => {
+            'spaces_after_argument' => {
+              'text' => '
+'
+            }
+          },
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'section',
+      'extra' => {
+        'section_number' => '2.3'
+      },
+      'info' => {
+        'spaces_before_argument' => {
+          'text' => ' '
+        }
+      },
+      'source_info' => {
+        'line_nr' => 17
+      }
+    }
+  ],
+  'type' => 'document_root'
+};
+
+$result_texis{'directions_string_undef_texi2html'} = '@node Top
+@top top
+
+@node chap
+@chapter Chap
+
+@node chap2
+@chapter Chap 2
+
+@node sec1
+@section Sec 1
+
+@node sec2
+@section Sec 2
+
+@node sec3
+@section Sec 3
+';
+
+
+$result_texts{'directions_string_undef_texi2html'} = 'top
+***
+
+1 Chap
+******
+
+2 Chap 2
+********
+
+2.1 Sec 1
+=========
+
+2.2 Sec 2
+=========
+
+2.3 Sec 3
+=========
+';
+
+$result_sectioning{'directions_string_undef_texi2html'} = {
+  'extra' => {
+    'section_childs' => [
+      {
+        'cmdname' => 'top',
+        'extra' => {
+          'associated_node' => {
+            'cmdname' => 'node',
+            'extra' => {
+              'normalized' => 'Top'
+            }
+          },
+          'section_childs' => [
+            {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'associated_node' => {
+                  'cmdname' => 'node',
+                  'extra' => {
+                    'normalized' => 'chap'
+                  }
+                },
+                'section_directions' => {
+                  'up' => {}
+                },
+                'section_level' => 1,
+                'section_number' => '1',
+                'toplevel_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                }
+              }
+            },
+            {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'associated_node' => {
+                  'cmdname' => 'node',
+                  'extra' => {
+                    'normalized' => 'chap2'
+                  }
+                },
+                'section_childs' => [
+                  {
+                    'cmdname' => 'section',
+                    'extra' => {
+                      'associated_node' => {
+                        'cmdname' => 'node',
+                        'extra' => {
+                          'normalized' => 'sec1'
+                        }
+                      },
+                      'section_directions' => {
+                        'up' => {}
+                      },
+                      'section_level' => 2,
+                      'section_number' => '2.1'
+                    }
+                  },
+                  {
+                    'cmdname' => 'section',
+                    'extra' => {
+                      'associated_node' => {
+                        'cmdname' => 'node',
+                        'extra' => {
+                          'normalized' => 'sec2'
+                        }
+                      },
+                      'section_directions' => {
+                        'prev' => {},
+                        'up' => {}
+                      },
+                      'section_level' => 2,
+                      'section_number' => '2.2'
+                    }
+                  },
+                  {
+                    'cmdname' => 'section',
+                    'extra' => {
+                      'associated_node' => {
+                        'cmdname' => 'node',
+                        'extra' => {
+                          'normalized' => 'sec3'
+                        }
+                      },
+                      'section_directions' => {
+                        'prev' => {},
+                        'up' => {}
+                      },
+                      'section_level' => 2,
+                      'section_number' => '2.3'
+                    }
+                  }
+                ],
+                'section_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                },
+                'section_level' => 1,
+                'section_number' => '2',
+                'toplevel_directions' => {
+                  'prev' => {},
+                  'up' => {}
+                }
+              }
+            }
+          ],
+          'section_level' => 0,
+          'sectioning_root' => {},
+          'toplevel_directions' => {}
+        }
+      }
+    ],
+    'section_level' => -1
+  }
+};
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'section_directions'}{'up'}
 = 
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'prev'}
 = 
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'up'}
 = 
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[0]{'extra'}{'section_directions'}{'up'}
 = 
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'prev'}
 = 
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'up'}
 = 
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'prev'}
 = 
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'up'}
 = 
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'prev'}
 = 
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'up'}
 = 
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'prev'}
 = 
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'up'}
 = 
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'sectioning_root'}
 = $result_sectioning{'directions_string_undef_texi2html'};
+
+$result_nodes{'directions_string_undef_texi2html'} = [
+  {
+    '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' => {
+                    'prev' => {},
+                    'up' => {}
+                  },
+                  'normalized' => 'chap2'
+                }
+              },
+              'prev' => {},
+              'up' => {}
+            },
+            'normalized' => 'chap'
+          }
+        }
+      },
+      'normalized' => 'Top'
+    }
+  },
+  {},
+  {},
+  {
+    'cmdname' => 'node',
+    'extra' => {
+      'associated_section' => {
+        'cmdname' => 'section',
+        'extra' => {
+          'section_number' => '2.1'
+        }
+      },
+      'node_directions' => {
+        'next' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'associated_section' => {
+              'cmdname' => 'section',
+              'extra' => {
+                'section_number' => '2.2'
+              }
+            },
+            'node_directions' => {
+              'next' => {
+                'cmdname' => 'node',
+                'extra' => {
+                  'associated_section' => {
+                    'cmdname' => 'section',
+                    'extra' => {
+                      'section_number' => '2.3'
+                    }
+                  },
+                  'node_directions' => {
+                    'prev' => {},
+                    'up' => {}
+                  },
+                  'normalized' => 'sec3'
+                }
+              },
+              'prev' => {},
+              'up' => {}
+            },
+            'normalized' => 'sec2'
+          }
+        },
+        'up' => {}
+      },
+      'normalized' => 'sec1'
+    }
+  },
+  {},
+  {}
+];
+$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = 
$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = $result_nodes{'directions_string_undef_texi2html'}[0];
+$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = $result_nodes{'directions_string_undef_texi2html'}[0];
+$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = $result_nodes{'directions_string_undef_texi2html'}[0];
+$result_nodes{'directions_string_undef_texi2html'}[1] = 
$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef_texi2html'}[2] = 
$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef_texi2html'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = 
$result_nodes{'directions_string_undef_texi2html'}[3]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef_texi2html'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = 
$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef_texi2html'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
 = $result_nodes{'directions_string_undef_texi2html'}[3];
+$result_nodes{'directions_string_undef_texi2html'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
 = 
$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef_texi2html'}[3]{'extra'}{'node_directions'}{'up'}
 = 
$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef_texi2html'}[4] = 
$result_nodes{'directions_string_undef_texi2html'}[3]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef_texi2html'}[5] = 
$result_nodes{'directions_string_undef_texi2html'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+
+$result_menus{'directions_string_undef_texi2html'} = [
+  {
+    'extra' => {
+      'normalized' => 'Top'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'chap'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'chap2'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'sec1'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'sec2'
+    }
+  },
+  {
+    'extra' => {
+      'normalized' => 'sec3'
+    }
+  }
+];
+
+$result_errors{'directions_string_undef_texi2html'} = [];
+
+
+$result_floats{'directions_string_undef_texi2html'} = {};
+
+
+1;
diff --git 
a/tp/t/results/init_files_tests/directions_string_undef_texi2html/res_html/directions_string_undef_texi2html.html
 
b/tp/t/results/init_files_tests/directions_string_undef_texi2html/res_html/directions_string_undef_texi2html.html
new file mode 100644
index 0000000000..685089b2aa
--- /dev/null
+++ 
b/tp/t/results/init_files_tests/directions_string_undef_texi2html/res_html/directions_string_undef_texi2html.html
@@ -0,0 +1,285 @@
+<!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</title>
+
+<meta name="description" content="top">
+<meta name="keywords" content="top">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+pre.menu-comment-preformatted {font-family: serif}
+span.program-in-footer {font-size: smaller}
+span:hover a.copiable-link {visibility: visible}
+td.button-direction-about {text-align:center}
+td.menu-entry-description {vertical-align: top}
+td.menu-entry-destination {vertical-align: top}
+td.name-direction-about {text-align:center}
+th.menu-comment {text-align:left}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="top-level-extent" id="Top">
+<table class="nav-panel" cellpadding="1" cellspacing="1" border="0">
+<tr><td>[ &lt; ]</td>
+<td>[<a href="#chap" title="Next section in reading order"> &gt; </a>]</td>
+<td> &nbsp; </td>
+<td>[Contents]</td>
+<td>[Index]</td>
+<td>[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="top" id="top"><span>top<a class="copiable-link" href="#top"> 
&para;</a></span></h1>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td class="menu-entry-destination"><a href="#chap">1 
Chap</a></td><td>&nbsp;&nbsp;</td><td class="menu-entry-description">
+</td></tr>
+<tr><td class="menu-entry-destination"><a href="#chap2">2 Chap 
2</a></td><td>&nbsp;&nbsp;</td><td class="menu-entry-description">
+</td></tr>
+<tr><th class="menu-comment" colspan="3"><pre 
class="menu-comment-preformatted">
+
+</pre></th></tr><tr><th class="menu-comment" colspan="3"><pre 
class="menu-comment-preformatted"> &mdash; The Detailed Node Listing &mdash;
+
+Chap 2
+
+</pre></th></tr><tr><td class="menu-entry-destination"><a href="#sec1">2.1 Sec 
1</a></td><td>&nbsp;&nbsp;</td><td class="menu-entry-description">
+</td></tr>
+<tr><td class="menu-entry-destination"><a href="#sec2">2.2 Sec 
2</a></td><td>&nbsp;&nbsp;</td><td class="menu-entry-description">
+</td></tr>
+<tr><td class="menu-entry-destination"><a href="#sec3">2.3 Sec 
3</a></td><td>&nbsp;&nbsp;</td><td class="menu-entry-description">
+</td></tr>
+</table>
+<hr style="height: 6px;">
+<div class="chapter-level-extent" id="chap">
+<table class="nav-panel" cellpadding="1" cellspacing="1" border="0">
+<tr><td>[<a href="#Top" title="Beginning of this chapter or previous chapter"> 
&lt;&lt; </a>]</td>
+<td>[<a href="#Top" title="Previous section in reading order"> &lt; </a>]</td>
+<td>[<a href="#Top"></a>]</td>
+<td>[<a href="#chap2" title="Next section in reading order"> &gt; </a>]</td>
+<td>[<a href="#chap2" title="Next chapter"> &gt;&gt; </a>]</td>
+<td> &nbsp; </td>
+<td> &nbsp; </td>
+<td> &nbsp; </td>
+<td> &nbsp; </td>
+<td>[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td>[Contents]</td>
+<td>[Index]</td>
+<td>[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="chapter" id="Chap"><span>1 Chap<a class="copiable-link" 
href="#Chap"> &para;</a></span></h1>
+
+<hr>
+</div>
+<div class="chapter-level-extent" id="chap2">
+<table class="nav-panel" cellpadding="1" cellspacing="1" border="0">
+<tr><td>[<a href="#chap" title="Beginning of this chapter or previous 
chapter"> &lt;&lt; </a>]</td>
+<td>[<a href="#chap" title="Previous section in reading order"> &lt; </a>]</td>
+<td>[<a href="#Top"></a>]</td>
+<td>[<a href="#sec1" title="Next section in reading order"> &gt; </a>]</td>
+<td>[ &gt;&gt; ]</td>
+<td> &nbsp; </td>
+<td> &nbsp; </td>
+<td> &nbsp; </td>
+<td> &nbsp; </td>
+<td>[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td>[Contents]</td>
+<td>[Index]</td>
+<td>[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="chapter" id="Chap-2"><span>2 Chap 2<a class="copiable-link" 
href="#Chap-2"> &para;</a></span></h1>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td class="menu-entry-destination"><a href="#sec1">2.1 Sec 
1</a></td><td>&nbsp;&nbsp;</td><td class="menu-entry-description">
+</td></tr>
+<tr><td class="menu-entry-destination"><a href="#sec2">2.2 Sec 
2</a></td><td>&nbsp;&nbsp;</td><td class="menu-entry-description">
+</td></tr>
+<tr><td class="menu-entry-destination"><a href="#sec3">2.3 Sec 
3</a></td><td>&nbsp;&nbsp;</td><td class="menu-entry-description">
+</td></tr>
+</table>
+<hr>
+<div class="section-level-extent" id="sec1">
+<table class="nav-panel" cellpadding="1" cellspacing="1" border="0">
+<tr><td>[<a href="#chap2" title="Beginning of this chapter or previous 
chapter"> &lt;&lt; </a>]</td>
+<td>[<a href="#chap2" title="Previous section in reading order"> &lt; 
</a>]</td>
+<td>[<a href="#chap2"></a>]</td>
+<td>[<a href="#sec2" title="Next section in reading order"> &gt; </a>]</td>
+<td>[ &gt;&gt; ]</td>
+<td> &nbsp; </td>
+<td> &nbsp; </td>
+<td> &nbsp; </td>
+<td> &nbsp; </td>
+<td>[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td>[Contents]</td>
+<td>[Index]</td>
+<td>[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section" id="Sec-1"><span>2.1 Sec 1<a class="copiable-link" 
href="#Sec-1"> &para;</a></span></h2>
+
+<hr>
+</div>
+<div class="section-level-extent" id="sec2">
+<table class="nav-panel" cellpadding="1" cellspacing="1" border="0">
+<tr><td>[<a href="#chap2" title="Beginning of this chapter or previous 
chapter"> &lt;&lt; </a>]</td>
+<td>[<a href="#sec1" title="Previous section in reading order"> &lt; </a>]</td>
+<td>[<a href="#chap2"></a>]</td>
+<td>[<a href="#sec3" title="Next section in reading order"> &gt; </a>]</td>
+<td>[ &gt;&gt; ]</td>
+<td> &nbsp; </td>
+<td> &nbsp; </td>
+<td> &nbsp; </td>
+<td> &nbsp; </td>
+<td>[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td>[Contents]</td>
+<td>[Index]</td>
+<td>[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section" id="Sec-2"><span>2.2 Sec 2<a class="copiable-link" 
href="#Sec-2"> &para;</a></span></h2>
+
+<hr>
+</div>
+<div class="section-level-extent" id="sec3">
+<table class="nav-panel" cellpadding="1" cellspacing="1" border="0">
+<tr><td>[<a href="#chap2" title="Beginning of this chapter or previous 
chapter"> &lt;&lt; </a>]</td>
+<td>[<a href="#sec2" title="Previous section in reading order"> &lt; </a>]</td>
+<td>[<a href="#chap2"></a>]</td>
+<td>[ &gt; ]</td>
+<td>[ &gt;&gt; ]</td>
+<td> &nbsp; </td>
+<td> &nbsp; </td>
+<td> &nbsp; </td>
+<td> &nbsp; </td>
+<td>[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td>[Contents]</td>
+<td>[Index]</td>
+<td>[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section" id="Sec-3"><span>2.3 Sec 3<a class="copiable-link" 
href="#Sec-3"> &para;</a></span></h2>
+<hr style="height: 6px;">
+</div>
+</div>
+</div>
+<div class="element-about" id="SEC_About">
+<table class="nav-panel" cellpadding="1" cellspacing="1" border="0">
+<tr><td>[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td>[Contents]</td>
+<td>[Index]</td>
+<td>[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="about-heading">About This Document</h1>
+
+<p>
+  This document was generated on <em class="emph">a sunny day</em>.
+</p>
+<p>
+  The buttons in the navigation panels have the following meaning:
+</p>
+<table border="1">
+  <tr>
+    <th> Button </th>
+    <th> Name </th>
+    <th> Go to </th>
+    <th> From 1.2.3 go to</th>
+  </tr>
+  <tr>
+    <td class="button-direction-about"> [ &lt;&lt; ] </td>
+    <td class="name-direction-about">FastBack</td>
+    <td>Beginning of this chapter or previous chapter</td>
+    <td>1</td>
+  </tr>
+  <tr>
+    <td class="button-direction-about"> [ &lt; ] </td>
+    <td class="name-direction-about">Back</td>
+    <td>Previous section in reading order</td>
+    <td>1.2.2</td>
+  </tr>
+  <tr>
+    <td class="button-direction-about"> [] </td>
+    <td class="name-direction-about"></td>
+    <td></td>
+    <td></td>
+  </tr>
+  <tr>
+    <td class="button-direction-about"> [ &gt; ] </td>
+    <td class="name-direction-about">Forward</td>
+    <td>Next section in reading order</td>
+    <td>1.2.4</td>
+  </tr>
+  <tr>
+    <td class="button-direction-about"> [ &gt;&gt; ] </td>
+    <td class="name-direction-about">FastForward</td>
+    <td>Next chapter</td>
+    <td>2</td>
+  </tr>
+  <tr>
+    <td class="button-direction-about"> [Top] </td>
+    <td class="name-direction-about">Top</td>
+    <td>Cover (top) of document</td>
+    <td> &nbsp; </td>
+  </tr>
+  <tr>
+    <td class="button-direction-about"> [Contents] </td>
+    <td class="name-direction-about">Contents</td>
+    <td>Table of contents</td>
+    <td> &nbsp; </td>
+  </tr>
+  <tr>
+    <td class="button-direction-about"> [Index] </td>
+    <td class="name-direction-about">Index</td>
+    <td>Index</td>
+    <td> &nbsp; </td>
+  </tr>
+  <tr>
+    <td class="button-direction-about"> [ ? ] </td>
+    <td class="name-direction-about">About</td>
+    <td>About (help)</td>
+    <td> &nbsp; </td>
+  </tr>
+</table>
+
+<p>
+  where the <strong class="strong"> Example </strong> assumes that the current 
position is at <strong class="strong"> Subsubsection One-Two-Three </strong> of 
a document of the following structure:
+</p>
+
+<ul>
+  <li> 1. Section One
+    <ul>
+      <li>1.1 Subsection One-One
+        <ul>
+          <li>...</li>
+        </ul>
+      </li>
+      <li>1.2 Subsection One-Two
+        <ul>
+          <li>1.2.1 Subsubsection One-Two-One</li>
+          <li>1.2.2 Subsubsection One-Two-Two</li>
+          <li>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp;
+            <strong>&lt;== Current Position </strong></li>
+          <li>1.2.4 Subsubsection One-Two-Four</li>
+        </ul>
+      </li>
+      <li>1.3 Subsection One-Three
+        <ul>
+          <li>...</li>
+        </ul>
+      </li>
+      <li>1.4 Subsection One-Four</li>
+    </ul>
+  </li>
+</ul>
+</div><hr>
+<p>
+  <span class="program-in-footer">This document was generated on <em 
class="emph">a sunny day</em>.</span>
+</p>
+
+
+</body>
+</html>



reply via email to

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