texinfo-commits
[Top][All Lists]
Advanced

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

branch master updated: * tp/Texinfo/Convert/LaTeX.pm (output, _convert):


From: Patrice Dumas
Subject: branch master updated: * tp/Texinfo/Convert/LaTeX.pm (output, _convert): do not remove the Top node from the tree. Instead, put 'in_skipped_node_top' in context if in Top node and ignore everything except informative commands and top level sectioning commands. Arguments of informative commands should all be formatted out of the main conversion or in a new context stack.
Date: Sun, 02 Jan 2022 15:13:10 -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 94846bae09 * tp/Texinfo/Convert/LaTeX.pm (output, _convert): do not 
remove the Top node from the tree.  Instead, put 'in_skipped_node_top' in 
context if in Top node and ignore everything except informative commands and 
top level sectioning commands.  Arguments of informative commands should all be 
formatted out of the main conversion or in a new context stack.
94846bae09 is described below

commit 94846bae095f1b55134cd39b43887c28da418fdc
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Sun Jan 2 21:12:57 2022 +0100

    * tp/Texinfo/Convert/LaTeX.pm (output, _convert): do not remove the
    Top node from the tree.  Instead, put 'in_skipped_node_top' in context
    if in Top node and ignore everything except informative commands and
    top level sectioning commands.  Arguments of informative commands
    should all be formatted out of the main conversion or in a new context
    stack.
---
 ChangeLog                                          |   9 +
 tp/TODO                                            |   2 -
 tp/Texinfo/Convert/LaTeX.pm                        | 188 ++++---
 tp/t/latex_tests.t                                 |  16 +
 .../res_latex/multiple_lang_chapters.tex           |   1 +
 ...anchor_links_xref_xrefautomaticsectiontitle.tex |   4 +-
 .../informative_commands_in_top_node.pl            | 571 +++++++++++++++++++++
 .../informative_commands_in_top_node.tex}          |  26 +-
 tp/t/results/sectioning/chapter_between_nodes.pl   |   4 -
 tp/t/results/sectioning/lone_Top_node.pl           |   1 -
 .../node_sectop_before_chapter_no_node.pl          |   1 -
 .../sectioning/node_sectop_before_lone_node_Top.pl |   1 -
 .../res_latex/nodes_before_after_top_xref.tex      |   4 +-
 .../sectioning/section_before_after_top_node.pl    |   3 -
 .../section_before_after_top_node_last_node.pl     |   4 -
 15 files changed, 719 insertions(+), 116 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 05ef337e42..36976c49bc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2022-01-02  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/Convert/LaTeX.pm (output, _convert): do not remove the
+       Top node from the tree.  Instead, put 'in_skipped_node_top' in context
+       if in Top node and ignore everything except informative commands and
+       top level sectioning commands.  Arguments of informative commands
+       should all be formatted out of the main conversion or in a new context
+       stack.
+
 2022-01-02  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/Convert/LaTeX.pm (_begin_document, _convert): output
diff --git a/tp/TODO b/tp/TODO
index bab3966c03..f51ffcb589 100644
--- a/tp/TODO
+++ b/tp/TODO
@@ -16,8 +16,6 @@ Before next release
 HTML.pm l 8024 check if setting MATHJAX_SCRIPT and MATHJAX_SOURCE is not
 set and HTML_MATH is mathjax shouldn't be done before.
 
-sections and nodes in split_by_section/node
-
 Bugs
 ====
 
diff --git a/tp/Texinfo/Convert/LaTeX.pm b/tp/Texinfo/Convert/LaTeX.pm
index 5f77c5447a..4c5a830a87 100644
--- a/tp/Texinfo/Convert/LaTeX.pm
+++ b/tp/Texinfo/Convert/LaTeX.pm
@@ -17,9 +17,6 @@
 #
 # TODO
 #
-# find a way to process informative commands in ignored Top node
-# as TeX does
-#
 # Use texinfo.cnf?  Here?  in texi2any.pl?
 #
 # @multitable not implemented
@@ -922,29 +919,6 @@ sub output($$)
     }
   }
 
-  # Ignore everything between Top node and the next node.
-  # TODO find a way to process informative commands as TeX does
-  my $modified_root = {'contents' => [], 'type' => $root->{'type'}};
-
-  my $in_top_node = 0;
-  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;
-        }
-        push @{$modified_root->{'contents'}},
-          $element_content;
-      }
-    } elsif (not $in_top_node) {
-      push @{$modified_root->{'contents'}},
-        $element_content;
-    }
-  }
-
   # FIXME is it a good thing to redo what could have been done after the
   # parsing?  Should the preamble be setup after parse_texi_text() too?
   #
@@ -955,7 +929,7 @@ sub output($$)
   # not seet a container for the preamble but simply add a marker, with less
   # changes to the tree.
   my $inserted_preamble_idx = -1;
-  foreach my $content (@{$modified_root->{'contents'}->[0]->{'contents'}}) {
+  foreach my $content (@{$root->{'contents'}->[0]->{'contents'}}) {
     $inserted_preamble_idx++;
     if ($content->{'type'}) {
       if ($content->{'type'} eq $latex_document_type) {
@@ -971,7 +945,11 @@ sub output($$)
       last;
     }
   }
+
+  my $modified_root;
+
   if (defined($inserted_preamble_idx)) {
+    $modified_root = {'contents' => [ @{$root->{'contents'}} ], 'type' => 
$root->{'type'}};
     my $new_before_node_section = {'type' => 
$modified_root->{'contents'}->[0]->{'type'},
                                    'parent' => $modified_root,
             'contents' => [ @{$modified_root->{'contents'}->[0]->{'contents'}} 
]};
@@ -980,11 +958,35 @@ sub output($$)
     $modified_root->{'contents'}->[0] = $new_before_node_section;
   }
 
-  # nothing after Top node the end, mark that Top node is ignored.
+  # 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;
+        }
+      }
+    }
+  }
+  # nothing after Top node the end, mark that Top node is ignored
+  # in a container that can be used to mark that content should not
+  # be ignored anymore.
   if ($in_top_node) {
+    $modified_root = {'contents' => [ @{$root->{'contents'}} ], 'type' => 
$root->{'type'}}
+      if (not defined($modified_root));
     push @{$modified_root->{'contents'}},
-        {'type' => 'paragraph', 'contents' => [
-        {'text' => "\n(`Top' node ignored)\n", 'type' => 'ignored_top_node'}]};
+        {'type' => 'ignored_top_node_paragraph', 'contents' => [
+         {'type' => 'paragraph', 'contents' => [
+          {'text' => "\n(`Top' node ignored)\n", 'type' => 
'ignored_top_node'}]}]};
+  }
+
+  if (not defined($modified_root)) {
+    $modified_root = $root;
   }
 
   my $result = '';
@@ -1366,6 +1368,31 @@ sub _push_new_context($$)
      };
 }
 
+# for debug
+sub _show_top_context_stack($)
+{
+  my $self = shift;
+
+  my $top_context = $self->{'formatting_context'}->[-1];
+  my @all_keys;
+  foreach my $key (sort (keys (%$top_context))) {
+    my $key_str = $key;
+    # keep only the first letters to have something not too long
+    $key_str =~ s/(.{4}).*/$1/s;
+    my $context_item = $top_context->{$key};
+    my $context_item_value;
+    if (not defined($context_item)) {
+      $context_item_value = 'UNDEF';
+    } elsif (ref ($context_item) eq 'ARRAY') {
+      $context_item_value = join('|', @$context_item);
+    } else {
+      $context_item_value = $context_item;
+    }
+    push @all_keys, "$key_str:$context_item_value";
+  }
+  return scalar(@{$self->{'formatting_context'}})." ".join('; ', @all_keys);
+}
+
 sub _pop_context($)
 {
   my $self = shift;
@@ -1891,6 +1918,9 @@ sub _convert($$)
 
   if ($self->{'debug'}) {
     print STDERR "CONVLTX 
".Texinfo::Common::debug_print_element_short($element)."\n";
+    if ($self->{'debug'} > 4) {
+      print STDERR "    CTX "._show_top_context_stack($self)."\n";
+    }
   }
 
   my $type = $element->{'type'};
@@ -1910,6 +1940,16 @@ sub _convert($$)
   }
   my $result = '';
 
+  if ($self->{'formatting_context'}->[-1]->{'in_skipped_node_top'}) {
+    if ((defined($cmdname) and $cmdname eq 'node')
+         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_commands{$cmdname}))) {
+      return '';
+    }
+  }
 
   # in ignorable spaces, keep only form feeds.
   if ($type and $self->{'ignorable_space_types'}->{$type}
@@ -2697,56 +2737,43 @@ sub _convert($$)
         $result .= "\\begin{$latex_float_name}\n";
       }
     } elsif ($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";
-      }
-      # ignore Top node like Texinfo TeX.  When called through
-      # output(), the tree elements are already removed
       if ($element->{'extra'}->{'normalized'} eq 'Top') {
-        return $result;
-      }
-    } elsif ($sectioning_commands{$cmdname}) {
-      my $heading = '';
-      if ($element->{'args'}->[0]->{'contents'}) {
-        $heading = $self->_convert({'contents' => 
$element->{'args'}->[0]->{'contents'}});
-      }
-
-      my $section_cmd = $section_map{$cmdname};
-      if (not defined($section_map{$cmdname})) {
-        die "BUG: no section_map for $cmdname";
-      }
-      
-      my $associated_node;
-      if ($element->{'extra'}->{'associated_node'}) {
-        $associated_node = $element->{'extra'}->{'associated_node'};
-        # ignore Top node like Texinfo TeX.  When called through
-        # output(), the tree elements are already removed.
-        # If the sections are not already removed and are removed here,
-        # and in contrast with Texinfo TeX and sections removed in
-        # output(), the sections not associated with
-        # any node and after Top node and the following node are not
-        # removed.
-        if ($associated_node->{'extra'}->{'normalized'} eq 'Top') {
-          return $result;
+        $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_commands{$cmdname}) {
       if ($cmdname eq 'appendix' and not $self->{'appendix_done'}) {
         $result .= "\\appendix\n";
         $self->{'appendix_done'} = 1;
       }
-      if ($cmdname ne 'centerchap') {
-        $result .= "\\".$section_cmd."{$heading}\n";
-      } else {
-        $result .= "\\".$section_cmd."{\\centering $heading}\n";
-      }
-      if ($associated_node) {
-        my $node_label
-          = _tree_anchor_label($associated_node->{'extra'}->{'node_content'});
-        $result .= "\\label{$node_label}%\n";
+      if (not $self->{'formatting_context'}->[-1]->{'in_skipped_node_top'}) {
+        my $heading = '';
+        if ($element->{'args'}->[0]->{'contents'}) {
+          $heading = $self->_convert({'contents' => 
$element->{'args'}->[0]->{'contents'}});
+        }
+
+        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')
             and $element->{'args'} and $element->{'args'}->[0]
@@ -2940,7 +2967,8 @@ sub _convert($$)
       if (defined($self->get_conf('CONTENTS_OUTPUT_LOCATION'))
           and $self->get_conf('CONTENTS_OUTPUT_LOCATION') eq 'inline'
           and $self->{'structuring'}
-          and $self->{'structuring'}->{'sectioning_root'}) {
+          and $self->{'structuring'}->{'sectioning_root'}
+          and not 
$self->{'formatting_context'}->[-1]->{'in_skipped_node_top'}) {
         $result .= "\\tableofcontents\\newpage\n";
       }
       return $result;
@@ -3244,11 +3272,13 @@ sub _convert($$)
       my $content = shift @contents;
       my $text = _convert($self, $content);
       $result .= $text;
-      #my @str_contents = ();
-      #foreach my $item_content (@contents) {
-      #  push @str_contents, 
Texinfo::Common::debug_print_element_short($item_content);
-      #}
-      #print STDERR "contents 
".Texinfo::Common::debug_print_element_short($element).": ".join("|", 
@str_contents)."\n";
+      if ($self->{'debug'} and $self->{'debug'} > 2) {
+        my @str_contents = ();
+        foreach my $item_content (@contents) {
+          push @str_contents, 
Texinfo::Common::debug_print_element_short($item_content);
+        }
+        print STDERR "C 
".Texinfo::Common::debug_print_element_short($element).": ".join("|", 
@str_contents)."\n";
+      }
     }
     pop @{$self->{'current_contents'}};
   }
diff --git a/tp/t/latex_tests.t b/tp/t/latex_tests.t
index 5851fb96b8..aebb30fea1 100644
--- a/tp/t/latex_tests.t
+++ b/tp/t/latex_tests.t
@@ -184,6 +184,22 @@ In top
 
 in chap
 '],
+['informative_commands_in_top_node',
+'@setfilename informative_commands_in_top_node.info
+
+@node Top
+@top top sectionning
+
+@paragraphindent 5
+
+@evenfooting @thischapter @thistitle @| @thisfile @| @code{@thischaptername}
+@paragraphindent 2
+
+@node next node
+@chapter chap
+
+In chapter
+'],
 ['shorttitlepage',
 '@setfilename shorttitlepage.info
 
diff --git 
a/tp/t/results/languages/multiple_lang_chapters_latex/res_latex/multiple_lang_chapters.tex
 
b/tp/t/results/languages/multiple_lang_chapters_latex/res_latex/multiple_lang_chapters.tex
index 00e921e7fd..7c58f83f4c 100644
--- 
a/tp/t/results/languages/multiple_lang_chapters_latex/res_latex/multiple_lang_chapters.tex
+++ 
b/tp/t/results/languages/multiple_lang_chapters_latex/res_latex/multiple_lang_chapters.tex
@@ -116,6 +116,7 @@ roundcorner=10pt}
 \selectlanguage{ja}%
 
 \begin{document}
+\selectlanguage{ja}%
 \chapter{ja}
 \label{anchor:chapter-ja}%
 
diff --git 
a/tp/t/results/latex_tests/anchor_links_xref_xrefautomaticsectiontitle/res_latex/anchor_links_xref_xrefautomaticsectiontitle.tex
 
b/tp/t/results/latex_tests/anchor_links_xref_xrefautomaticsectiontitle/res_latex/anchor_links_xref_xrefautomaticsectiontitle.tex
index 0e9a0c4660..a6024c98ad 100644
--- 
a/tp/t/results/latex_tests/anchor_links_xref_xrefautomaticsectiontitle/res_latex/anchor_links_xref_xrefautomaticsectiontitle.tex
+++ 
b/tp/t/results/latex_tests/anchor_links_xref_xrefautomaticsectiontitle/res_latex/anchor_links_xref_xrefautomaticsectiontitle.tex
@@ -128,9 +128,9 @@ in node after
 in chap
 \label{anchor:anch_003a-in-chap}%
 
-See \hyperref[anchor:anch_003a-in-node-before]{[chap], 
page~\pageref*{anchor:anch_003a-in-node-before}}.
+See \hyperref[anchor:anch_003a-in-node-before]{[top sectionning], 
page~\pageref*{anchor:anch_003a-in-node-before}}.
 See \hyperref[anchor:anch_003a-in-node-top]{[top sectionning], 
page~\pageref*{anchor:anch_003a-in-node-top}}.
-See \hyperref[anchor:anch_003a-in-node-after]{[chap], 
page~\pageref*{anchor:anch_003a-in-node-after}}.
+See \hyperref[anchor:anch_003a-in-node-after]{[top sectionning], 
page~\pageref*{anchor:anch_003a-in-node-after}}.
 See \hyperref[anchor:anch_003a-in-chap]{[chap], 
page~\pageref*{anchor:anch_003a-in-chap}}.
 
 See \hyperref[anchor:anch_003a-in-node-before]{[anch: in node before], 
page~\pageref*{anchor:anch_003a-in-node-before}}.
diff --git a/tp/t/results/latex_tests/informative_commands_in_top_node.pl 
b/tp/t/results/latex_tests/informative_commands_in_top_node.pl
new file mode 100644
index 0000000000..f804b3d3bb
--- /dev/null
+++ b/tp/t/results/latex_tests/informative_commands_in_top_node.pl
@@ -0,0 +1,571 @@
+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{'informative_commands_in_top_node'} = {
+  'contents' => [
+    {
+      'contents' => [
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'informative_commands_in_top_node.info'
+                }
+              ],
+              'extra' => {
+                'spaces_after_argument' => '
+'
+              },
+              'parent' => {},
+              'type' => 'line_arg'
+            }
+          ],
+          'cmdname' => 'setfilename',
+          'extra' => {
+            'spaces_before_argument' => ' ',
+            'text_arg' => 'informative_commands_in_top_node.info'
+          },
+          'line_nr' => {
+            'file_name' => '',
+            'line_nr' => 1,
+            'macro' => ''
+          },
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'parent' => {},
+      'type' => 'before_node_section'
+    },
+    {
+      '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' => ' '
+      },
+      'line_nr' => {
+        'file_name' => '',
+        'line_nr' => 3,
+        'macro' => ''
+      },
+      'parent' => {}
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'top sectionning'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'top',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => '5'
+                }
+              ],
+              'extra' => {
+                'spaces_after_argument' => '
+'
+              },
+              'parent' => {},
+              'type' => 'line_arg'
+            }
+          ],
+          'cmdname' => 'paragraphindent',
+          'extra' => {
+            'misc_args' => [
+              '5'
+            ],
+            'spaces_before_argument' => ' '
+          },
+          'line_nr' => {
+            'file_name' => '',
+            'line_nr' => 6,
+            'macro' => ''
+          },
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'cmdname' => 'thischapter',
+                  'parent' => {}
+                },
+                {
+                  'parent' => {},
+                  'text' => ' '
+                },
+                {
+                  'cmdname' => 'thistitle',
+                  'parent' => {}
+                },
+                {
+                  'parent' => {},
+                  'text' => ' '
+                },
+                {
+                  'cmdname' => '|',
+                  'parent' => {}
+                },
+                {
+                  'parent' => {},
+                  'text' => ' '
+                },
+                {
+                  'cmdname' => 'thisfile',
+                  'parent' => {}
+                },
+                {
+                  'parent' => {},
+                  'text' => ' '
+                },
+                {
+                  'cmdname' => '|',
+                  'parent' => {}
+                },
+                {
+                  'parent' => {},
+                  'text' => ' '
+                },
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'cmdname' => 'thischaptername',
+                          'parent' => {}
+                        }
+                      ],
+                      'parent' => {},
+                      'type' => 'brace_command_arg'
+                    }
+                  ],
+                  'cmdname' => 'code',
+                  'contents' => [],
+                  'line_nr' => {
+                    'file_name' => '',
+                    'line_nr' => 8,
+                    'macro' => ''
+                  },
+                  'parent' => {}
+                }
+              ],
+              'extra' => {
+                'spaces_after_argument' => '
+'
+              },
+              'parent' => {},
+              'type' => 'line_arg'
+            }
+          ],
+          'cmdname' => 'evenfooting',
+          'extra' => {
+            'spaces_before_argument' => ' '
+          },
+          'line_nr' => {
+            'file_name' => '',
+            'line_nr' => 8,
+            'macro' => ''
+          },
+          'parent' => {}
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => '2'
+                }
+              ],
+              'extra' => {
+                'spaces_after_argument' => '
+'
+              },
+              'parent' => {},
+              'type' => 'line_arg'
+            }
+          ],
+          'cmdname' => 'paragraphindent',
+          'extra' => {
+            'misc_args' => [
+              '2'
+            ],
+            'spaces_before_argument' => ' '
+          },
+          'line_nr' => {
+            'file_name' => '',
+            'line_nr' => 9,
+            'macro' => ''
+          },
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'spaces_before_argument' => ' '
+      },
+      'line_nr' => {
+        'file_name' => '',
+        'line_nr' => 4,
+        'macro' => ''
+      },
+      'parent' => {}
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'next node'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'contents' => [],
+      'extra' => {
+        'node_content' => [
+          {}
+        ],
+        'nodes_manuals' => [
+          {
+            'node_content' => [
+              {}
+            ],
+            'normalized' => 'next-node'
+          }
+        ],
+        'normalized' => 'next-node',
+        'spaces_before_argument' => ' '
+      },
+      'line_nr' => {
+        'file_name' => '',
+        'line_nr' => 11,
+        'macro' => ''
+      },
+      'parent' => {}
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'chap'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'In chapter
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        }
+      ],
+      'extra' => {
+        'spaces_before_argument' => ' '
+      },
+      'line_nr' => {
+        'file_name' => '',
+        'line_nr' => 12,
+        'macro' => ''
+      },
+      'parent' => {}
+    }
+  ],
+  'type' => 'document_root'
+};
+$result_trees{'informative_commands_in_top_node'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[0]{'contents'}[0]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[0]{'contents'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'informative_commands_in_top_node'}{'contents'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'informative_commands_in_top_node'}{'contents'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[0]{'parent'} = 
$result_trees{'informative_commands_in_top_node'};
+$result_trees{'informative_commands_in_top_node'}{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'informative_commands_in_top_node'}{'contents'}[1]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'informative_commands_in_top_node'}{'contents'}[1];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[1]{'extra'}{'node_content'}[0]
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[1]{'args'}[0]{'contents'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[1]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[1]{'args'}[0]{'contents'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[1]{'parent'} = 
$result_trees{'informative_commands_in_top_node'};
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'args'}[0]{'parent'}
 = $result_trees{'informative_commands_in_top_node'}{'contents'}[2];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[0]{'parent'}
 = $result_trees{'informative_commands_in_top_node'}{'contents'}[2];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[1]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[1]{'args'}[0]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[1];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[1]{'parent'}
 = $result_trees{'informative_commands_in_top_node'}{'contents'}[2];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[2]{'parent'}
 = $result_trees{'informative_commands_in_top_node'}{'contents'}[2];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[2]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[3]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[4]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[5]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[6]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[7]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[8]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[9]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[10]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[10]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[10]{'args'}[0]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[10];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[10]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[3]{'parent'}
 = $result_trees{'informative_commands_in_top_node'}{'contents'}[2];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[4]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[4]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[4]{'args'}[0]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[4];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[4]{'parent'}
 = $result_trees{'informative_commands_in_top_node'}{'contents'}[2];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'contents'}[5]{'parent'}
 = $result_trees{'informative_commands_in_top_node'}{'contents'}[2];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[2]{'parent'} = 
$result_trees{'informative_commands_in_top_node'};
+$result_trees{'informative_commands_in_top_node'}{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'informative_commands_in_top_node'}{'contents'}[3]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[3]{'args'}[0]{'parent'}
 = $result_trees{'informative_commands_in_top_node'}{'contents'}[3];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[3]{'extra'}{'node_content'}[0]
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[3]{'args'}[0]{'contents'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[3]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[3]{'args'}[0]{'contents'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[3]{'parent'} = 
$result_trees{'informative_commands_in_top_node'};
+$result_trees{'informative_commands_in_top_node'}{'contents'}[4]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'informative_commands_in_top_node'}{'contents'}[4]{'args'}[0];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[4]{'args'}[0]{'parent'}
 = $result_trees{'informative_commands_in_top_node'}{'contents'}[4];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[4]{'contents'}[0]{'parent'}
 = $result_trees{'informative_commands_in_top_node'}{'contents'}[4];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[4]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'informative_commands_in_top_node'}{'contents'}[4]{'contents'}[1];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[4]{'contents'}[1]{'parent'}
 = $result_trees{'informative_commands_in_top_node'}{'contents'}[4];
+$result_trees{'informative_commands_in_top_node'}{'contents'}[4]{'parent'} = 
$result_trees{'informative_commands_in_top_node'};
+
+$result_texis{'informative_commands_in_top_node'} = '@setfilename 
informative_commands_in_top_node.info
+
+@node Top
+@top top sectionning
+
+@paragraphindent 5
+
+@evenfooting @thischapter @thistitle @| @thisfile @| @code{@thischaptername}
+@paragraphindent 2
+
+@node next node
+@chapter chap
+
+In chapter
+';
+
+
+$result_texts{'informative_commands_in_top_node'} = '
+top sectionning
+***************
+
+
+
+1 chap
+******
+
+In chapter
+';
+
+$result_sectioning{'informative_commands_in_top_node'} = {
+  'structure' => {
+    'level' => -1,
+    'section_childs' => [
+      {
+        'cmdname' => 'top',
+        'extra' => {
+          'associated_node' => {
+            'cmdname' => 'node',
+            'extra' => {
+              'normalized' => 'Top'
+            },
+            'structure' => {}
+          }
+        },
+        'structure' => {
+          'level' => 0,
+          'section_childs' => [
+            {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'associated_node' => {
+                  'cmdname' => 'node',
+                  'extra' => {
+                    'normalized' => 'next-node'
+                  },
+                  'structure' => {}
+                }
+              },
+              'structure' => {
+                'level' => 1,
+                'number' => 1,
+                'section_up' => {},
+                'toplevel_prev' => {},
+                'toplevel_up' => {}
+              }
+            }
+          ],
+          'section_up' => {}
+        }
+      }
+    ]
+  }
+};
+$result_sectioning{'informative_commands_in_top_node'}{'structure'}{'section_childs'}[0]{'structure'}{'section_childs'}[0]{'structure'}{'section_up'}
 = 
$result_sectioning{'informative_commands_in_top_node'}{'structure'}{'section_childs'}[0];
+$result_sectioning{'informative_commands_in_top_node'}{'structure'}{'section_childs'}[0]{'structure'}{'section_childs'}[0]{'structure'}{'toplevel_prev'}
 = 
$result_sectioning{'informative_commands_in_top_node'}{'structure'}{'section_childs'}[0];
+$result_sectioning{'informative_commands_in_top_node'}{'structure'}{'section_childs'}[0]{'structure'}{'section_childs'}[0]{'structure'}{'toplevel_up'}
 = 
$result_sectioning{'informative_commands_in_top_node'}{'structure'}{'section_childs'}[0];
+$result_sectioning{'informative_commands_in_top_node'}{'structure'}{'section_childs'}[0]{'structure'}{'section_up'}
 = $result_sectioning{'informative_commands_in_top_node'};
+
+$result_nodes{'informative_commands_in_top_node'} = {
+  'cmdname' => 'node',
+  'extra' => {
+    'associated_section' => {
+      'cmdname' => 'top',
+      'extra' => {},
+      'structure' => {
+        'level' => 0
+      }
+    },
+    'normalized' => 'Top'
+  },
+  'structure' => {
+    'node_next' => {
+      'cmdname' => 'node',
+      'extra' => {
+        'associated_section' => {
+          'cmdname' => 'chapter',
+          'extra' => {},
+          'structure' => {
+            'level' => 1,
+            'number' => 1
+          }
+        },
+        'normalized' => 'next-node'
+      },
+      'structure' => {
+        'node_prev' => {},
+        'node_up' => {}
+      }
+    }
+  }
+};
+$result_nodes{'informative_commands_in_top_node'}{'structure'}{'node_next'}{'structure'}{'node_prev'}
 = $result_nodes{'informative_commands_in_top_node'};
+$result_nodes{'informative_commands_in_top_node'}{'structure'}{'node_next'}{'structure'}{'node_up'}
 = $result_nodes{'informative_commands_in_top_node'};
+
+$result_menus{'informative_commands_in_top_node'} = {
+  'cmdname' => 'node',
+  'extra' => {
+    'normalized' => 'Top'
+  },
+  'structure' => {}
+};
+
+$result_errors{'informative_commands_in_top_node'} = [];
+
+
+$result_floats{'informative_commands_in_top_node'} = {};
+
+
+
+$result_converted{'latex'}->{'informative_commands_in_top_node'} = '
+\\setlength{\\parindent}{5em}
+\\newpagestyle{custom}{%
+\\setfoot[\\chaptername{} \\thechapter{} \\chaptertitle{} 
\\GNUTexinfosettitle{}][][\\texttt{\\chaptertitle{}}]%
+{}{}{}%
+}%
+\\pagestyle{custom}%
+\\setlength{\\parindent}{2em}
+\\chapter{chap}
+\\label{anchor:next-node}%
+
+In chapter
+';
+
+1;
diff --git 
a/tp/t/results/sectioning/nodes_before_after_top_xref/res_latex/nodes_before_after_top_xref.tex
 
b/tp/t/results/latex_tests/informative_commands_in_top_node/res_latex/informative_commands_in_top_node.tex
similarity index 87%
copy from 
tp/t/results/sectioning/nodes_before_after_top_xref/res_latex/nodes_before_after_top_xref.tex
copy to 
tp/t/results/latex_tests/informative_commands_in_top_node/res_latex/informative_commands_in_top_node.tex
index 29311d7f12..bc426e9675 100644
--- 
a/tp/t/results/sectioning/nodes_before_after_top_xref/res_latex/nodes_before_after_top_xref.tex
+++ 
b/tp/t/results/latex_tests/informative_commands_in_top_node/res_latex/informative_commands_in_top_node.tex
@@ -112,23 +112,15 @@ roundcorner=10pt}
 
 
 \begin{document}
-\label{anchor:node-before}%
-
-In node before
-
-\label{anchor:after}%
-
-in node after
-
+\setlength{\parindent}{5em}
+\newpagestyle{custom}{%
+\setfoot[\chaptername{} \thechapter{} \chaptertitle{} 
\GNUTexinfosettitle{}][][\texttt{\chaptertitle{}}]%
+{}{}{}%
+}%
+\pagestyle{custom}%
+\setlength{\parindent}{2em}
 \chapter{chap}
-\label{anchor:chap}%
-
-in chap
-
-See \hyperref[anchor:node-before]{\chaptername~\ref*{anchor:node-before} 
[chap], page~\pageref*{anchor:node-before}}.
-See \hyperref[anchor:after]{\chaptername~\ref*{anchor:after} [chap], 
page~\pageref*{anchor:after}}.
-
-See \hyperref[anchor:node-before]{\chaptername~\ref*{anchor:node-before} [node 
before], page~\pageref*{anchor:node-before}}.
-See \hyperref[anchor:after]{\chaptername~\ref*{anchor:after} [after], 
page~\pageref*{anchor:after}}.
+\label{anchor:next-node}%
 
+In chapter
 \end{document}
diff --git a/tp/t/results/sectioning/chapter_between_nodes.pl 
b/tp/t/results/sectioning/chapter_between_nodes.pl
index aba1f18b56..ac1253d319 100644
--- a/tp/t/results/sectioning/chapter_between_nodes.pl
+++ b/tp/t/results/sectioning/chapter_between_nodes.pl
@@ -857,10 +857,6 @@ $result_converted{'xml'}->{'chapter_between_nodes'} = 
'<setfilename file="chapte
 
 
 $result_converted{'latex'}->{'chapter_between_nodes'} = '
-\\chapter{Chapter}
-
-In chapter
-
 \\section{section}
 \\label{anchor:section-node}%
 
diff --git a/tp/t/results/sectioning/lone_Top_node.pl 
b/tp/t/results/sectioning/lone_Top_node.pl
index 1859ae06dc..04e885c831 100644
--- a/tp/t/results/sectioning/lone_Top_node.pl
+++ b/tp/t/results/sectioning/lone_Top_node.pl
@@ -568,7 +568,6 @@ $result_directions_text{'lone_Top_node'} = 'element: 
@chapter chap
 
 
 $result_converted{'latex'}->{'lone_Top_node'} = '
-\\label{anchor:Top}%
 \\chapter{chap}
 \\label{anchor:First}%
 ';
diff --git a/tp/t/results/sectioning/node_sectop_before_chapter_no_node.pl 
b/tp/t/results/sectioning/node_sectop_before_chapter_no_node.pl
index 9b71c54c3d..ae7add8daa 100644
--- a/tp/t/results/sectioning/node_sectop_before_chapter_no_node.pl
+++ b/tp/t/results/sectioning/node_sectop_before_chapter_no_node.pl
@@ -337,7 +337,6 @@ ul.no-bullet {list-style: none}
 
 
 $result_converted{'latex'}->{'node_sectop_before_chapter_no_node'} = '
-\\chapter{chap}
 ';
 
 1;
diff --git a/tp/t/results/sectioning/node_sectop_before_lone_node_Top.pl 
b/tp/t/results/sectioning/node_sectop_before_lone_node_Top.pl
index 249aeb6bbc..a63b9bbb6b 100644
--- a/tp/t/results/sectioning/node_sectop_before_lone_node_Top.pl
+++ b/tp/t/results/sectioning/node_sectop_before_lone_node_Top.pl
@@ -586,7 +586,6 @@ 
$result_converted{'latex'}->{'node_sectop_before_lone_node_Top'} = '
 
 in node before
 
-\\label{anchor:Top}%
 \\chapter{chap}
 \\label{anchor:chap}%
 
diff --git 
a/tp/t/results/sectioning/nodes_before_after_top_xref/res_latex/nodes_before_after_top_xref.tex
 
b/tp/t/results/sectioning/nodes_before_after_top_xref/res_latex/nodes_before_after_top_xref.tex
index 29311d7f12..3da197163f 100644
--- 
a/tp/t/results/sectioning/nodes_before_after_top_xref/res_latex/nodes_before_after_top_xref.tex
+++ 
b/tp/t/results/sectioning/nodes_before_after_top_xref/res_latex/nodes_before_after_top_xref.tex
@@ -125,8 +125,8 @@ in node after
 
 in chap
 
-See \hyperref[anchor:node-before]{\chaptername~\ref*{anchor:node-before} 
[chap], page~\pageref*{anchor:node-before}}.
-See \hyperref[anchor:after]{\chaptername~\ref*{anchor:after} [chap], 
page~\pageref*{anchor:after}}.
+See \hyperref[anchor:node-before]{\chaptername~\ref*{anchor:node-before} [top 
sectionning], page~\pageref*{anchor:node-before}}.
+See \hyperref[anchor:after]{\chaptername~\ref*{anchor:after} [top 
sectionning], page~\pageref*{anchor:after}}.
 
 See \hyperref[anchor:node-before]{\chaptername~\ref*{anchor:node-before} [node 
before], page~\pageref*{anchor:node-before}}.
 See \hyperref[anchor:after]{\chaptername~\ref*{anchor:after} [after], 
page~\pageref*{anchor:after}}.
diff --git a/tp/t/results/sectioning/section_before_after_top_node.pl 
b/tp/t/results/sectioning/section_before_after_top_node.pl
index cf4984c056..ca71fb6c76 100644
--- a/tp/t/results/sectioning/section_before_after_top_node.pl
+++ b/tp/t/results/sectioning/section_before_after_top_node.pl
@@ -455,9 +455,6 @@ ul.no-bullet {list-style: none}
 $result_converted{'latex'}->{'section_before_after_top_node'} = '
 \\chapter*{before}
 
-\\chapter{Chapter}
-
-in chapter
 ';
 
 1;
diff --git a/tp/t/results/sectioning/section_before_after_top_node_last_node.pl 
b/tp/t/results/sectioning/section_before_after_top_node_last_node.pl
index 21d9f1a9e7..9f1b9a7c5d 100644
--- a/tp/t/results/sectioning/section_before_after_top_node_last_node.pl
+++ b/tp/t/results/sectioning/section_before_after_top_node_last_node.pl
@@ -541,10 +541,6 @@ Previous: <a href="#Top" accesskey="p" rel="prev">top 
section</a> &nbsp; </p>
 $result_converted{'latex'}->{'section_before_after_top_node_last_node'} = '
 \\chapter*{before}
 
-\\chapter{Chapter}
-
-in chapter
-
 \\label{anchor:node-after}%
 ';
 



reply via email to

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