[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
branch master updated: * tp/Texinfo/Convert/HTML.pm (_convert_xref_comma
From: |
Patrice Dumas |
Subject: |
branch master updated: * tp/Texinfo/Convert/HTML.pm (_convert_xref_commands), tp/Texinfo/XS/convert/convert_html.c (convert_xref_commands): handle better formatting of internal ref in string context with nested references. |
Date: |
Sat, 07 Sep 2024 05:48:21 -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 9e4004f328 * tp/Texinfo/Convert/HTML.pm (_convert_xref_commands),
tp/Texinfo/XS/convert/convert_html.c (convert_xref_commands): handle better
formatting of internal ref in string context with nested references.
9e4004f328 is described below
commit 9e4004f3282c50f37f514b54aab6ae6858b4f35e
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Sat Sep 7 11:48:22 2024 +0200
* tp/Texinfo/Convert/HTML.pm (_convert_xref_commands),
tp/Texinfo/XS/convert/convert_html.c (convert_xref_commands): handle
better formatting of internal ref in string context with nested
references.
* tp/maintain/check_epubcheck_texi_t.sh: call with
NO_TOP_NODE_OUTPUT=0 to avoid lots of false positives.
* tp/Makefile.tres, tp/t/html_tests.t
(double_recursive_self_section_reference_node_no_use_node): new test
of recursive references, split with USE_NODES=0.
---
ChangeLog | 14 +
tp/Makefile.tres | 2 +
tp/Texinfo/Convert/HTML.pm | 31 +-
tp/Texinfo/XS/convert/convert_html.c | 22 +-
tp/maintain/check_epubcheck_texi_t.sh | 2 +-
tp/t/html_tests.t | 12 +
...sive_self_section_reference_node_no_use_node.pl | 321 +++++++++++++++++++++
.../res_html/n1.html | 40 +++
.../res_html/n2.html | 39 +++
9 files changed, 469 insertions(+), 14 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 2827bb31e7..5f8da3efe4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2024-09-07 Patrice Dumas <pertusus@free.fr>
+
+ * tp/Texinfo/Convert/HTML.pm (_convert_xref_commands),
+ tp/Texinfo/XS/convert/convert_html.c (convert_xref_commands): handle
+ better formatting of internal ref in string context with nested
+ references.
+
+ * tp/maintain/check_epubcheck_texi_t.sh: call with
+ NO_TOP_NODE_OUTPUT=0 to avoid lots of false positives.
+
+ * tp/Makefile.tres, tp/t/html_tests.t
+ (double_recursive_self_section_reference_node_no_use_node): new test
+ of recursive references, split with USE_NODES=0.
+
2024-09-06 Patrice Dumas <pertusus@free.fr>
* tp/ext/epub3.pm (epub_finish): use transliterate_protect_file_name
diff --git a/tp/Makefile.tres b/tp/Makefile.tres
index 510283ab6a..7075766b5c 100644
--- a/tp/Makefile.tres
+++ b/tp/Makefile.tres
@@ -648,6 +648,8 @@ test_files_generated_list =
$(test_tap_files_generated_list) \
t/results/html_tests/double_contents_separate_element_nodes/res_html \
t/results/html_tests/double_contents_separate_element_section.pl \
t/results/html_tests/double_contents_separate_element_section/res_html \
+
t/results/html_tests/double_recursive_self_section_reference_node_no_use_node.pl
\
+
t/results/html_tests/double_recursive_self_section_reference_node_no_use_node/res_html
\
t/results/html_tests/empty_chapter_in_html_title.pl \
t/results/html_tests/empty_chapter_in_html_title/res_html \
t/results/html_tests/empty_chapter_in_html_title_no_node_no_use_nodes.pl \
diff --git a/tp/Texinfo/Convert/HTML.pm b/tp/Texinfo/Convert/HTML.pm
index 863b75d7f7..7b77ad4e47 100644
--- a/tp/Texinfo/Convert/HTML.pm
+++ b/tp/Texinfo/Convert/HTML.pm
@@ -6112,7 +6112,10 @@ sub _convert_xref_commands($$$$)
if (!$target_node->{'extra'}->{'associated_section'}
or $target_node->{'extra'}->{'associated_section'} ne
$target_root);
- my $href = $self->command_href($target_root, undef, $command);
+ my $href;
+ if (!in_string($self)) {
+ $href = $self->command_href($target_root, undef, $command);
+ }
if (!defined($name)) {
if ($self->get_conf('xrefautomaticsectiontitle') eq 'on'
@@ -6127,10 +6130,19 @@ sub _convert_xref_commands($$$$)
and not _command_is_in_referred_command_stack($self,
$target_node->{'extra'}->{'associated_section'})) {
$target_root = $target_node->{'extra'}->{'associated_section'};
- $name = $self->command_text($target_root, 'text_nonumber');
+ if (in_string($self)) {
+ $name = $self->command_text($target_root, 'string');
+ } else {
+ $name = $self->command_text($target_root, 'text_nonumber');
+ }
} elsif ($target_node->{'cmdname'} eq 'float') {
if (!$self->get_conf('XREF_USE_FLOAT_LABEL')) {
- $name = $self->command_text($target_root);
+ if (in_string($self)) {
+ # not tested
+ $name = $self->command_text($target_root, 'string');
+ } else {
+ $name = $self->command_text($target_root);
+ }
}
if (!defined($name) or $name eq '') {
if (defined($args->[0]->{'monospace'})) {
@@ -6147,7 +6159,11 @@ sub _convert_xref_commands($$$$)
# to the node
and not _command_is_in_referred_command_stack($self,
$target_root)) {
- $name = $self->command_text($target_root, 'text_nonumber');
+ if (in_string($self)) {
+ $name = $self->command_text($target_root, 'string');
+ } else {
+ $name = $self->command_text($target_root, 'text_nonumber');
+ }
#die "$target_root $target_root->{'normalized'}" if (!defined($name));
} elsif (defined($args->[0]->{'monospace'})) {
$name = $args->[0]->{'monospace'};
@@ -6156,9 +6172,10 @@ sub _convert_xref_commands($$$$)
}
}
my $reference = $name;
- $reference = $self->html_attribute_class('a', [$cmdname])
- ." href=\"$href\">$name</a>" if (defined($href)
- and !in_string($self));
+ if (defined($href)) {
+ $reference = $self->html_attribute_class('a', [$cmdname])
+ ." href=\"$href\">$name</a>";
+ }
my $substrings
= { 'reference_name' => {'type' => '_converted', 'text' => $reference} };
diff --git a/tp/Texinfo/XS/convert/convert_html.c
b/tp/Texinfo/XS/convert/convert_html.c
index a2cb6f3419..974ec0aa9d 100644
--- a/tp/Texinfo/XS/convert/convert_html.c
+++ b/tp/Texinfo/XS/convert/convert_html.c
@@ -12180,7 +12180,7 @@ convert_xref_commands (CONVERTER *self, const enum
command_id cmd,
/* internal reference */
if (target_node)
{
- char *href;
+ char *href = 0;
STRING_LIST *classes = 0;
/* This is the node if USE_NODES, otherwise this may be the sectioning
command (if the sectioning command is really associated to the node) */
@@ -12195,7 +12195,8 @@ convert_xref_commands (CONVERTER *self, const enum
command_id cmd,
if (!associated_section || associated_section != target_root)
target_root = target_node;
- href = html_command_href (self, target_root, 0, element, 0);
+ if (!html_in_string (self))
+ href = html_command_href (self, target_root, 0, element, 0);
if (!name)
{
@@ -12213,13 +12214,19 @@ convert_xref_commands (CONVERTER *self, const enum
command_id cmd,
&self->referred_command_stack, associated_section, 0))
{
target_root = associated_section;
- name = html_command_text (self, target_root, HTT_text_nonumber);
+ if (html_in_string (self))
+ name = html_command_text (self, target_root, HTT_string);
+ else
+ name = html_command_text (self, target_root,
HTT_text_nonumber);
}
else if (target_node->cmd == CM_float)
{
if (self->conf->XREF_USE_FLOAT_LABEL.o.integer <= 0)
{
- name = html_command_text (self, target_root, 0);
+ if (html_in_string (self))
+ name = html_command_text (self, target_root, HTT_string);
+ else
+ name = html_command_text (self, target_root, 0);
}
if (!name || !strlen (name))
{
@@ -12243,7 +12250,10 @@ convert_xref_commands (CONVERTER *self, const enum
command_id cmd,
&& !command_is_in_referred_command_stack (
&self->referred_command_stack, target_root, 0))
{
- name = html_command_text (self, target_root, HTT_text_nonumber);
+ if (html_in_string (self))
+ name = html_command_text (self, target_root, HTT_string);
+ else
+ name = html_command_text (self, target_root,
HTT_text_nonumber);
}
else if (args_formatted->number > 0
&& args_formatted->args[0].formatted[AFT_type_monospace])
@@ -12255,7 +12265,7 @@ convert_xref_commands (CONVERTER *self, const enum
command_id cmd,
name = strdup ("");
}
- if (href && !html_in_string (self))
+ if (href)
{
char *attribute_class;
diff --git a/tp/maintain/check_epubcheck_texi_t.sh
b/tp/maintain/check_epubcheck_texi_t.sh
index 9d2d3c51f8..fa9fdafe06 100755
--- a/tp/maintain/check_epubcheck_texi_t.sh
+++ b/tp/maintain/check_epubcheck_texi_t.sh
@@ -85,7 +85,7 @@ for dir in `find t_texis/ -type d` ; do
continue
fi
echo " -> $file: EPUB"
- ${srcdir}/texi2any.pl --epub --force --error=100000 -o
$mdir/epubcheck_EPUB/$bdir/$bfile.epub -c
SUBDIR=$mdir/epubcheck_package/$bdir/${bfile}_epub_package -c EPUB_STRICT=1 -c
EPUB_KEEP_CONTAINER_FOLDER=1 $file
+ ${srcdir}/texi2any.pl --epub --force --error=100000 -o
$mdir/epubcheck_EPUB/$bdir/$bfile.epub -c
SUBDIR=$mdir/epubcheck_package/$bdir/${bfile}_epub_package -c EPUB_STRICT=1 -c
EPUB_KEEP_CONTAINER_FOLDER=1 -c NO_TOP_NODE_OUTPUT=0 -c SHOW_TITLE=1 $file
echo " epubcheck"
epubcheck $mdir/epubcheck_EPUB/$bdir/$bfile.epub
2>$mdir/epubcheck_check/$bdir/$bfile.out
done
diff --git a/tp/t/html_tests.t b/tp/t/html_tests.t
index 78b7e98df8..7113da6f37 100644
--- a/tp/t/html_tests.t
+++ b/tp/t/html_tests.t
@@ -1520,6 +1520,18 @@ undef, {'test_file' =>
'simple_only_special_spaces_node.texi',
'init_files' => ['no_navigation.pm']},
# needed to test for the bug
{'SPLIT' => 'node'}],
+# also in *sectioning.t. Here we are interested both by the infinite
+# recursion and by the title strings to verify that they do not end up
+# with attributes
+['double_recursive_self_section_reference_node_no_use_node',
+'@node n1
+@chapter @ref{n2}
+
+@node n2
+@chapter @ref{n1}
+', {}, {'USE_NODES' => 0,
+ # needed for the test
+ 'SPLIT' => 'node'}],
# also in *sectioning.t. Here we are interested by testing spaces
# in filenames.
['setfilename_on_top_and_after_node_epub',
diff --git
a/tp/t/results/html_tests/double_recursive_self_section_reference_node_no_use_node.pl
b/tp/t/results/html_tests/double_recursive_self_section_reference_node_no_use_node.pl
new file mode 100644
index 0000000000..a95d749dbd
--- /dev/null
+++
b/tp/t/results/html_tests/double_recursive_self_section_reference_node_no_use_node.pl
@@ -0,0 +1,321 @@
+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{'double_recursive_self_section_reference_node_no_use_node'} = {
+ 'contents' => [
+ {
+ 'contents' => [
+ {
+ 'type' => 'preamble_before_content'
+ }
+ ],
+ 'type' => 'before_node_section'
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'n1'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'n1'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 1
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'n2'
+ }
+ ],
+ 'extra' => {
+ 'node_content' => {
+ 'contents' => [
+ {}
+ ]
+ },
+ 'normalized' => 'n2'
+ },
+ 'type' => 'brace_command_arg'
+ }
+ ],
+ 'cmdname' => 'ref',
+ 'source_info' => {
+ 'line_nr' => 2
+ }
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'chapter',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'section_number' => '1'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 2
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'n2'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'n2'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 4
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'n1'
+ }
+ ],
+ 'extra' => {
+ 'node_content' => {
+ 'contents' => [
+ {}
+ ]
+ },
+ 'normalized' => 'n1'
+ },
+ 'type' => 'brace_command_arg'
+ }
+ ],
+ 'cmdname' => 'ref',
+ 'source_info' => {
+ 'line_nr' => 5
+ }
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'section_number' => '2'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 5
+ }
+ }
+ ],
+ 'type' => 'document_root'
+};
+$result_trees{'double_recursive_self_section_reference_node_no_use_node'}{'contents'}[2]{'args'}[0]{'contents'}[0]{'args'}[0]{'extra'}{'node_content'}{'contents'}[0]
=
$result_trees{'double_recursive_self_section_reference_node_no_use_node'}{'contents'}[2]{'args'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0];
+$result_trees{'double_recursive_self_section_reference_node_no_use_node'}{'contents'}[4]{'args'}[0]{'contents'}[0]{'args'}[0]{'extra'}{'node_content'}{'contents'}[0]
=
$result_trees{'double_recursive_self_section_reference_node_no_use_node'}{'contents'}[4]{'args'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0];
+
+$result_texis{'double_recursive_self_section_reference_node_no_use_node'} =
'@node n1
+@chapter @ref{n2}
+
+@node n2
+@chapter @ref{n1}
+';
+
+
+$result_texts{'double_recursive_self_section_reference_node_no_use_node'} = '1
n2
+****
+
+2 n1
+****
+';
+
+$result_sectioning{'double_recursive_self_section_reference_node_no_use_node'}
= {
+ 'extra' => {
+ 'section_childs' => [
+ {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'n1'
+ }
+ },
+ 'section_directions' => {},
+ 'section_level' => 1,
+ 'section_number' => '1',
+ 'sectioning_root' => {},
+ 'toplevel_directions' => {}
+ }
+ },
+ {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'n2'
+ }
+ },
+ 'section_directions' => {
+ 'prev' => {}
+ },
+ 'section_level' => 1,
+ 'section_number' => '2',
+ 'toplevel_directions' => {
+ 'prev' => {}
+ }
+ }
+ }
+ ],
+ 'section_level' => 0
+ }
+};
+$result_sectioning{'double_recursive_self_section_reference_node_no_use_node'}{'extra'}{'section_childs'}[0]{'extra'}{'sectioning_root'}
=
$result_sectioning{'double_recursive_self_section_reference_node_no_use_node'};
+$result_sectioning{'double_recursive_self_section_reference_node_no_use_node'}{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'prev'}
=
$result_sectioning{'double_recursive_self_section_reference_node_no_use_node'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'double_recursive_self_section_reference_node_no_use_node'}{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'prev'}
=
$result_sectioning{'double_recursive_self_section_reference_node_no_use_node'}{'extra'}{'section_childs'}[0];
+
+$result_nodes{'double_recursive_self_section_reference_node_no_use_node'} = [
+ {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'section_number' => '1'
+ }
+ },
+ 'node_directions' => {
+ 'next' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'section_number' => '2'
+ }
+ },
+ 'node_directions' => {
+ 'prev' => {}
+ },
+ 'normalized' => 'n2'
+ }
+ }
+ },
+ 'normalized' => 'n1'
+ }
+ },
+ {}
+];
+$result_nodes{'double_recursive_self_section_reference_node_no_use_node'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
= $result_nodes{'double_recursive_self_section_reference_node_no_use_node'}[0];
+$result_nodes{'double_recursive_self_section_reference_node_no_use_node'}[1] =
$result_nodes{'double_recursive_self_section_reference_node_no_use_node'}[0]{'extra'}{'node_directions'}{'next'};
+
+$result_menus{'double_recursive_self_section_reference_node_no_use_node'} = [
+ {
+ 'extra' => {
+ 'normalized' => 'n1'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'n2'
+ }
+ }
+];
+
+$result_errors{'double_recursive_self_section_reference_node_no_use_node'} =
[];
+
+
+$result_floats{'double_recursive_self_section_reference_node_no_use_node'} =
{};
+
+
+$result_converted_errors{'file_html'}->{'double_recursive_self_section_reference_node_no_use_node'}
= [
+ {
+ 'error_line' => 'warning: must specify a title with a title command or @top
+',
+ 'file_name' =>
'double_recursive_self_section_reference_node_no_use_node.texi',
+ 'text' => 'must specify a title with a title command or @top',
+ 'type' => 'warning'
+ }
+];
+
+
+1;
diff --git
a/tp/t/results/html_tests/double_recursive_self_section_reference_node_no_use_node/res_html/n1.html
b/tp/t/results/html_tests/double_recursive_self_section_reference_node_no_use_node/res_html/n1.html
new file mode 100644
index 0000000000..9dcb4b76a0
--- /dev/null
+++
b/tp/t/results/html_tests/double_recursive_self_section_reference_node_no_use_node/res_html/n1.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by texinfo, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>1 2 n1 (Untitled Document)</title>
+
+<meta name="description" content="1 2 n1 (Untitled Document)">
+<meta name="keywords" content="1 2 n1 (Untitled Document)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="#n1" rel="start" title="1 2 n1">
+<link href="n2.html" rel="next" title="2 n1">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="chapter-level-extent" id="n1">
+<div class="nav-panel">
+<p>
+Next: <a href="n2.html" accesskey="n" rel="next"><a class="ref" href="#n1"><a
class="ref" href="n2.html">n2</a></a></a> </p>
+</div>
+<hr>
+<h2 class="chapter" id="n2-1"><span>1 <a class="ref" href="n2.html"><a
class="ref" href="#n1"><a class="ref" href="n2.html">n2</a></a></a><a
class="copiable-link" href="#n2-1"> ¶</a></span></h2>
+
+</div>
+
+
+
+</body>
+</html>
diff --git
a/tp/t/results/html_tests/double_recursive_self_section_reference_node_no_use_node/res_html/n2.html
b/tp/t/results/html_tests/double_recursive_self_section_reference_node_no_use_node/res_html/n2.html
new file mode 100644
index 0000000000..e56be49551
--- /dev/null
+++
b/tp/t/results/html_tests/double_recursive_self_section_reference_node_no_use_node/res_html/n2.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by texinfo, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>2 1 2 n1 (Untitled Document)</title>
+
+<meta name="description" content="2 1 2 n1 (Untitled Document)">
+<meta name="keywords" content="2 1 2 n1 (Untitled Document)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="n1.html" rel="start" title="1 2 n1">
+<link href="n1.html" rel="prev" title="1 2 n1">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="chapter-level-extent" id="n2">
+<div class="nav-panel">
+<p>
+Prev: <a href="n1.html" accesskey="p" rel="prev"><a class="ref"
href="n2.html">n2</a></a> </p>
+</div>
+<hr>
+<h2 class="chapter" id="n1-1"><span>2 <a class="ref" href="n1.html"><a
class="ref" href="n2.html">n2</a></a><a class="copiable-link" href="#n1-1">
¶</a></span></h2>
+</div>
+
+
+
+</body>
+</html>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- branch master updated: * tp/Texinfo/Convert/HTML.pm (_convert_xref_commands), tp/Texinfo/XS/convert/convert_html.c (convert_xref_commands): handle better formatting of internal ref in string context with nested references.,
Patrice Dumas <=