texinfo-commits
[Top][All Lists]
Advanced

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

branch master updated: * tp/Texinfo/ParserNonXS.pm (_handle_line_command


From: Patrice Dumas
Subject: branch master updated: * tp/Texinfo/ParserNonXS.pm (_handle_line_command), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command): add 'subentry_parent' for @subentry to be able to easily find the containing subentry or index entry.
Date: Sun, 07 Jan 2024 10:15:27 -0500

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

pertusus pushed a commit to branch master
in repository texinfo.

The following commit(s) were added to refs/heads/master by this push:
     new 9d5188615c * tp/Texinfo/ParserNonXS.pm (_handle_line_command), 
tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command): add 
'subentry_parent' for @subentry to be able to easily find the containing 
subentry or index entry.
9d5188615c is described below

commit 9d5188615cee06b84b707e859199127a1bdf0dc4
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Sun Jan 7 16:15:26 2024 +0100

    * tp/Texinfo/ParserNonXS.pm (_handle_line_command),
    tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command): add
    'subentry_parent' for @subentry to be able to easily find the
    containing subentry or index entry.
    
    * tp/Texinfo/ParserNonXS.pm (_handle_close_brace),
    tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): associate the
    @seeentry and @seealso to the main index entry command in addition to
    a @subentry.
    
    * tp/Texinfo/Convert/LaTeX.pm (_index_entry): update to the change in
    tree.
    
    * tp/t/09indices.t (seealso_duplicate): also add a duplicate entry
    with @seeentry.
---
 ChangeLog                                          |  18 ++
 tp/Texinfo/Convert/LaTeX.pm                        |  19 +-
 tp/Texinfo/ParserNonXS.pm                          |  26 ++-
 tp/Texinfo/XS/parsetexi/handle_commands.c          |   1 +
 tp/Texinfo/XS/parsetexi/separator.c                |  22 +-
 tp/t/09indices.t                                   |   6 +
 tp/t/results/indices/double_seeentry_seealso.pl    |  46 ++--
 tp/t/results/indices/seealso_duplicate.pl          | 247 ++++++++++++++++++---
 tp/t/results/indices/sorted_subentries.pl          |  96 ++++++--
 tp/t/results/indices/subentries.pl                 |  48 +++-
 tp/t/results/indices/subentries_and_comments.pl    |   8 +-
 tp/t/results/indices/subentry_and_sortas.pl        |   8 +-
 tp/t/results/indices/subentry_and_sortas_spaces.pl |  24 +-
 tp/t/results/latex_tests/indices.pl                | 166 +++++++-------
 .../latex_tests/indices_disable_encoding.pl        | 166 +++++++-------
 15 files changed, 617 insertions(+), 284 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index f4b45139ae..68b2d0076c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2024-01-07  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/ParserNonXS.pm (_handle_line_command),
+       tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command): add
+       'subentry_parent' for @subentry to be able to easily find the
+       containing subentry or index entry.
+
+       * tp/Texinfo/ParserNonXS.pm (_handle_close_brace),
+       tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): associate the
+       @seeentry and @seealso to the main index entry command in addition to
+       a @subentry.
+
+       * tp/Texinfo/Convert/LaTeX.pm (_index_entry): update to the change in
+       tree.
+
+       * tp/t/09indices.t (seealso_duplicate): also add a duplicate entry
+       with @seeentry.
+
 2024-01-07  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/Structuring.pm (index_entry_element_sort_string)
diff --git a/tp/Texinfo/Convert/LaTeX.pm b/tp/Texinfo/Convert/LaTeX.pm
index 3d35ec8b18..03cd19e2e7 100644
--- a/tp/Texinfo/Convert/LaTeX.pm
+++ b/tp/Texinfo/Convert/LaTeX.pm
@@ -2473,17 +2473,14 @@ sub _index_entry($$)
       push @result, $result;
     }
     my $seeresult = '';
-   SEEENTRY:
-    foreach my $subindex_command (@subindex_commands) {
-      foreach my $seecommand (('seeentry', 'seealso')) {
-        if ($subindex_command->{'extra'}->{$seecommand}
-            and $subindex_command->{'extra'}->{$seecommand}->{'args'}->[0]) {
-          my $seeconverted = _convert($self,
-                   $subindex_command->{'extra'}->{$seecommand}->{'args'}->[0]);
-          $seeresult = '|'.$LaTeX_see_index_commands_text{$seecommand}.'{'
-                     .$seeconverted.'}';
-          last SEEENTRY;
-        }
+    foreach my $seecommand (('seeentry', 'seealso')) {
+      if ($element->{'extra'}->{$seecommand}
+          and $element->{'extra'}->{$seecommand}->{'args'}->[0]) {
+        my $seeconverted = _convert($self,
+                 $element->{'extra'}->{$seecommand}->{'args'}->[0]);
+        $seeresult = '|'.$LaTeX_see_index_commands_text{$seecommand}.'{'
+                   .$seeconverted.'}';
+         last;
       }
     }
     _pop_context($self);
diff --git a/tp/Texinfo/ParserNonXS.pm b/tp/Texinfo/ParserNonXS.pm
index cf5aee0826..6eaca18998 100644
--- a/tp/Texinfo/ParserNonXS.pm
+++ b/tp/Texinfo/ParserNonXS.pm
@@ -5630,7 +5630,8 @@ sub _handle_line_command($$$$$$)
         if ($parent->{'cmdname'} eq 'subentry') {
           $subentry_level = $parent->{'extra'}->{'level'} + 1;
         }
-        $command_e->{'extra'} = {'level' => $subentry_level};
+        $command_e->{'extra'} = {'level' => $subentry_level,
+                                 'subentry_parent' => $parent};
         if ($subentry_level > 2) {
           $self->_line_error(__(
       "no more than two levels of index subentry are allowed"),
@@ -6356,20 +6357,31 @@ sub _handle_close_brace($$$)
     } elsif ($in_index_commands{$current->{'parent'}->{'cmdname'}}) {
       my $command = $current->{'parent'}->{'cmdname'};
 
-      my $index_element = $current->{'parent'}->{'parent'}->{'parent'};
-      if ($index_element
-          and _is_index_element($self, $index_element)) {
+      my $subindex_element = $current->{'parent'}->{'parent'}->{'parent'};
+      if ($subindex_element
+          and _is_index_element($self, $subindex_element)) {
         if ($command eq 'sortas') {
           my ($arg, $superfluous_arg) = _text_contents_to_plain_text($current);
           if (defined($arg)) {
-            $index_element->{'extra'} = {}
-              if (!defined($index_element->{'extra'}));
-            $index_element->{'extra'}->{$command} = $arg;
+            $subindex_element->{'extra'} = {}
+              if (!defined($subindex_element->{'extra'}));
+            $subindex_element->{'extra'}->{$command} = $arg;
           }
         } else {
+          my $index_element = $subindex_element;
+          while ($index_element->{'cmdname'} eq 'subentry'
+                 and $index_element->{'extra'}
+                 and $index_element->{'extra'}->{'subentry_parent'}) {
+            $index_element = $index_element->{'extra'}->{'subentry_parent'};
+          }
           $index_element->{'extra'} = {}
             if (!defined($index_element->{'extra'}));
           $index_element->{'extra'}->{$command} = $current->{'parent'};
+          if ($index_element ne $subindex_element) {
+            $subindex_element->{'extra'} = {}
+              if (!defined($subindex_element->{'extra'}));
+            $subindex_element->{'extra'}->{$command} = $current->{'parent'};
+          }
         }
       }
     }
diff --git a/tp/Texinfo/XS/parsetexi/handle_commands.c 
b/tp/Texinfo/XS/parsetexi/handle_commands.c
index 247aebfe4f..0966ded11e 100644
--- a/tp/Texinfo/XS/parsetexi/handle_commands.c
+++ b/tp/Texinfo/XS/parsetexi/handle_commands.c
@@ -806,6 +806,7 @@ handle_line_command (ELEMENT *current, char **line_inout,
                     fatal ("No subentry parent level or level 0");
                 }
               add_extra_integer (command_e, "level", level);
+              add_extra_element (command_e, "subentry_parent", parent);
               if (level > 2)
                 {
                   line_error
diff --git a/tp/Texinfo/XS/parsetexi/separator.c 
b/tp/Texinfo/XS/parsetexi/separator.c
index a7e3a1c529..41c2246395 100644
--- a/tp/Texinfo/XS/parsetexi/separator.c
+++ b/tp/Texinfo/XS/parsetexi/separator.c
@@ -523,14 +523,14 @@ handle_close_brace (ELEMENT *current, char **line_inout)
                || current->parent->cmd == CM_seeentry
                || current->parent->cmd == CM_seealso)
         {
-          ELEMENT *index_elt;
+          ELEMENT *subindex_elt;
           if (current->parent->parent
               && current->parent->parent->parent
               && ((command_flags(current->parent->parent->parent)
                     & CF_index_entry_command)
                   || current->parent->parent->parent->cmd == CM_subentry))
             {
-              index_elt = current->parent->parent->parent;
+              subindex_elt = current->parent->parent->parent;
               if (current->parent->cmd == CM_sortas)
                 {
                   int superfluous_arg;
@@ -538,16 +538,30 @@ handle_close_brace (ELEMENT *current, char **line_inout)
                                                            &superfluous_arg);
                   if (arg && *arg)
                     {
-                      add_extra_string (index_elt,
+                      add_extra_string (subindex_elt,
                                         command_name(current->parent->cmd),
                                         arg);
                     }
                 }
               else
                 {
-                  add_extra_element (index_elt,
+                  ELEMENT *index_elt = subindex_elt;
+                  while (index_elt->cmd == CM_subentry)
+                    {
+                      ELEMENT *subentry_parent
+                        = lookup_extra_element (index_elt, "subentry_parent");
+                      if (!subentry_parent)
+                        break;
+                      else
+                        index_elt = subentry_parent;
+                    }
+                  add_extra_element (subindex_elt,
                                      command_name(current->parent->cmd),
                                      current->parent);
+                  if (index_elt != subindex_elt)
+                    add_extra_element (index_elt,
+                                       command_name(current->parent->cmd),
+                                       current->parent);
                 }
             }
         }
diff --git a/tp/t/09indices.t b/tp/t/09indices.t
index 072b6d6193..7b521bea03 100644
--- a/tp/t/09indices.t
+++ b/tp/t/09indices.t
@@ -782,6 +782,12 @@ in a reuglar para @sortas{foo}. @code{inside another 
@sortas{command}}.
 @cindex @command{awk} @subentry POSIX and
 @cindex @command{awk} @subentry POSIX and @seealso{POSIX @command{awk}}
 
+b
+
+c
+
+@cindex @command{awk} @subentry POSIX and @seeentry{Another entry}
+
 @printindex cp
 '],
 ['same_only_seealso_seeentry',
diff --git a/tp/t/results/indices/double_seeentry_seealso.pl 
b/tp/t/results/indices/double_seeentry_seealso.pl
index 748052e797..05ff9187d8 100644
--- a/tp/t/results/indices/double_seeentry_seealso.pl
+++ b/tp/t/results/indices/double_seeentry_seealso.pl
@@ -406,6 +406,22 @@ $result_trees{'double_seeentry_seealso'} = {
               4
             ],
             'seealso' => {},
+            'seeentry' => {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'text' => 'subhhh'
+                    }
+                  ],
+                  'type' => 'brace_command_arg'
+                }
+              ],
+              'cmdname' => 'seeentry',
+              'source_info' => {
+                'line_nr' => 10
+              }
+            },
             'subentry' => {
               'args' => [
                 {
@@ -417,22 +433,7 @@ $result_trees{'double_seeentry_seealso'} = {
                       'text' => ' ',
                       'type' => 'spaces_at_end'
                     },
-                    {
-                      'args' => [
-                        {
-                          'contents' => [
-                            {
-                              'text' => 'subhhh'
-                            }
-                          ],
-                          'type' => 'brace_command_arg'
-                        }
-                      ],
-                      'cmdname' => 'seeentry',
-                      'source_info' => {
-                        'line_nr' => 10
-                      }
-                    }
+                    {}
                   ],
                   'info' => {
                     'spaces_after_argument' => {
@@ -446,7 +447,8 @@ $result_trees{'double_seeentry_seealso'} = {
               'cmdname' => 'subentry',
               'extra' => {
                 'level' => 1,
-                'seeentry' => {}
+                'seeentry' => {},
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -532,7 +534,9 @@ 
$result_trees{'double_seeentry_seealso'}{'contents'}[4]{'contents'}[3]{'extra'}{
 
$result_trees{'double_seeentry_seealso'}{'contents'}[4]{'contents'}[3]{'extra'}{'seeentry'}
 = 
$result_trees{'double_seeentry_seealso'}{'contents'}[4]{'contents'}[3]{'args'}[0]{'contents'}[2];
 
$result_trees{'double_seeentry_seealso'}{'contents'}[4]{'contents'}[4]{'extra'}{'element_node'}
 = $result_trees{'double_seeentry_seealso'}{'contents'}[3];
 
$result_trees{'double_seeentry_seealso'}{'contents'}[4]{'contents'}[4]{'extra'}{'seealso'}
 = 
$result_trees{'double_seeentry_seealso'}{'contents'}[4]{'contents'}[4]{'args'}[0]{'contents'}[0];
-$result_trees{'double_seeentry_seealso'}{'contents'}[4]{'contents'}[4]{'extra'}{'subentry'}{'extra'}{'seeentry'}
 = 
$result_trees{'double_seeentry_seealso'}{'contents'}[4]{'contents'}[4]{'extra'}{'subentry'}{'args'}[0]{'contents'}[2];
+$result_trees{'double_seeentry_seealso'}{'contents'}[4]{'contents'}[4]{'extra'}{'subentry'}{'args'}[0]{'contents'}[2]
 = 
$result_trees{'double_seeentry_seealso'}{'contents'}[4]{'contents'}[4]{'extra'}{'seeentry'};
+$result_trees{'double_seeentry_seealso'}{'contents'}[4]{'contents'}[4]{'extra'}{'subentry'}{'extra'}{'seeentry'}
 = 
$result_trees{'double_seeentry_seealso'}{'contents'}[4]{'contents'}[4]{'extra'}{'seeentry'};
+$result_trees{'double_seeentry_seealso'}{'contents'}[4]{'contents'}[4]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'double_seeentry_seealso'}{'contents'}[4]{'contents'}[4];
 $result_trees{'double_seeentry_seealso'}{'contents'}[4]{'contents'}[5] = 
$result_trees{'double_seeentry_seealso'}{'contents'}[4]{'contents'}[4]{'extra'}{'subentry'};
 
 $result_texis{'double_seeentry_seealso'} = '@node top
@@ -688,7 +692,7 @@ $result_converted{'docbook'}->{'double_seeentry_seealso'} = 
'<chapter label="1"
 <indexterm role="cp"><primary>aaa</primary><see>ccc</see></indexterm>
 <indexterm role="cp"><primary>ddd</primary><seealso>eee</seealso></indexterm>
 <indexterm 
role="cp"><primary>ggg</primary><see>hhh</see><seealso>iii</seealso></indexterm>
-<indexterm 
role="cp"><primary></primary><secondary>subggg</secondary><seealso>fff</seealso></indexterm>
+<indexterm 
role="cp"><primary></primary><secondary>subggg</secondary><see>subhhh</see><seealso>fff</seealso></indexterm>
 <index role="cp"></index>
 </chapter>
 ';
@@ -792,7 +796,7 @@ $result_converted{'html_text'}->{'double_seeentry_seealso'} 
= '<div class="top-l
 <tr><td></td><th class="entries-header-printindex">Index Entry</th><th 
class="sections-header-printindex">Section</th></tr>
 <tr><td colspan="3"><hr></td></tr>
 <tr><th id="node-index_cp_symbol-1"></th></tr>
-<tr><td></td><td class="printindex-index-entry"></td><td 
class="printindex-index-see-also"><em class="emph">See also</em> fff</td></tr>
+<tr><td></td><td class="printindex-index-see-entry">, <em 
class="emph">See</em> subhhh</td><td 
class="printindex-index-see-entry-section"></td></tr>
 <tr><td colspan="3"><hr></td></tr>
 <tr><th id="node-index_cp_letter-A">A</th></tr>
 <tr><td></td><td class="printindex-index-see-entry">aaa, <em 
class="emph">See</em> ccc</td><td 
class="printindex-index-see-entry-section"></td></tr>
@@ -904,7 +908,7 @@ $result_converted{'latex'}->{'double_seeentry_seealso'} = 
'\\documentclass{book}
 \\index[cp]{aaa@aaa|see{ccc}}%
 \\index[cp]{ddd@ddd|seealso{eee}}%
 \\index[cp]{ggg@ggg|see{hhh}}%
-\\index[cp]{@!subggg@subggg|seealso{fff}}%
+\\index[cp]{@!subggg@subggg|see{subhhh}}%
 
 \\printindex[cp]
 \\end{document}
diff --git a/tp/t/results/indices/seealso_duplicate.pl 
b/tp/t/results/indices/seealso_duplicate.pl
index 85f8e81635..76679a9455 100644
--- a/tp/t/results/indices/seealso_duplicate.pl
+++ b/tp/t/results/indices/seealso_duplicate.pl
@@ -125,7 +125,8 @@ $result_trees{'seealso_duplicate'} = {
               ],
               'cmdname' => 'subentry',
               'extra' => {
-                'level' => 1
+                'level' => 1,
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -185,50 +186,51 @@ $result_trees{'seealso_duplicate'} = {
               'cp',
               2
             ],
-            'subentry' => {
+            'seealso' => {
               'args' => [
                 {
                   'contents' => [
                     {
-                      'text' => 'POSIX and'
-                    },
-                    {
-                      'text' => ' ',
-                      'type' => 'spaces_at_end'
+                      'text' => 'POSIX '
                     },
                     {
                       'args' => [
                         {
                           'contents' => [
                             {
-                              'text' => 'POSIX '
-                            },
-                            {
-                              'args' => [
-                                {
-                                  'contents' => [
-                                    {
-                                      'text' => 'awk'
-                                    }
-                                  ],
-                                  'type' => 'brace_command_arg'
-                                }
-                              ],
-                              'cmdname' => 'command',
-                              'source_info' => {
-                                'line_nr' => 5
-                              }
+                              'text' => 'awk'
                             }
                           ],
                           'type' => 'brace_command_arg'
                         }
                       ],
-                      'cmdname' => 'seealso',
+                      'cmdname' => 'command',
                       'source_info' => {
                         'line_nr' => 5
                       }
                     }
                   ],
+                  'type' => 'brace_command_arg'
+                }
+              ],
+              'cmdname' => 'seealso',
+              'source_info' => {
+                'line_nr' => 5
+              }
+            },
+            'subentry' => {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'text' => 'POSIX and'
+                    },
+                    {
+                      'text' => ' ',
+                      'type' => 'spaces_at_end'
+                    },
+                    {}
+                  ],
                   'info' => {
                     'spaces_after_argument' => {
                       'text' => '
@@ -241,7 +243,8 @@ $result_trees{'seealso_duplicate'} = {
               'cmdname' => 'subentry',
               'extra' => {
                 'level' => 1,
-                'seealso' => {}
+                'seealso' => {},
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -267,6 +270,141 @@ $result_trees{'seealso_duplicate'} = {
         {},
         {
           'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'contents' => [
+            {
+              'text' => 'b
+'
+            }
+          ],
+          'type' => 'paragraph'
+        },
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'contents' => [
+            {
+              'text' => 'c
+'
+            }
+          ],
+          'type' => 'paragraph'
+        },
+        {
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'text' => 'awk'
+                        }
+                      ],
+                      'type' => 'brace_command_arg'
+                    }
+                  ],
+                  'cmdname' => 'command',
+                  'source_info' => {
+                    'line_nr' => 11
+                  }
+                }
+              ],
+              'info' => {
+                'spaces_after_argument' => {
+                  'text' => ' '
+                }
+              },
+              'type' => 'line_arg'
+            }
+          ],
+          'cmdname' => 'cindex',
+          'extra' => {
+            'element_node' => {},
+            'index_entry' => [
+              'cp',
+              3
+            ],
+            'seeentry' => {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'text' => 'Another entry'
+                    }
+                  ],
+                  'type' => 'brace_command_arg'
+                }
+              ],
+              'cmdname' => 'seeentry',
+              'source_info' => {
+                'line_nr' => 11
+              }
+            },
+            'subentry' => {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'text' => 'POSIX and'
+                    },
+                    {
+                      'text' => ' ',
+                      'type' => 'spaces_at_end'
+                    },
+                    {}
+                  ],
+                  'info' => {
+                    'spaces_after_argument' => {
+                      'text' => '
+'
+                    }
+                  },
+                  'type' => 'line_arg'
+                }
+              ],
+              'cmdname' => 'subentry',
+              'extra' => {
+                'level' => 1,
+                'seeentry' => {},
+                'subentry_parent' => {}
+              },
+              'info' => {
+                'spaces_before_argument' => {
+                  'text' => ' '
+                }
+              },
+              'source_info' => {
+                'line_nr' => 11
+              }
+            }
+          },
+          'info' => {
+            'command_name' => 'cindex',
+            'spaces_before_argument' => {
+              'text' => ' '
+            }
+          },
+          'source_info' => {
+            'line_nr' => 11
+          },
+          'type' => 'index_entry_command'
+        },
+        {},
+        {
+          'text' => '
 ',
           'type' => 'empty_line'
         },
@@ -299,7 +437,7 @@ $result_trees{'seealso_duplicate'} = {
             }
           },
           'source_info' => {
-            'line_nr' => 7
+            'line_nr' => 13
           }
         }
       ],
@@ -321,10 +459,18 @@ $result_trees{'seealso_duplicate'} = {
   'type' => 'document_root'
 };
 
$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[1]{'extra'}{'element_node'}
 = $result_trees{'seealso_duplicate'}{'contents'}[2];
+$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[1]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[1];
 $result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[2] = 
$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[1]{'extra'}{'subentry'};
 
$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[3]{'extra'}{'element_node'}
 = $result_trees{'seealso_duplicate'}{'contents'}[2];
-$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[3]{'extra'}{'subentry'}{'extra'}{'seealso'}
 = 
$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[3]{'extra'}{'subentry'}{'args'}[0]{'contents'}[2];
+$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[3]{'extra'}{'subentry'}{'args'}[0]{'contents'}[2]
 = 
$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[3]{'extra'}{'seealso'};
+$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[3]{'extra'}{'subentry'}{'extra'}{'seealso'}
 = 
$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[3]{'extra'}{'seealso'};
+$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[3]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[3];
 $result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[4] = 
$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[3]{'extra'}{'subentry'};
+$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[10]{'extra'}{'element_node'}
 = $result_trees{'seealso_duplicate'}{'contents'}[2];
+$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[10]{'extra'}{'subentry'}{'args'}[0]{'contents'}[2]
 = 
$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[10]{'extra'}{'seeentry'};
+$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[10]{'extra'}{'subentry'}{'extra'}{'seeentry'}
 = 
$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[10]{'extra'}{'seeentry'};
+$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[10]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[10];
+$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[11] = 
$result_trees{'seealso_duplicate'}{'contents'}[2]{'contents'}[10]{'extra'}{'subentry'};
 
 $result_texis{'seealso_duplicate'} = '@node Top
 @node chap
@@ -332,12 +478,23 @@ $result_texis{'seealso_duplicate'} = '@node Top
 @cindex @command{awk} @subentry POSIX and
 @cindex @command{awk} @subentry POSIX and @seealso{POSIX @command{awk}}
 
+b
+
+c
+
+@cindex @command{awk} @subentry POSIX and @seeentry{Another entry}
+
 @printindex cp
 ';
 
 
 $result_texts{'seealso_duplicate'} = '
 
+b
+
+c
+
+
 ';
 
 $result_nodes{'seealso_duplicate'} = [
@@ -385,6 +542,7 @@ $result_floats{'seealso_duplicate'} = {};
 
 $result_indices_sort_strings{'seealso_duplicate'} = {
   'cp' => [
+    'awk, POSIX and',
     'awk, POSIX and',
     'awk, POSIX and'
   ]
@@ -400,11 +558,14 @@ File: ,  Node: Top,  Next: chap,  Up: (dir)
 
 File: ,  Node: chap,  Prev: Top
 
+b
+
+   c
+
 [index]
 * Menu:
 
 * awk, POSIX and:                        chap.                  (line 3)
-* awk, POSIX and <1>:                    chap.                  (line 3)
 
 
 
@@ -421,10 +582,13 @@ End:
 ';
 
 
-$result_converted{'plaintext'}->{'seealso_duplicate'} = '* Menu:
+$result_converted{'plaintext'}->{'seealso_duplicate'} = 'b
+
+   c
+
+* Menu:
 
 * awk, POSIX and:                        chap.                  (line 0)
-* awk, POSIX and <1>:                    chap.                  (line 0)
 
 ';
 
@@ -442,7 +606,11 @@ $result_converted{'html_text'}->{'seealso_duplicate'} = 
'<a class="node-id" id="
 <h4 class="node"><span>chap<a class="copiable-link" href="#chap"> 
&para;</a></span></h4>
 
 <a class="index-entry-id" id="index-awk-POSIX-and"></a>
-<a class="index-entry-id" id="index-awk-POSIX-and-1"></a>
+
+<p>b
+</p>
+<p>c
+</p>
 
 <div class="printindex cp-printindex">
 <table class="cp-entries-printindex" border="0">
@@ -451,7 +619,8 @@ $result_converted{'html_text'}->{'seealso_duplicate'} = '<a 
class="node-id" id="
 <tr><th id="chap_cp_letter-A">A</th></tr>
 <tr><td></td><td class="printindex-index-entry"><code 
class="command">awk</code></td><td></td></tr>
 <tr><td></td><td class="printindex-index-entry index-entry-level-1"><a 
href="#index-awk-POSIX-and">POSIX and</a></td><td 
class="printindex-index-section"><a href="#chap">chap</a></td></tr>
-<tr><td></td><td class="printindex-index-entry index-entry-level-1"><a 
href="#index-awk-POSIX-and-1">POSIX and</a></td><td 
class="printindex-index-section"><a href="#chap">chap</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><code 
class="command">awk</code></td><td class="printindex-index-see-also"><em 
class="emph">See also</em> POSIX <code class="command">awk</code></td></tr>
+<tr><td></td><td class="printindex-index-see-entry"><code 
class="command">awk</code>, <em class="emph">See</em> Another entry</td><td 
class="printindex-index-see-entry-section"></td></tr>
 <tr><td colspan="3"><hr></td></tr>
 </table>
 </div>
@@ -464,6 +633,12 @@ $result_converted{'xml'}->{'seealso_duplicate'} = '<node 
name="Top" spaces=" "><
 <cindex index="cp" spaces=" "><indexterm index="cp" 
number="1"><command>awk</command></indexterm></cindex> <subentry spaces=" 
">POSIX and</subentry>
 <cindex index="cp" spaces=" "><indexterm index="cp" 
number="2"><command>awk</command></indexterm></cindex> <subentry spaces=" 
">POSIX and <seealso>POSIX <command>awk</command></seealso></subentry>
 
+<para>b
+</para>
+<para>c
+</para>
+<cindex index="cp" spaces=" "><indexterm index="cp" 
number="3"><command>awk</command></indexterm></cindex> <subentry spaces=" 
">POSIX and <seeentry>Another entry</seeentry></subentry>
+
 <printindex spaces=" " value="cp" line="cp"></printindex>
 ';
 
@@ -523,6 +698,12 @@ $result_converted{'latex'}->{'seealso_duplicate'} = 
'\\documentclass{book}
 \\index[cp]{awk@\\texttt{awk}!POSIX and@POSIX and}%
 \\index[cp]{awk@\\texttt{awk}!POSIX and@POSIX and|seealso{POSIX 
\\texttt{awk}}}%
 
+b
+
+c
+
+\\index[cp]{awk@\\texttt{awk}!POSIX and@POSIX and|see{Another entry}}%
+
 \\printindex[cp]
 \\end{document}
 ';
diff --git a/tp/t/results/indices/sorted_subentries.pl 
b/tp/t/results/indices/sorted_subentries.pl
index a13e35681d..dbb9f4ea3c 100644
--- a/tp/t/results/indices/sorted_subentries.pl
+++ b/tp/t/results/indices/sorted_subentries.pl
@@ -168,7 +168,8 @@ $result_trees{'sorted_subentries'} = {
               ],
               'cmdname' => 'subentry',
               'extra' => {
-                'level' => 1
+                'level' => 1,
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -234,7 +235,8 @@ $result_trees{'sorted_subentries'} = {
               ],
               'cmdname' => 'subentry',
               'extra' => {
-                'level' => 1
+                'level' => 1,
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -300,7 +302,8 @@ $result_trees{'sorted_subentries'} = {
               ],
               'cmdname' => 'subentry',
               'extra' => {
-                'level' => 1
+                'level' => 1,
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -366,7 +369,8 @@ $result_trees{'sorted_subentries'} = {
               ],
               'cmdname' => 'subentry',
               'extra' => {
-                'level' => 1
+                'level' => 1,
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -456,7 +460,8 @@ $result_trees{'sorted_subentries'} = {
                   ],
                   'cmdname' => 'subentry',
                   'extra' => {
-                    'level' => 2
+                    'level' => 2,
+                    'subentry_parent' => {}
                   },
                   'info' => {
                     'spaces_before_argument' => {
@@ -466,7 +471,8 @@ $result_trees{'sorted_subentries'} = {
                   'source_info' => {
                     'line_nr' => 12
                   }
-                }
+                },
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -533,7 +539,8 @@ $result_trees{'sorted_subentries'} = {
               ],
               'cmdname' => 'subentry',
               'extra' => {
-                'level' => 1
+                'level' => 1,
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -635,7 +642,8 @@ $result_trees{'sorted_subentries'} = {
               ],
               'cmdname' => 'subentry',
               'extra' => {
-                'level' => 1
+                'level' => 1,
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -696,7 +704,8 @@ $result_trees{'sorted_subentries'} = {
               ],
               'cmdname' => 'subentry',
               'extra' => {
-                'level' => 1
+                'level' => 1,
+                'subentry_parent' => {}
               },
               'source_info' => {
                 'line_nr' => 16
@@ -831,7 +840,8 @@ $result_trees{'sorted_subentries'} = {
                       ],
                       'cmdname' => 'subentry',
                       'extra' => {
-                        'level' => 3
+                        'level' => 3,
+                        'subentry_parent' => {}
                       },
                       'info' => {
                         'spaces_before_argument' => {
@@ -841,7 +851,8 @@ $result_trees{'sorted_subentries'} = {
                       'source_info' => {
                         'line_nr' => 18
                       }
-                    }
+                    },
+                    'subentry_parent' => {}
                   },
                   'info' => {
                     'spaces_before_argument' => {
@@ -851,7 +862,8 @@ $result_trees{'sorted_subentries'} = {
                   'source_info' => {
                     'line_nr' => 18
                   }
-                }
+                },
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -1007,7 +1019,8 @@ $result_trees{'sorted_subentries'} = {
                   ],
                   'cmdname' => 'subentry',
                   'extra' => {
-                    'level' => 2
+                    'level' => 2,
+                    'subentry_parent' => {}
                   },
                   'info' => {
                     'spaces_before_argument' => {
@@ -1017,7 +1030,8 @@ $result_trees{'sorted_subentries'} = {
                   'source_info' => {
                     'line_nr' => 22
                   }
-                }
+                },
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -1133,7 +1147,8 @@ $result_trees{'sorted_subentries'} = {
               ],
               'cmdname' => 'subentry',
               'extra' => {
-                'level' => 1
+                'level' => 1,
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -1265,7 +1280,8 @@ $result_trees{'sorted_subentries'} = {
                   ],
                   'cmdname' => 'subentry',
                   'extra' => {
-                    'level' => 2
+                    'level' => 2,
+                    'subentry_parent' => {}
                   },
                   'info' => {
                     'spaces_before_argument' => {
@@ -1275,7 +1291,8 @@ $result_trees{'sorted_subentries'} = {
                   'source_info' => {
                     'line_nr' => 25
                   }
-                }
+                },
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -1327,7 +1344,8 @@ $result_trees{'sorted_subentries'} = {
               ],
               'cmdname' => 'subentry',
               'extra' => {
-                'level' => 1
+                'level' => 1,
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -1433,7 +1451,8 @@ $result_trees{'sorted_subentries'} = {
                   'cmdname' => 'subentry',
                   'extra' => {
                     'level' => 2,
-                    'sortas' => 'A'
+                    'sortas' => 'A',
+                    'subentry_parent' => {}
                   },
                   'info' => {
                     'spaces_before_argument' => {
@@ -1443,7 +1462,8 @@ $result_trees{'sorted_subentries'} = {
                   'source_info' => {
                     'line_nr' => 27
                   }
-                }
+                },
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -1529,7 +1549,8 @@ $result_trees{'sorted_subentries'} = {
                   ],
                   'cmdname' => 'subentry',
                   'extra' => {
-                    'level' => 2
+                    'level' => 2,
+                    'subentry_parent' => {}
                   },
                   'info' => {
                     'spaces_before_argument' => {
@@ -1539,7 +1560,8 @@ $result_trees{'sorted_subentries'} = {
                   'source_info' => {
                     'line_nr' => 28
                   }
-                }
+                },
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -1625,7 +1647,8 @@ $result_trees{'sorted_subentries'} = {
                   ],
                   'cmdname' => 'subentry',
                   'extra' => {
-                    'level' => 2
+                    'level' => 2,
+                    'subentry_parent' => {}
                   },
                   'info' => {
                     'spaces_before_argument' => {
@@ -1635,7 +1658,8 @@ $result_trees{'sorted_subentries'} = {
                   'source_info' => {
                     'line_nr' => 29
                   }
-                }
+                },
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -1714,45 +1738,69 @@ $result_trees{'sorted_subentries'} = {
   'type' => 'document_root'
 };
 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[1]{'extra'}{'element_node'}
 = $result_trees{'sorted_subentries'}{'contents'}[3];
+$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[1]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[1];
 $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[2] = 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[1]{'extra'}{'subentry'};
 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[3]{'extra'}{'element_node'}
 = $result_trees{'sorted_subentries'}{'contents'}[3];
+$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[3]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[3];
 $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[4] = 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[3]{'extra'}{'subentry'};
 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[5]{'extra'}{'element_node'}
 = $result_trees{'sorted_subentries'}{'contents'}[3];
+$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[5];
 $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[6] = 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'};
 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[7]{'extra'}{'element_node'}
 = $result_trees{'sorted_subentries'}{'contents'}[3];
+$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[7]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[7];
 $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[8] = 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[7]{'extra'}{'subentry'};
 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[10]{'extra'}{'element_node'}
 = $result_trees{'sorted_subentries'}{'contents'}[3];
+$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[10]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[10]{'extra'}{'subentry'};
+$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[10]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[10];
 $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[11] = 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[10]{'extra'}{'subentry'};
 $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[12] = 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[10]{'extra'}{'subentry'}{'extra'}{'subentry'};
 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[13]{'extra'}{'element_node'}
 = $result_trees{'sorted_subentries'}{'contents'}[3];
+$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[13]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[13];
 $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[14] = 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[13]{'extra'}{'subentry'};
 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[15]{'extra'}{'element_node'}
 = $result_trees{'sorted_subentries'}{'contents'}[3];
 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[16]{'extra'}{'element_node'}
 = $result_trees{'sorted_subentries'}{'contents'}[3];
+$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[16]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[16];
 $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[17] = 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[16]{'extra'}{'subentry'};
 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[18]{'extra'}{'element_node'}
 = $result_trees{'sorted_subentries'}{'contents'}[3];
+$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[18]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[18];
 $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[19] = 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[18]{'extra'}{'subentry'};
 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[20]{'extra'}{'element_node'}
 = $result_trees{'sorted_subentries'}{'contents'}[3];
 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[21]{'extra'}{'element_node'}
 = $result_trees{'sorted_subentries'}{'contents'}[3];
+$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[21]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[21]{'extra'}{'subentry'}{'extra'}{'subentry'};
+$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[21]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[21]{'extra'}{'subentry'};
+$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[21]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[21];
 $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[22] = 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[21]{'extra'}{'subentry'};
 $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[23] = 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[21]{'extra'}{'subentry'}{'extra'}{'subentry'};
 $result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[24] = 
$result_trees{'sorted_subentries'}{'contents'}[4]{'contents'}[21]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry'};
 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[0]{'extra'}{'element_node'}
 = $result_trees{'sorted_subentries'}{'contents'}[5];
+$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[0]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[0]{'extra'}{'subentry'};
+$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[0]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[0];
 $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[1] = 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[0]{'extra'}{'subentry'};
 $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[2] = 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[0]{'extra'}{'subentry'}{'extra'}{'subentry'};
 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[3]{'extra'}{'element_node'}
 = $result_trees{'sorted_subentries'}{'contents'}[5];
 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[4]{'extra'}{'element_node'}
 = $result_trees{'sorted_subentries'}{'contents'}[5];
+$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[4]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[4];
 $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[5] = 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[4]{'extra'}{'subentry'};
 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[6]{'extra'}{'element_node'}
 = $result_trees{'sorted_subentries'}{'contents'}[5];
+$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[6]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[6]{'extra'}{'subentry'};
+$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[6]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[6];
 $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[7] = 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[6]{'extra'}{'subentry'};
 $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[8] = 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[6]{'extra'}{'subentry'}{'extra'}{'subentry'};
+$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[9]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[9];
 $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[10] = 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[9]{'extra'}{'subentry'};
 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[11]{'extra'}{'element_node'}
 = $result_trees{'sorted_subentries'}{'contents'}[5];
+$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[11]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[11]{'extra'}{'subentry'};
+$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[11]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[11];
 $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[12] = 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[11]{'extra'}{'subentry'};
 $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[13] = 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[11]{'extra'}{'subentry'}{'extra'}{'subentry'};
 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[14]{'extra'}{'element_node'}
 = $result_trees{'sorted_subentries'}{'contents'}[5];
+$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[14]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[14]{'extra'}{'subentry'};
+$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[14]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[14];
 $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[15] = 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[14]{'extra'}{'subentry'};
 $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[16] = 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[14]{'extra'}{'subentry'}{'extra'}{'subentry'};
 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[17]{'extra'}{'element_node'}
 = $result_trees{'sorted_subentries'}{'contents'}[5];
+$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[17]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[17]{'extra'}{'subentry'};
+$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[17]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[17];
 $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[18] = 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[17]{'extra'}{'subentry'};
 $result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[19] = 
$result_trees{'sorted_subentries'}{'contents'}[6]{'contents'}[17]{'extra'}{'subentry'}{'extra'}{'subentry'};
 
diff --git a/tp/t/results/indices/subentries.pl 
b/tp/t/results/indices/subentries.pl
index b3bee1fb5f..265d228280 100644
--- a/tp/t/results/indices/subentries.pl
+++ b/tp/t/results/indices/subentries.pl
@@ -205,7 +205,8 @@ $result_trees{'subentries'} = {
               ],
               'cmdname' => 'subentry',
               'extra' => {
-                'level' => 1
+                'level' => 1,
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -290,7 +291,8 @@ $result_trees{'subentries'} = {
                   ],
                   'cmdname' => 'subentry',
                   'extra' => {
-                    'level' => 2
+                    'level' => 2,
+                    'subentry_parent' => {}
                   },
                   'info' => {
                     'spaces_before_argument' => {
@@ -300,7 +302,8 @@ $result_trees{'subentries'} = {
                   'source_info' => {
                     'line_nr' => 9
                   }
-                }
+                },
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -405,7 +408,8 @@ $result_trees{'subentries'} = {
                       ],
                       'cmdname' => 'subentry',
                       'extra' => {
-                        'level' => 3
+                        'level' => 3,
+                        'subentry_parent' => {}
                       },
                       'info' => {
                         'spaces_before_argument' => {
@@ -415,7 +419,8 @@ $result_trees{'subentries'} = {
                       'source_info' => {
                         'line_nr' => 10
                       }
-                    }
+                    },
+                    'subentry_parent' => {}
                   },
                   'info' => {
                     'spaces_before_argument' => {
@@ -425,7 +430,8 @@ $result_trees{'subentries'} = {
                   'source_info' => {
                     'line_nr' => 10
                   }
-                }
+                },
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -534,7 +540,8 @@ $result_trees{'subentries'} = {
               ],
               'cmdname' => 'subentry',
               'extra' => {
-                'level' => 1
+                'level' => 1,
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -619,7 +626,8 @@ $result_trees{'subentries'} = {
                   ],
                   'cmdname' => 'subentry',
                   'extra' => {
-                    'level' => 2
+                    'level' => 2,
+                    'subentry_parent' => {}
                   },
                   'info' => {
                     'spaces_before_argument' => {
@@ -629,7 +637,8 @@ $result_trees{'subentries'} = {
                   'source_info' => {
                     'line_nr' => 14
                   }
-                }
+                },
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -734,7 +743,8 @@ $result_trees{'subentries'} = {
                       ],
                       'cmdname' => 'subentry',
                       'extra' => {
-                        'level' => 3
+                        'level' => 3,
+                        'subentry_parent' => {}
                       },
                       'info' => {
                         'spaces_before_argument' => {
@@ -744,7 +754,8 @@ $result_trees{'subentries'} = {
                       'source_info' => {
                         'line_nr' => 15
                       }
-                    }
+                    },
+                    'subentry_parent' => {}
                   },
                   'info' => {
                     'spaces_before_argument' => {
@@ -754,7 +765,8 @@ $result_trees{'subentries'} = {
                   'source_info' => {
                     'line_nr' => 15
                   }
-                }
+                },
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -867,21 +879,33 @@ $result_trees{'subentries'} = {
 };
 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[1]{'extra'}{'element_node'}
 = $result_trees{'subentries'}{'contents'}[3];
 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[2]{'extra'}{'element_node'}
 = $result_trees{'subentries'}{'contents'}[3];
+$result_trees{'subentries'}{'contents'}[4]{'contents'}[2]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'subentries'}{'contents'}[4]{'contents'}[2];
 $result_trees{'subentries'}{'contents'}[4]{'contents'}[3] = 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[2]{'extra'}{'subentry'};
 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[4]{'extra'}{'element_node'}
 = $result_trees{'subentries'}{'contents'}[3];
+$result_trees{'subentries'}{'contents'}[4]{'contents'}[4]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[4]{'extra'}{'subentry'};
+$result_trees{'subentries'}{'contents'}[4]{'contents'}[4]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'subentries'}{'contents'}[4]{'contents'}[4];
 $result_trees{'subentries'}{'contents'}[4]{'contents'}[5] = 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[4]{'extra'}{'subentry'};
 $result_trees{'subentries'}{'contents'}[4]{'contents'}[6] = 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[4]{'extra'}{'subentry'}{'extra'}{'subentry'};
 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[7]{'extra'}{'element_node'}
 = $result_trees{'subentries'}{'contents'}[3];
+$result_trees{'subentries'}{'contents'}[4]{'contents'}[7]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[7]{'extra'}{'subentry'}{'extra'}{'subentry'};
+$result_trees{'subentries'}{'contents'}[4]{'contents'}[7]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[7]{'extra'}{'subentry'};
+$result_trees{'subentries'}{'contents'}[4]{'contents'}[7]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'subentries'}{'contents'}[4]{'contents'}[7];
 $result_trees{'subentries'}{'contents'}[4]{'contents'}[8] = 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[7]{'extra'}{'subentry'};
 $result_trees{'subentries'}{'contents'}[4]{'contents'}[9] = 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[7]{'extra'}{'subentry'}{'extra'}{'subentry'};
 $result_trees{'subentries'}{'contents'}[4]{'contents'}[10] = 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[7]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry'};
 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[12]{'extra'}{'element_node'}
 = $result_trees{'subentries'}{'contents'}[3];
 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[13]{'extra'}{'element_node'}
 = $result_trees{'subentries'}{'contents'}[3];
+$result_trees{'subentries'}{'contents'}[4]{'contents'}[13]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'subentries'}{'contents'}[4]{'contents'}[13];
 $result_trees{'subentries'}{'contents'}[4]{'contents'}[14] = 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[13]{'extra'}{'subentry'};
 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[15]{'extra'}{'element_node'}
 = $result_trees{'subentries'}{'contents'}[3];
+$result_trees{'subentries'}{'contents'}[4]{'contents'}[15]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[15]{'extra'}{'subentry'};
+$result_trees{'subentries'}{'contents'}[4]{'contents'}[15]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'subentries'}{'contents'}[4]{'contents'}[15];
 $result_trees{'subentries'}{'contents'}[4]{'contents'}[16] = 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[15]{'extra'}{'subentry'};
 $result_trees{'subentries'}{'contents'}[4]{'contents'}[17] = 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[15]{'extra'}{'subentry'}{'extra'}{'subentry'};
 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[18]{'extra'}{'element_node'}
 = $result_trees{'subentries'}{'contents'}[3];
+$result_trees{'subentries'}{'contents'}[4]{'contents'}[18]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[18]{'extra'}{'subentry'}{'extra'}{'subentry'};
+$result_trees{'subentries'}{'contents'}[4]{'contents'}[18]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[18]{'extra'}{'subentry'};
+$result_trees{'subentries'}{'contents'}[4]{'contents'}[18]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'subentries'}{'contents'}[4]{'contents'}[18];
 $result_trees{'subentries'}{'contents'}[4]{'contents'}[19] = 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[18]{'extra'}{'subentry'};
 $result_trees{'subentries'}{'contents'}[4]{'contents'}[20] = 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[18]{'extra'}{'subentry'}{'extra'}{'subentry'};
 $result_trees{'subentries'}{'contents'}[4]{'contents'}[21] = 
$result_trees{'subentries'}{'contents'}[4]{'contents'}[18]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry'};
diff --git a/tp/t/results/indices/subentries_and_comments.pl 
b/tp/t/results/indices/subentries_and_comments.pl
index 82091201da..3a35f738c1 100644
--- a/tp/t/results/indices/subentries_and_comments.pl
+++ b/tp/t/results/indices/subentries_and_comments.pl
@@ -175,7 +175,8 @@ $result_trees{'subentries_and_comments'} = {
               ],
               'cmdname' => 'subentry',
               'extra' => {
-                'level' => 1
+                'level' => 1,
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -250,7 +251,8 @@ $result_trees{'subentries_and_comments'} = {
               ],
               'cmdname' => 'subentry',
               'extra' => {
-                'level' => 1
+                'level' => 1,
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -328,8 +330,10 @@ $result_trees{'subentries_and_comments'} = {
   'type' => 'document_root'
 };
 
$result_trees{'subentries_and_comments'}{'contents'}[4]{'contents'}[1]{'extra'}{'element_node'}
 = $result_trees{'subentries_and_comments'}{'contents'}[3];
+$result_trees{'subentries_and_comments'}{'contents'}[4]{'contents'}[1]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'subentries_and_comments'}{'contents'}[4]{'contents'}[1];
 $result_trees{'subentries_and_comments'}{'contents'}[4]{'contents'}[2] = 
$result_trees{'subentries_and_comments'}{'contents'}[4]{'contents'}[1]{'extra'}{'subentry'};
 
$result_trees{'subentries_and_comments'}{'contents'}[4]{'contents'}[3]{'extra'}{'element_node'}
 = $result_trees{'subentries_and_comments'}{'contents'}[3];
+$result_trees{'subentries_and_comments'}{'contents'}[4]{'contents'}[3]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'subentries_and_comments'}{'contents'}[4]{'contents'}[3];
 $result_trees{'subentries_and_comments'}{'contents'}[4]{'contents'}[4] = 
$result_trees{'subentries_and_comments'}{'contents'}[4]{'contents'}[3]{'extra'}{'subentry'};
 
 $result_texis{'subentries_and_comments'} = '@node Top
diff --git a/tp/t/results/indices/subentry_and_sortas.pl 
b/tp/t/results/indices/subentry_and_sortas.pl
index e7ec121a6f..8d87877e06 100644
--- a/tp/t/results/indices/subentry_and_sortas.pl
+++ b/tp/t/results/indices/subentry_and_sortas.pl
@@ -211,7 +211,8 @@ $result_trees{'subentry_and_sortas'} = {
               'cmdname' => 'subentry',
               'extra' => {
                 'level' => 1,
-                'sortas' => 'B---S1'
+                'sortas' => 'B---S1',
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -324,7 +325,8 @@ $result_trees{'subentry_and_sortas'} = {
               'cmdname' => 'subentry',
               'extra' => {
                 'level' => 1,
-                'sortas' => 'X---S1'
+                'sortas' => 'X---S1',
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -434,8 +436,10 @@ $result_trees{'subentry_and_sortas'} = {
   'type' => 'document_root'
 };
 
$result_trees{'subentry_and_sortas'}{'contents'}[4]{'contents'}[1]{'extra'}{'element_node'}
 = $result_trees{'subentry_and_sortas'}{'contents'}[3];
+$result_trees{'subentry_and_sortas'}{'contents'}[4]{'contents'}[1]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'subentry_and_sortas'}{'contents'}[4]{'contents'}[1];
 $result_trees{'subentry_and_sortas'}{'contents'}[4]{'contents'}[2] = 
$result_trees{'subentry_and_sortas'}{'contents'}[4]{'contents'}[1]{'extra'}{'subentry'};
 
$result_trees{'subentry_and_sortas'}{'contents'}[4]{'contents'}[4]{'extra'}{'element_node'}
 = $result_trees{'subentry_and_sortas'}{'contents'}[3];
+$result_trees{'subentry_and_sortas'}{'contents'}[4]{'contents'}[4]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'subentry_and_sortas'}{'contents'}[4]{'contents'}[4];
 $result_trees{'subentry_and_sortas'}{'contents'}[4]{'contents'}[5] = 
$result_trees{'subentry_and_sortas'}{'contents'}[4]{'contents'}[4]{'extra'}{'subentry'};
 
 $result_texis{'subentry_and_sortas'} = '@node Top
diff --git a/tp/t/results/indices/subentry_and_sortas_spaces.pl 
b/tp/t/results/indices/subentry_and_sortas_spaces.pl
index 4c4847b1e9..6cb8fec5de 100644
--- a/tp/t/results/indices/subentry_and_sortas_spaces.pl
+++ b/tp/t/results/indices/subentry_and_sortas_spaces.pl
@@ -202,7 +202,8 @@ $result_trees{'subentry_and_sortas_spaces'} = {
               'cmdname' => 'subentry',
               'extra' => {
                 'level' => 1,
-                'sortas' => 'C---S1'
+                'sortas' => 'C---S1',
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -282,7 +283,8 @@ $result_trees{'subentry_and_sortas_spaces'} = {
               'cmdname' => 'subentry',
               'extra' => {
                 'level' => 1,
-                'sortas' => 'B---S1'
+                'sortas' => 'B---S1',
+                'subentry_parent' => {}
               },
               'source_info' => {
                 'line_nr' => 8
@@ -374,7 +376,8 @@ $result_trees{'subentry_and_sortas_spaces'} = {
                   'cmdname' => 'subentry',
                   'extra' => {
                     'level' => 2,
-                    'sortas' => 'D'
+                    'sortas' => 'D',
+                    'subentry_parent' => {}
                   },
                   'info' => {
                     'spaces_before_argument' => {
@@ -384,7 +387,8 @@ $result_trees{'subentry_and_sortas_spaces'} = {
                   'source_info' => {
                     'line_nr' => 9
                   }
-                }
+                },
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -465,7 +469,8 @@ $result_trees{'subentry_and_sortas_spaces'} = {
                   ],
                   'cmdname' => 'subentry',
                   'extra' => {
-                    'level' => 2
+                    'level' => 2,
+                    'subentry_parent' => {}
                   },
                   'info' => {
                     'spaces_before_argument' => {
@@ -475,7 +480,8 @@ $result_trees{'subentry_and_sortas_spaces'} = {
                   'source_info' => {
                     'line_nr' => 10
                   }
-                }
+                },
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -554,13 +560,19 @@ $result_trees{'subentry_and_sortas_spaces'} = {
   'type' => 'document_root'
 };
 
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[1]{'extra'}{'element_node'}
 = $result_trees{'subentry_and_sortas_spaces'}{'contents'}[3];
+$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[1]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[1];
 $result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[2] = 
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[1]{'extra'}{'subentry'};
 
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[3]{'extra'}{'element_node'}
 = $result_trees{'subentry_and_sortas_spaces'}{'contents'}[3];
+$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[3]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[3];
 $result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[4] = 
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[3]{'extra'}{'subentry'};
 
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'element_node'}
 = $result_trees{'subentry_and_sortas_spaces'}{'contents'}[3];
+$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = 
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'};
+$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5];
 $result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[6] = 
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'};
 $result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[7] = 
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'};
 
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra'}{'element_node'}
 = $result_trees{'subentry_and_sortas_spaces'}{'contents'}[3];
+$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = 
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'};
+$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8];
 $result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[9] = 
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'};
 $result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[10] = 
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'extra'}{'subentry'};
 
diff --git a/tp/t/results/latex_tests/indices.pl 
b/tp/t/results/latex_tests/indices.pl
index ce01b0ff58..6a7bf1eeb3 100644
--- a/tp/t/results/latex_tests/indices.pl
+++ b/tp/t/results/latex_tests/indices.pl
@@ -530,6 +530,85 @@ $result_trees{'indices'} = {
               7
             ],
             'index_ignore_chars' => '\\',
+            'seealso' => {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'args' => [
+                        {
+                          'contents' => [
+                            {
+                              'text' => 'a!"'
+                            },
+                            {
+                              'cmdname' => '@'
+                            },
+                            {
+                              'text' => 'b'
+                            }
+                          ],
+                          'type' => 'brace_command_context'
+                        }
+                      ],
+                      'cmdname' => 'math',
+                      'source_info' => {
+                        'line_nr' => 17
+                      }
+                    },
+                    {
+                      'text' => ' "!'
+                    },
+                    {
+                      'cmdname' => '@'
+                    },
+                    {
+                      'text' => ' '
+                    },
+                    {
+                      'args' => [
+                        {
+                          'contents' => [
+                            {
+                              'text' => 'a'
+                            }
+                          ],
+                          'type' => 'following_arg'
+                        }
+                      ],
+                      'cmdname' => '"',
+                      'source_info' => {
+                        'line_nr' => 17
+                      }
+                    },
+                    {
+                      'text' => ' '
+                    },
+                    {
+                      'args' => [
+                        {
+                          'contents' => [
+                            {
+                              'text' => 'o'
+                            }
+                          ],
+                          'type' => 'brace_command_arg'
+                        }
+                      ],
+                      'cmdname' => '"',
+                      'source_info' => {
+                        'line_nr' => 17
+                      }
+                    }
+                  ],
+                  'type' => 'brace_command_arg'
+                }
+              ],
+              'cmdname' => 'seealso',
+              'source_info' => {
+                'line_nr' => 17
+              }
+            },
             'subentry' => {
               'args' => [
                 {
@@ -633,85 +712,7 @@ $result_trees{'indices'} = {
                       'text' => ' ',
                       'type' => 'spaces_at_end'
                     },
-                    {
-                      'args' => [
-                        {
-                          'contents' => [
-                            {
-                              'args' => [
-                                {
-                                  'contents' => [
-                                    {
-                                      'text' => 'a!"'
-                                    },
-                                    {
-                                      'cmdname' => '@'
-                                    },
-                                    {
-                                      'text' => 'b'
-                                    }
-                                  ],
-                                  'type' => 'brace_command_context'
-                                }
-                              ],
-                              'cmdname' => 'math',
-                              'source_info' => {
-                                'line_nr' => 17
-                              }
-                            },
-                            {
-                              'text' => ' "!'
-                            },
-                            {
-                              'cmdname' => '@'
-                            },
-                            {
-                              'text' => ' '
-                            },
-                            {
-                              'args' => [
-                                {
-                                  'contents' => [
-                                    {
-                                      'text' => 'a'
-                                    }
-                                  ],
-                                  'type' => 'following_arg'
-                                }
-                              ],
-                              'cmdname' => '"',
-                              'source_info' => {
-                                'line_nr' => 17
-                              }
-                            },
-                            {
-                              'text' => ' '
-                            },
-                            {
-                              'args' => [
-                                {
-                                  'contents' => [
-                                    {
-                                      'text' => 'o'
-                                    }
-                                  ],
-                                  'type' => 'brace_command_arg'
-                                }
-                              ],
-                              'cmdname' => '"',
-                              'source_info' => {
-                                'line_nr' => 17
-                              }
-                            }
-                          ],
-                          'type' => 'brace_command_arg'
-                        }
-                      ],
-                      'cmdname' => 'seealso',
-                      'source_info' => {
-                        'line_nr' => 17
-                      }
-                    }
+                    {}
                   ],
                   'info' => {
                     'spaces_after_argument' => {
@@ -726,7 +727,8 @@ $result_trees{'indices'} = {
               'extra' => {
                 'level' => 1,
                 'seealso' => {},
-                'sortas' => 'a!"@b'
+                'sortas' => 'a!"@b',
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -1102,7 +1104,9 @@ 
$result_trees{'indices'}{'contents'}[4]{'contents'}[4]{'extra'}{'element_node'}
 
$result_trees{'indices'}{'contents'}[4]{'contents'}[5]{'extra'}{'element_node'} 
= $result_trees{'indices'}{'contents'}[3];
 
$result_trees{'indices'}{'contents'}[4]{'contents'}[6]{'extra'}{'element_node'} 
= $result_trees{'indices'}{'contents'}[3];
 
$result_trees{'indices'}{'contents'}[4]{'contents'}[8]{'extra'}{'element_node'} 
= $result_trees{'indices'}{'contents'}[3];
-$result_trees{'indices'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'extra'}{'seealso'}
 = 
$result_trees{'indices'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'args'}[0]{'contents'}[11];
+$result_trees{'indices'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'args'}[0]{'contents'}[11]
 = $result_trees{'indices'}{'contents'}[4]{'contents'}[8]{'extra'}{'seealso'};
+$result_trees{'indices'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'extra'}{'seealso'}
 = $result_trees{'indices'}{'contents'}[4]{'contents'}[8]{'extra'}{'seealso'};
+$result_trees{'indices'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'indices'}{'contents'}[4]{'contents'}[8];
 $result_trees{'indices'}{'contents'}[4]{'contents'}[9] = 
$result_trees{'indices'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'};
 
$result_trees{'indices'}{'contents'}[4]{'contents'}[10]{'extra'}{'element_node'}
 = $result_trees{'indices'}{'contents'}[3];
 
$result_trees{'indices'}{'contents'}[4]{'contents'}[11]{'extra'}{'element_node'}
 = $result_trees{'indices'}{'contents'}[3];
diff --git a/tp/t/results/latex_tests/indices_disable_encoding.pl 
b/tp/t/results/latex_tests/indices_disable_encoding.pl
index 4aacb35589..d930414120 100644
--- a/tp/t/results/latex_tests/indices_disable_encoding.pl
+++ b/tp/t/results/latex_tests/indices_disable_encoding.pl
@@ -530,6 +530,85 @@ $result_trees{'indices_disable_encoding'} = {
               7
             ],
             'index_ignore_chars' => '\\',
+            'seealso' => {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'args' => [
+                        {
+                          'contents' => [
+                            {
+                              'text' => 'a!"'
+                            },
+                            {
+                              'cmdname' => '@'
+                            },
+                            {
+                              'text' => 'b'
+                            }
+                          ],
+                          'type' => 'brace_command_context'
+                        }
+                      ],
+                      'cmdname' => 'math',
+                      'source_info' => {
+                        'line_nr' => 17
+                      }
+                    },
+                    {
+                      'text' => ' "!'
+                    },
+                    {
+                      'cmdname' => '@'
+                    },
+                    {
+                      'text' => ' '
+                    },
+                    {
+                      'args' => [
+                        {
+                          'contents' => [
+                            {
+                              'text' => 'a'
+                            }
+                          ],
+                          'type' => 'following_arg'
+                        }
+                      ],
+                      'cmdname' => '"',
+                      'source_info' => {
+                        'line_nr' => 17
+                      }
+                    },
+                    {
+                      'text' => ' '
+                    },
+                    {
+                      'args' => [
+                        {
+                          'contents' => [
+                            {
+                              'text' => 'o'
+                            }
+                          ],
+                          'type' => 'brace_command_arg'
+                        }
+                      ],
+                      'cmdname' => '"',
+                      'source_info' => {
+                        'line_nr' => 17
+                      }
+                    }
+                  ],
+                  'type' => 'brace_command_arg'
+                }
+              ],
+              'cmdname' => 'seealso',
+              'source_info' => {
+                'line_nr' => 17
+              }
+            },
             'subentry' => {
               'args' => [
                 {
@@ -633,85 +712,7 @@ $result_trees{'indices_disable_encoding'} = {
                       'text' => ' ',
                       'type' => 'spaces_at_end'
                     },
-                    {
-                      'args' => [
-                        {
-                          'contents' => [
-                            {
-                              'args' => [
-                                {
-                                  'contents' => [
-                                    {
-                                      'text' => 'a!"'
-                                    },
-                                    {
-                                      'cmdname' => '@'
-                                    },
-                                    {
-                                      'text' => 'b'
-                                    }
-                                  ],
-                                  'type' => 'brace_command_context'
-                                }
-                              ],
-                              'cmdname' => 'math',
-                              'source_info' => {
-                                'line_nr' => 17
-                              }
-                            },
-                            {
-                              'text' => ' "!'
-                            },
-                            {
-                              'cmdname' => '@'
-                            },
-                            {
-                              'text' => ' '
-                            },
-                            {
-                              'args' => [
-                                {
-                                  'contents' => [
-                                    {
-                                      'text' => 'a'
-                                    }
-                                  ],
-                                  'type' => 'following_arg'
-                                }
-                              ],
-                              'cmdname' => '"',
-                              'source_info' => {
-                                'line_nr' => 17
-                              }
-                            },
-                            {
-                              'text' => ' '
-                            },
-                            {
-                              'args' => [
-                                {
-                                  'contents' => [
-                                    {
-                                      'text' => 'o'
-                                    }
-                                  ],
-                                  'type' => 'brace_command_arg'
-                                }
-                              ],
-                              'cmdname' => '"',
-                              'source_info' => {
-                                'line_nr' => 17
-                              }
-                            }
-                          ],
-                          'type' => 'brace_command_arg'
-                        }
-                      ],
-                      'cmdname' => 'seealso',
-                      'source_info' => {
-                        'line_nr' => 17
-                      }
-                    }
+                    {}
                   ],
                   'info' => {
                     'spaces_after_argument' => {
@@ -726,7 +727,8 @@ $result_trees{'indices_disable_encoding'} = {
               'extra' => {
                 'level' => 1,
                 'seealso' => {},
-                'sortas' => 'a!"@b'
+                'sortas' => 'a!"@b',
+                'subentry_parent' => {}
               },
               'info' => {
                 'spaces_before_argument' => {
@@ -1102,7 +1104,9 @@ 
$result_trees{'indices_disable_encoding'}{'contents'}[4]{'contents'}[4]{'extra'}
 
$result_trees{'indices_disable_encoding'}{'contents'}[4]{'contents'}[5]{'extra'}{'element_node'}
 = $result_trees{'indices_disable_encoding'}{'contents'}[3];
 
$result_trees{'indices_disable_encoding'}{'contents'}[4]{'contents'}[6]{'extra'}{'element_node'}
 = $result_trees{'indices_disable_encoding'}{'contents'}[3];
 
$result_trees{'indices_disable_encoding'}{'contents'}[4]{'contents'}[8]{'extra'}{'element_node'}
 = $result_trees{'indices_disable_encoding'}{'contents'}[3];
-$result_trees{'indices_disable_encoding'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'extra'}{'seealso'}
 = 
$result_trees{'indices_disable_encoding'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'args'}[0]{'contents'}[11];
+$result_trees{'indices_disable_encoding'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'args'}[0]{'contents'}[11]
 = 
$result_trees{'indices_disable_encoding'}{'contents'}[4]{'contents'}[8]{'extra'}{'seealso'};
+$result_trees{'indices_disable_encoding'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'extra'}{'seealso'}
 = 
$result_trees{'indices_disable_encoding'}{'contents'}[4]{'contents'}[8]{'extra'}{'seealso'};
+$result_trees{'indices_disable_encoding'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'extra'}{'subentry_parent'}
 = $result_trees{'indices_disable_encoding'}{'contents'}[4]{'contents'}[8];
 $result_trees{'indices_disable_encoding'}{'contents'}[4]{'contents'}[9] = 
$result_trees{'indices_disable_encoding'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'};
 
$result_trees{'indices_disable_encoding'}{'contents'}[4]{'contents'}[10]{'extra'}{'element_node'}
 = $result_trees{'indices_disable_encoding'}{'contents'}[3];
 
$result_trees{'indices_disable_encoding'}{'contents'}[4]{'contents'}[11]{'extra'}{'element_node'}
 = $result_trees{'indices_disable_encoding'}{'contents'}[3];



reply via email to

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