[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
branch master updated: * LaTeX.pm: associate every node to a section. Ha
From: |
Patrice Dumas |
Subject: |
branch master updated: * LaTeX.pm: associate every node to a section. Handle correctly xrefautomaticsectiontitle. |
Date: |
Thu, 19 Aug 2021 17:21:24 -0400 |
This is an automated email from the git hooks/post-receive script.
pertusus pushed a commit to branch master
in repository texinfo.
The following commit(s) were added to refs/heads/master by this push:
new c910354 * LaTeX.pm: associate every node to a section. Handle
correctly xrefautomaticsectiontitle.
c910354 is described below
commit c9103546025e847b5ab038ee98d1a66181dc8ec4
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Thu Aug 19 23:20:08 2021 +0200
* LaTeX.pm: associate every node to a section.
Handle correctly xrefautomaticsectiontitle.
---
tp/Texinfo/Convert/LaTeX.pm | 77 +-
tp/t/30sectioning.t | 36 +-
.../sectioning/nodes_before_after_top_xref.pl | 859 +++++++++++++++++++++
.../res_latex/nodes_before_after_top_xref.tex | 84 ++
4 files changed, 1047 insertions(+), 9 deletions(-)
diff --git a/tp/Texinfo/Convert/LaTeX.pm b/tp/Texinfo/Convert/LaTeX.pm
index 12edaf9..61b35f5 100644
--- a/tp/Texinfo/Convert/LaTeX.pm
+++ b/tp/Texinfo/Convert/LaTeX.pm
@@ -90,6 +90,13 @@
# in PDF/DVI
# In normal text, treated as ending any open paragraph; essentially ignored
# between paragraphs.
+#
+# In the manual it is said that majorheading generates a larger
+# vertical whitespace before the heading than @chapheading command.
+# It is not implemented. However, it seems that the chapter level
+# commands in LaTeX generate bigger fonts and much more vertical whitespace
+# than in Texinfo TeX so maybe it is not needed to do something here.
+#
package Texinfo::Convert::LaTeX;
@@ -133,7 +140,8 @@ my %formatting_misc_commands =
%Texinfo::Convert::Text::formatting_misc_commands
my @informative_global_commands = ('paragraphindent', 'firstparagraphindent',
'frenchspacing', 'documentencoding', 'footnotestyle', 'documentlanguage',
'contents', 'shortcontents', 'summarycontents', 'deftypefnnewline',
-'allowcodebreaks', 'kbdinputstyle', 'setchapternewpage', 'headings');
+'allowcodebreaks', 'kbdinputstyle', 'setchapternewpage', 'headings',
+'xrefautomaticsectiontitle');
my %informative_commands;
foreach my $informative_command (@informative_global_commands) {
@@ -169,7 +177,7 @@ my %letter_no_arg_commands =
%Texinfo::Common::letter_no_arg_commands;
foreach my $kept_command (keys(%informative_commands),
keys(%default_index_commands),
- 'verbatiminclude', 'insertcopying', 'xrefautomaticsectiontitle',
+ 'verbatiminclude', 'insertcopying',
'listoffloats', 'printindex', 'indent', 'noindent', 'need', 'page',
'shorttitlepage', 'title', 'subtitle', 'author', 'vskip') {
$formatting_misc_commands{$kept_command} = 1;
@@ -904,12 +912,17 @@ sub _set_chapter_new_page($$)
return $result;
}
-sub _prepare_conversion($)
+sub _prepare_conversion($;$)
{
my $self = shift;
+ my $root = shift;
$self->_set_global_multiple_commands(-1);
+ if (defined($root)) {
+ $self->associate_other_nodes_to_sections($root);
+ }
+
if ($self->{'extra'}->{'settitle'}) {
my $settitle_root = $self->{'extra'}->{'settitle'};
if (not ($settitle_root->{'extra'}
@@ -921,6 +934,46 @@ sub _prepare_conversion($)
$self->_prepare_floats();
}
+sub associate_other_nodes_to_sections($$) {
+ my $self = shift;
+ my $root = shift;
+
+ # associate lone nodes with sectioning commands
+ my $additional_node_section_associations = {};
+
+ my $current_sectioning_command;
+ # nodes not already associated as no section has been seen,
+ # associate to the first section
+ my $pending_nodes = [];
+
+ foreach my $element_content (@{$root->{'contents'}}) {
+ if ($element_content->{'cmdname'}
+ and $element_content->{'cmdname'} eq 'node') {
+ if (not $element_content->{'extra'}->{'associated_section'}
+ and $element_content->{'extra'}->{'normalized'}) {
+ if (defined($current_sectioning_command)) {
+
$additional_node_section_associations->{$element_content->{'extra'}->{'normalized'}}
+ = $current_sectioning_command;
+ } else {
+ push @$pending_nodes, $element_content->{'extra'}->{'normalized'};
+ }
+ }
+ } elsif ($element_content->{'cmdname'}
+ and $root_commands{$element_content->{'cmdname'}}) {
+ $current_sectioning_command = $element_content;
+ if (scalar(@$pending_nodes)) {
+ foreach my $normalized_node_name (@$pending_nodes) {
+ $additional_node_section_associations->{$normalized_node_name}
+ = $current_sectioning_command
+ }
+ $pending_nodes = [];
+ }
+ }
+ }
+ $self->{'normalized_nodes_associated_section'}
+ = $additional_node_section_associations;
+}
+
sub output($$)
{
my ($self, $root) = @_;
@@ -970,7 +1023,7 @@ sub output($$)
my $result = '';
- $self->_prepare_conversion();
+ $self->_prepare_conversion($removed_top_node_root);
$result .= $self->_output_text($self->_latex_header(), $fh);
$result .= $self->_output_text($self->convert_tree($removed_top_node_root),
$fh);
@@ -992,7 +1045,7 @@ sub convert($$)
my $self = shift;
my $root = shift;
- $self->_prepare_conversion();
+ $self->_prepare_conversion($root);
return $self->_convert($root);
}
@@ -1585,10 +1638,20 @@ sub _convert($$)
# FIXME this is probably impossible
$node_content = $args[0];
}
-
+
my $section_command;
if ($node->{'extra'}->{'associated_section'}) {
$section_command = $node->{'extra'}->{'associated_section'};
+ } elsif ($node->{'cmdname'} ne 'float') {
+ my $normalized_name
+ = $root->{'extra'}->{'node_argument'}->{'normalized'};
+ if ($self->{'normalized_nodes_associated_section'}
+ and
$self->{'normalized_nodes_associated_section'}->{$normalized_name}) {
+ $section_command
+ =
$self->{'normalized_nodes_associated_section'}->{$normalized_name};
+ } else {
+ print STDERR "BUG/TODO assoc ".$node->{'cmdname'}.":
$normalized_name: ".join("|", sort(keys(%{$node->{'extra'}})))."\n";
+ }
}
# reference to a float with a label
my $float_type;
@@ -1620,7 +1683,7 @@ sub _convert($$)
if (defined($self->get_conf('xrefautomaticsectiontitle'))
and $self->get_conf('xrefautomaticsectiontitle') eq 'on'
and $section_command) {
- $name = {'contents' =>
$section_command->{'args'}->[0]->{'contents'}};
+ $name = $section_command->{'args'}->[0]->{'contents'};
} else {
$name = $node_content;
}
diff --git a/tp/t/30sectioning.t b/tp/t/30sectioning.t
index 76424d8..6d3e579 100644
--- a/tp/t/30sectioning.t
+++ b/tp/t/30sectioning.t
@@ -1850,6 +1850,36 @@ in node after
in chap
'],
+['nodes_before_after_top_xref',
+'@setfilename nodes_before_after_top_xref.info
+
+@node node before
+
+In node before
+
+@node Top
+@top top sectionning
+
+in node Top
+
+@node after
+
+in node after
+
+@node chap
+@chapter chap
+
+in chap
+
+@xrefautomaticsectiontitle on
+@xref{node before}.
+@xref{after}.
+
+@xrefautomaticsectiontitle off
+@xref{node before}.
+@xref{after}.
+
+'],
['part_before_section',
'@part part
@@ -2091,10 +2121,12 @@ my @xml_tests_cases_tests = ('part_before_section',
'more_sections_than_nodes');
my @latex_tests_cases_tests = ('loop_nodes', 'lone_Top_node',
- 'nodes_before_top', 'nodes_before_after_top');
+ 'nodes_before_top', 'nodes_before_after_top',
+ 'nodes_before_after_top_xref');
my @file_latex_tests_cases_tests = ('loop_nodes', 'lone_Top_node',
- 'nodes_before_top', 'nodes_before_after_top');
+ 'nodes_before_top', 'nodes_before_after_top',
+ 'nodes_before_after_top_xref');
foreach my $test (@test_cases) {
push @{$test->[2]->{'test_formats'}}, 'xml'
diff --git a/tp/t/results/sectioning/nodes_before_after_top_xref.pl
b/tp/t/results/sectioning/nodes_before_after_top_xref.pl
new file mode 100644
index 0000000..87723fe
--- /dev/null
+++ b/tp/t/results/sectioning/nodes_before_after_top_xref.pl
@@ -0,0 +1,859 @@
+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);
+
+use utf8;
+
+$result_trees{'nodes_before_after_top_xref'} = {
+ 'contents' => [
+ {
+ 'contents' => [
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'nodes_before_after_top_xref.info'
+ }
+ ],
+ 'extra' => {
+ 'spaces_after_argument' => '
+'
+ },
+ 'parent' => {},
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'setfilename',
+ 'extra' => {
+ 'spaces_before_argument' => ' ',
+ 'text_arg' => 'nodes_before_after_top_xref.info'
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 1,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'text_root'
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'node before'
+ }
+ ],
+ 'extra' => {
+ 'spaces_after_argument' => '
+'
+ },
+ 'parent' => {},
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'In node before
+'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'paragraph'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'node_content' => [
+ {}
+ ],
+ 'nodes_manuals' => [
+ {
+ 'node_content' => [
+ {}
+ ],
+ 'normalized' => 'node-before'
+ }
+ ],
+ 'normalized' => 'node-before',
+ 'spaces_before_argument' => ' '
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 3,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ },
+ {
+ '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' => 7,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'top sectionning'
+ }
+ ],
+ 'extra' => {
+ 'spaces_after_argument' => '
+'
+ },
+ 'parent' => {},
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'top',
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'in node Top
+'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'paragraph'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'spaces_before_argument' => ' '
+ },
+ 'level' => 0,
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 8,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'after'
+ }
+ ],
+ 'extra' => {
+ 'spaces_after_argument' => '
+'
+ },
+ 'parent' => {},
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'in node after
+'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'paragraph'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'node_content' => [
+ {}
+ ],
+ 'nodes_manuals' => [
+ {
+ 'node_content' => [
+ {}
+ ],
+ 'normalized' => 'after'
+ }
+ ],
+ 'normalized' => 'after',
+ 'spaces_before_argument' => ' '
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 12,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'chap'
+ }
+ ],
+ 'extra' => {
+ 'spaces_after_argument' => '
+'
+ },
+ 'parent' => {},
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'contents' => [],
+ 'extra' => {
+ 'node_content' => [
+ {}
+ ],
+ 'nodes_manuals' => [
+ {
+ 'node_content' => [
+ {}
+ ],
+ 'normalized' => 'chap'
+ }
+ ],
+ 'normalized' => 'chap',
+ 'spaces_before_argument' => ' '
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 16,
+ '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 chap
+'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'paragraph'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'on'
+ }
+ ],
+ 'extra' => {
+ 'spaces_after_argument' => '
+'
+ },
+ 'parent' => {},
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'xrefautomaticsectiontitle',
+ 'extra' => {
+ 'misc_args' => [
+ 'on'
+ ],
+ 'spaces_before_argument' => ' '
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 21,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ },
+ {
+ 'contents' => [
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'node before'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'brace_command_arg'
+ }
+ ],
+ 'cmdname' => 'xref',
+ 'contents' => [],
+ 'extra' => {
+ 'label' => {},
+ 'node_argument' => {
+ 'node_content' => [
+ {}
+ ],
+ 'normalized' => 'node-before'
+ }
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 22,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ },
+ {
+ 'parent' => {},
+ 'text' => '.
+'
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'after'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'brace_command_arg'
+ }
+ ],
+ 'cmdname' => 'xref',
+ 'contents' => [],
+ 'extra' => {
+ 'label' => {},
+ 'node_argument' => {
+ 'node_content' => [
+ {}
+ ],
+ 'normalized' => 'after'
+ }
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 23,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ },
+ {
+ 'parent' => {},
+ 'text' => '.
+'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'paragraph'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'off'
+ }
+ ],
+ 'extra' => {
+ 'spaces_after_argument' => '
+'
+ },
+ 'parent' => {},
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'xrefautomaticsectiontitle',
+ 'extra' => {
+ 'misc_args' => [
+ 'off'
+ ],
+ 'spaces_before_argument' => ' '
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 25,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ },
+ {
+ 'contents' => [
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'node before'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'brace_command_arg'
+ }
+ ],
+ 'cmdname' => 'xref',
+ 'contents' => [],
+ 'extra' => {
+ 'label' => {},
+ 'node_argument' => {
+ 'node_content' => [
+ {}
+ ],
+ 'normalized' => 'node-before'
+ }
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 26,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ },
+ {
+ 'parent' => {},
+ 'text' => '.
+'
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'after'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'brace_command_arg'
+ }
+ ],
+ 'cmdname' => 'xref',
+ 'contents' => [],
+ 'extra' => {
+ 'label' => {},
+ 'node_argument' => {
+ 'node_content' => [
+ {}
+ ],
+ 'normalized' => 'after'
+ }
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 27,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ },
+ {
+ 'parent' => {},
+ 'text' => '.
+'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'paragraph'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'spaces_before_argument' => ' '
+ },
+ 'level' => 1,
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 17,
+ 'macro' => ''
+ },
+ 'number' => 1,
+ 'parent' => {}
+ }
+ ],
+ 'type' => 'document_root'
+};
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[0]{'contents'}[0]{'args'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[0]{'contents'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[0]{'contents'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[0]{'contents'}[1]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[0]{'parent'} =
$result_trees{'nodes_before_after_top_xref'};
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[1]{'args'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[1]{'args'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[1];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[1]{'contents'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[1];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[1]{'contents'}[1]{'contents'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[1]{'contents'}[1];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[1]{'contents'}[1]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[1];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[1]{'contents'}[2]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[1];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[1]{'extra'}{'node_content'}[0]
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[1]{'args'}[0]{'contents'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[1]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[1]{'args'}[0]{'contents'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[1]{'parent'} =
$result_trees{'nodes_before_after_top_xref'};
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[2]{'args'}[0]{'contents'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[2]{'args'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[2]{'args'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[2];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[2]{'extra'}{'node_content'}[0]
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[2]{'args'}[0]{'contents'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[2]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[2]{'args'}[0]{'contents'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[2]{'parent'} =
$result_trees{'nodes_before_after_top_xref'};
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[3]{'args'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[3]{'args'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[3];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[3]{'contents'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[3];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[3]{'contents'}[1]{'contents'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[3]{'contents'}[1];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[3]{'contents'}[1]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[3];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[3]{'contents'}[2]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[3];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[3]{'parent'} =
$result_trees{'nodes_before_after_top_xref'};
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[4]{'args'}[0]{'contents'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[4]{'args'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[4]{'args'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[4];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[4]{'contents'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[4];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[4]{'contents'}[1]{'contents'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[4]{'contents'}[1];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[4]{'contents'}[1]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[4];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[4]{'contents'}[2]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[4];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[4]{'extra'}{'node_content'}[0]
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[4]{'args'}[0]{'contents'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[4]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[4]{'args'}[0]{'contents'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[4]{'parent'} =
$result_trees{'nodes_before_after_top_xref'};
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[5]{'args'}[0]{'contents'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[5]{'args'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[5]{'args'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[5];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[5]{'extra'}{'node_content'}[0]
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[5]{'args'}[0]{'contents'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[5]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[5]{'args'}[0]{'contents'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[5]{'parent'} =
$result_trees{'nodes_before_after_top_xref'};
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'args'}[0]{'contents'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'args'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'args'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[1];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[1]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[2]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[3]{'args'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[3]{'args'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[3];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[3]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'contents'}[0]{'args'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'contents'}[0]{'args'}[0]{'parent'}
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'contents'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'contents'}[0]{'extra'}{'label'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[1];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'contents'}[0]{'extra'}{'node_argument'}{'node_content'}[0]
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'contents'}[0]{'args'}[0]{'contents'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'contents'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'contents'}[1]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'contents'}[2]{'args'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'contents'}[2]{'args'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'contents'}[2]{'args'}[0]{'parent'}
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'contents'}[2];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'contents'}[2]{'extra'}{'label'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[4];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'contents'}[2]{'extra'}{'node_argument'}{'node_content'}[0]
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'contents'}[2]{'args'}[0]{'contents'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'contents'}[2]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'contents'}[3]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[4]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[5]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[6]{'args'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[6]{'args'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[6]{'args'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[6];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[6]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'contents'}[0]{'args'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'contents'}[0]{'args'}[0]{'parent'}
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'contents'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'contents'}[0]{'extra'}{'label'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[1];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'contents'}[0]{'extra'}{'node_argument'}{'node_content'}[0]
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'contents'}[0]{'args'}[0]{'contents'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'contents'}[0]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'contents'}[1]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'contents'}[2]{'args'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'contents'}[2]{'args'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'contents'}[2]{'args'}[0]{'parent'}
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'contents'}[2];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'contents'}[2]{'extra'}{'label'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[4];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'contents'}[2]{'extra'}{'node_argument'}{'node_content'}[0]
=
$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'contents'}[2]{'args'}[0]{'contents'}[0];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'contents'}[2]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'contents'}[3]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[7]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'contents'}[8]{'parent'}
= $result_trees{'nodes_before_after_top_xref'}{'contents'}[6];
+$result_trees{'nodes_before_after_top_xref'}{'contents'}[6]{'parent'} =
$result_trees{'nodes_before_after_top_xref'};
+
+$result_texis{'nodes_before_after_top_xref'} = '@setfilename
nodes_before_after_top_xref.info
+
+@node node before
+
+In node before
+
+@node Top
+@top top sectionning
+
+in node Top
+
+@node after
+
+in node after
+
+@node chap
+@chapter chap
+
+in chap
+
+@xrefautomaticsectiontitle on
+@xref{node before}.
+@xref{after}.
+
+@xrefautomaticsectiontitle off
+@xref{node before}.
+@xref{after}.
+
+';
+
+
+$result_texts{'nodes_before_after_top_xref'} = '
+
+In node before
+
+top sectionning
+***************
+
+in node Top
+
+
+in node after
+
+1 chap
+******
+
+in chap
+
+node before.
+after.
+
+node before.
+after.
+
+';
+
+$result_sectioning{'nodes_before_after_top_xref'} = {
+ 'level' => -1,
+ 'section_childs' => [
+ {
+ 'cmdname' => 'top',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'Top',
+ 'spaces_before_argument' => ' '
+ }
+ },
+ 'spaces_before_argument' => ' '
+ },
+ 'level' => 0,
+ 'section_childs' => [
+ {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'chap',
+ 'spaces_before_argument' => ' '
+ }
+ },
+ 'spaces_before_argument' => ' '
+ },
+ 'level' => 1,
+ 'number' => 1,
+ 'section_up' => {},
+ 'toplevel_prev' => {},
+ 'toplevel_up' => {}
+ }
+ ],
+ 'section_up' => {}
+ }
+ ]
+};
+$result_sectioning{'nodes_before_after_top_xref'}{'section_childs'}[0]{'section_childs'}[0]{'section_up'}
= $result_sectioning{'nodes_before_after_top_xref'}{'section_childs'}[0];
+$result_sectioning{'nodes_before_after_top_xref'}{'section_childs'}[0]{'section_childs'}[0]{'toplevel_prev'}
= $result_sectioning{'nodes_before_after_top_xref'}{'section_childs'}[0];
+$result_sectioning{'nodes_before_after_top_xref'}{'section_childs'}[0]{'section_childs'}[0]{'toplevel_up'}
= $result_sectioning{'nodes_before_after_top_xref'}{'section_childs'}[0];
+$result_sectioning{'nodes_before_after_top_xref'}{'section_childs'}[0]{'section_up'}
= $result_sectioning{'nodes_before_after_top_xref'};
+
+$result_nodes{'nodes_before_after_top_xref'} = {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'top',
+ 'extra' => {
+ 'spaces_before_argument' => ' '
+ },
+ 'level' => 0
+ },
+ 'normalized' => 'Top',
+ 'spaces_before_argument' => ' '
+ },
+ 'node_next' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'spaces_before_argument' => ' '
+ },
+ 'level' => 1,
+ 'number' => 1
+ },
+ 'normalized' => 'chap',
+ 'spaces_before_argument' => ' '
+ },
+ 'node_prev' => {},
+ 'node_up' => {}
+ }
+};
+$result_nodes{'nodes_before_after_top_xref'}{'node_next'}{'node_prev'} =
$result_nodes{'nodes_before_after_top_xref'};
+$result_nodes{'nodes_before_after_top_xref'}{'node_next'}{'node_up'} =
$result_nodes{'nodes_before_after_top_xref'};
+
+$result_menus{'nodes_before_after_top_xref'} = {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'Top',
+ 'spaces_before_argument' => ' '
+ }
+};
+
+$result_errors{'nodes_before_after_top_xref'} = [];
+
+
+$result_floats{'nodes_before_after_top_xref'} = {};
+
+
+
+$result_converted{'latex'}->{'nodes_before_after_top_xref'} = '
+\\label{anchor:node-before}%
+
+In node before
+
+\\label{anchor:after}%
+
+in node after
+
+\\chapter{chap}
+\\label{anchor:chap}%
+
+in chap
+
+See \\hyperref[anchor:node-before]{Chapter~\\ref*{anchor:node-before} [top
sectionning], page~\\pageref*{anchor:node-before}}.
+See \\hyperref[anchor:after]{Chapter~\\ref*{anchor:after} [top sectionning],
page~\\pageref*{anchor:after}}.
+
+See \\hyperref[anchor:node-before]{Chapter~\\ref*{anchor:node-before} [node
before], page~\\pageref*{anchor:node-before}}.
+See \\hyperref[anchor:after]{Chapter~\\ref*{anchor:after} [after],
page~\\pageref*{anchor:after}}.
+
+';
+
+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/sectioning/nodes_before_after_top_xref/res_latex/nodes_before_after_top_xref.tex
new file mode 100644
index 0000000..b52753c
--- /dev/null
+++
b/tp/t/results/sectioning/nodes_before_after_top_xref/res_latex/nodes_before_after_top_xref.tex
@@ -0,0 +1,84 @@
+\documentclass{book}
+\usepackage{makeidx}\makeindex
+\usepackage{amsfonts}
+\usepackage{amsmath}
+\usepackage[gen]{eurosym}
+\usepackage[T1]{fontenc}
+\usepackage{textcomp}
+\usepackage{graphicx}
+\usepackage{needspace}
+\usepackage{etoolbox}
+\usepackage{fancyhdr}
+\usepackage{float}
+% use hidelinks to remove boxes around links to be similar with Texinfo TeX
+\usepackage[hidelinks]{hyperref}
+\usepackage[utf8]{inputenc}
+
+% redefine the \mainmatter command such that it does not clear page
+% as if in double page
+\makeatletter
+\renewcommand\mainmatter{\clearpage\@mainmattertrue\pagenumbering{arabic}}
+\makeatother
+
+% command that does nothing used to help with substitutions in commands
+\newcommand{\GNUTexinfoplaceholder}[1]{}
+
+% called when setting single headers
+% use \nouppercase to match with Texinfo TeX style
+\newcommand{\GNUTexinfosetsingleheader}{\pagestyle{fancy}
+\fancyhf{}
+\lhead{\nouppercase{\leftmark}}
+\rhead{\thepage}
+}
+
+% called when setting double headers
+\newcommand{\GNUTexinfosetdoubleheader}[1]{\pagestyle{fancy}
+\fancyhf{}
+\fancyhead[LE,RO]{\thepage}
+\fancyhead[RE]{#1}
+\fancyhead[LO]{\nouppercase{\leftmark}}
+}
+
+% for part and chapter, which call \thispagestyle{plain}
+\fancypagestyle{plain}{ %
+ \fancyhf{}
+ \fancyhead[LE,RO]{\thepage}
+}
+
+% match Texinfo TeX style
+\renewcommand{\headrulewidth}{0pt}%
+
+% avoid pagebreak and headings setting for a sectionning command
+\newcommand{\GNUTexinfonopagebreakheading}[2]{\let\clearpage\relax
\let\cleardoublepage\relax \let\thispagestyle\GNUTexinfoplaceholder #1{#2}}
+
+
+\renewcommand{\includegraphics}[1]{\fbox{FIG #1}}
+
+% set default for @setchapternewpage
+\makeatletter
+\patchcmd{\chapter}{\if@openright\cleardoublepage\else\clearpage\fi}{\GNUTexinfoplaceholder{setchapternewpage
placeholder}\clearpage}{}{}
+\makeatother
+\GNUTexinfosetsingleheader{}%
+
+\begin{document}
+
+\label{anchor:node-before}%
+
+In node before
+
+\label{anchor:after}%
+
+in node after
+
+\chapter{chap}
+\label{anchor:chap}%
+
+in chap
+
+See \hyperref[anchor:node-before]{Chapter~\ref*{anchor:node-before} [chap],
page~\pageref*{anchor:node-before}}.
+See \hyperref[anchor:after]{Chapter~\ref*{anchor:after} [chap],
page~\pageref*{anchor:after}}.
+
+See \hyperref[anchor:node-before]{Chapter~\ref*{anchor:node-before} [node
before], page~\pageref*{anchor:node-before}}.
+See \hyperref[anchor:after]{Chapter~\ref*{anchor:after} [after],
page~\pageref*{anchor:after}}.
+
+\end{document}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- branch master updated: * LaTeX.pm: associate every node to a section. Handle correctly xrefautomaticsectiontitle.,
Patrice Dumas <=