summaryrefslogtreecommitdiff
path: root/Build/source/texk/texlive/linked_scripts/texdiff
diff options
context:
space:
mode:
authorDenis Bitouzé <dbitouze@wanadoo.fr>2021-02-25 18:23:07 +0000
committerDenis Bitouzé <dbitouze@wanadoo.fr>2021-02-25 18:23:07 +0000
commitc6101f91d071883b48b1b4b51e5eba0f36d9a78d (patch)
tree1bf7f5a881d7a4f5c5bf59d0b2821943dd822372 /Build/source/texk/texlive/linked_scripts/texdiff
parent07ee7222e389b0777456b427a55c22d0e6ffd267 (diff)
French translation for tlmgr updated
git-svn-id: svn://tug.org/texlive/trunk@57912 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/texlive/linked_scripts/texdiff')
-rwxr-xr-xBuild/source/texk/texlive/linked_scripts/texdiff/texdiff554
1 files changed, 0 insertions, 554 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/texdiff/texdiff b/Build/source/texk/texlive/linked_scripts/texdiff/texdiff
deleted file mode 100755
index 4c27fab205a..00000000000
--- a/Build/source/texk/texlive/linked_scripts/texdiff/texdiff
+++ /dev/null
@@ -1,554 +0,0 @@
-#! /usr/bin/env perl
-#
-# See POD documentation below or use:
-#
-# $ perldoc texdiff
-#
-# to see embedded documentation. Alternatively, you can create manual
-# or HTML pages using pod2man and pod2html. Below the POD part you
-# can add your own macros to be skipped by the edit marks.
-#
-# $Id: texdiff 766 2009-09-24 19:19:38Z cengiz $
-
-=pod
-
-=head1 NAME
-
-B<texdiff> - Compares two (La)TeX documents to create a merged version showing changes, similar to that of 'Change Tracking' in some word processors.
-
-=head1 SYNOPSIS
-
-texdiff [--nofloats|-n] old.tex new.tex [diff.tex]
-
-=head1 DESCRIPTION
-
-The first two files are compared and a new TeX file is output. When
-the output file is processed with (La)TeX it marks new changes with
-blue and old text with red with a strike-through line. Furthermore,
-passages with changes are marked at the margin with grey bars by the
-LaTeX C<changebar> package (although only after running C<dvips>, in
-C<xdvi> the bars are one inch too far left to compensate the one inch
-offset inserted by TeX printer drivers).
-
-C<texdiff> uses and therefore requires the C<wdiff> command to insert
-these marks. If LaTeX macros are included in those striked out or
-underlined passages, the latex run will most likely fail. The source
-of most problems lies in C<wdiff> tearing apart pairs of
-braces. Therefore C<texdiff> is a perl script that calls C<wdiff> internally
-and fixes C<wdiff>'s output by re-pairing braces again and handling some
-commonly used LaTeX macros.
-
-For texdiff to work, the following LaTeX code must be inserted in the
-preamble of the LaTeX document:
-
- \usepackage{xcolor} \usepackage{ulem} \usepackage{changebar}
- \newcommand\TLSins[1]{\cbstart{}\textcolor{ins}{\uline{#1}}\cbend{}}
- \newcommand\TLSdel[1]{\cbdelete{}\textcolor{del}{\sout{#1}}}
-
-Define editing colors C<ins> and C<del> with existing C<xcolor> color names:
- \colorlet{ins}{blue} \colorlet{del}{red}
-
-Or from scratch:
- \definecolor{ins}{rgb}{0, 0.5, 0}
-
-These macros are NOT automatically interted at \begin{document} like
-the original scripts did (see the B<ACKNOWLEDGMENTS> section below),
-because this will not work on files of a multi-file document (those
-included by \include or \input). Furthermore, if you insert the
-macros manually, you can tune them as you like, i. e. change text
-color or position of changebars. Have a look at the documentation of
-the ulem and changebar packages on how to do this!
-
-=head1 OPTIONS
-
-=over
-
-=item B<--nofloats>, B<-n>
-
-If given, skips contents of figure environments, but does show
-insertions and deletions in the caption commands. This is done to
-avoid complex messups in subfloat or complex figure environments.
-
-=item B<--debug>, B<-d>
-
-Turns on debugging. Temporary files that contain numbered braces are
-kept and a raw difference file is written as output file name appended
-with '-wdiff.tex'. In addition, several regular expression diagnostics
-are printed. B<Warning: produces a lot of output.>
-
-=back
-
-=head1 AUTHOR
-
-Mark Doll <markdoll<AT>gmx.net>, Cengiz Gunay <cengique<AT>users.sf.net>.
-
-=head1 ACKNOWLEDGMENTS
-
-=over
-
-=item B<*>
-
-Version 0.4, by CG, 2009/09/15. Added use of GetOpt to take an optional
-parameter to skip float (e.g., figure or table) contents. Added an
-optional debug mode. Embedded POD documentation. Fixed problem
-with insertion and deletions appearing in the middle of sectioning
-commands by throwing off LaTeX.
-
-=item B<*>
-
-Version 0.3, modified by Cengiz Gunay <cengique@users.sf.net>,
-2009/06/30. Added some Latex commands that should be excluded and
-fixed handling of '\%' characters.
-
-=item B<*>
-
-Version 0.2, is a perl implementation of TeXdiff by Mark Doll
-<markdoll@gmx.net>, 2006/08/09. It was derived from the original bash
-and perl scripts created by Robert Maron <robmar@mimuw.edu.pl>,
-available at http://www.robmar.net/TexDiff/. This version of texdiff
-is available at http://mark.doll.name/texdiff/.
-
-=back
-
-=head1 COPYRIGHT AND LICENSE
-
-Copyleft 2006-2009, Mark Doll and Cengiz Gunay
-
-This library is free software; you may redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=cut
-
-# TODO:
-#
-# - after removing excluded commands, unify deletions and insertions
-# if there're no other differences
-# - investigate causes of missing brace pairs
-# - put option to add preamble automatically?
-# - put option to flatten first?
-
-use Getopt::Long qw(GetOptions);
-use Pod::Usage;
-use strict;
-use re 'eval'; # CG: for RE code for skipping float contents
-
-## Problematic commands, that will be removed from deletions and moved
-## out of insertions. The array index equals the number of mandatory
-## command parameters.
-
-## INSERT YOUR HOMEBREW MACROS HERE!!!
-# Omit leading backslash and separate by '|', since this will be
-# interpreted as a regular expression.
-my @mycommands = (
- 'RCS\$[^\$]*\$',
- 'cite\w*p|citet|svnid|citep',
- 'if\w+',
- '',
- '',
- 'Abb(?:ildung)?(?:p[psw])?',
-);
-
-## standard LaTeX macros
-#FIXME: add more macros here!
-my @stdcommands = (
- '\\\\|item|\%', # will match one backslash inside regex
- 'includegraphics|begin|end|input|fancyfoot|subfig|subfloat',
-);
-
-# GetOpt::Long::
-my $nofloats = 0;
-my $help;
-my $DEBUG=0;
-
-my $result = GetOptions ("nofloats|n" => \$nofloats,
- "debug|d" => \$DEBUG,
- "help|?" => \$help );
-
-#print "Figs= $nofloats\n";
-
-pod2usage( -section => "SYNOPSIS") if ($#ARGV < 1 || $help);
-
-## allow nesting of braces (aka curly brackets) up to 10**$w-1 levels
-my $w = 2;
-
-## wdiff marker
-my $delstart = "TLSdel";
-my $delend = "TLEdel";
-my $insstart = "TLSins";
-my $insend = "TLEins";
-
-## LaTeX macros used to mark deletions/insertions in the output
-my $texdelstart = "\\protect\\TLSdel\{";
-my $texdelend = "\}";
-my $texinsstart = "\\protect\\TLSins\{";
-my $texinsend = "\}";
-
-
-## parse command line
-my ($in1,$in2,$out) = @ARGV;
-
-## create temp files from input files with all comments removed and
-## all braces numbered
-write_temp($w,$in1,'tmp1.'.$$);
-write_temp($w,$in2,'tmp2.'.$$);
-sub write_temp {
- my ($w,$file,$tmp) = @_;
-
- $_ = `cat $file`;
-
- ## mark pairs of braces with the same $w digits.
- # i. e. convert "{ { {} } {}}" to "{01 {02 {03}03 }02 {02}02}01" ($w=2).
- #
- # FIXME: marking braces before comparison makes them appear
- # as changes if depth of nesting changes.
-
- my $max=10**$w-1;
- $::cnt = 0;
- s/
- (?<!\\)
- (?:
- \{ (?{ die "Fatal: Braces nested deeper than $max!\n" if ($::cnt >= $max);
- sprintf("\{%0${w}d",++$::cnt) }) |
- \} (?{ sprintf("\}%0${w}d",$::cnt--) })
- )
- /$^R/gx;
-
- print STDERR "Warning: ".abs($::cnt)." unmatched ".($::cnt > 0 ? "opening" : "closing")
- ." brace".(abs($::cnt) == 1 ? "" : "s")."\n" if ($::cnt != 0);
-
- ## remove comments
- # also remove trailing newline and all whitespace at the
- # beginning of the following line like TeX does it
- s/(?<!\\)%.*?\n[ \t]*//g;
-
- ## output
- open(O,">$tmp") or return("Can't open $tmp: $!\n");
- print O;
- close O;
-}
-
-my $wdiff_cmd = ( "wdiff --avoid-wraps"
- . " --start-delete=\'$delstart\' --end-delete=\'$delend\'"
- . " --start-insert=\'$insstart\' --end-insert=\'$insend\'"
- . " tmp1.$$ tmp2.$$");
-$_ = `$wdiff_cmd`;
-
-if ($DEBUG) {
- ## save wdiff output
- if (open(O,">$out-wdiff.tex")) {
- print O;
- close O;
- } else {
- print STDERR "Failed to write wdiff output file $out-wdiff.tex.\n";;
- }
-}
-
-###
-### Phase I: generic processing
-###
-
-## remove paragraph boundaries (two newlines) that wdiff falsely inserted
-# FIXME: Does wdiff always insert same spacing before deletion and the
-# following insertion?!
-s/(
- ([ \t]*\n[ \t]*\n[ \t]*)
- $delstart (?!$delend)
- (?: . (?!$delend) )* .
- $delend
- )
- \2
- $insstart
- /$1\n$insstart/gsx;
-
-
-## Restore backslashed Spaces (prevents falsely escaped right braces)
-# Escaped spaces '\ ' at the end of an insertion/deletion will result in the
-# backslash before the end marker and the space after it. Therefore swap
-# whitespace and end marker. (This might falsely make the insertion/deletion
-# span the following paragraph boundary, but this will be fixed by the next
-# step below). When the end markers finally get replaced by $tex(ins|del)end,
-# which typically is a '}', without this swapping, this would result in escaped
-# right braces and LaTeX complaining about a missing right brace.
-s/(?<!\\)\\($delend|$insend)(\s+)/\\$2$1/g;
-
-
-## split up insertions and deletions that span multiple paragraphs
-while (
- s/(
- $delstart (?!$delend)
- (?: . (?! [ \t]*\n[ \t]*\n[ \t]* | $delend ) )*? .?
- )
- ([ \t]*\n[ \t]*\n[ \t]*)
- /$1$delend$2$delstart/gsx ) {}
-
-while (
- s/(
- $insstart (?!$insend)
- (?: . (?! [ \t]*\n[ \t]*\n[ \t]* | $insend ) )*? .?
- )
- ([ \t]*\n[ \t]*\n[ \t]*)
- /$1$insend$2$insstart/gsx ) {}
-
-
-## Handle unpaired braces
-# Search for all unpaired braces, meaning, they are inside a text
-# deletion or insertion passage, but their counterpart is not within
-# that passage. If they are located inside a deletion passage, simply
-# delete them. If there a inside a insertion passage, move them out
-# by placing an insertion end marker before and an insertion start
-# marker after the brace. In case that a left brace belongs to a
-# preceding LaTeX command (plus and any more zero-parameter commands
-# directly preceding that command; that's matched by a non-whitespace
-# character sequence started by a backslash), also delete resp. move
-# that/these command(s) together with the left brace.
-#
-# FIXME: why is while loop necessary here, but not for handling right braces?
-#
-# FIXME: If there's not at least one character before the character
-# sequence specified in the look-ahead negative assertion, the match
-# would stop at the second occurence of that sequence instead of the
-# first. This leads to the effect, that the following regular
-# expressions may skip $(del|ins)end if it follows directly the left
-# brace (+number). The use of *? instead of * mitigates this effect,
-# but it's not perfect.
-
-## 1. unpaired left brace inside a deletion: delete brace and any preceding LaTeX command(s)
-while (
- s/( # $1: everything till unpaired '{'
- $delstart (?!$delend) # would otherwise not detect end marker of empty deletions!
- (?: . (?!$delend))*?
- )
- ( (?<!\\) \\\S* )? # $2: optional command(s) preceding the '{'
- (?<!\\) \{([0-9]{$w}) (?!\}\3) # '{' and $3: number
- ( # $4: everything what's remaining
- (?: . (?! (?<!\\)\}\3 | $delend) )*? .? # will stop at a matching '}', too
- $delend # won't match if preceeding line found a matching '}'
- )
- /$1$4/sgx ) {} # remove the '{' with number and any preceeding command(s)
-
-## 2. unpaired left brace inside an insertion: move brace out including any preceding LaTeX command(s)
-while (
- s/(
- $insstart (?!$insend)
- (?: . (?!$insend))*?
- )
- ( \s* (?: (?<!\\) \\\S* )? ) # also move preceeding whitespace preceding out
- (?<!\\) \{([0-9]{$w}) (?!\}\3)
- (
- (?: . (?! (?<!\\)\}\3 | $insend) )*? .?
- $insend
- )
- /$1$insend$2\{$3$insstart$4/sgx ) {} # move the '{' with number and any preceeding command(s) out
-
-## 3. unpaired right brace inside a deletion: delete brace
-s/( # $1: everything till unpaired '}'
- $delstart (?!$delend) # would otherwise not detect end marker of empty deletions!
- (?> (?: ## grab all paired braces (prevent backtracking):
- (?: . (?! (?<!\\)\{[0-9]{$w} | $delend) )*? .? # any text till next (unescaped) '{'
- \{([0-9]{$w}) # '{' with $2: number
- (?: . (?! (?<!\\)\}\2 | $delend) )*? .? #any text till matching '}'
- \}\2 # '}' with same number $2
- )* ) ## end of disabled backtracking
- (?: . (?!$delend))*? # any text
- )
- ( \}[0-9]{$w} ) # $3: the (first) unpaired '}' with number
- ( # $4: everything what's remaining
- (?: . (?!$delend))*? .?
- $delend
- )
- /$1$4/sgx; # remove the unpaired '}' with number
-
-## 4. unpaired right brace inside an insertion: move brace out
-s/(
- $insstart (?! $insend)
- (?> (?:
- (?: . (?! (?<!\\)\{[0-9]{$w} | $insend ) )*? .?
- \{([0-9]{$w})
- (?: . (?! (?<!\\)\}\2 | $insend ) )*? .?
- \}\2
- )* )
- (?: . (?!$insend))*?
- )
- ( \}[0-9]{$w} \s* ) # also move whitespace following the '}' out
- (
- (?: . (?!$insend))*? .?
- $insend
- )
- /$1$insend$3$insstart$4/sgx; # move the unpaired '}' with number out
-
-
-## concatenate consecutive insertions and consecutive deletions
-# Don't concatenate over paragraph (two newlines) boundaries, since
-# the LaTeX macros used to mark changed passages can't span multiple
-# paragraphs. Run this before handling LaTeX-commands specifically to
-# allow as much of a command inside a single passage as possible.
-s/$delend([ \t]*\n?[ \t]*)$delstart/$1/g;
-s/$insend([ \t]*\n?[ \t]*)$insstart/$1/g;
-
-
-
-###
-### Phase II: LaTeX-command specific processing
-###
-
-## For COMPLETELY removed/inserted sections, move section command out.
-#
-# May create empty insertions/removals, therefore execute this before
-# the removal of empty (or whitespace only) insertions/removals!
-#
-# Partly changed section titles have been handled by the preceding
-# rules. In case of removal, prevent renumbering by using asterisk
-# form; in case of insertion, add a short form without markers to
-# prevent problems when LaTeX'ing the diff.
-my $sectionre = "chapter|section|subsection|subsubsection|paragraph";
-s/
- ( # $1: text before section command
- $delstart (?!$delend)
- (?: . (?!$delend) )*?
- )
- \\($sectionre) # '\' and $2: section command
- \{([0-9]{$w}) # '{' and $3: number
- ( (?: . (?! (?<!\\)\}\3 | $delend) )*? .? ) # $4: section command parameter (title)
- ( \}\3 \s* ) # '}' and same number plus following whitespace
- /$1$delend\\$2\*\{$3$delstart$4$delend$5$delstart/sgx;
- # move section commmand out and convert command to asterisk form
-
-s/
- ( # $1: text before section command
- $insstart (?!$insend)
- (?: . (?!$insend) )*?
- )
- \\($sectionre) # '\' and $2: section command
- \{([0-9]{$w}) # '{' and $3: number
- ( (?: . (?! (?<!\\)\}\3 | $insend) )*? .? ) # $4: section command parameter (title)
- ( \}\3 \s* ) # $5: '}' and same number plus following whitespace
- /$1$insend\\$2\[$4\]\{$3$insstart$4$insend$5$insstart/sgx;
- # move sections command out and add short form without markers
-
-s/
- \\($sectionre) # '\' and $1: section command
- (?{ $::titlecontents = ""; $::optcontents = "" }) # initialize vars
- ( (?: \[ (?: (?! \] ) . )* \] # $2: optional argument
- (?{ print "====Found \\$1 opt arg '$^N'." if $DEBUG; })
- )? )
- \{([0-9]{$w}) # '{' and $3: number
- (?: # Groups text followed by ins or del block
- ( (?! \}\3) (?: (?! \}\3 ) . )*? (?= $insstart | $delstart ) )
- (?{ print "=====Found ins\|del start before section end '$^N'!\n" if $DEBUG;
- $::titlecontents .= $^N; $::optcontents .= $^N })
- (?: ( $delstart (?: (?!$delend) . )* $delend )
- (?{ print "=====Found del end!\n" if $DEBUG;
- $::titlecontents .= $^N }) )? # dont keep deletions in opt
- (?: $insstart ( (?: (?!$insend) . )* ) $insend
- (?{ print "=====Found ins end '$^N'!\n" if $DEBUG;
- $::titlecontents .= "$insstart$^N$insend";
- $::optcontents .= $^N }) )? # keep insertions in opt
- )+ # end text + ins or del (need at least one for this to succeed)
- (?: ( (?: (?! \}\3 ) . )+ )
- (?{ print "=====Found text after ins\|del end and before section end: '$^N'!\n" if $DEBUG;
- $::titlecontents .= $^N; $::optcontents .= $^N}) )?
- (?: \}\3) # '}' and same number
- (?{ print "=====End of \\$1.\n" if $DEBUG;
- $::optcontents = ($2 ne "" ? $2 : $::optcontents ) })
- /\\$1\[$::optcontents\]\{$3$::titlecontents\}$3/sgx;
- # Add a short form with removed insertions and deletions in section commands
- # Will not add the short form if it already exists.
-
-## Remove problematic commands from deletions and move them out of insertions
-for my $num (0 .. ($#mycommands>$#stdcommands ? $#mycommands : $#stdcommands)) {
- my $command = "";
-
- $command .= $mycommands[$num] if ($mycommands[$num] );
- $command .= "|" if ($mycommands[$num] && $stdcommands[$num]);
- $command .= $stdcommands[$num] if ( $stdcommands[$num]);
-
- next if(!$command);
-
- s/
- ( # $1: anything before the command
- $delstart (?!$delend)
- (?: . (?!$delend) )*? .?
- )
- ( # $2: the command with all its parameters
- \\(?:$command) # the command itself (preceded by a '\')
- (?: \[ .*? (?<!\\)\] )* # any optional parameters (enclosed in '[]')
- (?: \{([0-9]{$w}) .*? (?<!\\)\}\3 ){$num} # $num mandatory parameters
- )
- /$1/gsx;
-
- s/(
- $insstart (?!$insend)
- (?: . (?!$insend) )*? .?
- )
- (
- \\(?:$command)
- (?: \[ .*? (?<!\\)\] )*
- (?: \{([0-9]{$w}) .*? (?<!\\)\}\3 ){$num}
- )
- /$1$insend$2$insstart/gsx;
-}
-
-## CG: optionally leave figure contents intact: remove deletions and keep
-## insertions. do not touch the caption command
-## => tested with multiple figures
-## => tested with multi-captions and no captions. should work with subfig and subfloat
-
-s/( \\begin\{[0-9]{$w}\s*((?:figure|table)\*?)(?{ $::floatname = $^N })\s*\}[0-9]{$w} ) # begin figure or table line
- (?{ print "=====Found figure!\n" if $DEBUG;
- $::figcontents=$^N }) # Save into variable
- (?: # Groups BLOCK + caption command
- (?: # BLOCK of insert and delete commands until caption
- ( (?! \\caption) (?: (?! $insstart | $delstart | \\caption | \\end\{[0-9]{$w}\s*figure ) . )* )
- (?{ print "=====Found ins\|del start or caption '$^N'!\n" if $DEBUG;
- $::figcontents .= $^N })
- (?: $delstart (?: (?!$delend) . )* $delend
- (?{ print "=====Found del end!\n" if $DEBUG; }) )? # dont keep deletions
- (?: $insstart ( (?: (?!$insend) . )* ) $insend
- (?{ print "=====Found ins end '$^N'!\n" if $DEBUG; $::figcontents .= $^N }) )? # keep insertions
- )*? # end BLOCK
- (?: (\\caption (?: \[ (?: (?! (?<!\\) \]) . )* \])? \s*
- \{ ([0-9]{$w}) (?{ $::captiondepth=$^N })
- (?: (?! \}(??{ $::captiondepth })) . )* \}(??{$::captiondepth}) )
- (?{ print "=====" . pos() . ": Found caption ($::captiondepth) '$^N'!\n" if $DEBUG; $::figcontents .= $^N }) )? # caption
- )*? # end BLOCK + caption
- ( \\end\{[0-9]{$w}\s*figure\*?\s*\}[0-9]{$w} )
- (?{ print "=====Found figure end '$^N'!\n" if $DEBUG; $::figcontents .= $^N })
- /$::figcontents/gsx;
-
-###
-### Phase III: cleaup, conversion, output
-###
-
-## remove insertions and removals that are empty or only mark whitespace
-s/$delstart(\s*)$delend/$1/g;
-s/$insstart(\s*)$insend/$1/g;
-
-
-## remove brace numbers
-s/(?<!\\)(?:(\{|\})[0-9]{$w})/$1/g;
-
-
-## substitute final LaTeX macro code
-s/$delstart/$texdelstart/g;
-s/$delend/$texdelend/g;
-s/$insstart/$texinsstart/g;
-s/$insend/$texinsend/g;
-
-
-## output
-if ($out ne "") {
- if (open(O,">$out")) {
- print O;
- close O;
- } else {
- print STDERR "Failed to write output file $out.\n";
- }
-} else {
- print ;
-}
-
-## remove temp files
-if (!$DEBUG) {
- unlink('tmp1.'.$$);
- unlink('tmp2.'.$$);
-}