[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
branch master updated: * tp/Texinfo/Convert/NodeNameNormalization.pm (no
From: |
Patrice Dumas |
Subject: |
branch master updated: * tp/Texinfo/Convert/NodeNameNormalization.pm (normalize_transliterate_texinfo, transliterate_texinfo): modify transliterate_texinfo such that it only transliterates but does not protect characters, and add normalize_transliterate_texinfo for the previous behaviour. Update callers. |
Date: |
Fri, 23 Dec 2022 15:10:41 -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 20ccdde244 * tp/Texinfo/Convert/NodeNameNormalization.pm
(normalize_transliterate_texinfo, transliterate_texinfo): modify
transliterate_texinfo such that it only transliterates but does not protect
characters, and add normalize_transliterate_texinfo for the previous behaviour.
Update callers.
20ccdde244 is described below
commit 20ccdde2440daa37c976191c4abd444999c5a643
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Fri Dec 23 21:10:31 2022 +0100
* tp/Texinfo/Convert/NodeNameNormalization.pm
(normalize_transliterate_texinfo, transliterate_texinfo): modify
transliterate_texinfo such that it only transliterates but does not
protect characters, and add normalize_transliterate_texinfo for the
previous behaviour. Update callers.
* tp/Texinfo/Convert/LaTeX.pm (_prepare_floats): transliterate the
first float element type of a float type to set up the LaTeX float
name to get more different categories when float type expands to
non-ASCII characters.
* tp/t/27float.t: expand LaTeX output for the float_with_at_commands
test.
---
ChangeLog | 16 +++++++
tp/Texinfo/Convert/Converter.pm | 4 +-
tp/Texinfo/Convert/HTML.pm | 2 +-
tp/Texinfo/Convert/LaTeX.pm | 10 ++++-
tp/Texinfo/Convert/NodeNameNormalization.pm | 33 +++++++++++----
tp/t/27float.t | 1 +
tp/t/nodenormalization.t | 6 +--
tp/t/results/float/float_with_at_commands.pl | 62 ++++++++++++++++++++++++++++
8 files changed, 120 insertions(+), 14 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 4e799dfa90..c16c9409b2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2022-12-23 Patrice Dumas <pertusus@free.fr>
+
+ * tp/Texinfo/Convert/NodeNameNormalization.pm
+ (normalize_transliterate_texinfo, transliterate_texinfo): modify
+ transliterate_texinfo such that it only transliterates but does not
+ protect characters, and add normalize_transliterate_texinfo for the
+ previous behaviour. Update callers.
+
+ * tp/Texinfo/Convert/LaTeX.pm (_prepare_floats): transliterate the
+ first float element type of a float type to set up the LaTeX float
+ name to get more different categories when float type expands to
+ non-ASCII characters.
+
+ * tp/t/27float.t: expand LaTeX output for the float_with_at_commands
+ test.
+
2022-12-23 Patrice Dumas <pertusus@free.fr>
* tp/Texinfo/Convert/LaTeX.pm (_prepare_floats): fix type filtering
diff --git a/tp/Texinfo/Convert/Converter.pm b/tp/Texinfo/Convert/Converter.pm
index d7e1b06531..0c0ceece91 100644
--- a/tp/Texinfo/Convert/Converter.pm
+++ b/tp/Texinfo/Convert/Converter.pm
@@ -707,7 +707,7 @@ sub normalized_sectioning_command_filename($$)
and !$self->get_conf('USE_UNIDECODE'));
my $normalized_name
- = Texinfo::Convert::NodeNameNormalization::transliterate_texinfo(
+ = Texinfo::Convert::NodeNameNormalization::normalize_transliterate_texinfo(
{'contents' => $command->{'args'}->[0]->{'contents'}},
$no_unidecode);
@@ -730,7 +730,7 @@ sub node_information_filename($$)
my $filename;
if (defined($node_info->{'normalized'})) {
if ($self->get_conf('TRANSLITERATE_FILE_NAMES')) {
- $filename =
Texinfo::Convert::NodeNameNormalization::transliterate_texinfo(
+ $filename =
Texinfo::Convert::NodeNameNormalization::normalize_transliterate_texinfo(
{'contents' => $node_info->{'node_content'}},
$no_unidecode);
} else {
diff --git a/tp/Texinfo/Convert/HTML.pm b/tp/Texinfo/Convert/HTML.pm
index 38906f3ec2..c58e5b61fc 100644
--- a/tp/Texinfo/Convert/HTML.pm
+++ b/tp/Texinfo/Convert/HTML.pm
@@ -9016,7 +9016,7 @@ sub _prepare_index_entries($)
my $trimmed_contents
= Texinfo::Common::trim_spaces_comment_from_content(\@contents);
my $normalized_index =
- Texinfo::Convert::NodeNameNormalization::transliterate_texinfo(
+
Texinfo::Convert::NodeNameNormalization::normalize_transliterate_texinfo(
{'contents' => \@contents}, $no_unidecode);
my $target_base = "index-" . $region .$normalized_index;
my $nr=1;
diff --git a/tp/Texinfo/Convert/LaTeX.pm b/tp/Texinfo/Convert/LaTeX.pm
index 34730c1ded..74f496e778 100644
--- a/tp/Texinfo/Convert/LaTeX.pm
+++ b/tp/Texinfo/Convert/LaTeX.pm
@@ -891,7 +891,15 @@ sub _prepare_floats($)
$self->{'normalized_float_latex'} = {};
$self->{'latex_floats'} = {};
foreach my $normalized_float_type (sort(keys(%{$self->{'floats'}}))) {
- my $latex_variable_float_name = $normalized_float_type;
+ my $latex_variable_float_name;
+ if (scalar(@{$self->{'floats'}->{$normalized_float_type}})) {
+ my $float = $self->{'floats'}->{$normalized_float_type}->[0];
+ $latex_variable_float_name
+ = Texinfo::Convert::NodeNameNormalization::transliterate_texinfo(
+ {'contents' => $float->{'args'}->[0]->{'contents'}});
+ } else {
+ $latex_variable_float_name = $normalized_float_type;
+ }
# note that with that transformation, some float types
# may be put together
$latex_variable_float_name =~ s/[^a-zA-Z]//g;
diff --git a/tp/Texinfo/Convert/NodeNameNormalization.pm
b/tp/Texinfo/Convert/NodeNameNormalization.pm
index 7024ff0555..c588abb6c4 100644
--- a/tp/Texinfo/Convert/NodeNameNormalization.pm
+++ b/tp/Texinfo/Convert/NodeNameNormalization.pm
@@ -50,6 +50,7 @@ use vars qw($VERSION @ISA @EXPORT_OK %EXPORT_TAGS);
%EXPORT_TAGS = ( 'all' => [ qw(
normalize_node
+ normalize_transliterate_texinfo
transliterate_texinfo
transliterate_protect_file_name
) ] );
@@ -98,7 +99,7 @@ sub normalize_node($)
return $result;
}
-sub transliterate_texinfo($;$)
+sub normalize_transliterate_texinfo($;$)
{
my $root = shift;
my $no_unidecode = shift;
@@ -109,6 +110,16 @@ sub transliterate_texinfo($;$)
return $result;
}
+sub transliterate_texinfo($;$)
+{
+ my $root = shift;
+ my $no_unidecode = shift;
+ my $result = _convert($root);
+ $result = Unicode::Normalize::NFC($result);
+ $result = _unicode_to_transliterate($result, $no_unidecode);
+ return $result;
+}
+
sub transliterate_protect_file_name($;$)
{
my $input_text = shift;
@@ -206,7 +217,7 @@ sub _unicode_to_transliterate($;$)
# in this case, we want to avoid calling unidecode, as we are sure
# that there is no useful transliteration of the unicode character
# instead we want to keep it as is.
- # This is the case, for example, for @exclamdown, is corresponds
+ # This is the case, for example, for @exclamdown, it corresponds
# with x00a1, but unidecode transliterates it to a !, we want
# to avoid that and keep x00a1.
} elsif (ord($char) <= hex(0xFFFF)
@@ -455,11 +466,11 @@ Texinfo::Convert::NodeNameNormalization - Normalize and
transliterate Texinfo tr
=head1 SYNOPSIS
use Texinfo::Convert::NodeNameNormalization qw(normalize_node
- transliterate_texinfo);
+ normalize_transliterate_texinfo);
my $normalized = normalize_node({'contents' => $node_contents});
- my $file_name = transliterate_texinfo({'contents'
+ my $file_name = normalize_transliterate_texinfo({'contents'
=> $section_contents});
=head1 NOTES
@@ -478,7 +489,7 @@ for C<@node>, C<@float> and C<@anchor> names normalization,
but also C<@float>
types and C<@acronym> and C<@abbr> first argument.
It is also possible to transliterate non-ASCII letters, instead of mangling
-them, with C<transliterate_texinfo>, losing the uniqueness feature of
+them, with C<normalize_transliterate_texinfo>, losing the uniqueness feature of
normalized node names.
Another method, C<transliterate_protect_file_name> transliterates non-ASCII
@@ -506,14 +517,22 @@ The result will be poor for Texinfo trees which are not
@-command arguments
(on an @-command line or in braces), for instance if the tree contains
C<@node> or block commands.
-=item $transliterated = transliterate_texinfo($tree, $no_unidecode)
-X<C<transliterate_texinfo>>
+=item $transliterated = normalize_transliterate_texinfo($tree, $no_unidecode)
+X<C<normalize_transliterate_texinfo>>
The Texinfo I<$tree> is returned as a string, with non-ASCII letters
transliterated as ASCII, but otherwise similar with C<normalize_node>
output. If the optional I<$no_unidecode> argument is set, C<Text::Unidecode>
is not used for characters whose transliteration is not built-in.
+=item $transliterated = transliterate_texinfo($tree, $no_unidecode)
+X<C<transliterate_texinfo>>
+
+The Texinfo I<$tree> is returned as a string, with non-ASCII letters
+transliterated as ASCII. If the optional I<$no_unidecode> argument is set,
+C<Text::Unidecode> is not used for characters whose transliteration is not
+built-in.
+
=item $file_name = transliterate_protect_file_name($string, $no_unidecode)
X<C<transliterate_protect_file_name>>
diff --git a/tp/t/27float.t b/tp/t/27float.t
index c5ba2fc06c..22926db03d 100644
--- a/tp/t/27float.t
+++ b/tp/t/27float.t
@@ -588,6 +588,7 @@ my %info_tests = (
my %latex_tests = (
'float_in_block_commands' => 1,
'special_characters_in_float_type' => 1,
+ 'float_with_at_commands' => 1,
);
foreach my $test (@test_cases) {
diff --git a/tp/t/nodenormalization.t b/tp/t/nodenormalization.t
index 204a07b54c..7574164fd5 100644
--- a/tp/t/nodenormalization.t
+++ b/tp/t/nodenormalization.t
@@ -11,7 +11,7 @@ use Data::Dumper;
use Locale::Messages;
use Texinfo::Convert::Texinfo;
-use Texinfo::Convert::NodeNameNormalization qw(normalize_node
transliterate_texinfo);
+use Texinfo::Convert::NodeNameNormalization qw(normalize_node
normalize_transliterate_texinfo);
use Texinfo::Parser;
my $srcdir = $ENV{'srcdir'};
@@ -165,11 +165,11 @@ SKIP: {
is ($normalized_line,
'-A-SC-accents-_00ef-_00ef-_1e14-_0142-_1e08-_0146_0303_0304-_0155_030c-_0129_0304-_00ff-_0131-_0237-_00c7-_0118-_1ea1-a_0361-_0227-characters-_0142-_00a1-_00e5-_0153-_002c-error_002d_002d_003e-_2026-_002e_002e_002e-no-brace-commands-_0040-_002e-_007d-signs-_002d_002d-_002d_002d_002d-_0060_0060-_0027_0027-_0021_005f_0022_0023_0024_0025_0026_0027_0028_0029_002a_002b_002d_002e-_002f_003b_003c_003d_003e_003f_005b_005c_005d_005e_005f_0060_007c_007e-spaces-_00a0_2003_2002_0085_180e-',
'normalized complex line');
- my $transliterated_line = transliterate_texinfo($line_tree);
+ my $transliterated_line = normalize_transliterate_texinfo($line_tree);
is ($transliterated_line,
'-A-SC-accents-i-i-E-l-C-n-r-i-y-i-j-C-E-a-a-a-characters-l-_00a1-aa-oe-_002c-error_002d_002d_003e-_2026-_002e_002e_002e-no-brace-commands-_0040-_002e-_007d-signs-_002d_002d-_002d_002d_002d-_0060_0060-_0027_0027-_0021_005f_0022_0023_0024_0025_0026_0027_0028_0029_002a_002b_002d_002e-_002f_003b_003c_003d_003e_003f_005b_005c_005d_005e_005f_0060_007c_007e-spaces-',
'transliterated complex line');
- my $transliterated_line_no_unidecode = transliterate_texinfo($line_tree, 1);
+ my $transliterated_line_no_unidecode =
normalize_transliterate_texinfo($line_tree, 1);
is ($transliterated_line_no_unidecode,
'-A-SC-accents-i-i-_1e14-l-_1e08-n-r-i-y-i-j-C-E-a-a-a-characters-l-_00a1-aa-oe-_002c-error_002d_002d_003e-_2026-_002e_002e_002e-no-brace-commands-_0040-_002e-_007d-signs-_002d_002d-_002d_002d_002d-_0060_0060-_0027_0027-_0021_005f_0022_0023_0024_0025_0026_0027_0028_0029_002a_002b_002d_002e-_002f_003b_003c_003d_003e_003f_005b_005c_005d_005e_005f_0060_007c_007e-spaces-_00a0_2003_2002_0085_180e-',
'transliterated complex line no unidecode');
diff --git a/tp/t/results/float/float_with_at_commands.pl
b/tp/t/results/float/float_with_at_commands.pl
index f3dda7fea3..cc6beb092c 100644
--- a/tp/t/results/float/float_with_at_commands.pl
+++ b/tp/t/results/float/float_with_at_commands.pl
@@ -509,4 +509,66 @@ $result_converted{'xml'}->{'float_with_at_commands'} =
'<float name="premi_00e8r
<listoffloats type="entrée" spaces=" ">entr<accent type="acute"
bracketed="off">e</accent>e</listoffloats>
';
+
+$result_converted{'latex'}->{'float_with_at_commands'} = '\\documentclass{book}
+\\usepackage{amsfonts}
+\\usepackage{amsmath}
+\\usepackage[gen]{eurosym}
+\\usepackage{textcomp}
+\\usepackage{graphicx}
+\\usepackage{etoolbox}
+\\usepackage{titleps}
+\\usepackage[utf8]{inputenc}
+\\usepackage[T1]{fontenc}
+\\usepackage{float}
+% use hidelinks to remove boxes around links to be similar to Texinfo TeX
+\\usepackage[hidelinks]{hyperref}
+
+\\makeatletter
+\\newcommand{\\Texinfosettitle}{No Title}%
+
+% new float for type `entrée\'
+\\newfloat{TexinfoFloatentree}{htb}{tfl}[chapter]
+\\floatname{TexinfoFloatentree}{}
+% redefine the \\mainmatter command such that it does not clear page
+% as if in double page
+\\renewcommand\\mainmatter{\\clearpage\\@mainmattertrue\\pagenumbering{arabic}}
+\\newenvironment{Texinfopreformatted}{%
+
\\par\\GNUTobeylines\\obeyspaces\\frenchspacing\\parskip=\\z@\\parindent=\\z@}{}
+{\\catcode`\\^^M=13 \\gdef\\GNUTobeylines{\\catcode`\\^^M=13
\\def^^M{\\null\\par}}}
+\\newenvironment{Texinfoindented}{\\begin{list}{}{}\\item\\relax}{\\end{list}}
+
+% used for substitutions in commands
+\\newcommand{\\Texinfoplaceholder}[1]{}
+
+\\newpagestyle{single}{\\sethead[\\chaptername{} \\thechapter{}
\\chaptertitle{}][][\\thepage]
+ {\\chaptername{} \\thechapter{}
\\chaptertitle{}}{}{\\thepage}}
+
+% allow line breaking at underscore
+\\let\\Texinfounderscore\\_
+\\renewcommand{\\_}{\\Texinfounderscore\\discretionary{}{}{}}
+\\renewcommand{\\includegraphics}[1]{\\fbox{FIG \\detokenize{#1}}}
+
+\\makeatother
+% set default for @setchapternewpage
+\\makeatletter
+\\patchcmd{\\chapter}{\\if@openright\\cleardoublepage\\else\\clearpage\\fi}{\\Texinfoplaceholder{setchapternewpage
placeholder}\\clearpage}{}{}
+\\makeatother
+\\pagestyle{single}%
+
+\\begin{document}
+\\begin{TexinfoFloatentree}
+
+Ceci est notre premi\\`{e}re entr\\\'{e}e.
+\\caption{La premi\\`{e}re entr\\\'{e}e est importante}
+
+
+\\label{anchor:premi_00e8re-entr_00e9e}%
+\\end{TexinfoFloatentree}
+
+
+\\listof{TexinfoFloatentree}{}
+\\end{document}
+';
+
1;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- branch master updated: * tp/Texinfo/Convert/NodeNameNormalization.pm (normalize_transliterate_texinfo, transliterate_texinfo): modify transliterate_texinfo such that it only transliterates but does not protect characters, and add normalize_transliterate_texinfo for the previous behaviour. Update callers.,
Patrice Dumas <=