texinfo-commits
[Top][All Lists]
Advanced

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

branch master updated: @part without sectioning command associated with


From: Patrice Dumas
Subject: branch master updated: @part without sectioning command associated with following node
Date: Sun, 20 Mar 2022 12:32:26 -0400

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 111b560483 @part without sectioning command associated with following 
node
111b560483 is described below

commit 111b560483cb3ca3a70f386a01af0ccab6cc0abb
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Sun Mar 20 17:24:12 2022 +0100

    @part without sectioning command associated with following node
    
    * tp/Texinfo/ParserNonXS.pm (_end_line),
    tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line),
    tp/Texinfo/Convert/DocBook.pm (_convert), tp/Texinfo/Convert/HTML.pm
    (_convert_heading_command), tp/Texinfo/Convert/LaTeX.pm (output)
    (_convert), tp/Texinfo/Structuring.pm (split_by_node):
    Add extra key 'node_preceding_part' to a @part tree element
    followed directly by a node and 'part_following_node' to the node.
    When ignoring Top node content use part_following_node information
    to group a part before a node with the node.
    In split_by_node() associate a part with the following sectioning
    command or node tree unit.
---
 ChangeLog                                          |   16 +
 tp/Texinfo/Convert/DocBook.pm                      |   14 +-
 tp/Texinfo/Convert/HTML.pm                         |   13 +-
 tp/Texinfo/Convert/LaTeX.pm                        |  129 +-
 tp/Texinfo/ParserNonXS.pm                          |   20 +-
 tp/Texinfo/Structuring.pm                          |   11 +-
 tp/Texinfo/XS/parsetexi/end_line.c                 |   12 +-
 tp/t/converters_tests.t                            |   99 +-
 tp/t/results/converters_tests/non_empty_part.pl    |  413 +++--
 .../non_empty_part_no_top_node_output.pl           | 1602 ++++++++++++++++++++
 .../chapter_node_before_and_after_part.pl          |    6 +-
 tp/t/results/sectioning/double_part.pl             |   18 +-
 tp/t/results/sectioning/part_chapter_after_top.pl  |    6 +-
 tp/t/results/sectioning/part_node_before_top.pl    |    6 +-
 .../sectioning/part_node_chapter_after_top.pl      |    8 +-
 .../sectioning/part_node_chapter_appendix.pl       |    6 +-
 .../sectioning/part_node_chapter_node_appendix.pl  |    6 +-
 .../sectioning/part_node_node_part_appendix.pl     |    6 +-
 tp/t/results/sectioning/part_node_part_appendix.pl |    6 +-
 .../sectioning/part_node_part_node_appendix.pl     |   12 +-
 tp/t/test_utils.pl                                 |    5 +-
 21 files changed, 2162 insertions(+), 252 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index c71b55c540..82346b6aa9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2022-03-20  Patrice Dumas  <pertusus@free.fr>
+
+       @part without sectioning command associated with following node
+
+       * tp/Texinfo/ParserNonXS.pm (_end_line),
+       tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line),
+       tp/Texinfo/Convert/DocBook.pm (_convert), tp/Texinfo/Convert/HTML.pm
+       (_convert_heading_command), tp/Texinfo/Convert/LaTeX.pm (output)
+       (_convert), tp/Texinfo/Structuring.pm (split_by_node):
+       Add extra key 'node_preceding_part' to a @part tree element
+       followed directly by a node and 'part_following_node' to the node.
+       When ignoring Top node content use part_following_node information
+       to group a part before a node with the node.
+       In split_by_node() associate a part with the following sectioning
+       command or node tree unit.
+
 2022-03-20  Gavin Smith  <gavinsmith0123@gmail.com>
 
        * TODO.HTML: Update to state location where HTML files are
diff --git a/tp/Texinfo/Convert/DocBook.pm b/tp/Texinfo/Convert/DocBook.pm
index 98ae3386d6..5d5b798f5f 100644
--- a/tp/Texinfo/Convert/DocBook.pm
+++ b/tp/Texinfo/Convert/DocBook.pm
@@ -792,9 +792,19 @@ sub _convert($$;$)
       } elsif ($type eq 'line') {
         if ($Texinfo::Common::root_commands{$element->{'cmdname'}}) {
           if ($self->get_conf('NO_TOP_NODE_OUTPUT')) {
+            my $node_element;
             if ($element->{'cmdname'} eq 'node') {
-              if ($element->{'extra'}
-                  and $element->{'extra'}->{'normalized'} eq 'Top') {
+              $node_element = $element;
+            } elsif ($element->{'cmdname'} eq 'part' and $element->{'extra'}
+                   and $element->{'extra'}->{'part_following_node'}) {
+              $node_element = $element->{'extra'}->{'part_following_node'};
+            }
+            if ($node_element) {
+              # $node_element->{'extra'}->{'normalized'} not defined happens 
for
+              # empty nodes
+              if ($node_element->{'extra'}
+                  and $node_element->{'extra'}->{'normalized'}
+                  and $node_element->{'extra'}->{'normalized'} eq 'Top') {
                 $self->{'in_skipped_node_top'} = 1;
               } elsif (defined($self->{'in_skipped_node_top'})
                        and $self->{'in_skipped_node_top'} == 1) {
diff --git a/tp/Texinfo/Convert/HTML.pm b/tp/Texinfo/Convert/HTML.pm
index b006debf83..bc5fbb7e82 100644
--- a/tp/Texinfo/Convert/HTML.pm
+++ b/tp/Texinfo/Convert/HTML.pm
@@ -3591,10 +3591,17 @@ sub _convert_heading_command($$$$$)
       and $Texinfo::Common::root_commands{$cmdname}) {
     my $in_skipped_node_top
       = $self->shared_conversion_state('in_skipped_node_top', 0);
+    my $node_element;
     if ($cmdname eq 'node') {
-      if ($$in_skipped_node_top == 0
-          and $element->{'extra'}
-          and $element->{'extra'}->{'normalized'} eq 'Top') {
+      $node_element = $element;
+    } elsif ($cmdname eq 'part' and $element->{'extra'}
+             and $element->{'extra'}->{'part_following_node'}) {
+      $node_element = $element->{'extra'}->{'part_following_node'};
+    }
+    if ($node_element) {
+      if ($node_element->{'extra'}
+          and $node_element->{'extra'}->{'normalized'}
+          and $node_element->{'extra'}->{'normalized'} eq 'Top') {
         $$in_skipped_node_top = 1;
       } elsif ($$in_skipped_node_top == 1) {
         $$in_skipped_node_top = -1;
diff --git a/tp/Texinfo/Convert/LaTeX.pm b/tp/Texinfo/Convert/LaTeX.pm
index cf852c3ce3..9e2f09ab2b 100644
--- a/tp/Texinfo/Convert/LaTeX.pm
+++ b/tp/Texinfo/Convert/LaTeX.pm
@@ -944,14 +944,25 @@ sub output($$)
   # determine if there is a Top node at the end of the document
   my $in_top_node = undef;
   foreach my $element_content (@{$root->{'contents'}}) {
-    if ($element_content->{'cmdname'}
-        and $element_content->{'cmdname'} eq 'node') {
-      if ($element_content->{'extra'}->{'normalized'} eq 'Top') {
-        $in_top_node = 1;
-      } else {
-        if ($in_top_node) {
-          $in_top_node = 0;
-          last;
+    my $node_element;
+    if ($element_content->{'cmdname'}) {
+      my $cmdname = $element_content->{'cmdname'};
+      if ($cmdname eq 'node') {
+        $node_element = $element_content;
+      } elsif ($cmdname eq 'part' and $element_content->{'extra'}
+               and $element_content->{'extra'}->{'part_following_node'}) {
+        $node_element = $element_content->{'extra'}->{'part_following_node'};
+      }
+      if ($node_element) {
+        if ($node_element->{'extra'}
+            and $node_element->{'extra'}->{'normalized'}
+            and $node_element->{'extra'}->{'normalized'} eq 'Top') {
+          $in_top_node = 1;
+        } else {
+          if ($in_top_node) {
+            $in_top_node = 0;
+            last;
+          }
         }
       }
     }
@@ -2054,13 +2065,22 @@ sub _convert($$)
   my $result = '';
 
   if ($self->{'formatting_context'}->[-1]->{'in_skipped_node_top'}) {
-    if ((defined($cmdname) and $cmdname eq 'node')
+    my $node_element;
+    if (defined($cmdname) and $cmdname eq 'node') {
+      $node_element = $element;
+    } elsif (defined($cmdname) and $cmdname eq 'part' and $element->{'extra'}
+             and $element->{'extra'}->{'part_following_node'}) {
+      $node_element = $element->{'extra'}->{'part_following_node'};
+    }
+    if (($node_element
+         and not ($node_element->{'extra'}
+                  and $node_element->{'extra'}->{'normalized'}
+                  and $node_element->{'extra'}->{'normalized'} eq 'Top'))
          or (defined($type) and $type eq 'ignored_top_node_paragraph')) {
       delete $self->{'formatting_context'}->[-1]->{'in_skipped_node_top'};
-    }
-    elsif (! defined($cmdname)
-           or (not ($informative_commands{$cmdname}
-                    or $sectioning_heading_commands{$cmdname}))) {
+    } elsif (! defined($cmdname)
+             or (not ($informative_commands{$cmdname}
+                      or $sectioning_heading_commands{$cmdname}))) {
       return '';
     }
   }
@@ -2909,45 +2929,56 @@ sub _convert($$)
         _push_new_context($self, 'float'.$latex_float_name);
         $result .= "\\begin{$latex_float_name}\n";
       }
-    } elsif ($cmdname eq 'node') {
-      if ($element->{'extra'}->{'normalized'} eq 'Top') {
+    } elsif ($cmdname eq 'node' or $sectioning_heading_commands{$cmdname}) {
+      my $node_element;
+      if ($cmdname eq 'node') {
+        $node_element = $element;
+      } elsif ($cmdname eq 'part' and $element->{'extra'}
+               and $element->{'extra'}->{'part_following_node'}) {
+        $node_element = $element->{'extra'}->{'part_following_node'};
+      }
+      if ($node_element->{'extra'}
+          and $node_element->{'extra'}->{'normalized'}
+          and $node_element->{'extra'}->{'normalized'} eq 'Top') {
         $self->{'formatting_context'}->[-1]->{'in_skipped_node_top'} = 1;
       } else {
-        # add the label only if not associated with a section
-        if (not $element->{'extra'}->{'associated_section'}) {
-          my $node_label
-            = _tree_anchor_label($element->{'extra'}->{'node_content'});
-          $result .= "\\label{$node_label}%\n";
-        }
-      }
-    } elsif ($sectioning_heading_commands{$cmdname}) {
-      if ($cmdname eq 'appendix' and not $self->{'appendix_done'}) {
-        $result .= "\\appendix\n";
-        $self->{'appendix_done'} = 1;
-      }
-      if (not $self->{'formatting_context'}->[-1]->{'in_skipped_node_top'}) {
-        my $heading = '';
-        if ($element->{'args'}->[0]->{'contents'}) {
-          
$self->{'formatting_context'}->[-1]->{'in_sectioning_command_heading'} = 1;
-          $heading = $self->_convert({'contents' => 
$element->{'args'}->[0]->{'contents'}});
-          delete 
$self->{'formatting_context'}->[-1]->{'in_sectioning_command_heading'};
-        }
-
-        my $section_cmd = $section_map{$cmdname};
-        if (not defined($section_map{$cmdname})) {
-          die "BUG: no section_map for $cmdname";
-        }
-      
-        if ($cmdname ne 'centerchap') {
-          $result .= "\\".$section_cmd."{$heading}\n";
+        if ($cmdname eq 'node') {
+          # add the label only if not associated with a section
+          if (not $element->{'extra'}->{'associated_section'}) {
+            my $node_label
+              = _tree_anchor_label($element->{'extra'}->{'node_content'});
+            $result .= "\\label{$node_label}%\n";
+          }
         } else {
-          $result .= "\\".$section_cmd."{\\centering $heading}\n";
-        }
-        if ($element->{'extra'}->{'associated_node'}) {
-          my $associated_node = $element->{'extra'}->{'associated_node'};
-          my $node_label
-            = 
_tree_anchor_label($associated_node->{'extra'}->{'node_content'});
-          $result .= "\\label{$node_label}%\n";
+          if ($cmdname eq 'appendix' and not $self->{'appendix_done'}) {
+            $result .= "\\appendix\n";
+            $self->{'appendix_done'} = 1;
+          }
+          if (not 
$self->{'formatting_context'}->[-1]->{'in_skipped_node_top'}) {
+            my $heading = '';
+            if ($element->{'args'}->[0]->{'contents'}) {
+              
$self->{'formatting_context'}->[-1]->{'in_sectioning_command_heading'} = 1;
+              $heading = $self->_convert({'contents' => 
$element->{'args'}->[0]->{'contents'}});
+              delete 
$self->{'formatting_context'}->[-1]->{'in_sectioning_command_heading'};
+            }
+    
+            my $section_cmd = $section_map{$cmdname};
+            if (not defined($section_map{$cmdname})) {
+              die "BUG: no section_map for $cmdname";
+            }
+          
+            if ($cmdname ne 'centerchap') {
+              $result .= "\\".$section_cmd."{$heading}\n";
+            } else {
+              $result .= "\\".$section_cmd."{\\centering $heading}\n";
+            }
+            if ($element->{'extra'}->{'associated_node'}) {
+              my $associated_node = $element->{'extra'}->{'associated_node'};
+              my $node_label
+                = 
_tree_anchor_label($associated_node->{'extra'}->{'node_content'});
+              $result .= "\\label{$node_label}%\n";
+            }
+          }
         }
       }
     } elsif (($cmdname eq 'item' or $cmdname eq 'itemx')
diff --git a/tp/Texinfo/ParserNonXS.pm b/tp/Texinfo/ParserNonXS.pm
index 1417e37178..8af061d0bf 100644
--- a/tp/Texinfo/ParserNonXS.pm
+++ b/tp/Texinfo/ParserNonXS.pm
@@ -3378,6 +3378,18 @@ sub _end_line($$$)
                            $source_info);
      _register_label($self->{'targets'}, $current,
                    $current->{'extra'}->{'nodes_manuals'}->[0]);
+     if ($self->{'current_part'}) {
+       my $part = $self->{'current_part'};
+       if (not $part->{'extra'}
+           or not $part->{'extra'}->{'part_associated_section'}) {
+         # we only associate a part to the following node if the
+         # part is not already associate to a sectioning command,
+         # but the part can be associated to the sectioning command later
+         # if a sectioning command follows the node.
+         $current->{'extra'}->{'node_preceding_part'} = $part;
+         $part->{'extra'}->{'part_following_node'} = $current;
+       }
+     }
      $self->{'current_node'} = $current;
     } elsif ($command eq 'listoffloats') {
       _parse_float_type($current);
@@ -7216,14 +7228,18 @@ key for the normalized label, built as specified in the 
Texinfo manual
 in the B<HTML Xref> node.
 
 An I<associated_section> key holds the tree element of the
-sectioning command that follows the node.
+sectioning command that follows the node.  An I<node_preceding_part>
+key holds the tree element of the C<@part> that precedes the node,
+if there is no sectioning command between the C<@part> and the node.
 
 A node containing a menu have a I<menus> key which refers to an array of
 references to menu elements occuring in the node.
 
 =item C<@part>
 
-The next sectioning command is in I<part_associated_section>.
+The next sectioning command tree element is in I<part_associated_section>.
+The following node tree element is in I<part_following_node> if there is
+no sectioning command between the C<@part> and the node.
 
 =item sectioning command
 
diff --git a/tp/Texinfo/Structuring.pm b/tp/Texinfo/Structuring.pm
index be57ae9362..f839f8f022 100644
--- a/tp/Texinfo/Structuring.pm
+++ b/tp/Texinfo/Structuring.pm
@@ -820,8 +820,7 @@ sub split_by_node($)
   push @$tree_units, $current;
   my @pending_parts = ();
   foreach my $content (@{$root->{'contents'}}) {
-    if ($content->{'cmdname'} and $content->{'cmdname'} eq 'part'
-        and $content->{'extra'}->{'part_associated_section'}) {
+    if ($content->{'cmdname'} and $content->{'cmdname'} eq 'part') {
       push @pending_parts, $content;
       next;
     }
@@ -845,6 +844,14 @@ sub split_by_node($)
     push @{$current->{'contents'}}, $content;
     $content->{'structure'}->{'associated_unit'} = $current;
   }
+  if (@pending_parts) {
+    foreach my $part (@pending_parts) {
+      push @{$current->{'contents'}}, $part;
+      $part->{'structure'}->{'associated_unit'} = $current;
+    }
+    @pending_parts = ();
+  }
+
   return $tree_units;
 }
 
diff --git a/tp/Texinfo/XS/parsetexi/end_line.c 
b/tp/Texinfo/XS/parsetexi/end_line.c
index 42452ac127..e1be5fcde9 100644
--- a/tp/Texinfo/XS/parsetexi/end_line.c
+++ b/tp/Texinfo/XS/parsetexi/end_line.c
@@ -1718,7 +1718,17 @@ end_line_misc_line (ELEMENT *current)
             }
           register_label (current, label);
         }
-
+      if (current_part
+          && !lookup_extra (current_part, "part_associated_section"))
+        {
+         /* we only associate a part to the following node if the
+            part is not already associate to a sectioning command,
+            but the part can be associated to the sectioning command later
+            if a sectioning command follows the node. */
+          add_extra_element (current, "node_preceding_part", current_part);
+          add_extra_element (current_part, "part_following_node",
+                                 current);
+        }
       current_node = current;
     }
   else if (current->cmd == CM_listoffloats)
diff --git a/tp/t/converters_tests.t b/tp/t/converters_tests.t
index 52942dbc68..14e946b4df 100644
--- a/tp/t/converters_tests.t
+++ b/tp/t/converters_tests.t
@@ -86,6 +86,56 @@ my $top_in_ref_text =
 @code{@@inforef@{Top,,file name@}} @inforef{Top,,file name}
 ';
 
+my $non_empty_part_text =
+'@part part before
+
+Content before
+
+@node Top
+@top top
+
+@menu
+* chapter node::
+* part chapter node::
+@end menu
+
+@part part I
+
+Content I
+
+@chapter chap in Top node
+
+@part Part II
+
+Content II
+
+@node part chapter node
+@part part III
+
+Content III
+
+@chapter chapter with part node
+
+@part Part IV
+
+Content IV
+
+@part Part V
+
+Content V
+
+@chapter with part no node
+
+@part Part VI
+
+Content VI
+
+@node node between part and chapter
+
+@chapter chapter after part node
+
+';
+
 my @test_cases = (
 ['accent_with_text',
 '@u{--a} @dotless{--b} @^{--@dotless{i}} @^{--@dotless{j}} @^{--a}
@@ -735,56 +785,17 @@ Macros that should not be defined: @mymacro{}. 
@macroarg{with arg}.
 ', {'EXPANDED_FORMATS' => ['html']}, {'EXPANDED_FORMATS' => ['html']}
 ], 
 ['non_empty_part',
-'@node Top
-@top top
-
-@menu
-* chapter node::
-* part chapter node::
-@end menu
-
-@part part I
-
-Content I
-
-@chapter chap in Top node
-
-@part Part II
-
-Content II
-
-@node part chapter node
-@part part III
-
-Content III
-
-@chapter chapter with part node
-
-@part Part IV
-
-Content IV
-
-@part Part V
-
-Content V
-
-@chapter with part no node
-
-@part Part VI
-
-Content VI
-
-@node node between part and chapter
-
-@chapter chapter after part node
-
-',]
+$non_empty_part_text
+,]
 );
 
 my @html_text_cases = (
 ['top_in_ref_keep_top',
 $top_in_ref_text,
 {}, {'KEEP_TOP_EXTERNAL_REF' => 1}],
+['non_empty_part_no_top_node_output',
+$non_empty_part_text,
+{}, {'NO_TOP_NODE_OUTPUT' => 1}],
 );
 
 my @file_tests = (
diff --git a/tp/t/results/converters_tests/non_empty_part.pl 
b/tp/t/results/converters_tests/non_empty_part.pl
index b22bd87ea4..ca82965c9b 100644
--- a/tp/t/results/converters_tests/non_empty_part.pl
+++ b/tp/t/results/converters_tests/non_empty_part.pl
@@ -12,6 +12,59 @@ $result_trees{'non_empty_part'} = {
       'parent' => {},
       'type' => 'before_node_section'
     },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'part before'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'part',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'Content before
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => '',
+        'line_nr' => 1,
+        'macro' => ''
+      }
+    },
     {
       'args' => [
         {
@@ -49,7 +102,7 @@ $result_trees{'non_empty_part'} = {
       'parent' => {},
       'source_info' => {
         'file_name' => '',
-        'line_nr' => 1,
+        'line_nr' => 5,
         'macro' => ''
       }
     },
@@ -142,7 +195,7 @@ $result_trees{'non_empty_part'} = {
               'parent' => {},
               'source_info' => {
                 'file_name' => '',
-                'line_nr' => 5,
+                'line_nr' => 9,
                 'macro' => ''
               },
               'type' => 'menu_entry'
@@ -199,7 +252,7 @@ $result_trees{'non_empty_part'} = {
               'parent' => {},
               'source_info' => {
                 'file_name' => '',
-                'line_nr' => 6,
+                'line_nr' => 10,
                 'macro' => ''
               },
               'type' => 'menu_entry'
@@ -230,7 +283,7 @@ $result_trees{'non_empty_part'} = {
               'parent' => {},
               'source_info' => {
                 'file_name' => '',
-                'line_nr' => 7,
+                'line_nr' => 11,
                 'macro' => ''
               }
             }
@@ -241,7 +294,7 @@ $result_trees{'non_empty_part'} = {
           'parent' => {},
           'source_info' => {
             'file_name' => '',
-            'line_nr' => 4,
+            'line_nr' => 8,
             'macro' => ''
           }
         },
@@ -253,12 +306,13 @@ $result_trees{'non_empty_part'} = {
         }
       ],
       'extra' => {
+        'associated_part' => {},
         'spaces_before_argument' => ' '
       },
       'parent' => {},
       'source_info' => {
         'file_name' => '',
-        'line_nr' => 2,
+        'line_nr' => 6,
         'macro' => ''
       }
     },
@@ -311,7 +365,7 @@ $result_trees{'non_empty_part'} = {
       'parent' => {},
       'source_info' => {
         'file_name' => '',
-        'line_nr' => 9,
+        'line_nr' => 13,
         'macro' => ''
       }
     },
@@ -348,7 +402,7 @@ $result_trees{'non_empty_part'} = {
       'parent' => {},
       'source_info' => {
         'file_name' => '',
-        'line_nr' => 13,
+        'line_nr' => 17,
         'macro' => ''
       }
     },
@@ -401,7 +455,7 @@ $result_trees{'non_empty_part'} = {
       'parent' => {},
       'source_info' => {
         'file_name' => '',
-        'line_nr' => 15,
+        'line_nr' => 19,
         'macro' => ''
       }
     },
@@ -442,7 +496,7 @@ $result_trees{'non_empty_part'} = {
       'parent' => {},
       'source_info' => {
         'file_name' => '',
-        'line_nr' => 19,
+        'line_nr' => 23,
         'macro' => ''
       }
     },
@@ -495,7 +549,7 @@ $result_trees{'non_empty_part'} = {
       'parent' => {},
       'source_info' => {
         'file_name' => '',
-        'line_nr' => 20,
+        'line_nr' => 24,
         'macro' => ''
       }
     },
@@ -532,7 +586,7 @@ $result_trees{'non_empty_part'} = {
       'parent' => {},
       'source_info' => {
         'file_name' => '',
-        'line_nr' => 24,
+        'line_nr' => 28,
         'macro' => ''
       }
     },
@@ -585,7 +639,7 @@ $result_trees{'non_empty_part'} = {
       'parent' => {},
       'source_info' => {
         'file_name' => '',
-        'line_nr' => 26,
+        'line_nr' => 30,
         'macro' => ''
       }
     },
@@ -638,7 +692,7 @@ $result_trees{'non_empty_part'} = {
       'parent' => {},
       'source_info' => {
         'file_name' => '',
-        'line_nr' => 30,
+        'line_nr' => 34,
         'macro' => ''
       }
     },
@@ -675,7 +729,7 @@ $result_trees{'non_empty_part'} = {
       'parent' => {},
       'source_info' => {
         'file_name' => '',
-        'line_nr' => 34,
+        'line_nr' => 38,
         'macro' => ''
       }
     },
@@ -728,7 +782,7 @@ $result_trees{'non_empty_part'} = {
       'parent' => {},
       'source_info' => {
         'file_name' => '',
-        'line_nr' => 36,
+        'line_nr' => 40,
         'macro' => ''
       }
     },
@@ -776,7 +830,7 @@ $result_trees{'non_empty_part'} = {
       'parent' => {},
       'source_info' => {
         'file_name' => '',
-        'line_nr' => 40,
+        'line_nr' => 44,
         'macro' => ''
       }
     },
@@ -813,7 +867,7 @@ $result_trees{'non_empty_part'} = {
       'parent' => {},
       'source_info' => {
         'file_name' => '',
-        'line_nr' => 42,
+        'line_nr' => 46,
         'macro' => ''
       }
     }
@@ -823,83 +877,84 @@ $result_trees{'non_empty_part'} = {
 $result_trees{'non_empty_part'}{'contents'}[0]{'parent'} = 
$result_trees{'non_empty_part'};
 
$result_trees{'non_empty_part'}{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[1]{'args'}[0];
 $result_trees{'non_empty_part'}{'contents'}[1]{'args'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[1];
-$result_trees{'non_empty_part'}{'contents'}[1]{'extra'}{'node_content'}[0] = 
$result_trees{'non_empty_part'}{'contents'}[1]{'args'}[0]{'contents'}[0];
-$result_trees{'non_empty_part'}{'contents'}[1]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
 = $result_trees{'non_empty_part'}{'contents'}[1]{'args'}[0]{'contents'}[0];
+$result_trees{'non_empty_part'}{'contents'}[1]{'contents'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[1];
+$result_trees{'non_empty_part'}{'contents'}[1]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[1]{'contents'}[1];
+$result_trees{'non_empty_part'}{'contents'}[1]{'contents'}[1]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[1];
+$result_trees{'non_empty_part'}{'contents'}[1]{'contents'}[2]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[1];
 $result_trees{'non_empty_part'}{'contents'}[1]{'parent'} = 
$result_trees{'non_empty_part'};
 
$result_trees{'non_empty_part'}{'contents'}[2]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[2]{'args'}[0];
 $result_trees{'non_empty_part'}{'contents'}[2]{'args'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[2];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[2];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[0]{'extra'}{'command'}
 = $result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1]{'args'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1]{'args'}[1];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1]{'args'}[1]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1]{'args'}[2]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1]{'args'}[3]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1]{'args'}[3]{'contents'}[0];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1]{'args'}[3]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1]{'args'}[3];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1]{'args'}[3]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1]{'extra'}{'menu_entry_description'}
 = 
$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1]{'args'}[3];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1]{'extra'}{'menu_entry_node'}{'node_content'}[0]
 = 
$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1]{'args'}[1]{'contents'}[0];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[1]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2]{'args'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2]{'args'}[1];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2]{'args'}[1]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2]{'args'}[2]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2]{'args'}[3]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2]{'args'}[3]{'contents'}[0];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2]{'args'}[3]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2]{'args'}[3];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2]{'args'}[3]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2]{'extra'}{'menu_entry_description'}
 = 
$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2]{'args'}[3];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2]{'extra'}{'menu_entry_node'}{'node_content'}[0]
 = 
$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2]{'args'}[1]{'contents'}[0];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[2]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[3]{'args'}[0];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[3]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[3];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[3]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'extra'}{'end_command'}
 = $result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'contents'}[3];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[1]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[2];
-$result_trees{'non_empty_part'}{'contents'}[2]{'contents'}[2]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[2];
+$result_trees{'non_empty_part'}{'contents'}[2]{'extra'}{'node_content'}[0] = 
$result_trees{'non_empty_part'}{'contents'}[2]{'args'}[0]{'contents'}[0];
+$result_trees{'non_empty_part'}{'contents'}[2]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
 = $result_trees{'non_empty_part'}{'contents'}[2]{'args'}[0]{'contents'}[0];
 $result_trees{'non_empty_part'}{'contents'}[2]{'parent'} = 
$result_trees{'non_empty_part'};
 
$result_trees{'non_empty_part'}{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[3]{'args'}[0];
 $result_trees{'non_empty_part'}{'contents'}[3]{'args'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[3];
 $result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[3];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[0]{'extra'}{'command'}
 = $result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1];
 
$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[1];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[1]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[2]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[3]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[3]{'contents'}[0];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[3]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[3];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[3]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'extra'}{'menu_entry_description'}
 = 
$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[3];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'extra'}{'menu_entry_node'}{'node_content'}[0]
 = 
$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[1]{'contents'}[0];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[1];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[1]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[2]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[3]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[3]{'contents'}[0];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[3]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[3];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[3]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'extra'}{'menu_entry_description'}
 = 
$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[3];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'extra'}{'menu_entry_node'}{'node_content'}[0]
 = 
$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[1]{'contents'}[0];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[3]{'args'}[0];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[3]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[3];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[3]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1];
+$result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'extra'}{'end_command'}
 = $result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'contents'}[3];
 $result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[1]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[3];
 $result_trees{'non_empty_part'}{'contents'}[3]{'contents'}[2]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[3];
+$result_trees{'non_empty_part'}{'contents'}[3]{'extra'}{'associated_part'} = 
$result_trees{'non_empty_part'}{'contents'}[1];
 $result_trees{'non_empty_part'}{'contents'}[3]{'parent'} = 
$result_trees{'non_empty_part'};
 
$result_trees{'non_empty_part'}{'contents'}[4]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[4]{'args'}[0];
 $result_trees{'non_empty_part'}{'contents'}[4]{'args'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[4];
 $result_trees{'non_empty_part'}{'contents'}[4]{'contents'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[4];
-$result_trees{'non_empty_part'}{'contents'}[4]{'extra'}{'associated_part'} = 
$result_trees{'non_empty_part'}{'contents'}[3];
+$result_trees{'non_empty_part'}{'contents'}[4]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[4]{'contents'}[1];
+$result_trees{'non_empty_part'}{'contents'}[4]{'contents'}[1]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[4];
+$result_trees{'non_empty_part'}{'contents'}[4]{'contents'}[2]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[4];
 $result_trees{'non_empty_part'}{'contents'}[4]{'parent'} = 
$result_trees{'non_empty_part'};
 
$result_trees{'non_empty_part'}{'contents'}[5]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[5]{'args'}[0];
 $result_trees{'non_empty_part'}{'contents'}[5]{'args'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[5];
 $result_trees{'non_empty_part'}{'contents'}[5]{'contents'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[5];
-$result_trees{'non_empty_part'}{'contents'}[5]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[5]{'contents'}[1];
-$result_trees{'non_empty_part'}{'contents'}[5]{'contents'}[1]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[5];
-$result_trees{'non_empty_part'}{'contents'}[5]{'contents'}[2]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[5];
+$result_trees{'non_empty_part'}{'contents'}[5]{'extra'}{'associated_part'} = 
$result_trees{'non_empty_part'}{'contents'}[4];
 $result_trees{'non_empty_part'}{'contents'}[5]{'parent'} = 
$result_trees{'non_empty_part'};
 
$result_trees{'non_empty_part'}{'contents'}[6]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[6]{'args'}[0];
 $result_trees{'non_empty_part'}{'contents'}[6]{'args'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[6];
-$result_trees{'non_empty_part'}{'contents'}[6]{'extra'}{'node_content'}[0] = 
$result_trees{'non_empty_part'}{'contents'}[6]{'args'}[0]{'contents'}[0];
-$result_trees{'non_empty_part'}{'contents'}[6]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
 = $result_trees{'non_empty_part'}{'contents'}[6]{'args'}[0]{'contents'}[0];
+$result_trees{'non_empty_part'}{'contents'}[6]{'contents'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[6];
+$result_trees{'non_empty_part'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[6]{'contents'}[1];
+$result_trees{'non_empty_part'}{'contents'}[6]{'contents'}[1]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[6];
+$result_trees{'non_empty_part'}{'contents'}[6]{'contents'}[2]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[6];
 $result_trees{'non_empty_part'}{'contents'}[6]{'parent'} = 
$result_trees{'non_empty_part'};
 
$result_trees{'non_empty_part'}{'contents'}[7]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[7]{'args'}[0];
 $result_trees{'non_empty_part'}{'contents'}[7]{'args'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[7];
-$result_trees{'non_empty_part'}{'contents'}[7]{'contents'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[7];
-$result_trees{'non_empty_part'}{'contents'}[7]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[7]{'contents'}[1];
-$result_trees{'non_empty_part'}{'contents'}[7]{'contents'}[1]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[7];
-$result_trees{'non_empty_part'}{'contents'}[7]{'contents'}[2]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[7];
+$result_trees{'non_empty_part'}{'contents'}[7]{'extra'}{'node_content'}[0] = 
$result_trees{'non_empty_part'}{'contents'}[7]{'args'}[0]{'contents'}[0];
+$result_trees{'non_empty_part'}{'contents'}[7]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
 = $result_trees{'non_empty_part'}{'contents'}[7]{'args'}[0]{'contents'}[0];
 $result_trees{'non_empty_part'}{'contents'}[7]{'parent'} = 
$result_trees{'non_empty_part'};
 
$result_trees{'non_empty_part'}{'contents'}[8]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[8]{'args'}[0];
 $result_trees{'non_empty_part'}{'contents'}[8]{'args'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[8];
 $result_trees{'non_empty_part'}{'contents'}[8]{'contents'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[8];
-$result_trees{'non_empty_part'}{'contents'}[8]{'extra'}{'associated_part'} = 
$result_trees{'non_empty_part'}{'contents'}[7];
+$result_trees{'non_empty_part'}{'contents'}[8]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[8]{'contents'}[1];
+$result_trees{'non_empty_part'}{'contents'}[8]{'contents'}[1]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[8];
+$result_trees{'non_empty_part'}{'contents'}[8]{'contents'}[2]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[8];
 $result_trees{'non_empty_part'}{'contents'}[8]{'parent'} = 
$result_trees{'non_empty_part'};
 
$result_trees{'non_empty_part'}{'contents'}[9]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[9]{'args'}[0];
 $result_trees{'non_empty_part'}{'contents'}[9]{'args'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[9];
 $result_trees{'non_empty_part'}{'contents'}[9]{'contents'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[9];
-$result_trees{'non_empty_part'}{'contents'}[9]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[9]{'contents'}[1];
-$result_trees{'non_empty_part'}{'contents'}[9]{'contents'}[1]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[9];
-$result_trees{'non_empty_part'}{'contents'}[9]{'contents'}[2]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[9];
+$result_trees{'non_empty_part'}{'contents'}[9]{'extra'}{'associated_part'} = 
$result_trees{'non_empty_part'}{'contents'}[8];
 $result_trees{'non_empty_part'}{'contents'}[9]{'parent'} = 
$result_trees{'non_empty_part'};
 
$result_trees{'non_empty_part'}{'contents'}[10]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[10]{'args'}[0];
 $result_trees{'non_empty_part'}{'contents'}[10]{'args'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[10];
@@ -911,28 +966,39 @@ $result_trees{'non_empty_part'}{'contents'}[10]{'parent'} 
= $result_trees{'non_e
 
$result_trees{'non_empty_part'}{'contents'}[11]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[11]{'args'}[0];
 $result_trees{'non_empty_part'}{'contents'}[11]{'args'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[11];
 $result_trees{'non_empty_part'}{'contents'}[11]{'contents'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[11];
-$result_trees{'non_empty_part'}{'contents'}[11]{'extra'}{'associated_part'} = 
$result_trees{'non_empty_part'}{'contents'}[10];
+$result_trees{'non_empty_part'}{'contents'}[11]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[11]{'contents'}[1];
+$result_trees{'non_empty_part'}{'contents'}[11]{'contents'}[1]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[11];
+$result_trees{'non_empty_part'}{'contents'}[11]{'contents'}[2]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[11];
 $result_trees{'non_empty_part'}{'contents'}[11]{'parent'} = 
$result_trees{'non_empty_part'};
 
$result_trees{'non_empty_part'}{'contents'}[12]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[12]{'args'}[0];
 $result_trees{'non_empty_part'}{'contents'}[12]{'args'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[12];
 $result_trees{'non_empty_part'}{'contents'}[12]{'contents'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[12];
-$result_trees{'non_empty_part'}{'contents'}[12]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[12]{'contents'}[1];
-$result_trees{'non_empty_part'}{'contents'}[12]{'contents'}[1]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[12];
-$result_trees{'non_empty_part'}{'contents'}[12]{'contents'}[2]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[12];
+$result_trees{'non_empty_part'}{'contents'}[12]{'extra'}{'associated_part'} = 
$result_trees{'non_empty_part'}{'contents'}[11];
 $result_trees{'non_empty_part'}{'contents'}[12]{'parent'} = 
$result_trees{'non_empty_part'};
 
$result_trees{'non_empty_part'}{'contents'}[13]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[13]{'args'}[0];
 $result_trees{'non_empty_part'}{'contents'}[13]{'args'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[13];
 $result_trees{'non_empty_part'}{'contents'}[13]{'contents'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[13];
-$result_trees{'non_empty_part'}{'contents'}[13]{'extra'}{'node_content'}[0] = 
$result_trees{'non_empty_part'}{'contents'}[13]{'args'}[0]{'contents'}[0];
-$result_trees{'non_empty_part'}{'contents'}[13]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
 = $result_trees{'non_empty_part'}{'contents'}[13]{'args'}[0]{'contents'}[0];
+$result_trees{'non_empty_part'}{'contents'}[13]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[13]{'contents'}[1];
+$result_trees{'non_empty_part'}{'contents'}[13]{'contents'}[1]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[13];
+$result_trees{'non_empty_part'}{'contents'}[13]{'contents'}[2]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[13];
 $result_trees{'non_empty_part'}{'contents'}[13]{'parent'} = 
$result_trees{'non_empty_part'};
 
$result_trees{'non_empty_part'}{'contents'}[14]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[14]{'args'}[0];
 $result_trees{'non_empty_part'}{'contents'}[14]{'args'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[14];
 $result_trees{'non_empty_part'}{'contents'}[14]{'contents'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[14];
-$result_trees{'non_empty_part'}{'contents'}[14]{'extra'}{'associated_part'} = 
$result_trees{'non_empty_part'}{'contents'}[12];
+$result_trees{'non_empty_part'}{'contents'}[14]{'extra'}{'node_content'}[0] = 
$result_trees{'non_empty_part'}{'contents'}[14]{'args'}[0]{'contents'}[0];
+$result_trees{'non_empty_part'}{'contents'}[14]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
 = $result_trees{'non_empty_part'}{'contents'}[14]{'args'}[0]{'contents'}[0];
 $result_trees{'non_empty_part'}{'contents'}[14]{'parent'} = 
$result_trees{'non_empty_part'};
+$result_trees{'non_empty_part'}{'contents'}[15]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part'}{'contents'}[15]{'args'}[0];
+$result_trees{'non_empty_part'}{'contents'}[15]{'args'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[15];
+$result_trees{'non_empty_part'}{'contents'}[15]{'contents'}[0]{'parent'} = 
$result_trees{'non_empty_part'}{'contents'}[15];
+$result_trees{'non_empty_part'}{'contents'}[15]{'extra'}{'associated_part'} = 
$result_trees{'non_empty_part'}{'contents'}[13];
+$result_trees{'non_empty_part'}{'contents'}[15]{'parent'} = 
$result_trees{'non_empty_part'};
+
+$result_texis{'non_empty_part'} = '@part part before
+
+Content before
 
-$result_texis{'non_empty_part'} = '@node Top
+@node Top
 @top top
 
 @menu
@@ -978,7 +1044,12 @@ Content VI
 ';
 
 
-$result_texts{'non_empty_part'} = 'top
+$result_texts{'non_empty_part'} = 'part before
+***********
+
+Content before
+
+top
 ***
 
 * chapter node::
@@ -1033,21 +1104,34 @@ $result_sectioning{'non_empty_part'} = {
   'structure' => {
     'section_childs' => [
       {
-        'cmdname' => 'top',
+        'cmdname' => 'part',
         'extra' => {
-          'associated_node' => {
-            'cmdname' => 'node',
+          'part_associated_section' => {
+            'cmdname' => 'top',
             'extra' => {
-              'normalized' => 'Top'
+              'associated_node' => {
+                'cmdname' => 'node',
+                'extra' => {
+                  'normalized' => 'Top'
+                },
+                'structure' => {}
+              },
+              'associated_part' => {}
             },
-            'structure' => {}
-          }
+            'structure' => {
+              'section_level' => 0,
+              'section_prev' => {},
+              'section_up' => {}
+            }
+          },
+          'part_following_node' => {}
         },
         'structure' => {
           'section_level' => 0,
           'section_up' => {}
         }
       },
+      {},
       {
         'cmdname' => 'part',
         'extra' => {
@@ -1076,7 +1160,15 @@ $result_sectioning{'non_empty_part'} = {
       },
       {
         'cmdname' => 'part',
-        'extra' => {},
+        'extra' => {
+          'part_following_node' => {
+            'cmdname' => 'node',
+            'extra' => {
+              'normalized' => 'part-chapter-node'
+            },
+            'structure' => {}
+          }
+        },
         'structure' => {
           'section_level' => 0,
           'section_prev' => {},
@@ -1089,13 +1181,7 @@ $result_sectioning{'non_empty_part'} = {
           'part_associated_section' => {
             'cmdname' => 'chapter',
             'extra' => {
-              'associated_node' => {
-                'cmdname' => 'node',
-                'extra' => {
-                  'normalized' => 'part-chapter-node'
-                },
-                'structure' => {}
-              },
+              'associated_node' => {},
               'associated_part' => {}
             },
             'structure' => {
@@ -1173,7 +1259,8 @@ $result_sectioning{'non_empty_part'} = {
               'toplevel_prev' => {},
               'toplevel_up' => {}
             }
-          }
+          },
+          'part_following_node' => {}
         },
         'structure' => {
           'section_childs' => [
@@ -1188,46 +1275,59 @@ $result_sectioning{'non_empty_part'} = {
     'section_level' => -1
   }
 };
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'}{'extra'}{'associated_part'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0];
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'}{'structure'}{'section_prev'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0];
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'}{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part'};
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0]{'extra'}{'part_following_node'}
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'}{'extra'}{'associated_node'};
 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0]{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part'};
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[1]{'extra'}{'part_associated_section'}{'extra'}{'associated_part'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[1];
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[1]{'extra'}{'part_associated_section'}{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[1];
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[1]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_prev'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0];
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[1]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_up'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0];
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[1]{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[1]{'extra'}{'part_associated_section'};
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[1]{'structure'}{'section_prev'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0];
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[1]{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part'};
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[2]{'structure'}{'section_prev'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[1];
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[1] = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[2]{'extra'}{'part_associated_section'}{'extra'}{'associated_part'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[2];
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[2]{'extra'}{'part_associated_section'}{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[2];
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[2]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_prev'}
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[2]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_up'}
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[2]{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[2]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[2]{'structure'}{'section_prev'}
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'};
 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[2]{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part'};
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[3]{'extra'}{'part_associated_section'}{'extra'}{'associated_part'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[3];
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[3]{'extra'}{'part_associated_section'}{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[3];
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[3]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_prev'}
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[1]{'extra'}{'part_associated_section'};
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[3]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_up'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0];
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[3]{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[3]{'extra'}{'part_associated_section'};
 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[3]{'structure'}{'section_prev'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[2];
 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[3]{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part'};
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[4]{'extra'}{'part_associated_section'}{'extra'}{'associated_node'}
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[3]{'extra'}{'part_following_node'};
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[4]{'extra'}{'part_associated_section'}{'extra'}{'associated_part'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[4];
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[4]{'extra'}{'part_associated_section'}{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[4];
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[4]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_prev'}
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[2]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[4]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_up'}
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[4]{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[4]{'extra'}{'part_associated_section'};
 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[4]{'structure'}{'section_prev'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[3];
 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[4]{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part'};
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[5]{'extra'}{'part_associated_section'}{'extra'}{'associated_part'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[5];
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[5]{'extra'}{'part_associated_section'}{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[5];
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[5]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_prev'}
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[3]{'extra'}{'part_associated_section'};
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[5]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_up'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0];
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[5]{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[5]{'extra'}{'part_associated_section'};
 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[5]{'structure'}{'section_prev'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[4];
 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[5]{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part'};
 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[6]{'extra'}{'part_associated_section'}{'extra'}{'associated_part'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[6];
 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[6]{'extra'}{'part_associated_section'}{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[6];
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[6]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_prev'}
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[5]{'extra'}{'part_associated_section'};
-$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[6]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_up'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0];
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[6]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_prev'}
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[4]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[6]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_up'}
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'};
 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[6]{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[6]{'extra'}{'part_associated_section'};
 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[6]{'structure'}{'section_prev'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[5];
 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[6]{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part'};
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[7]{'extra'}{'part_associated_section'}{'extra'}{'associated_part'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[7];
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[7]{'extra'}{'part_associated_section'}{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[7];
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[7]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_prev'}
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[6]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[7]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_up'}
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[7]{'extra'}{'part_following_node'}
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[7]{'extra'}{'part_associated_section'}{'extra'}{'associated_node'};
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[7]{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[7]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[7]{'structure'}{'section_prev'}
 = $result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[6];
+$result_sectioning{'non_empty_part'}{'structure'}{'section_childs'}[7]{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part'};
 
 $result_nodes{'non_empty_part'} = {
   'cmdname' => 'node',
   'extra' => {
     'associated_section' => {
       'cmdname' => 'top',
-      'extra' => {},
+      'extra' => {
+        'associated_part' => {
+          'cmdname' => 'part',
+          'extra' => {},
+          'structure' => {}
+        }
+      },
       'structure' => {}
     },
     'menus' => [
@@ -1236,6 +1336,7 @@ $result_nodes{'non_empty_part'} = {
         'extra' => {}
       }
     ],
+    'node_preceding_part' => {},
     'normalized' => 'Top'
   },
   'structure' => {
@@ -1255,6 +1356,11 @@ $result_nodes{'non_empty_part'} = {
             'section_number' => 2
           }
         },
+        'node_preceding_part' => {
+          'cmdname' => 'part',
+          'extra' => {},
+          'structure' => {}
+        },
         'normalized' => 'part-chapter-node'
       },
       'structure' => {
@@ -1265,6 +1371,7 @@ $result_nodes{'non_empty_part'} = {
     'node_next' => {}
   }
 };
+$result_nodes{'non_empty_part'}{'extra'}{'node_preceding_part'} = 
$result_nodes{'non_empty_part'}{'extra'}{'associated_section'}{'extra'}{'associated_part'};
 
$result_nodes{'non_empty_part'}{'structure'}{'menu_child'}{'structure'}{'node_prev'}
 = $result_nodes{'non_empty_part'};
 
$result_nodes{'non_empty_part'}{'structure'}{'menu_child'}{'structure'}{'node_up'}
 = $result_nodes{'non_empty_part'};
 $result_nodes{'non_empty_part'}{'structure'}{'node_next'} = 
$result_nodes{'non_empty_part'}{'structure'}{'menu_child'};
@@ -1292,11 +1399,20 @@ $result_menus{'non_empty_part'} = {
 
$result_menus{'non_empty_part'}{'structure'}{'menu_child'}{'structure'}{'menu_up'}
 = $result_menus{'non_empty_part'};
 
 $result_errors{'non_empty_part'} = [
+  {
+    'error_line' => 'warning: @part should not be associated with @top
+',
+    'file_name' => '',
+    'line_nr' => 1,
+    'macro' => '',
+    'text' => '@part should not be associated with @top',
+    'type' => 'warning'
+  },
   {
     'error_line' => 'warning: @node precedes @part, but parts may not be 
associated with nodes
 ',
     'file_name' => '',
-    'line_nr' => 20,
+    'line_nr' => 24,
     'macro' => '',
     'text' => '@node precedes @part, but parts may not be associated with 
nodes',
     'type' => 'warning'
@@ -1305,7 +1421,7 @@ $result_errors{'non_empty_part'} = [
     'error_line' => 'warning: no sectioning command associated with @part
 ',
     'file_name' => '',
-    'line_nr' => 15,
+    'line_nr' => 19,
     'macro' => '',
     'text' => 'no sectioning command associated with @part',
     'type' => 'warning'
@@ -1314,7 +1430,7 @@ $result_errors{'non_empty_part'} = [
     'error_line' => 'warning: no sectioning command associated with @part
 ',
     'file_name' => '',
-    'line_nr' => 26,
+    'line_nr' => 30,
     'macro' => '',
     'text' => 'no sectioning command associated with @part',
     'type' => 'warning'
@@ -1323,7 +1439,7 @@ $result_errors{'non_empty_part'} = [
     'error_line' => 'warning: @part not empty
 ',
     'file_name' => '',
-    'line_nr' => 9,
+    'line_nr' => 1,
     'macro' => '',
     'text' => '@part not empty',
     'type' => 'warning'
@@ -1332,7 +1448,7 @@ $result_errors{'non_empty_part'} = [
     'error_line' => 'warning: @part not empty
 ',
     'file_name' => '',
-    'line_nr' => 15,
+    'line_nr' => 13,
     'macro' => '',
     'text' => '@part not empty',
     'type' => 'warning'
@@ -1341,7 +1457,7 @@ $result_errors{'non_empty_part'} = [
     'error_line' => 'warning: @part not empty
 ',
     'file_name' => '',
-    'line_nr' => 20,
+    'line_nr' => 19,
     'macro' => '',
     'text' => '@part not empty',
     'type' => 'warning'
@@ -1350,7 +1466,7 @@ $result_errors{'non_empty_part'} = [
     'error_line' => 'warning: @part not empty
 ',
     'file_name' => '',
-    'line_nr' => 26,
+    'line_nr' => 24,
     'macro' => '',
     'text' => '@part not empty',
     'type' => 'warning'
@@ -1368,7 +1484,16 @@ $result_errors{'non_empty_part'} = [
     'error_line' => 'warning: @part not empty
 ',
     'file_name' => '',
-    'line_nr' => 36,
+    'line_nr' => 34,
+    'macro' => '',
+    'text' => '@part not empty',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: @part not empty
+',
+    'file_name' => '',
+    'line_nr' => 40,
     'macro' => '',
     'text' => '@part not empty',
     'type' => 'warning'
@@ -1377,7 +1502,7 @@ $result_errors{'non_empty_part'} = [
     'error_line' => '@menu reference to nonexistent node `chapter node\'
 ',
     'file_name' => '',
-    'line_nr' => 5,
+    'line_nr' => 9,
     'macro' => '',
     'text' => '@menu reference to nonexistent node `chapter node\'',
     'type' => 'error'
@@ -1386,7 +1511,7 @@ $result_errors{'non_empty_part'} = [
     'error_line' => 'warning: node `node between part and chapter\' 
unreferenced
 ',
     'file_name' => '',
-    'line_nr' => 40,
+    'line_nr' => 44,
     'macro' => '',
     'text' => 'node `node between part and chapter\' unreferenced',
     'type' => 'warning'
@@ -1398,7 +1523,9 @@ $result_floats{'non_empty_part'} = {};
 
 
 
-$result_converted{'plaintext'}->{'non_empty_part'} = 'top
+$result_converted{'plaintext'}->{'non_empty_part'} = 'Content before
+
+top
 ***
 
 Content I
@@ -1428,11 +1555,18 @@ Content VI
 ';
 
 
-$result_converted{'html_text'}->{'non_empty_part'} = '<div 
class="top-level-extent" id="Top">
+$result_converted{'html_text'}->{'non_empty_part'} = '<div 
class="part-level-extent" id="part-before">
 <div class="nav-panel">
 <p>
  &nbsp; </p>
 </div>
+<h1 class="part">part before</h1>
+<hr>
+
+<p>Content before
+</p>
+</div>
+<div class="top-level-extent" id="Top">
 <h1 class="top" id="top">top</h1>
 
 
@@ -1449,20 +1583,20 @@ $result_converted{'html_text'}->{'non_empty_part'} = 
'<div class="top-level-exte
 <div class="chapter-level-extent" id="chap-in-Top-node">
 <h2 class="chapter">1 chap in Top node</h2>
 
+<hr>
 </div>
 </div>
 <div class="part-level-extent" id="Part-II">
+<div class="nav-panel">
+<p>
+ &nbsp; </p>
+</div>
 <h1 class="part">Part II</h1>
 <hr>
 
 <p>Content II
 </p>
-<hr>
 <div class="chapter-level-extent" id="part-chapter-node">
-<div class="nav-panel">
-<p>
- &nbsp; </p>
-</div>
 </div>
 </div>
 <div class="part-level-extent" id="part-III">
@@ -1521,7 +1655,12 @@ $result_converted{'html_text'}->{'non_empty_part'} = 
'<div class="top-level-exte
 ';
 
 
-$result_converted{'xml'}->{'non_empty_part'} = '<node name="Top" spaces=" 
"><nodename>Top</nodename><nodenext automatic="on">part chapter 
node</nodenext></node>
+$result_converted{'xml'}->{'non_empty_part'} = '<part spaces=" 
"><sectiontitle>part before</sectiontitle>
+
+<para>Content before
+</para>
+</part>
+<node name="Top" spaces=" "><nodename>Top</nodename><nodenext 
automatic="on">part chapter node</nodenext></node>
 <top spaces=" "><sectiontitle>top</sectiontitle>
 
 <menu endspaces=" ">
@@ -1579,6 +1718,14 @@ $result_converted{'xml'}->{'non_empty_part'} = '<node 
name="Top" spaces=" "><nod
 
 
 $result_converted{'docbook'}->{'non_empty_part'} = '<part label="">
+<title>Part II</title>
+<partintro>
+
+<para>Content II
+</para>
+</partintro>
+</part>
+<part label="">
 <title>part III</title>
 <chapter label="2" id="part-chapter-node">
 <title>chapter with part node</title>
@@ -1620,7 +1767,11 @@ $result_converted{'docbook'}->{'non_empty_part'} = 
'<part label="">
 ';
 
 
-$result_converted{'latex'}->{'non_empty_part'} = '\\part{part III}
+$result_converted{'latex'}->{'non_empty_part'} = '\\part{Part II}
+
+Content II
+
+\\part{part III}
 
 Content III
 
@@ -1650,6 +1801,8 @@ Content VI
 
 $result_converted{'info'}->{'non_empty_part'} = 'This is , produced from .
 
+Content before
+
 
 File: ,  Node: Top,  Next: part chapter node,  Up: (dir)
 
@@ -1694,9 +1847,9 @@ File: ,  Node: node between part and chapter,  Up: Top
 
 
 Tag Table:
-Node: Top27
-Node: part chapter node207
-Node: node between part and chapter405
+Node: Top43
+Node: part chapter node223
+Node: node between part and chapter421
 
 End Tag Table
 
diff --git a/tp/t/results/converters_tests/non_empty_part_no_top_node_output.pl 
b/tp/t/results/converters_tests/non_empty_part_no_top_node_output.pl
new file mode 100644
index 0000000000..8c8347f627
--- /dev/null
+++ b/tp/t/results/converters_tests/non_empty_part_no_top_node_output.pl
@@ -0,0 +1,1602 @@
+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{'non_empty_part_no_top_node_output'} = {
+  'contents' => [
+    {
+      'contents' => [],
+      'parent' => {},
+      'type' => 'before_node_section'
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'part before'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'part',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'Content before
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => '',
+        'line_nr' => 1,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'Top'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'contents' => [],
+      'extra' => {
+        'node_content' => [
+          {}
+        ],
+        'nodes_manuals' => [
+          {
+            'node_content' => [
+              {}
+            ],
+            'normalized' => 'Top'
+          }
+        ],
+        'normalized' => 'Top',
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => '',
+        'line_nr' => 5,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'top'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'top',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'cmdname' => 'menu',
+          'contents' => [
+            {
+              'extra' => {
+                'command' => {}
+              },
+              'parent' => {},
+              'text' => '
+',
+              'type' => 'empty_line_after_command'
+            },
+            {
+              'args' => [
+                {
+                  'parent' => {},
+                  'text' => '* ',
+                  'type' => 'menu_entry_leading_text'
+                },
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'chapter node'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'menu_entry_node'
+                },
+                {
+                  'parent' => {},
+                  'text' => '::',
+                  'type' => 'menu_entry_separator'
+                },
+                {
+                  'contents' => [
+                    {
+                      'contents' => [
+                        {
+                          'parent' => {},
+                          'text' => '
+'
+                        }
+                      ],
+                      'parent' => {},
+                      'type' => 'preformatted'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'menu_entry_description'
+                }
+              ],
+              'extra' => {
+                'menu_entry_description' => {},
+                'menu_entry_node' => {
+                  'node_content' => [
+                    {}
+                  ],
+                  'normalized' => 'chapter-node'
+                }
+              },
+              'parent' => {},
+              'source_info' => {
+                'file_name' => '',
+                'line_nr' => 9,
+                'macro' => ''
+              },
+              'type' => 'menu_entry'
+            },
+            {
+              'args' => [
+                {
+                  'parent' => {},
+                  'text' => '* ',
+                  'type' => 'menu_entry_leading_text'
+                },
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'part chapter node'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'menu_entry_node'
+                },
+                {
+                  'parent' => {},
+                  'text' => '::',
+                  'type' => 'menu_entry_separator'
+                },
+                {
+                  'contents' => [
+                    {
+                      'contents' => [
+                        {
+                          'parent' => {},
+                          'text' => '
+'
+                        }
+                      ],
+                      'parent' => {},
+                      'type' => 'preformatted'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'menu_entry_description'
+                }
+              ],
+              'extra' => {
+                'menu_entry_description' => {},
+                'menu_entry_node' => {
+                  'node_content' => [
+                    {}
+                  ],
+                  'normalized' => 'part-chapter-node'
+                }
+              },
+              'parent' => {},
+              'source_info' => {
+                'file_name' => '',
+                'line_nr' => 10,
+                'macro' => ''
+              },
+              'type' => 'menu_entry'
+            },
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'menu'
+                    }
+                  ],
+                  'extra' => {
+                    'spaces_after_argument' => '
+'
+                  },
+                  'parent' => {},
+                  'type' => 'line_arg'
+                }
+              ],
+              'cmdname' => 'end',
+              'extra' => {
+                'command_argument' => 'menu',
+                'spaces_before_argument' => ' ',
+                'text_arg' => 'menu'
+              },
+              'parent' => {},
+              'source_info' => {
+                'file_name' => '',
+                'line_nr' => 11,
+                'macro' => ''
+              }
+            }
+          ],
+          'extra' => {
+            'end_command' => {}
+          },
+          'parent' => {},
+          'source_info' => {
+            'file_name' => '',
+            'line_nr' => 8,
+            'macro' => ''
+          }
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'associated_part' => {},
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => '',
+        'line_nr' => 6,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'part I'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'part',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'Content I
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => '',
+        'line_nr' => 13,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'chap in Top node'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'associated_part' => {},
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => '',
+        'line_nr' => 17,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'Part II'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'part',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'Content II
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => '',
+        'line_nr' => 19,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'part chapter node'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'contents' => [],
+      'extra' => {
+        'node_content' => [
+          {}
+        ],
+        'nodes_manuals' => [
+          {
+            'node_content' => [
+              {}
+            ],
+            'normalized' => 'part-chapter-node'
+          }
+        ],
+        'normalized' => 'part-chapter-node',
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => '',
+        'line_nr' => 23,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'part III'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'part',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'Content III
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => '',
+        'line_nr' => 24,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'chapter with part node'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'associated_part' => {},
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => '',
+        'line_nr' => 28,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'Part IV'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'part',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'Content IV
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => '',
+        'line_nr' => 30,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'Part V'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'part',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'Content V
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => '',
+        'line_nr' => 34,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'with part no node'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'associated_part' => {},
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => '',
+        'line_nr' => 38,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'Part VI'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'part',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'Content VI
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => '',
+        'line_nr' => 40,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'node between part and chapter'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'node_content' => [
+          {}
+        ],
+        'nodes_manuals' => [
+          {
+            'node_content' => [
+              {}
+            ],
+            'normalized' => 'node-between-part-and-chapter'
+          }
+        ],
+        'normalized' => 'node-between-part-and-chapter',
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => '',
+        'line_nr' => 44,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'chapter after part node'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'associated_part' => {},
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => '',
+        'line_nr' => 46,
+        'macro' => ''
+      }
+    }
+  ],
+  'type' => 'document_root'
+};
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[0]{'parent'} = 
$result_trees{'non_empty_part_no_top_node_output'};
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[1]{'args'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[1]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[1]{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[1]{'contents'}[1]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[1]{'contents'}[2]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[1]{'parent'} = 
$result_trees{'non_empty_part_no_top_node_output'};
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[2]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[2]{'args'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[2]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[2];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[2]{'extra'}{'node_content'}[0]
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[2]{'args'}[0]{'contents'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[2]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[2]{'args'}[0]{'contents'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[2]{'parent'} = 
$result_trees{'non_empty_part_no_top_node_output'};
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'args'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[0]{'extra'}{'command'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[1]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[2]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[3]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[3]{'contents'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[3]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[3];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[3]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'extra'}{'menu_entry_description'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[3];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'extra'}{'menu_entry_node'}{'node_content'}[0]
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'args'}[1]{'contents'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[1]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[2]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[3]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[3]{'contents'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[3]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[3];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[3]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'extra'}{'menu_entry_description'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[3];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'extra'}{'menu_entry_node'}{'node_content'}[0]
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'args'}[1]{'contents'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[2]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[3]{'args'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[3]{'args'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[3];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[3]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'extra'}{'end_command'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'contents'}[3];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[1]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'contents'}[2]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'extra'}{'associated_part'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[3]{'parent'} = 
$result_trees{'non_empty_part_no_top_node_output'};
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[4]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[4]{'args'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[4]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[4];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[4]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[4];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[4]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[4]{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[4]{'contents'}[1]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[4];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[4]{'contents'}[2]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[4];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[4]{'parent'} = 
$result_trees{'non_empty_part_no_top_node_output'};
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[5]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[5]{'args'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[5]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[5];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[5]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[5];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[5]{'extra'}{'associated_part'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[4];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[5]{'parent'} = 
$result_trees{'non_empty_part_no_top_node_output'};
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[6]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[6]{'args'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[6]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[6];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[6]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[6];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[6]{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[6]{'contents'}[1]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[6];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[6]{'contents'}[2]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[6];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[6]{'parent'} = 
$result_trees{'non_empty_part_no_top_node_output'};
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[7]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[7]{'args'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[7]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[7];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[7]{'extra'}{'node_content'}[0]
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[7]{'args'}[0]{'contents'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[7]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[7]{'args'}[0]{'contents'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[7]{'parent'} = 
$result_trees{'non_empty_part_no_top_node_output'};
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[8]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[8]{'args'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[8]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[8];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[8]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[8];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[8]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[8]{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[8]{'contents'}[1]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[8];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[8]{'contents'}[2]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[8];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[8]{'parent'} = 
$result_trees{'non_empty_part_no_top_node_output'};
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[9]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[9]{'args'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[9]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[9];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[9]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[9];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[9]{'extra'}{'associated_part'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[8];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[9]{'parent'} = 
$result_trees{'non_empty_part_no_top_node_output'};
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[10]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[10]{'args'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[10]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[10];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[10]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[10];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[10]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[10]{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[10]{'contents'}[1]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[10];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[10]{'contents'}[2]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[10];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[10]{'parent'} = 
$result_trees{'non_empty_part_no_top_node_output'};
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[11]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[11]{'args'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[11]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[11];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[11]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[11];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[11]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[11]{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[11]{'contents'}[1]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[11];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[11]{'contents'}[2]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[11];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[11]{'parent'} = 
$result_trees{'non_empty_part_no_top_node_output'};
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[12]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[12]{'args'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[12]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[12];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[12]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[12];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[12]{'extra'}{'associated_part'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[11];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[12]{'parent'} = 
$result_trees{'non_empty_part_no_top_node_output'};
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[13]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[13]{'args'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[13]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[13];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[13]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[13];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[13]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[13]{'contents'}[1];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[13]{'contents'}[1]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[13];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[13]{'contents'}[2]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[13];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[13]{'parent'} = 
$result_trees{'non_empty_part_no_top_node_output'};
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[14]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[14]{'args'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[14]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[14];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[14]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[14];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[14]{'extra'}{'node_content'}[0]
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[14]{'args'}[0]{'contents'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[14]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[14]{'args'}[0]{'contents'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[14]{'parent'} = 
$result_trees{'non_empty_part_no_top_node_output'};
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[15]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[15]{'args'}[0];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[15]{'args'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[15];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[15]{'contents'}[0]{'parent'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[15];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[15]{'extra'}{'associated_part'}
 = $result_trees{'non_empty_part_no_top_node_output'}{'contents'}[13];
+$result_trees{'non_empty_part_no_top_node_output'}{'contents'}[15]{'parent'} = 
$result_trees{'non_empty_part_no_top_node_output'};
+
+$result_texis{'non_empty_part_no_top_node_output'} = '@part part before
+
+Content before
+
+@node Top
+@top top
+
+@menu
+* chapter node::
+* part chapter node::
+@end menu
+
+@part part I
+
+Content I
+
+@chapter chap in Top node
+
+@part Part II
+
+Content II
+
+@node part chapter node
+@part part III
+
+Content III
+
+@chapter chapter with part node
+
+@part Part IV
+
+Content IV
+
+@part Part V
+
+Content V
+
+@chapter with part no node
+
+@part Part VI
+
+Content VI
+
+@node node between part and chapter
+
+@chapter chapter after part node
+
+';
+
+
+$result_texts{'non_empty_part_no_top_node_output'} = 'part before
+***********
+
+Content before
+
+top
+***
+
+* chapter node::
+* part chapter node::
+
+part I
+******
+
+Content I
+
+1 chap in Top node
+******************
+
+Part II
+*******
+
+Content II
+
+part III
+********
+
+Content III
+
+2 chapter with part node
+************************
+
+Part IV
+*******
+
+Content IV
+
+Part V
+******
+
+Content V
+
+3 with part no node
+*******************
+
+Part VI
+*******
+
+Content VI
+
+
+4 chapter after part node
+*************************
+
+';
+
+$result_sectioning{'non_empty_part_no_top_node_output'} = {
+  'structure' => {
+    'section_childs' => [
+      {
+        'cmdname' => 'part',
+        'extra' => {
+          'part_associated_section' => {
+            'cmdname' => 'top',
+            'extra' => {
+              'associated_node' => {
+                'cmdname' => 'node',
+                'extra' => {
+                  'normalized' => 'Top'
+                },
+                'structure' => {}
+              },
+              'associated_part' => {}
+            },
+            'structure' => {
+              'section_level' => 0,
+              'section_prev' => {},
+              'section_up' => {}
+            }
+          },
+          'part_following_node' => {}
+        },
+        'structure' => {
+          'section_level' => 0,
+          'section_up' => {}
+        }
+      },
+      {},
+      {
+        'cmdname' => 'part',
+        'extra' => {
+          'part_associated_section' => {
+            'cmdname' => 'chapter',
+            'extra' => {
+              'associated_part' => {}
+            },
+            'structure' => {
+              'section_level' => 1,
+              'section_number' => 1,
+              'section_up' => {},
+              'toplevel_prev' => {},
+              'toplevel_up' => {}
+            }
+          }
+        },
+        'structure' => {
+          'section_childs' => [
+            {}
+          ],
+          'section_level' => 0,
+          'section_prev' => {},
+          'section_up' => {}
+        }
+      },
+      {
+        'cmdname' => 'part',
+        'extra' => {
+          'part_following_node' => {
+            'cmdname' => 'node',
+            'extra' => {
+              'normalized' => 'part-chapter-node'
+            },
+            'structure' => {}
+          }
+        },
+        'structure' => {
+          'section_level' => 0,
+          'section_prev' => {},
+          'section_up' => {}
+        }
+      },
+      {
+        'cmdname' => 'part',
+        'extra' => {
+          'part_associated_section' => {
+            'cmdname' => 'chapter',
+            'extra' => {
+              'associated_node' => {},
+              'associated_part' => {}
+            },
+            'structure' => {
+              'section_level' => 1,
+              'section_number' => 2,
+              'section_up' => {},
+              'toplevel_prev' => {},
+              'toplevel_up' => {}
+            }
+          }
+        },
+        'structure' => {
+          'section_childs' => [
+            {}
+          ],
+          'section_level' => 0,
+          'section_prev' => {},
+          'section_up' => {}
+        }
+      },
+      {
+        'cmdname' => 'part',
+        'extra' => {},
+        'structure' => {
+          'section_level' => 0,
+          'section_prev' => {},
+          'section_up' => {}
+        }
+      },
+      {
+        'cmdname' => 'part',
+        'extra' => {
+          'part_associated_section' => {
+            'cmdname' => 'chapter',
+            'extra' => {
+              'associated_part' => {}
+            },
+            'structure' => {
+              'section_level' => 1,
+              'section_number' => 3,
+              'section_up' => {},
+              'toplevel_prev' => {},
+              'toplevel_up' => {}
+            }
+          }
+        },
+        'structure' => {
+          'section_childs' => [
+            {}
+          ],
+          'section_level' => 0,
+          'section_prev' => {},
+          'section_up' => {}
+        }
+      },
+      {
+        'cmdname' => 'part',
+        'extra' => {
+          'part_associated_section' => {
+            'cmdname' => 'chapter',
+            'extra' => {
+              'associated_node' => {
+                'cmdname' => 'node',
+                'extra' => {
+                  'normalized' => 'node-between-part-and-chapter'
+                },
+                'structure' => {}
+              },
+              'associated_part' => {}
+            },
+            'structure' => {
+              'section_level' => 1,
+              'section_number' => 4,
+              'section_up' => {},
+              'toplevel_prev' => {},
+              'toplevel_up' => {}
+            }
+          },
+          'part_following_node' => {}
+        },
+        'structure' => {
+          'section_childs' => [
+            {}
+          ],
+          'section_level' => 0,
+          'section_prev' => {},
+          'section_up' => {}
+        }
+      }
+    ],
+    'section_level' => -1
+  }
+};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'}{'extra'}{'associated_part'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[0];
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'}{'structure'}{'section_prev'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[0];
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'}{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part_no_top_node_output'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[0]{'extra'}{'part_following_node'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'}{'extra'}{'associated_node'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[0]{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part_no_top_node_output'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[1]
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[2]{'extra'}{'part_associated_section'}{'extra'}{'associated_part'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[2];
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[2]{'extra'}{'part_associated_section'}{'structure'}{'section_up'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[2];
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[2]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_prev'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[2]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_up'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[2]{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[2]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[2]{'structure'}{'section_prev'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[2]{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part_no_top_node_output'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[3]{'structure'}{'section_prev'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[2];
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[3]{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part_no_top_node_output'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[4]{'extra'}{'part_associated_section'}{'extra'}{'associated_node'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[3]{'extra'}{'part_following_node'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[4]{'extra'}{'part_associated_section'}{'extra'}{'associated_part'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[4];
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[4]{'extra'}{'part_associated_section'}{'structure'}{'section_up'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[4];
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[4]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_prev'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[2]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[4]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_up'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[4]{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[4]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[4]{'structure'}{'section_prev'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[3];
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[4]{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part_no_top_node_output'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[5]{'structure'}{'section_prev'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[4];
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[5]{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part_no_top_node_output'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[6]{'extra'}{'part_associated_section'}{'extra'}{'associated_part'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[6];
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[6]{'extra'}{'part_associated_section'}{'structure'}{'section_up'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[6];
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[6]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_prev'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[4]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[6]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_up'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[6]{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[6]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[6]{'structure'}{'section_prev'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[5];
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[6]{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part_no_top_node_output'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[7]{'extra'}{'part_associated_section'}{'extra'}{'associated_part'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[7];
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[7]{'extra'}{'part_associated_section'}{'structure'}{'section_up'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[7];
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[7]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_prev'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[6]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[7]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_up'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[7]{'extra'}{'part_following_node'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[7]{'extra'}{'part_associated_section'}{'extra'}{'associated_node'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[7]{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[7]{'extra'}{'part_associated_section'};
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[7]{'structure'}{'section_prev'}
 = 
$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[6];
+$result_sectioning{'non_empty_part_no_top_node_output'}{'structure'}{'section_childs'}[7]{'structure'}{'section_up'}
 = $result_sectioning{'non_empty_part_no_top_node_output'};
+
+$result_nodes{'non_empty_part_no_top_node_output'} = {
+  'cmdname' => 'node',
+  'extra' => {
+    'associated_section' => {
+      'cmdname' => 'top',
+      'extra' => {
+        'associated_part' => {
+          'cmdname' => 'part',
+          'extra' => {},
+          'structure' => {}
+        }
+      },
+      'structure' => {}
+    },
+    'menus' => [
+      {
+        'cmdname' => 'menu',
+        'extra' => {}
+      }
+    ],
+    'node_preceding_part' => {},
+    'normalized' => 'Top'
+  },
+  'structure' => {
+    'menu_child' => {
+      'cmdname' => 'node',
+      'extra' => {
+        'associated_section' => {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_part' => {
+              'cmdname' => 'part',
+              'extra' => {},
+              'structure' => {}
+            }
+          },
+          'structure' => {
+            'section_number' => 2
+          }
+        },
+        'node_preceding_part' => {
+          'cmdname' => 'part',
+          'extra' => {},
+          'structure' => {}
+        },
+        'normalized' => 'part-chapter-node'
+      },
+      'structure' => {
+        'node_prev' => {},
+        'node_up' => {}
+      }
+    },
+    'node_next' => {}
+  }
+};
+$result_nodes{'non_empty_part_no_top_node_output'}{'extra'}{'node_preceding_part'}
 = 
$result_nodes{'non_empty_part_no_top_node_output'}{'extra'}{'associated_section'}{'extra'}{'associated_part'};
+$result_nodes{'non_empty_part_no_top_node_output'}{'structure'}{'menu_child'}{'structure'}{'node_prev'}
 = $result_nodes{'non_empty_part_no_top_node_output'};
+$result_nodes{'non_empty_part_no_top_node_output'}{'structure'}{'menu_child'}{'structure'}{'node_up'}
 = $result_nodes{'non_empty_part_no_top_node_output'};
+$result_nodes{'non_empty_part_no_top_node_output'}{'structure'}{'node_next'} = 
$result_nodes{'non_empty_part_no_top_node_output'}{'structure'}{'menu_child'};
+
+$result_menus{'non_empty_part_no_top_node_output'} = {
+  'cmdname' => 'node',
+  'extra' => {
+    'normalized' => 'Top'
+  },
+  'structure' => {
+    'menu_child' => {
+      'cmdname' => 'node',
+      'extra' => {
+        'normalized' => 'part-chapter-node'
+      },
+      'structure' => {
+        'menu_up' => {},
+        'menu_up_hash' => {
+          'Top' => 1
+        }
+      }
+    }
+  }
+};
+$result_menus{'non_empty_part_no_top_node_output'}{'structure'}{'menu_child'}{'structure'}{'menu_up'}
 = $result_menus{'non_empty_part_no_top_node_output'};
+
+$result_errors{'non_empty_part_no_top_node_output'} = [
+  {
+    'error_line' => 'warning: @part should not be associated with @top
+',
+    'file_name' => '',
+    'line_nr' => 1,
+    'macro' => '',
+    'text' => '@part should not be associated with @top',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: @node precedes @part, but parts may not be 
associated with nodes
+',
+    'file_name' => '',
+    'line_nr' => 24,
+    'macro' => '',
+    'text' => '@node precedes @part, but parts may not be associated with 
nodes',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: no sectioning command associated with @part
+',
+    'file_name' => '',
+    'line_nr' => 19,
+    'macro' => '',
+    'text' => 'no sectioning command associated with @part',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: no sectioning command associated with @part
+',
+    'file_name' => '',
+    'line_nr' => 30,
+    'macro' => '',
+    'text' => 'no sectioning command associated with @part',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: @part not empty
+',
+    'file_name' => '',
+    'line_nr' => 1,
+    'macro' => '',
+    'text' => '@part not empty',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: @part not empty
+',
+    'file_name' => '',
+    'line_nr' => 13,
+    'macro' => '',
+    'text' => '@part not empty',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: @part not empty
+',
+    'file_name' => '',
+    'line_nr' => 19,
+    'macro' => '',
+    'text' => '@part not empty',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: @part not empty
+',
+    'file_name' => '',
+    'line_nr' => 24,
+    'macro' => '',
+    'text' => '@part not empty',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: @part not empty
+',
+    'file_name' => '',
+    'line_nr' => 30,
+    'macro' => '',
+    'text' => '@part not empty',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: @part not empty
+',
+    'file_name' => '',
+    'line_nr' => 34,
+    'macro' => '',
+    'text' => '@part not empty',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => 'warning: @part not empty
+',
+    'file_name' => '',
+    'line_nr' => 40,
+    'macro' => '',
+    'text' => '@part not empty',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => '@menu reference to nonexistent node `chapter node\'
+',
+    'file_name' => '',
+    'line_nr' => 9,
+    'macro' => '',
+    'text' => '@menu reference to nonexistent node `chapter node\'',
+    'type' => 'error'
+  },
+  {
+    'error_line' => 'warning: node `node between part and chapter\' 
unreferenced
+',
+    'file_name' => '',
+    'line_nr' => 44,
+    'macro' => '',
+    'text' => 'node `node between part and chapter\' unreferenced',
+    'type' => 'warning'
+  }
+];
+
+
+$result_floats{'non_empty_part_no_top_node_output'} = {};
+
+
+
+$result_converted{'html_text'}->{'non_empty_part_no_top_node_output'} = '<a 
class="part" id="part-before"></a><div class="nav-panel">
+<p>
+ &nbsp; </p>
+</div>
+<a class="node" id="Top"></a><a class="top" id="top"></a><a class="part" 
id="part-I"></a><ul class="mini-toc">
+<li><a href="#chap-in-Top-node" accesskey="1">chap in Top node</a></li>
+</ul>
+<a class="chapter" id="chap-in-Top-node"></a><hr>
+<div class="part-level-extent" id="Part-II">
+<div class="nav-panel">
+<p>
+ &nbsp; </p>
+</div>
+<h1 class="part">Part II</h1>
+<hr>
+
+<p>Content II
+</p>
+<div class="chapter-level-extent" id="part-chapter-node">
+</div>
+</div>
+<div class="part-level-extent" id="part-III">
+<h1 class="part">part III</h1>
+<hr>
+
+<p>Content III
+</p>
+<ul class="mini-toc">
+<li><a href="#part-chapter-node" accesskey="1">chapter with part node</a></li>
+</ul>
+<h2 class="chapter" id="chapter-with-part-node">2 chapter with part node</h2>
+
+</div>
+<div class="part-level-extent" id="Part-IV">
+<h1 class="part">Part IV</h1>
+<hr>
+
+<p>Content IV
+</p>
+</div>
+<div class="part-level-extent" id="Part-V">
+<h1 class="part">Part V</h1>
+<hr>
+
+<p>Content V
+</p>
+<ul class="mini-toc">
+<li><a href="#with-part-no-node" accesskey="1">with part no node</a></li>
+</ul>
+<div class="chapter-level-extent" id="with-part-no-node">
+<h2 class="chapter">3 with part no node</h2>
+
+<hr>
+</div>
+</div>
+<div class="part-level-extent" id="Part-VI">
+<div class="nav-panel">
+<p>
+ &nbsp; </p>
+</div>
+<h1 class="part">Part VI</h1>
+<hr>
+
+<p>Content VI
+</p>
+<ul class="mini-toc">
+<li><a href="#node-between-part-and-chapter" accesskey="1">chapter after part 
node</a></li>
+</ul>
+<div class="chapter-level-extent" id="node-between-part-and-chapter">
+
+<h2 class="chapter" id="chapter-after-part-node">4 chapter after part node</h2>
+
+</div>
+</div>
+';
+
+1;
diff --git a/tp/t/results/sectioning/chapter_node_before_and_after_part.pl 
b/tp/t/results/sectioning/chapter_node_before_and_after_part.pl
index 74e96f5685..4273cbcd36 100644
--- a/tp/t/results/sectioning/chapter_node_before_and_after_part.pl
+++ b/tp/t/results/sectioning/chapter_node_before_and_after_part.pl
@@ -464,7 +464,8 @@ $result_sectioning{'chapter_node_before_and_after_part'} = {
               'section_up' => {},
               'toplevel_prev' => {}
             }
-          }
+          },
+          'part_following_node' => {}
         },
         'structure' => {
           'section_childs' => [
@@ -482,6 +483,7 @@ 
$result_sectioning{'chapter_node_before_and_after_part'}{'structure'}{'section_c
 
$result_sectioning{'chapter_node_before_and_after_part'}{'structure'}{'section_childs'}[1]{'extra'}{'part_associated_section'}{'extra'}{'associated_part'}
 = 
$result_sectioning{'chapter_node_before_and_after_part'}{'structure'}{'section_childs'}[1];
 
$result_sectioning{'chapter_node_before_and_after_part'}{'structure'}{'section_childs'}[1]{'extra'}{'part_associated_section'}{'structure'}{'section_up'}
 = 
$result_sectioning{'chapter_node_before_and_after_part'}{'structure'}{'section_childs'}[1];
 
$result_sectioning{'chapter_node_before_and_after_part'}{'structure'}{'section_childs'}[1]{'extra'}{'part_associated_section'}{'structure'}{'toplevel_prev'}
 = 
$result_sectioning{'chapter_node_before_and_after_part'}{'structure'}{'section_childs'}[0];
+$result_sectioning{'chapter_node_before_and_after_part'}{'structure'}{'section_childs'}[1]{'extra'}{'part_following_node'}
 = 
$result_sectioning{'chapter_node_before_and_after_part'}{'structure'}{'section_childs'}[1]{'extra'}{'part_associated_section'}{'extra'}{'associated_node'};
 
$result_sectioning{'chapter_node_before_and_after_part'}{'structure'}{'section_childs'}[1]{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'chapter_node_before_and_after_part'}{'structure'}{'section_childs'}[1]{'extra'}{'part_associated_section'};
 
$result_sectioning{'chapter_node_before_and_after_part'}{'structure'}{'section_childs'}[1]{'structure'}{'section_up'}
 = $result_sectioning{'chapter_node_before_and_after_part'};
 
@@ -520,6 +522,7 @@ $result_nodes{'chapter_node_before_and_after_part'} = {
             'section_number' => 2
           }
         },
+        'node_preceding_part' => {},
         'normalized' => 'after'
       },
       'structure' => {
@@ -530,6 +533,7 @@ $result_nodes{'chapter_node_before_and_after_part'} = {
     'node_next' => {}
   }
 };
+$result_nodes{'chapter_node_before_and_after_part'}{'structure'}{'menu_child'}{'extra'}{'node_preceding_part'}
 = 
$result_nodes{'chapter_node_before_and_after_part'}{'structure'}{'menu_child'}{'extra'}{'associated_section'}{'extra'}{'associated_part'};
 
$result_nodes{'chapter_node_before_and_after_part'}{'structure'}{'menu_child'}{'structure'}{'node_prev'}
 = $result_nodes{'chapter_node_before_and_after_part'};
 
$result_nodes{'chapter_node_before_and_after_part'}{'structure'}{'menu_child'}{'structure'}{'node_up'}
 = $result_nodes{'chapter_node_before_and_after_part'};
 $result_nodes{'chapter_node_before_and_after_part'}{'structure'}{'node_next'} 
= 
$result_nodes{'chapter_node_before_and_after_part'}{'structure'}{'menu_child'};
diff --git a/tp/t/results/sectioning/double_part.pl 
b/tp/t/results/sectioning/double_part.pl
index 33a1ec2d1a..d143ea7286 100644
--- a/tp/t/results/sectioning/double_part.pl
+++ b/tp/t/results/sectioning/double_part.pl
@@ -559,7 +559,8 @@ $result_sectioning{'double_part'} = {
                             'associated_part' => {
                               'cmdname' => 'part',
                               'extra' => {
-                                'part_associated_section' => {}
+                                'part_associated_section' => {},
+                                'part_following_node' => {}
                               },
                               'structure' => {
                                 'associated_unit' => {},
@@ -652,6 +653,7 @@ 
$result_sectioning{'double_part'}{'structure'}{'section_childs'}[0]{'extra'}{'as
 
$result_sectioning{'double_part'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'first_in_page'}
 = 
$result_sectioning{'double_part'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_sectioning{'double_part'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_node'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'double_part'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_sectioning{'double_part'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'extra'}{'part_associated_section'}
 = 
$result_sectioning{'double_part'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
+$result_sectioning{'double_part'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'extra'}{'part_following_node'}
 = 
$result_sectioning{'double_part'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_node'};
 
$result_sectioning{'double_part'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'double_part'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_sectioning{'double_part'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'double_part'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
 
$result_sectioning{'double_part'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'section_prev'}{'structure'}{'associated_unit'}{'extra'}{'first_in_page'}
 = 
$result_sectioning{'double_part'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'
 [...]
@@ -786,6 +788,7 @@ $result_nodes{'double_part'} = {
       'cmdname' => 'node',
       'extra' => {
         'associated_section' => {},
+        'node_preceding_part' => {},
         'normalized' => 'node-chapter'
       },
       'structure' => {
@@ -826,6 +829,7 @@ 
$result_nodes{'double_part'}{'extra'}{'associated_section'}{'structure'}{'associ
 
$result_nodes{'double_part'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'unit_next'}
 = 
$result_nodes{'double_part'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'structure'}{'directions'}{'Back'};
 $result_nodes{'double_part'}{'structure'}{'associated_unit'} = 
$result_nodes{'double_part'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'};
 
$result_nodes{'double_part'}{'structure'}{'menu_child'}{'extra'}{'associated_section'}
 = 
$result_nodes{'double_part'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
+$result_nodes{'double_part'}{'structure'}{'menu_child'}{'extra'}{'node_preceding_part'}
 = 
$result_nodes{'double_part'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'};
 
$result_nodes{'double_part'}{'structure'}{'menu_child'}{'structure'}{'associated_unit'}
 = 
$result_nodes{'double_part'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_nodes{'double_part'}{'structure'}{'menu_child'}{'structure'}{'node_prev'}
 = $result_nodes{'double_part'};
 
$result_nodes{'double_part'}{'structure'}{'menu_child'}{'structure'}{'node_up'} 
= $result_nodes{'double_part'};
@@ -1167,19 +1171,19 @@ Next: <a href="#node-chapter" accesskey="n" 
rel="next">chapter after 2 parts</a>
 <h1 class="top" id="top">top</h1>
 
 
+<hr>
 </div>
 <div class="part-level-extent" id="part-first">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Top" accesskey="p" rel="prev">top</a>, Up: <a href="#Top" 
accesskey="u" rel="up">top</a> &nbsp; </p>
+</div>
 <h1 class="part">part first</h1>
 <hr>
 
 <p>Text part first.
-</p><hr>
-</div>
+</p></div>
 <div class="part-level-extent" id="part-second">
-<div class="nav-panel">
-<p>
-Previous: <a href="#Top" accesskey="p" rel="prev">top</a>, Up: <a href="#Top" 
accesskey="u" rel="up">top</a> &nbsp; </p>
-</div>
 <h1 class="part">part second</h1>
 <hr>
 <p>Text part second.
diff --git a/tp/t/results/sectioning/part_chapter_after_top.pl 
b/tp/t/results/sectioning/part_chapter_after_top.pl
index 5758a281fe..01bf1aca0d 100644
--- a/tp/t/results/sectioning/part_chapter_after_top.pl
+++ b/tp/t/results/sectioning/part_chapter_after_top.pl
@@ -448,7 +448,8 @@ $result_sectioning{'part_chapter_after_top'} = {
                             'associated_part' => {
                               'cmdname' => 'part',
                               'extra' => {
-                                'part_associated_section' => {}
+                                'part_associated_section' => {},
+                                'part_following_node' => {}
                               },
                               'structure' => {
                                 'associated_unit' => {},
@@ -511,6 +512,7 @@ $result_sectioning{'part_chapter_after_top'} = {
 
$result_sectioning{'part_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'extra'}{'unit_command'}
 = 
$result_sectioning{'part_chapter_after_top'}{'structure'}{'section_childs'}[0];
 
$result_sectioning{'part_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_node'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'part_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_sectioning{'part_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'extra'}{'part_associated_section'}
 = 
$result_sectioning{'part_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
+$result_sectioning{'part_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'extra'}{'part_following_node'}
 = 
$result_sectioning{'part_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associat
 [...]
 
$result_sectioning{'part_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'part_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_sectioning{'part_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'part_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
 
$result_sectioning{'part_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'section_prev'}
 = 
$result_sectioning{'part_chapter_after_top'}{'structure'}{'section_childs'}[0];
@@ -607,6 +609,7 @@ $result_nodes{'part_chapter_after_top'} = {
       'cmdname' => 'node',
       'extra' => {
         'associated_section' => {},
+        'node_preceding_part' => {},
         'normalized' => 'chapter'
       },
       'structure' => {
@@ -636,6 +639,7 @@ 
$result_nodes{'part_chapter_after_top'}{'extra'}{'associated_section'}{'structur
 
$result_nodes{'part_chapter_after_top'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'unit_next'}
 = 
$result_nodes{'part_chapter_after_top'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 $result_nodes{'part_chapter_after_top'}{'structure'}{'associated_unit'} = 
$result_nodes{'part_chapter_after_top'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'};
 
$result_nodes{'part_chapter_after_top'}{'structure'}{'menu_child'}{'extra'}{'associated_section'}
 = 
$result_nodes{'part_chapter_after_top'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
+$result_nodes{'part_chapter_after_top'}{'structure'}{'menu_child'}{'extra'}{'node_preceding_part'}
 = 
$result_nodes{'part_chapter_after_top'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'};
 
$result_nodes{'part_chapter_after_top'}{'structure'}{'menu_child'}{'structure'}{'associated_unit'}
 = 
$result_nodes{'part_chapter_after_top'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_nodes{'part_chapter_after_top'}{'structure'}{'menu_child'}{'structure'}{'node_prev'}
 = $result_nodes{'part_chapter_after_top'};
 
$result_nodes{'part_chapter_after_top'}{'structure'}{'menu_child'}{'structure'}{'node_up'}
 = $result_nodes{'part_chapter_after_top'};
diff --git a/tp/t/results/sectioning/part_node_before_top.pl 
b/tp/t/results/sectioning/part_node_before_top.pl
index 479a7923ff..c86ba2da3b 100644
--- a/tp/t/results/sectioning/part_node_before_top.pl
+++ b/tp/t/results/sectioning/part_node_before_top.pl
@@ -445,7 +445,8 @@ $result_sectioning{'part_node_before_top'} = {
               'section_prev' => {},
               'section_up' => {}
             }
-          }
+          },
+          'part_following_node' => {}
         },
         'structure' => {
           'associated_unit' => {},
@@ -467,6 +468,7 @@ 
$result_sectioning{'part_node_before_top'}{'structure'}{'section_childs'}[0]{'ex
 
$result_sectioning{'part_node_before_top'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'part_node_before_top'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'}{'extra'}{'associated_node'}{'structure'}{'associated_unit'};
 
$result_sectioning{'part_node_before_top'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'}{'structure'}{'section_prev'}
 = $result_sectioning{'part_node_before_top'}{'structure'}{'section_childs'}[0];
 
$result_sectioning{'part_node_before_top'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'}{'structure'}{'section_up'}
 = $result_sectioning{'part_node_before_top'};
+$result_sectioning{'part_node_before_top'}{'structure'}{'section_childs'}[0]{'extra'}{'part_following_node'}
 = 
$result_sectioning{'part_node_before_top'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'}{'extra'}{'associated_node'};
 
$result_sectioning{'part_node_before_top'}{'structure'}{'section_childs'}[0]{'structure'}{'associated_unit'}
 = 
$result_sectioning{'part_node_before_top'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'}{'extra'}{'associated_node'}{'structure'}{'associated_unit'};
 
$result_sectioning{'part_node_before_top'}{'structure'}{'section_childs'}[0]{'structure'}{'section_up'}
 = $result_sectioning{'part_node_before_top'};
 $result_sectioning{'part_node_before_top'}{'structure'}{'section_childs'}[1] = 
$result_sectioning{'part_node_before_top'}{'structure'}{'section_childs'}[0]{'extra'}{'part_associated_section'};
@@ -508,6 +510,7 @@ $result_nodes{'part_node_before_top'} = {
         'extra' => {}
       }
     ],
+    'node_preceding_part' => {},
     'normalized' => 'Top'
   },
   'structure' => {
@@ -533,6 +536,7 @@ 
$result_nodes{'part_node_before_top'}{'extra'}{'associated_section'}{'extra'}{'a
 
$result_nodes{'part_node_before_top'}{'extra'}{'associated_section'}{'extra'}{'associated_part'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'NodeNext'}
 = 
$result_nodes{'part_node_before_top'}{'extra'}{'associated_section'}{'extra'}{'associated_part'}{'structure'}{'associated_unit'};
 
$result_nodes{'part_node_before_top'}{'extra'}{'associated_section'}{'extra'}{'associated_part'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'This'}
 = 
$result_nodes{'part_node_before_top'}{'extra'}{'associated_section'}{'extra'}{'associated_part'}{'structure'}{'associated_unit'};
 
$result_nodes{'part_node_before_top'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}
 = 
$result_nodes{'part_node_before_top'}{'extra'}{'associated_section'}{'extra'}{'associated_part'}{'structure'}{'associated_unit'};
+$result_nodes{'part_node_before_top'}{'extra'}{'node_preceding_part'} = 
$result_nodes{'part_node_before_top'}{'extra'}{'associated_section'}{'extra'}{'associated_part'};
 $result_nodes{'part_node_before_top'}{'structure'}{'associated_unit'} = 
$result_nodes{'part_node_before_top'}{'extra'}{'associated_section'}{'extra'}{'associated_part'}{'structure'}{'associated_unit'};
 
$result_nodes{'part_node_before_top'}{'structure'}{'menu_child'}{'structure'}{'associated_unit'}
 = 
$result_nodes{'part_node_before_top'}{'extra'}{'associated_section'}{'extra'}{'associated_part'}{'structure'}{'associated_unit'};
 
$result_nodes{'part_node_before_top'}{'structure'}{'menu_child'}{'structure'}{'node_next'}
 = $result_nodes{'part_node_before_top'};
diff --git a/tp/t/results/sectioning/part_node_chapter_after_top.pl 
b/tp/t/results/sectioning/part_node_chapter_after_top.pl
index dedb131cd1..bd1afdeb04 100644
--- a/tp/t/results/sectioning/part_node_chapter_after_top.pl
+++ b/tp/t/results/sectioning/part_node_chapter_after_top.pl
@@ -704,7 +704,8 @@ $result_sectioning{'part_node_chapter_after_top'} = {
                             'associated_part' => {
                               'cmdname' => 'part',
                               'extra' => {
-                                'part_associated_section' => {}
+                                'part_associated_section' => {},
+                                'part_following_node' => {}
                               },
                               'structure' => {
                                 'associated_unit' => {},
@@ -768,6 +769,7 @@ $result_sectioning{'part_node_chapter_after_top'} = {
 
$result_sectioning{'part_node_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'extra'}{'unit_command'}
 = 
$result_sectioning{'part_node_chapter_after_top'}{'structure'}{'section_childs'}[0];
 
$result_sectioning{'part_node_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_node'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'part_node_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_sectioning{'part_node_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'extra'}{'part_associated_section'}
 = 
$result_sectioning{'part_node_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
+$result_sectioning{'part_node_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'extra'}{'part_following_node'}
 = 
$result_sectioning{'part_node_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}
 [...]
 
$result_sectioning{'part_node_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'part_node_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_sectioning{'part_node_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'part_node_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
 
$result_sectioning{'part_node_chapter_after_top'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'section_prev'}
 = 
$result_sectioning{'part_node_chapter_after_top'}{'structure'}{'section_childs'}[0];
@@ -865,6 +867,7 @@ $result_nodes{'part_node_chapter_after_top'} = {
     'menu_child' => {
       'cmdname' => 'node',
       'extra' => {
+        'node_preceding_part' => {},
         'normalized' => 'a-node-after-part'
       },
       'structure' => {
@@ -873,6 +876,7 @@ $result_nodes{'part_node_chapter_after_top'} = {
           'cmdname' => 'node',
           'extra' => {
             'associated_section' => {},
+            'node_preceding_part' => {},
             'normalized' => 'chapter'
           },
           'structure' => {
@@ -906,8 +910,10 @@ 
$result_nodes{'part_node_chapter_after_top'}{'extra'}{'associated_section'}{'str
 
$result_nodes{'part_node_chapter_after_top'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'This'}
 = 
$result_nodes{'part_node_chapter_after_top'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'};
 
$result_nodes{'part_node_chapter_after_top'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'unit_next'}
 = 
$result_nodes{'part_node_chapter_after_top'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 $result_nodes{'part_node_chapter_after_top'}{'structure'}{'associated_unit'} = 
$result_nodes{'part_node_chapter_after_top'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'};
+$result_nodes{'part_node_chapter_after_top'}{'structure'}{'menu_child'}{'extra'}{'node_preceding_part'}
 = 
$result_nodes{'part_node_chapter_after_top'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'};
 
$result_nodes{'part_node_chapter_after_top'}{'structure'}{'menu_child'}{'structure'}{'associated_unit'}
 = 
$result_nodes{'part_node_chapter_after_top'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_nodes{'part_node_chapter_after_top'}{'structure'}{'menu_child'}{'structure'}{'node_next'}{'extra'}{'associated_section'}
 = 
$result_nodes{'part_node_chapter_after_top'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
+$result_nodes{'part_node_chapter_after_top'}{'structure'}{'menu_child'}{'structure'}{'node_next'}{'extra'}{'node_preceding_part'}
 = 
$result_nodes{'part_node_chapter_after_top'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'};
 
$result_nodes{'part_node_chapter_after_top'}{'structure'}{'menu_child'}{'structure'}{'node_next'}{'structure'}{'associated_unit'}
 = 
$result_nodes{'part_node_chapter_after_top'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_nodes{'part_node_chapter_after_top'}{'structure'}{'menu_child'}{'structure'}{'node_next'}{'structure'}{'node_next'}
 = $result_nodes{'part_node_chapter_after_top'}{'structure'}{'menu_child'};
 
$result_nodes{'part_node_chapter_after_top'}{'structure'}{'menu_child'}{'structure'}{'node_next'}{'structure'}{'node_up'}
 = $result_nodes{'part_node_chapter_after_top'};
diff --git a/tp/t/results/sectioning/part_node_chapter_appendix.pl 
b/tp/t/results/sectioning/part_node_chapter_appendix.pl
index 7bd7a23cb3..785b642b78 100644
--- a/tp/t/results/sectioning/part_node_chapter_appendix.pl
+++ b/tp/t/results/sectioning/part_node_chapter_appendix.pl
@@ -504,7 +504,8 @@ $result_sectioning{'part_node_chapter_appendix'} = {
                             'associated_part' => {
                               'cmdname' => 'part',
                               'extra' => {
-                                'part_associated_section' => {}
+                                'part_associated_section' => {},
+                                'part_following_node' => {}
                               },
                               'structure' => {
                                 'associated_unit' => {},
@@ -597,6 +598,7 @@ $result_sectioning{'part_node_chapter_appendix'} = {
 
$result_sectioning{'part_node_chapter_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'extra'}{'unit_command'}
 = 
$result_sectioning{'part_node_chapter_appendix'}{'structure'}{'section_childs'}[0];
 
$result_sectioning{'part_node_chapter_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_node'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'part_node_chapter_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_sectioning{'part_node_chapter_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'extra'}{'part_associated_section'}
 = 
$result_sectioning{'part_node_chapter_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
+$result_sectioning{'part_node_chapter_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'extra'}{'part_following_node'}
 = 
$result_sectioning{'part_node_chapter_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'
 [...]
 
$result_sectioning{'part_node_chapter_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'part_node_chapter_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_sectioning{'part_node_chapter_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'part_node_chapter_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
 
$result_sectioning{'part_node_chapter_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'section_prev'}
 = 
$result_sectioning{'part_node_chapter_appendix'}{'structure'}{'section_childs'}[0];
@@ -730,6 +732,7 @@ $result_nodes{'part_node_chapter_appendix'} = {
       'cmdname' => 'node',
       'extra' => {
         'associated_section' => {},
+        'node_preceding_part' => {},
         'normalized' => 'chapter-node'
       },
       'structure' => {
@@ -767,6 +770,7 @@ 
$result_nodes{'part_node_chapter_appendix'}{'extra'}{'associated_section'}{'stru
 
$result_nodes{'part_node_chapter_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'unit_next'}
 = 
$result_nodes{'part_node_chapter_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 $result_nodes{'part_node_chapter_appendix'}{'structure'}{'associated_unit'} = 
$result_nodes{'part_node_chapter_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'};
 
$result_nodes{'part_node_chapter_appendix'}{'structure'}{'menu_child'}{'extra'}{'associated_section'}
 = 
$result_nodes{'part_node_chapter_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
+$result_nodes{'part_node_chapter_appendix'}{'structure'}{'menu_child'}{'extra'}{'node_preceding_part'}
 = 
$result_nodes{'part_node_chapter_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'};
 
$result_nodes{'part_node_chapter_appendix'}{'structure'}{'menu_child'}{'structure'}{'associated_unit'}
 = 
$result_nodes{'part_node_chapter_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_nodes{'part_node_chapter_appendix'}{'structure'}{'menu_child'}{'structure'}{'node_prev'}
 = $result_nodes{'part_node_chapter_appendix'};
 
$result_nodes{'part_node_chapter_appendix'}{'structure'}{'menu_child'}{'structure'}{'node_up'}
 = $result_nodes{'part_node_chapter_appendix'};
diff --git a/tp/t/results/sectioning/part_node_chapter_node_appendix.pl 
b/tp/t/results/sectioning/part_node_chapter_node_appendix.pl
index d787734519..3e6f5ef6c3 100644
--- a/tp/t/results/sectioning/part_node_chapter_node_appendix.pl
+++ b/tp/t/results/sectioning/part_node_chapter_node_appendix.pl
@@ -622,7 +622,8 @@ $result_sectioning{'part_node_chapter_node_appendix'} = {
                             'associated_part' => {
                               'cmdname' => 'part',
                               'extra' => {
-                                'part_associated_section' => {}
+                                'part_associated_section' => {},
+                                'part_following_node' => {}
                               },
                               'structure' => {
                                 'associated_unit' => {},
@@ -730,6 +731,7 @@ $result_sectioning{'part_node_chapter_node_appendix'} = {
 
$result_sectioning{'part_node_chapter_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'extra'}{'unit_command'}
 = 
$result_sectioning{'part_node_chapter_node_appendix'}{'structure'}{'section_childs'}[0];
 
$result_sectioning{'part_node_chapter_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_node'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'part_node_chapter_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_sectioning{'part_node_chapter_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'extra'}{'part_associated_section'}
 = 
$result_sectioning{'part_node_chapter_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
+$result_sectioning{'part_node_chapter_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'extra'}{'part_following_node'}
 = 
$result_sectioning{'part_node_chapter_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{
 [...]
 
$result_sectioning{'part_node_chapter_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'part_node_chapter_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_sectioning{'part_node_chapter_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'part_node_chapter_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
 
$result_sectioning{'part_node_chapter_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'section_prev'}
 = 
$result_sectioning{'part_node_chapter_node_appendix'}{'structure'}{'section_childs'}[0];
@@ -874,6 +876,7 @@ $result_nodes{'part_node_chapter_node_appendix'} = {
       'cmdname' => 'node',
       'extra' => {
         'associated_section' => {},
+        'node_preceding_part' => {},
         'normalized' => 'chapter-node'
       },
       'structure' => {
@@ -928,6 +931,7 @@ 
$result_nodes{'part_node_chapter_node_appendix'}{'extra'}{'associated_section'}{
 
$result_nodes{'part_node_chapter_node_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'unit_next'}
 = 
$result_nodes{'part_node_chapter_node_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_nodes{'part_node_chapter_node_appendix'}{'structure'}{'associated_unit'}
 = 
$result_nodes{'part_node_chapter_node_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'};
 
$result_nodes{'part_node_chapter_node_appendix'}{'structure'}{'menu_child'}{'extra'}{'associated_section'}
 = 
$result_nodes{'part_node_chapter_node_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
+$result_nodes{'part_node_chapter_node_appendix'}{'structure'}{'menu_child'}{'extra'}{'node_preceding_part'}
 = 
$result_nodes{'part_node_chapter_node_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'};
 
$result_nodes{'part_node_chapter_node_appendix'}{'structure'}{'menu_child'}{'structure'}{'associated_unit'}
 = 
$result_nodes{'part_node_chapter_node_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_nodes{'part_node_chapter_node_appendix'}{'structure'}{'menu_child'}{'structure'}{'node_next'}{'extra'}{'associated_section'}
 = 
$result_nodes{'part_node_chapter_node_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
 
$result_nodes{'part_node_chapter_node_appendix'}{'structure'}{'menu_child'}{'structure'}{'node_next'}{'structure'}{'associated_unit'}
 = 
$result_nodes{'part_node_chapter_node_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'structure'}{'directions'}{'FastForward'};
diff --git a/tp/t/results/sectioning/part_node_node_part_appendix.pl 
b/tp/t/results/sectioning/part_node_node_part_appendix.pl
index f45f07d536..c41b232815 100644
--- a/tp/t/results/sectioning/part_node_node_part_appendix.pl
+++ b/tp/t/results/sectioning/part_node_node_part_appendix.pl
@@ -671,7 +671,8 @@ $result_sectioning{'part_node_node_part_appendix'} = {
                             'associated_part' => {
                               'cmdname' => 'part',
                               'extra' => {
-                                'part_associated_section' => {}
+                                'part_associated_section' => {},
+                                'part_following_node' => {}
                               },
                               'structure' => {
                                 'associated_unit' => {},
@@ -792,6 +793,7 @@ $result_sectioning{'part_node_node_part_appendix'} = {
 
$result_sectioning{'part_node_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'extra'}{'unit_command'}
 = 
$result_sectioning{'part_node_node_part_appendix'}{'structure'}{'section_childs'}[0];
 
$result_sectioning{'part_node_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_node'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'part_node_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_sectioning{'part_node_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'extra'}{'part_associated_section'}
 = 
$result_sectioning{'part_node_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
+$result_sectioning{'part_node_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'extra'}{'part_following_node'}
 = 
$result_sectioning{'part_node_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra
 [...]
 
$result_sectioning{'part_node_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'part_node_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_sectioning{'part_node_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'part_node_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
 
$result_sectioning{'part_node_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'section_prev'}
 = 
$result_sectioning{'part_node_node_part_appendix'}{'structure'}{'section_childs'}[0];
@@ -946,6 +948,7 @@ $result_nodes{'part_node_node_part_appendix'} = {
       'cmdname' => 'node',
       'extra' => {
         'associated_section' => {},
+        'node_preceding_part' => {},
         'normalized' => 'chapter-node'
       },
       'structure' => {
@@ -1000,6 +1003,7 @@ 
$result_nodes{'part_node_node_part_appendix'}{'extra'}{'associated_section'}{'st
 
$result_nodes{'part_node_node_part_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'unit_next'}
 = 
$result_nodes{'part_node_node_part_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 $result_nodes{'part_node_node_part_appendix'}{'structure'}{'associated_unit'} 
= 
$result_nodes{'part_node_node_part_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'};
 
$result_nodes{'part_node_node_part_appendix'}{'structure'}{'menu_child'}{'extra'}{'associated_section'}
 = 
$result_nodes{'part_node_node_part_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
+$result_nodes{'part_node_node_part_appendix'}{'structure'}{'menu_child'}{'extra'}{'node_preceding_part'}
 = 
$result_nodes{'part_node_node_part_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'};
 
$result_nodes{'part_node_node_part_appendix'}{'structure'}{'menu_child'}{'structure'}{'associated_unit'}
 = 
$result_nodes{'part_node_node_part_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_nodes{'part_node_node_part_appendix'}{'structure'}{'menu_child'}{'structure'}{'node_next'}{'extra'}{'associated_section'}
 = 
$result_nodes{'part_node_node_part_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
 
$result_nodes{'part_node_node_part_appendix'}{'structure'}{'menu_child'}{'structure'}{'node_next'}{'structure'}{'associated_unit'}
 = 
$result_nodes{'part_node_node_part_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'structure'}{'directions'}{'FastForward'};
diff --git a/tp/t/results/sectioning/part_node_part_appendix.pl 
b/tp/t/results/sectioning/part_node_part_appendix.pl
index 5e2a92b9a8..f880aedcf6 100644
--- a/tp/t/results/sectioning/part_node_part_appendix.pl
+++ b/tp/t/results/sectioning/part_node_part_appendix.pl
@@ -553,7 +553,8 @@ $result_sectioning{'part_node_part_appendix'} = {
                             'associated_part' => {
                               'cmdname' => 'part',
                               'extra' => {
-                                'part_associated_section' => {}
+                                'part_associated_section' => {},
+                                'part_following_node' => {}
                               },
                               'structure' => {
                                 'associated_unit' => {},
@@ -660,6 +661,7 @@ $result_sectioning{'part_node_part_appendix'} = {
 
$result_sectioning{'part_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'extra'}{'unit_command'}
 = 
$result_sectioning{'part_node_part_appendix'}{'structure'}{'section_childs'}[0];
 
$result_sectioning{'part_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_node'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'part_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_sectioning{'part_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'extra'}{'part_associated_section'}
 = 
$result_sectioning{'part_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
+$result_sectioning{'part_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'extra'}{'part_following_node'}
 = 
$result_sectioning{'part_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associ
 [...]
 
$result_sectioning{'part_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'part_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_sectioning{'part_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'part_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
 
$result_sectioning{'part_node_part_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'section_prev'}
 = 
$result_sectioning{'part_node_part_appendix'}{'structure'}{'section_childs'}[0];
@@ -803,6 +805,7 @@ $result_nodes{'part_node_part_appendix'} = {
       'cmdname' => 'node',
       'extra' => {
         'associated_section' => {},
+        'node_preceding_part' => {},
         'normalized' => 'chapter-node'
       },
       'structure' => {
@@ -840,6 +843,7 @@ 
$result_nodes{'part_node_part_appendix'}{'extra'}{'associated_section'}{'structu
 
$result_nodes{'part_node_part_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'unit_next'}
 = 
$result_nodes{'part_node_part_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 $result_nodes{'part_node_part_appendix'}{'structure'}{'associated_unit'} = 
$result_nodes{'part_node_part_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'};
 
$result_nodes{'part_node_part_appendix'}{'structure'}{'menu_child'}{'extra'}{'associated_section'}
 = 
$result_nodes{'part_node_part_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
+$result_nodes{'part_node_part_appendix'}{'structure'}{'menu_child'}{'extra'}{'node_preceding_part'}
 = 
$result_nodes{'part_node_part_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'};
 
$result_nodes{'part_node_part_appendix'}{'structure'}{'menu_child'}{'structure'}{'associated_unit'}
 = 
$result_nodes{'part_node_part_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_nodes{'part_node_part_appendix'}{'structure'}{'menu_child'}{'structure'}{'node_prev'}
 = $result_nodes{'part_node_part_appendix'};
 
$result_nodes{'part_node_part_appendix'}{'structure'}{'menu_child'}{'structure'}{'node_up'}
 = $result_nodes{'part_node_part_appendix'};
diff --git a/tp/t/results/sectioning/part_node_part_node_appendix.pl 
b/tp/t/results/sectioning/part_node_part_node_appendix.pl
index f775dd90ce..a44576f79e 100644
--- a/tp/t/results/sectioning/part_node_part_node_appendix.pl
+++ b/tp/t/results/sectioning/part_node_part_node_appendix.pl
@@ -671,7 +671,8 @@ $result_sectioning{'part_node_part_node_appendix'} = {
                             'associated_part' => {
                               'cmdname' => 'part',
                               'extra' => {
-                                'part_associated_section' => {}
+                                'part_associated_section' => {},
+                                'part_following_node' => {}
                               },
                               'structure' => {
                                 'associated_unit' => {},
@@ -715,7 +716,8 @@ $result_sectioning{'part_node_part_node_appendix'} = {
                                   'associated_part' => {
                                     'cmdname' => 'part',
                                     'extra' => {
-                                      'part_associated_section' => {}
+                                      'part_associated_section' => {},
+                                      'part_following_node' => {}
                                     },
                                     'structure' => {
                                       'associated_unit' => {},
@@ -792,6 +794,7 @@ $result_sectioning{'part_node_part_node_appendix'} = {
 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'extra'}{'unit_command'}
 = 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0];
 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_node'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'extra'}{'part_associated_section'}
 = 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
+$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'extra'}{'part_following_node'}
 = 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra
 [...]
 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'section_prev'}
 = 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0];
@@ -804,6 +807,7 @@ 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'
 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'structure'}{'directions'}{'FastBack'}
 = 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'};
 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_node'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'Fas
 [...]
 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'extra'}{'part_associated_section'}
 = 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{
 [...]
+$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'extra'}{'part_following_node'}
 = 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'Fas
 [...]
 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'associated_unit'}
 = 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'Fas
 [...]
 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'section_childs'}[0]
 = 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'F
 [...]
 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'}{'structure'}{'section_prev'}
 = 
$result_sectioning{'part_node_part_node_appendix'}{'structure'}{'section_childs'}[0]{'extra'}{'associated_node'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastFo
 [...]
@@ -946,6 +950,7 @@ $result_nodes{'part_node_part_node_appendix'} = {
       'cmdname' => 'node',
       'extra' => {
         'associated_section' => {},
+        'node_preceding_part' => {},
         'normalized' => 'chapter-node'
       },
       'structure' => {
@@ -954,6 +959,7 @@ $result_nodes{'part_node_part_node_appendix'} = {
           'cmdname' => 'node',
           'extra' => {
             'associated_section' => {},
+            'node_preceding_part' => {},
             'normalized' => 'appendix-node'
           },
           'structure' => {
@@ -1000,8 +1006,10 @@ 
$result_nodes{'part_node_part_node_appendix'}{'extra'}{'associated_section'}{'st
 
$result_nodes{'part_node_part_node_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'unit_next'}
 = 
$result_nodes{'part_node_part_node_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 $result_nodes{'part_node_part_node_appendix'}{'structure'}{'associated_unit'} 
= 
$result_nodes{'part_node_part_node_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'};
 
$result_nodes{'part_node_part_node_appendix'}{'structure'}{'menu_child'}{'extra'}{'associated_section'}
 = 
$result_nodes{'part_node_part_node_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
+$result_nodes{'part_node_part_node_appendix'}{'structure'}{'menu_child'}{'extra'}{'node_preceding_part'}
 = 
$result_nodes{'part_node_part_node_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'};
 
$result_nodes{'part_node_part_node_appendix'}{'structure'}{'menu_child'}{'structure'}{'associated_unit'}
 = 
$result_nodes{'part_node_part_node_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'};
 
$result_nodes{'part_node_part_node_appendix'}{'structure'}{'menu_child'}{'structure'}{'node_next'}{'extra'}{'associated_section'}
 = 
$result_nodes{'part_node_part_node_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'};
+$result_nodes{'part_node_part_node_appendix'}{'structure'}{'menu_child'}{'structure'}{'node_next'}{'extra'}{'node_preceding_part'}
 = 
$result_nodes{'part_node_part_node_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'structure'}{'directions'}{'FastForward'}{'extra'}{'unit_command'}{'extra'}{'associated_part'};
 
$result_nodes{'part_node_part_node_appendix'}{'structure'}{'menu_child'}{'structure'}{'node_next'}{'structure'}{'associated_unit'}
 = 
$result_nodes{'part_node_part_node_appendix'}{'extra'}{'associated_section'}{'structure'}{'associated_unit'}{'structure'}{'directions'}{'FastForward'}{'structure'}{'directions'}{'FastForward'};
 
$result_nodes{'part_node_part_node_appendix'}{'structure'}{'menu_child'}{'structure'}{'node_next'}{'structure'}{'node_prev'}
 = $result_nodes{'part_node_part_node_appendix'}{'structure'}{'menu_child'};
 
$result_nodes{'part_node_part_node_appendix'}{'structure'}{'menu_child'}{'structure'}{'node_next'}{'structure'}{'node_up'}
 = $result_nodes{'part_node_part_node_appendix'};
diff --git a/tp/t/test_utils.pl b/tp/t/test_utils.pl
index 5531709037..34d63c4874 100644
--- a/tp/t/test_utils.pl
+++ b/tp/t/test_utils.pl
@@ -493,9 +493,10 @@ my @menus_keys = ('menu_next', 'menu_up', 'menu_prev', 
'menu_up_hash');
 # to know which section element it is.
 my @sections_keys = ('section_next', 'section_prev', 'section_up',
   'section_childs', 'associated_node', 'part_associated_section',
-  'toplevel_prev', 'toplevel_next', 'toplevel_up', 'section_level');
+  'part_following_node', 'section_level',
+  'toplevel_prev', 'toplevel_next', 'toplevel_up');
 my @node_keys = ('node_next', 'node_prev', 'node_up', 'menus',
-  'associated_section');
+  'associated_section', 'node_preceding_part');
 my %avoided_keys_tree;
 our @avoided_keys_tree = (@sections_keys, @menus_keys, @node_keys, 'structure',
    'menu_child', 'unit_next', 'directions', 'page_next', 'remaining_args');



reply via email to

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