summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xBuild/source/texk/texlive/linked_scripts/latexpand/latexpand83
-rwxr-xr-xBuild/source/texk/texlive/linked_scripts/texlive/tlmgr.pl8
-rwxr-xr-xBuild/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl29
-rw-r--r--Master/texmf-dist/doc/support/latexpand/README8
-rw-r--r--Master/texmf-dist/doc/support/latexpand/version.txt4
-rwxr-xr-xMaster/texmf-dist/scripts/latexpand/latexpand83
6 files changed, 141 insertions, 74 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/latexpand/latexpand b/Build/source/texk/texlive/linked_scripts/latexpand/latexpand
index ea18e58cd42..1977c46356b 100755
--- a/Build/source/texk/texlive/linked_scripts/latexpand/latexpand
+++ b/Build/source/texk/texlive/linked_scripts/latexpand/latexpand
@@ -28,6 +28,8 @@ my $fatal;
my $version;
my $makeatletter;
my $inside_import;
+my $in_enc = "bytes";
+my $out_enc = "bytes";
GetOptions (
'h' => \$help,
@@ -45,6 +47,8 @@ GetOptions (
'fatal' => \$fatal,
'version' => \$version,
'makeatletter' => \$makeatletter,
+ 'in-encoding=s' => \$in_enc,
+ 'out-encoding=s' => \$out_enc,
) or pod2usage_wrapper(2);
version() if $version;
pod2usage_wrapper(0) if $help;
@@ -76,7 +80,7 @@ sub get_version
{
# $VERSION's value will be substituted by 'make dist', but the
# next line won't (the string has to be broken to avoid it).
- my $VERSION = 'v1.4-1-gb32a776';
+ my $VERSION = 'v1.5';
if ($VERSION eq '@LATEXPAND' . '_VERSION@') {
my($vol,$dir,$file) = File::Spec->splitpath($0);
chdir($dir);
@@ -115,6 +119,8 @@ sub say
my $makeatletter_found;
my $in_preamble;
+use open IN => ":$in_enc", OUT => ":$out_enc";
+
foreach my $file (@ARGV)
{
say "processing $file\n";
@@ -159,18 +165,26 @@ sub process_line
{
my ($line, $prefix, $commented_newline, $file) = @_;
$_ = $line;
- if ($$commented_newline && /^\s*$/) {
- # Deal with:
- #
- # Line 1 % comment
- #
- # Line 2
- #
- # The newline after Line 1 is commented, but we still
- # want a new paragraph. We strip the comment together
- # with its newline, but re-add a newline to chnge
- # paragraph here if needed:
- print "\n";
+ if ($$commented_newline) {
+ # Leading whitespaces after a comment is ignored.
+ # There's no space in:
+ # Line 1%
+ # Line 2.
+ # Match just space and tabs (\s would match \n)
+ s/^[ \t]*//;
+ if (/^$/) {
+ # Deal with:
+ #
+ # Line 1 % comment
+ #
+ # Line 2
+ #
+ # The newline after Line 1 is commented, but we still
+ # want a new paragraph. We strip the comment together
+ # with its newline, but re-add a newline to chnge
+ # paragraph here if needed:
+ print "\n";
+ }
}
$$commented_newline = 0;
# Consider \makeatletter only in preamble, because we do want
@@ -187,6 +201,12 @@ sub process_line
print STDERR "Warning: $file.\n";
print STDERR "Warning: consider using --makeatletter if the result is not compilable.\n";
}
+
+ # non-comment is a sequence of:
+ # - escaped character (\\.), including \% and \\
+ # - neither '%' nor '\'.
+ my $NON_COMMENT = '([^\\\\%]|\\\\.)*';
+
unless ($keep_comments) {
if (!$empty_comments) {
# Include \n in pattern to avoid matching
@@ -197,23 +217,26 @@ sub process_line
$$commented_newline = 1;
}
- # remove only the comment if the line has actual content
- if (s/([^\\])%.*\n/$1/) {
+ # Special-case commands at end of line. We
+ # don't want "\\foo%\nbar" to become
+ # "\\foobar"
+ if (s/^($NON_COMMENT\\[[:alpha:]@]+)%.*\n/$1 /) {
+ $$commented_newline = 1;
+ } elsif (s/^($NON_COMMENT)%.*\n/$1/) {
+ # remove only the comment if the line has actual content
$$commented_newline = 1;
}
}
# Apply the "empty comments" treatment unconditionally
- # for end-of-files comments not matched above (it
- # doesn't harm to keep an empty comment sometimes, but
- # it may harm to leave a real comment if the goal was
- # to strip them).
- s/^%.*$/%/;
- s/([^\\])%.*$/$1%/;
+ # for comments not matched above (it doesn't harm to
+ # keep an empty comment sometimes, but it may harm to
+ # leave a real comment if the goal was to strip them).
+ s/^(([^\\%]|\\.)*)%.*$/$1%/;
}
unless ($keep_includes) {
if (my ($before, $ignored, $full_filename, $after)
- = /^(([^%]|[^\\]%)*)\\include[{\s]+(.*?)[\s}](.*)$/) {
+ = /^($NON_COMMENT)\\include[{\s]+(.*?)[\s}](.*)$/) {
$full_filename = find_tex_file($full_filename . ".tex");
if ($full_filename) {
say $prefix . "Found include for file: $full_filename\n";
@@ -231,7 +254,7 @@ sub process_line
$_ = "";
}
} elsif (my ($before, $ignored, $full_filename, $after)
- = /^(([^%]|[^\\]%)*)\\input[{\s]+(.*?)[\s}](.*)$/) {
+ = /^($NON_COMMENT)\\input[{\s]+(.*?)[\s}](.*)$/) {
if ($inside_import) {
$full_filename = $inside_import . $full_filename;
}
@@ -255,7 +278,7 @@ sub process_line
$_ = "";
}
} elsif (my ($before, $ignored, $dir, $full_filename, $after)
- = /^(([^%]|[^\\]%)*)\\(?:sub)?import[{\s]+(.*?)[\s}][{\s]+(.*?)[\s}](.*)$/) {
+ = /^($NON_COMMENT)\\(?:sub)?import[{\s]+(.*?)[\s}][{\s]+(.*?)[\s}](.*)$/) {
if ($explain) {
print "% dir " . $dir ."\n";
print "% full_filename " . $full_filename ."\n";
@@ -290,7 +313,7 @@ sub process_line
$_ = "";
}
} elsif (my ($before, $ignored, $args, $full_filename, $after)
- = /^(([^%]|[^\\]%)*)\\includegraphics[\[\s]+(.*?)[\s\]][{\s]+(.*?)[\s}](.*)$/) {
+ = /^($NON_COMMENT)\\includegraphics[\[\s]+(.*?)[\s\]][{\s]+(.*?)[\s}](.*)$/) {
if ($explain) {
print "% inside_import " . $inside_import ."\n";
print "% before " . $before ."\n";
@@ -305,7 +328,7 @@ sub process_line
$_ = "";
}
} elsif (my ($before, $ignored, $args, $full_filename, $after)
- = /^(([^%]|[^\\]%)*)\\lstinputlisting[\[\s]+(.*?)[\s\]][{\s]+(.*?)[\s}](.*)$/) {
+ = /^($NON_COMMENT)\\lstinputlisting[\[\s]+(.*?)[\s\]][{\s]+(.*?)[\s}](.*)$/) {
if ($explain) {
print "% inside_import " . $inside_import ."\n";
print "% before " . $before ."\n";
@@ -461,6 +484,12 @@ latexpand [options] FILE...
rare cases it may break your document, but it
may help fixing bad interactions between
@-commands and inclusion (see BUGS section).
+ --in-encoding FMT, --out-encoding FMT
+ File encoding used by input and output files.
+ This uses the same syntax as PerlIO's layers.
+ Example:
+ --in-encoding 'encoding(UTF-8)'
+ The default is 'bytes' and should always work.
=head1 USES
@@ -548,4 +577,4 @@ https://lacl.fr/~caubert/notes/portabilite-du-tex.html#dependances
=head1 VERSION
-This is latexpand version v1.4-1-gb32a776.
+This is latexpand version v1.5.
diff --git a/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl b/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl
index 467856363f1..90f30000aa4 100755
--- a/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl
+++ b/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl
@@ -1,12 +1,12 @@
#!/usr/bin/env perl
-# $Id: tlmgr.pl 49885 2019-01-31 19:27:00Z karl $
+# $Id: tlmgr.pl 49997 2019-02-10 23:50:35Z karl $
#
# Copyright 2008-2019 Norbert Preining
# This file is licensed under the GNU General Public License version 2
# or any later version.
-my $svnrev = '$Revision: 49885 $';
-my $datrev = '$Date: 2019-01-31 11:27:00 -0800 (Thu, 31 Jan 2019) $';
+my $svnrev = '$Revision: 49997 $';
+my $datrev = '$Date: 2019-02-11 00:50:35 +0100 (Mon, 11 Feb 2019) $';
my $tlmgrrevision;
my $tlmgrversion;
my $prg;
@@ -9761,7 +9761,7 @@ This script and its documentation were written for the TeX Live
distribution (L<https://tug.org/texlive>) and both are licensed under the
GNU General Public License Version 2 or later.
-$Id: tlmgr.pl 49885 2019-01-31 19:27:00Z karl $
+$Id: tlmgr.pl 49997 2019-02-10 23:50:35Z karl $
=cut
# test HTML version: pod2html --cachedir=/tmp tlmgr.pl >/tmp/tlmgr.html
diff --git a/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl b/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl
index 22e1a8e0b62..8855a691837 100755
--- a/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl
+++ b/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl
@@ -27,14 +27,15 @@ if {$::tcl_platform(platform) ne "windows"} {
unset texbin
unset savedir
unset dirs
- # now is a good time to ask tlmgr for the _TL_ name of our platform
- set ::our_platform [exec tlmgr print-platform]
}
# declarations and utilities shared with install-tl-gui.tcl
set ::instroot [exec kpsewhich -var-value=TEXMFROOT]
source [file join $::instroot "tlpkg" "tltcl" "tltcl.tcl"]
+# now is a good time to ask tlmgr for the _TL_ name of our platform
+set ::our_platform [exec -ignorestderr tlmgr print-platform]
+
# searchpath and locale:
# windows: most scripts run via [w]runscript, which adjusts the searchpath
# for the current process.
@@ -144,7 +145,7 @@ proc long_message {str type {p "."}} {
if {$type eq "yesnocancel"} {
ttk::button .tlmg.yes -text [__ "Yes"] -command "end_dlg \"yes\" .tlmg"
ppack .tlmg.yes -in .tlmg.bts -side right
- ttk::button .tlmg.no -text [__ "no"] -command "end_dlg \"no\" .tlmg"
+ ttk::button .tlmg.no -text [__ "No"] -command "end_dlg \"no\" .tlmg"
ppack .tlmg.no -in .tlmg.bts -side right
}
if {$type eq "yesnocancel" || $type eq "okcancel"} {
@@ -743,7 +744,7 @@ proc get_packages_info_remote {} {
}
get_platforms
set ::have_remote 1
- .topf.loaded configure -text "Loaded" -foreground black
+ .topf.loaded configure -text [__ "Loaded"] -foreground black
update_globals
return 1
} ; # get_packages_info_remote
@@ -1594,8 +1595,10 @@ proc install_pkgs {sel_opt {pk ""}} {
}
}
if {[llength $deps] > 0} {
- set ans [any_message \
- [__ "Also installing dependencies\n\n$deps.\n\nContinue?"] "okcancel"]
+ set ans \
+ [any_message \
+ [__ "Also installing dependencies\n\n%s" $deps] \
+ "okcancel"]
if {$ans eq "cancel"} return
}
run_cmd "install $todo" 1
@@ -1989,14 +1992,14 @@ proc populate_main {} {
menu .mn.opt
set inx -1
incr inx
- .mn.opt add command -label "[__ "Repositories"]..." \
+ .mn.opt add command -label "[__ "Repositories"] ..." \
-command repository_dialog
incr inx
- .mn.opt add cascade -label [__ "Paper"] -menu .mn.opt.paper
+ .mn.opt add cascade -label [__ "Paper ..."] -menu .mn.opt.paper
incr inx
menu .mn.opt.paper
- foreach p [list a4 letter] {
+ foreach p [list A4 letter] {
.mn.opt.paper add command -label $p -command "set_paper $p"
}
@@ -2013,7 +2016,7 @@ proc populate_main {} {
if {$::tcl_platform(platform) ne "windows"} {
incr inx
set ::inx_platforms $inx
- .mn.opt add command -label "[__ "Platforms"]..." -command platforms_select
+ .mn.opt add command -label "[__ "Platforms"] ..." -command platforms_select
}
.mn add cascade -label [__ "Help"] -menu .mn.help -underline 0
@@ -2129,7 +2132,7 @@ Implemented in Tcl/Tk
pgrid .mrk_rem -in .pkfilter -column 4 -row $rw -sticky ew
if $::do_restore {
incr rw
- ttk::button .mrk_rest -text [__ "Restore from backup..."] -command \
+ ttk::button .mrk_rest -text "[__ "Restore from backup"] ..." -command \
restore_backups_dialog
pgrid .mrk_rest -in .pkfilter -column 4 -row $rw -sticky ew
}
@@ -2162,8 +2165,8 @@ Implemented in Tcl/Tk
-yscrollcommand {.pkvsb set}
.pkglist heading mk -text "" -anchor w
.pkglist heading name -text [__ "Name"] -anchor w
- .pkglist heading localrev -text [__ "Local Rev. (ver.)"] -anchor w
- .pkglist heading remoterev -text [__ "Remote Rev. (ver.)"] -anchor w
+ .pkglist heading localrev -text [__ "Local rev. (ver.)"] -anchor w
+ .pkglist heading remoterev -text [__ "Remote rev. (ver.)"] -anchor w
.pkglist heading shortdesc -text [__ "Description"] -anchor w
.pkglist column mk -width [expr {$::cw * 3}] -stretch 0
.pkglist column name -width [expr {$::cw * 25}] -stretch 1
diff --git a/Master/texmf-dist/doc/support/latexpand/README b/Master/texmf-dist/doc/support/latexpand/README
index 8a3aa4c538b..d8b0cbe8ef8 100644
--- a/Master/texmf-dist/doc/support/latexpand/README
+++ b/Master/texmf-dist/doc/support/latexpand/README
@@ -33,6 +33,12 @@ SYNOPSIS
rare cases it may break your document, but it
may help fixing bad interactions between
@-commands and inclusion (see BUGS section).
+ --in-encoding FMT, --out-encoding FMT
+ File encoding used by input and output files.
+ This uses the same syntax as PerlIO's layers.
+ Example:
+ --in-encoding 'encoding(UTF-8)'
+ The default is 'bytes' and should always work.
USES
The most common use of latexpand is to simplify distribution of source
@@ -111,5 +117,5 @@ SEE ALSO
https://lacl.fr/~caubert/notes/portabilite-du-tex.html#dependances
VERSION
- This is latexpand version v1.4-1-gb32a776.
+ This is latexpand version v1.5.
diff --git a/Master/texmf-dist/doc/support/latexpand/version.txt b/Master/texmf-dist/doc/support/latexpand/version.txt
index ee37fea5f37..c7660606cf9 100644
--- a/Master/texmf-dist/doc/support/latexpand/version.txt
+++ b/Master/texmf-dist/doc/support/latexpand/version.txt
@@ -1,2 +1,2 @@
-latexpand version v1.4-1-gb32a776 (b32a776232b22f2ece1ca41628273e16022129d9).
-Committed on Wed Apr 18 15:44:06 2018 +0200.
+latexpand version v1.5 (be890116022866564388af207e11f4b5b962d57d).
+Committed on Sat Feb 16 08:42:38 2019 +0100.
diff --git a/Master/texmf-dist/scripts/latexpand/latexpand b/Master/texmf-dist/scripts/latexpand/latexpand
index ea18e58cd42..1977c46356b 100755
--- a/Master/texmf-dist/scripts/latexpand/latexpand
+++ b/Master/texmf-dist/scripts/latexpand/latexpand
@@ -28,6 +28,8 @@ my $fatal;
my $version;
my $makeatletter;
my $inside_import;
+my $in_enc = "bytes";
+my $out_enc = "bytes";
GetOptions (
'h' => \$help,
@@ -45,6 +47,8 @@ GetOptions (
'fatal' => \$fatal,
'version' => \$version,
'makeatletter' => \$makeatletter,
+ 'in-encoding=s' => \$in_enc,
+ 'out-encoding=s' => \$out_enc,
) or pod2usage_wrapper(2);
version() if $version;
pod2usage_wrapper(0) if $help;
@@ -76,7 +80,7 @@ sub get_version
{
# $VERSION's value will be substituted by 'make dist', but the
# next line won't (the string has to be broken to avoid it).
- my $VERSION = 'v1.4-1-gb32a776';
+ my $VERSION = 'v1.5';
if ($VERSION eq '@LATEXPAND' . '_VERSION@') {
my($vol,$dir,$file) = File::Spec->splitpath($0);
chdir($dir);
@@ -115,6 +119,8 @@ sub say
my $makeatletter_found;
my $in_preamble;
+use open IN => ":$in_enc", OUT => ":$out_enc";
+
foreach my $file (@ARGV)
{
say "processing $file\n";
@@ -159,18 +165,26 @@ sub process_line
{
my ($line, $prefix, $commented_newline, $file) = @_;
$_ = $line;
- if ($$commented_newline && /^\s*$/) {
- # Deal with:
- #
- # Line 1 % comment
- #
- # Line 2
- #
- # The newline after Line 1 is commented, but we still
- # want a new paragraph. We strip the comment together
- # with its newline, but re-add a newline to chnge
- # paragraph here if needed:
- print "\n";
+ if ($$commented_newline) {
+ # Leading whitespaces after a comment is ignored.
+ # There's no space in:
+ # Line 1%
+ # Line 2.
+ # Match just space and tabs (\s would match \n)
+ s/^[ \t]*//;
+ if (/^$/) {
+ # Deal with:
+ #
+ # Line 1 % comment
+ #
+ # Line 2
+ #
+ # The newline after Line 1 is commented, but we still
+ # want a new paragraph. We strip the comment together
+ # with its newline, but re-add a newline to chnge
+ # paragraph here if needed:
+ print "\n";
+ }
}
$$commented_newline = 0;
# Consider \makeatletter only in preamble, because we do want
@@ -187,6 +201,12 @@ sub process_line
print STDERR "Warning: $file.\n";
print STDERR "Warning: consider using --makeatletter if the result is not compilable.\n";
}
+
+ # non-comment is a sequence of:
+ # - escaped character (\\.), including \% and \\
+ # - neither '%' nor '\'.
+ my $NON_COMMENT = '([^\\\\%]|\\\\.)*';
+
unless ($keep_comments) {
if (!$empty_comments) {
# Include \n in pattern to avoid matching
@@ -197,23 +217,26 @@ sub process_line
$$commented_newline = 1;
}
- # remove only the comment if the line has actual content
- if (s/([^\\])%.*\n/$1/) {
+ # Special-case commands at end of line. We
+ # don't want "\\foo%\nbar" to become
+ # "\\foobar"
+ if (s/^($NON_COMMENT\\[[:alpha:]@]+)%.*\n/$1 /) {
+ $$commented_newline = 1;
+ } elsif (s/^($NON_COMMENT)%.*\n/$1/) {
+ # remove only the comment if the line has actual content
$$commented_newline = 1;
}
}
# Apply the "empty comments" treatment unconditionally
- # for end-of-files comments not matched above (it
- # doesn't harm to keep an empty comment sometimes, but
- # it may harm to leave a real comment if the goal was
- # to strip them).
- s/^%.*$/%/;
- s/([^\\])%.*$/$1%/;
+ # for comments not matched above (it doesn't harm to
+ # keep an empty comment sometimes, but it may harm to
+ # leave a real comment if the goal was to strip them).
+ s/^(([^\\%]|\\.)*)%.*$/$1%/;
}
unless ($keep_includes) {
if (my ($before, $ignored, $full_filename, $after)
- = /^(([^%]|[^\\]%)*)\\include[{\s]+(.*?)[\s}](.*)$/) {
+ = /^($NON_COMMENT)\\include[{\s]+(.*?)[\s}](.*)$/) {
$full_filename = find_tex_file($full_filename . ".tex");
if ($full_filename) {
say $prefix . "Found include for file: $full_filename\n";
@@ -231,7 +254,7 @@ sub process_line
$_ = "";
}
} elsif (my ($before, $ignored, $full_filename, $after)
- = /^(([^%]|[^\\]%)*)\\input[{\s]+(.*?)[\s}](.*)$/) {
+ = /^($NON_COMMENT)\\input[{\s]+(.*?)[\s}](.*)$/) {
if ($inside_import) {
$full_filename = $inside_import . $full_filename;
}
@@ -255,7 +278,7 @@ sub process_line
$_ = "";
}
} elsif (my ($before, $ignored, $dir, $full_filename, $after)
- = /^(([^%]|[^\\]%)*)\\(?:sub)?import[{\s]+(.*?)[\s}][{\s]+(.*?)[\s}](.*)$/) {
+ = /^($NON_COMMENT)\\(?:sub)?import[{\s]+(.*?)[\s}][{\s]+(.*?)[\s}](.*)$/) {
if ($explain) {
print "% dir " . $dir ."\n";
print "% full_filename " . $full_filename ."\n";
@@ -290,7 +313,7 @@ sub process_line
$_ = "";
}
} elsif (my ($before, $ignored, $args, $full_filename, $after)
- = /^(([^%]|[^\\]%)*)\\includegraphics[\[\s]+(.*?)[\s\]][{\s]+(.*?)[\s}](.*)$/) {
+ = /^($NON_COMMENT)\\includegraphics[\[\s]+(.*?)[\s\]][{\s]+(.*?)[\s}](.*)$/) {
if ($explain) {
print "% inside_import " . $inside_import ."\n";
print "% before " . $before ."\n";
@@ -305,7 +328,7 @@ sub process_line
$_ = "";
}
} elsif (my ($before, $ignored, $args, $full_filename, $after)
- = /^(([^%]|[^\\]%)*)\\lstinputlisting[\[\s]+(.*?)[\s\]][{\s]+(.*?)[\s}](.*)$/) {
+ = /^($NON_COMMENT)\\lstinputlisting[\[\s]+(.*?)[\s\]][{\s]+(.*?)[\s}](.*)$/) {
if ($explain) {
print "% inside_import " . $inside_import ."\n";
print "% before " . $before ."\n";
@@ -461,6 +484,12 @@ latexpand [options] FILE...
rare cases it may break your document, but it
may help fixing bad interactions between
@-commands and inclusion (see BUGS section).
+ --in-encoding FMT, --out-encoding FMT
+ File encoding used by input and output files.
+ This uses the same syntax as PerlIO's layers.
+ Example:
+ --in-encoding 'encoding(UTF-8)'
+ The default is 'bytes' and should always work.
=head1 USES
@@ -548,4 +577,4 @@ https://lacl.fr/~caubert/notes/portabilite-du-tex.html#dependances
=head1 VERSION
-This is latexpand version v1.4-1-gb32a776.
+This is latexpand version v1.5.