diff options
19 files changed, 307 insertions, 1493 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/crossrefware/bibdoiadd.pl b/Build/source/texk/texlive/linked_scripts/crossrefware/bibdoiadd.pl index b9be8dec824..8937729a3ba 100755 --- a/Build/source/texk/texlive/linked_scripts/crossrefware/bibdoiadd.pl +++ b/Build/source/texk/texlive/linked_scripts/crossrefware/bibdoiadd.pl @@ -8,7 +8,7 @@ bibdoiadd.pl - add DOI numbers to papers in a given bib file =head1 SYNOPSIS -bibdoiadd [B<-c> I<config_file>] [B<-o> I<output>] I<bib_file> +bibdoiadd [B<-c> I<config_file>] [B<-f>] [B<-o> I<output>] I<bib_file> =head1 OPTIONS @@ -19,6 +19,9 @@ bibdoiadd [B<-c> I<config_file>] [B<-o> I<output>] I<bib_file> Configuration file. If this file is absent, some defaults are used. See below for its format. +=item B<-f> + +Force checking doi number even if one is present =item B<-o> I<output> @@ -72,7 +75,7 @@ Boris Veytsman =head1 COPYRIGHT AND LICENSE -Copyright (C) 2014 Boris Veytsman +Copyright (C) 2014-2016 Boris Veytsman This is free software. You may redistribute copies of it under the terms of the GNU General Public License @@ -82,19 +85,23 @@ extent permitted by law. =cut use strict; -use Text::BibTeX; -use Text::BibTeX::Name; +BEGIN { + # find files relative to our installed location within TeX Live + chomp(my $TLMaster = `kpsewhich -var-value=SELFAUTOPARENT`); # TL root + if (length($TLMaster)) { + unshift @INC, "$TLMaster/texmf-dist/scripts/bibtexperllibs"; + } +} +use IO::File; +use BibTeX::Parser; +use LaTeX::ToUnicode qw (convert); use Getopt::Std; use URI::Escape; use LWP::Simple; -use TeX::Encode; -use Encode; -use HTML::Entities; -use XML::Entities; -my $USAGE="USAGE: $0 [-c config] [-o output] file\n"; +my $USAGE="USAGE: $0 [-c config] [-f] [-o output] file\n"; my $VERSION = <<END; -bibdoiadd v1.0 +bibdoiadd v2.0 This is free software. You may redistribute copies of it under the terms of the GNU General Public License http://www.gnu.org/licenses/gpl.html. There is NO WARRANTY, to the @@ -102,7 +109,7 @@ extent permitted by law. $USAGE END my %opts; -getopts('c:o:hV',\%opts) or die $USAGE; +getopts('fc:o:hV',\%opts) or die $USAGE; if ($opts{h} || $opts{V}){ print $VERSION; @@ -123,6 +130,9 @@ if ($opts{o}) { $outputfile = $opts{o}; } +my $forceSearch=$opts{f}; + + our $mode='free'; our $email; our $username; @@ -149,10 +159,12 @@ if ($mode eq 'paid' && (!length($username) || !length($password))) { "Crossref requires a username and password for the paid mode queries\n"; } -my $input = new Text::BibTeX::File "$inputfile" or - die "Cannot BibTeX file $inputfile\n"; -my $output = new Text::BibTeX::File "> $outputfile" or - die "Cannot write to $outputfile\n"; +my $input= IO::File->new($inputfile) or + die "Cannot find BibTeX file $inputfile\n$USAGE\n"; +my $output = IO::File->new("> $outputfile") or + die "Cannot write to $outputfile\n$USAGE\n"; + +my $parser=new BibTeX::Parser($input); my $prefix = "http://www.crossref.org/openurl?redirect=false"; @@ -164,30 +176,31 @@ if ($mode eq 'free') { } # Processing the input -while (my $entry = new Text::BibTeX::Entry $input) { +while (my $entry = $parser->next) { if (!$entry->parse_ok()) { print STDERR "Cannot understand entry: "; $entry->print(*STDERR); print STDERR "Skipping this entry\n"; next; } - if (!(($entry->metatype() eq BTE_REGULAR) && - ($entry->type() eq 'article'))) { - $entry->write($output); + + if (!($entry->type() eq 'ARTICLE')) { + print $output $entry->raw_bibtex(), "\n\n"; next; } - if ($entry->exists('doi')) { - $entry->write($output); + if ($entry->has('doi') && !$forceSearch) { + print $output $entry->raw_bibtex(), "\n\n"; next; } + + + my $doi = GetDoi($prefix, $entry); + if (length($doi)) { + $entry->field('doi',$doi); + } + print $output $entry->to_string(), "\n\n"; - # Now we have an entry with no doi. Let us get to work. - my $doi = GetDoi($prefix,$entry); - if (length($doi)) { - $entry->set('doi',$doi); - } - $entry->write($output); } @@ -201,33 +214,30 @@ exit 0; sub GetDoi { my ($url,$entry) = @_; - if ($entry->exists('issn')) { - $url .= "&issn=".uri_escape(SanitizeText($entry->get('issn'))); + if ($entry->has('issn')) { + $url .= "&issn=".uri_escape_utf8(SanitizeText($entry->field('issn'))); } - if ($entry->exists('journal')) { - $url .= "&title=".uri_escape(SanitizeText($entry->get('journal'))); + if ($entry->has('journal')) { + $url .= "&title=".uri_escape_utf8(SanitizeText($entry->field('journal'))); } - my @names=$entry->names ('author'); + my @names=$entry->author(); if (scalar(@names)) { - my @lastnames = $names[0]->part ('last'); - if (scalar(@lastnames)) { - my $lastname = SanitizeText(join(' ',@lastnames)); - $url .= "&aulast=".uri_escape($lastname); - } + my $lastname = SanitizeText($names[0]->last()); + $url .= "&aulast=".uri_escape_utf8($lastname); } - if ($entry->exists('volume')) { - $url .= "&volume=".uri_escape($entry->get('volume')); + if ($entry->has('volume')) { + $url .= "&volume=".uri_escape_utf8($entry->field('volume')); } - if ($entry->exists('number')) { - $url .= "&issue=".uri_escape($entry->get('number')); + if ($entry->has('number')) { + $url .= "&issue=".uri_escape_utf8($entry->field('number')); } - if ($entry->exists('pages')) { - my $pages=$entry->get('pages'); + if ($entry->has('pages')) { + my $pages=$entry->field('pages'); $pages =~ s/-.*$//; - $url .= "&spage=".uri_escape($pages); + $url .= "&spage=".uri_escape_utf8($pages); } - if ($entry->exists('year')) { - $url .= "&date=".uri_escape($entry->get('year')); + if ($entry->has('year')) { + $url .= "&date=".uri_escape_utf8($entry->field('year')); } my $result=get($url); @@ -244,24 +254,22 @@ sub GetDoi { ############################################################### sub SanitizeText { my $string = shift; - # There is a bug in the decode function, which we need to work - # around: it adds space to constructions like \o x - $string =~ s/(\\[a-zA-Z])\s+/$1/g; + $string = convert($string); $string =~ s/\\newblock//g; + $string =~ s/\\bgroup//g; + $string =~ s/\\egroup//g; + $string =~ s/\\scshape//g; $string =~ s/\\urlprefix//g; $string =~ s/\\emph//g; + $string =~ s/\\textbf//g; $string =~ s/\\enquote//g; $string =~ s/\\url/URL: /g; $string =~ s/\\doi/DOI: /g; $string =~ s/\\\\/ /g; - $string = decode('latex', $string); - $string =~ s/\\[a-zA-Z]+/ /g; - $string =~ s/\\\\/ /g; - $string =~ s/[\[\{\}\]]/ /g; - $string = encode_entities($string); - $string = XML::Entities::numify('all', $string); - $string =~ s/amp;//g; + $string =~ s/\$//g; + $string =~ s/\\checkcomma/,/g; $string =~ s/~/ /g; - $string =~ s/\s*([\.;,])/$1/g; + $string =~ s/[\{\}]//g; return $string; } + diff --git a/Build/source/texk/texlive/linked_scripts/crossrefware/bibzbladd.pl b/Build/source/texk/texlive/linked_scripts/crossrefware/bibzbladd.pl index 4059b7b0a12..f348cd4b946 100755 --- a/Build/source/texk/texlive/linked_scripts/crossrefware/bibzbladd.pl +++ b/Build/source/texk/texlive/linked_scripts/crossrefware/bibzbladd.pl @@ -8,12 +8,15 @@ bibzbladd.pl - add Zbl numbers to papers in a given bib file =head1 SYNOPSIS -bibzbladd [B<-o> I<output>] I<bib_file> +bibzbladd [B<-f>] [B<-o> I<output>] I<bib_file> =head1 OPTIONS =over 4 +=item B<-f> + +Force searching for Zbl numbers even if the entry already has one. =item B<-o> I<output> @@ -25,7 +28,7 @@ output file is formed by adding C<_zbl> to the input file =head1 DESCRIPTION The script reads a BibTeX file. It checks whether the entries have -Zbls. If now, tries to contact internet to get the numbers. The +Zbls. If not, tries to contact internet to get the numbers. The result is a BibTeX file with the fields C<zblnumber=...> added. @@ -38,7 +41,7 @@ Boris Veytsman =head1 COPYRIGHT AND LICENSE -Copyright (C) 2014 Boris Veytsman +Copyright (C) 2014-2016 Boris Veytsman This is free software. You may redistribute copies of it under the terms of the GNU General Public License @@ -48,16 +51,22 @@ extent permitted by law. =cut use strict; -use Text::BibTeX; -use Text::BibTeX::Name; +BEGIN { + # find files relative to our installed location within TeX Live + chomp(my $TLMaster = `kpsewhich -var-value=SELFAUTOPARENT`); # TL root + if (length($TLMaster)) { + unshift @INC, "$TLMaster/texmf-dist/scripts/bibtexperllibs"; + } +} +use IO::File; +use BibTeX::Parser; use Getopt::Std; use URI::Escape; use LWP::UserAgent; -use TeX::Encode; -my $USAGE="USAGE: $0 [-o output] file\n"; +my $USAGE="USAGE: $0 [-f] [-o output] file\n"; my $VERSION = <<END; -bibzbladd v1.0 +bibzbladd v2.0 This is free software. You may redistribute copies of it under the terms of the GNU General Public License http://www.gnu.org/licenses/gpl.html. There is NO WARRANTY, to the @@ -65,7 +74,7 @@ extent permitted by law. $USAGE END my %opts; -getopts('o:hV',\%opts) or die $USAGE; +getopts('fo:hV',\%opts) or die $USAGE; if ($opts{h} || $opts{V}){ print $VERSION; @@ -86,41 +95,45 @@ if ($opts{o}) { $outputfile = $opts{o}; } -my $input = new Text::BibTeX::File "$inputfile" or - die "Cannot BibTeX file $inputfile\n"; -my $output = new Text::BibTeX::File "> $outputfile" or - die "Cannot write to $outputfile\n"; +my $forceSearch=$opts{f}; + +my $input= IO::File->new($inputfile) or + die "Cannot find BibTeX file $inputfile\n$USAGE\n"; +my $output = IO::File->new("> $outputfile") or + die "Cannot write to $outputfile\n$USAGE\n"; + +my $parser=new BibTeX::Parser($input); + # Creating the HTTP parameters my $mirror = - "http://www.zentralblatt-math.org/MIRROR/zmath/en/search/"; + "https://zbmath.org/citationmatching/bibtex/match"; my $userAgent = LWP::UserAgent->new; -# Processing the input -while (my $entry = new Text::BibTeX::Entry $input) { +while (my $entry = $parser->next ) { if (!$entry->parse_ok()) { print STDERR "Cannot understand entry: "; $entry->print(*STDERR); print STDERR "Skipping this entry\n"; next; } - if (!(($entry->metatype() eq BTE_REGULAR))) { - $entry->write($output); + if (!($entry->type() eq 'ARTICLE')) { + print $output $entry->raw_bibtex(), "\n\n"; next; } - if ($entry->exists('zblnumber')) { - $entry->write($output); + if ($entry->has('zblnumber') && !$forceSearch) { + print $output $entry->raw_bibtex(), "\n\n"; next; } - # Now we have an entry with no Zbl. Let us get to work. - my $zbl = GetZbl($entry, $userAgent, $mirror); - if (length($zbl)) { - $entry->set('zblnumber',$zbl); - } - $entry->write($output); + # Now we have an entry with no Zbl. Let us get to work. + my $zbl = GetZbl($entry, $userAgent, $mirror); + if (length($zbl)) { + $entry->field('zblnumber',$zbl); + } + print $output $entry->to_string(), "\n\n"; } @@ -139,77 +152,16 @@ sub GetZbl { my @query; - my @names=$entry->names ('author'); - if (scalar(@names)) { - foreach my $name (@names) { - my @lastnames = $name->part ('last'); - if (scalar(@lastnames)) { - foreach my $lastname (@lastnames) { - push @query, "au:$lastname"; - } - } - } - } - if (my $title = $entry->get('title')) { - push @query, "ti:$title"; - } + my $string=uri_escape_utf8($entry->to_string()); - if (my $year = $entry->get('year')) { - push @query, "py:$year"; - } - - if (my $year = $entry->get('year')) { - push @query, "py:$year"; - } - my $type = $entry->type; - if ($type eq 'article') { - push @query, "dt:j"; - } - if ($type eq 'book') { - push @query, "dt:b"; - } - if ($type eq 'inproceedings' || $type eq 'incollection') { - push @query, "dt:a"; - } - - my $source = ""; - if ($type eq 'article') { - if ($entry->get('journal')) { - $source .= $entry->get('journal'); - } - if (my $vol=$entry->get('volume')) { - $source .= ",$vol"; - } - if (my $pages=$entry->get('pages')) { - $source .= ",$pages"; - } - } else { - if (my $bt=$entry->get('booktitle')) { - $source .= "$bt"; - } - } - - if ($source) { - push @query, "so:$source"; - } - - - my $qstring = join(" & ", @query); -# print STDERR "$qstring\n"; - my $form; - - $form->{name}='form'; - $form->{q} = $qstring; - $form->{type} = "ascii"; - $form->{submit} = 'Search'; - - my $response = $userAgent->post($mirror, $form); - if ($response->decoded_content =~ /^an:\s*Zbl\s*(\S+)\s*$/m) { + my $response = $userAgent->get("$mirror?bibtex=$string"); + if ($response->decoded_content =~ /^\s*"zbl_id":\s*"(.*)",\s*$/m) { return $1; - } else { - return (""); + } else { + return (""); } + } diff --git a/Build/source/texk/texlive/linked_scripts/crossrefware/ltx2crossrefxml.pl b/Build/source/texk/texlive/linked_scripts/crossrefware/ltx2crossrefxml.pl index 5824511cdbf..f9585399cfa 100755 --- a/Build/source/texk/texlive/linked_scripts/crossrefware/ltx2crossrefxml.pl +++ b/Build/source/texk/texlive/linked_scripts/crossrefware/ltx2crossrefxml.pl @@ -56,7 +56,7 @@ Boris Veytsman =head1 COPYRIGHT AND LICENSE -Copyright (C) 2012-2015 Boris Veytsman +Copyright (C) 2012-2016 Boris Veytsman This is free software. You may redistribute copies of it under the terms of the GNU General Public License @@ -67,18 +67,22 @@ extent permitted by law. =cut use strict; + + BEGIN { + # find files relative to our installed location within TeX Live + chomp(my $TLMaster = `kpsewhich -var-value=SELFAUTOPARENT`); # TL root + if (length($TLMaster)) { + unshift @INC, "$TLMaster/texmf-dist/scripts/bibtexperllibs"; + } + } use POSIX qw(strftime); - use Text::BibTeX; - use Text::BibTeX::Name; - use TeX::Encode; - use Encode; - use HTML::Entities; - use XML::Entities; + use BibTeX::Parser::Author; + use LaTeX::ToUnicode qw (convert); use File::Basename; use File::Spec; my $USAGE="USAGE: $0 [-c config] [-o output] file1 file2 ...\n"; my $VERSION = <<END; -ltx2crossrefxml v1.0 +ltx2crossrefxml v2.0 This is free software. You may redistribute copies of it under the terms of the GNU General Public License http://www.gnu.org/licenses/gpl.html. There is NO WARRANTY, to the @@ -88,6 +92,8 @@ END use Getopt::Std; my %opts; getopts('c:o:hV',\%opts) or die $USAGE; + use utf8; + binmode(STDOUT, ":utf8"); if ($opts{h} || $opts{V}){ print $VERSION; @@ -102,6 +108,7 @@ if ($opts{h} || $opts{V}){ if (defined($opts{o})) { open (OUT, ">$opts{o}") or die "Cannot open file $opts{o} for writing\n"; + binmode(OUT, ":utf8") } @@ -292,7 +299,7 @@ END ############################################################### sub PrintPaper { my $paper = shift; - my $title=SanitizeText($paper->{title}); + my $title=convert($paper->{title}); my $url=GetURL($paper); print OUT <<END; <journal_article publication_type="full_text"> @@ -358,9 +365,7 @@ END ############################################################### sub SanitizeText { my $string = shift; - # There is a bug in the decode function, which we need to work - # around: it adds space to constructions like \o x - $string =~ s/(\\[a-zA-Z])\s+/$1/g; + $string = convert($string); $string =~ s/\\newblock//g; $string =~ s/\\bgroup//g; $string =~ s/\\egroup//g; @@ -373,27 +378,9 @@ sub SanitizeText { $string =~ s/\\doi/DOI: /g; $string =~ s/\\\\/ /g; $string =~ s/\$//g; - # Another bug in decode: it does not understan macrons - $string =~ s/\\=(A|\{A\})/##SANITIZE#MACRON##256;/g; - $string =~ s/\\=(a|\{a\})/##SANITIZE#MACRON##257;/g; - $string =~ s/\\=(E|\{E\})/##SANITIZE#MACRON##274;/g; - $string =~ s/\\=(e|\{e\})/##SANITIZE#MACRON##275;/g; - $string =~ s/\\=(I|\{I\})/##SANITIZE#MACRON##298;/g; - $string =~ s/\\=(i|\{i\})/##SANITIZE#MACRON##299;/g; - $string =~ s/\\=(O|\{O\})/##SANITIZE#MACRON##332;/g; - $string =~ s/\\=(o|\{o\})/##SANITIZE#MACRON##333;/g; - $string =~ s/\\=(U|\{U\})/##SANITIZE#MACRON##362;/g; - $string =~ s/\\=(u|\{u\})/##SANITIZE#MACRON##363;/g; - $string = decode('latex', $string); - $string =~ s/\\[a-zA-Z]+/ /g; - $string =~ s/\\\\/ /g; - $string =~ s/[\[\{\}\]]/ /g; - $string = encode_entities($string); - $string = XML::Entities::numify('all', $string); - $string =~ s/amp;//g; + $string =~ s/\\checkcomma/,/g; $string =~ s/~/ /g; - $string =~ s/\s*([\.;,])/$1/g; - $string =~ s/##SANITIZE#MACRON##(\d+);/&#$1;/g; + $string =~ s/[\{\}]//g; return $string; } @@ -403,11 +390,10 @@ sub SanitizeText { sub PrintAuthor { my $author=shift; - my $person=new Text::BibTeX::Name ($author); + my $person=new BibTeX::Parser::Author ($author); - if ($person->part('first')) { - my @tokens = $person->part('first'); - my $line = join(" ", @tokens); + if ($person->first) { + my $line = $person->first; $line = SanitizeText($line); print OUT <<END; <given_name>$line</given_name> @@ -415,16 +401,19 @@ END } - if ($person->part('last')) { - my $line = SanitizeText($person->part('last')); + if ($person->last) { + my $line = SanitizeText($person->last); + if ($person->von) { + $line = SanitizeText($person->von)." $line"; + } print OUT <<END; <surname>$line</surname> END } - if ($person->part('jr')) { - my $line = SanitizeText($person->part('jr')); + if ($person->jr) { + my $line = SanitizeText($person->jr); print OUT <<END; <suffix>$line</suffix> END diff --git a/Master/texmf-dist/doc/man/man1/bibdoiadd.1 b/Master/texmf-dist/doc/man/man1/bibdoiadd.1 index 00103374766..53fe9f18313 100644 --- a/Master/texmf-dist/doc/man/man1/bibdoiadd.1 +++ b/Master/texmf-dist/doc/man/man1/bibdoiadd.1 @@ -124,7 +124,7 @@ .\" ======================================================================== .\" .IX Title "bibdoiadd 1" -.TH bibdoiadd 1 "2014-10-18" "" "CROSSREF LIBRARY" +.TH bibdoiadd 1 "2016-02-14" "" "CROSSREF LIBRARY" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -133,13 +133,16 @@ bibdoiadd.pl \- add DOI numbers to papers in a given bib file .SH "SYNOPSIS" .IX Header "SYNOPSIS" -bibdoiadd [\fB\-c\fR \fIconfig_file\fR] [\fB\-o\fR \fIoutput\fR] \fIbib_file\fR +bibdoiadd [\fB\-c\fR \fIconfig_file\fR] [\fB\-f\fR] [\fB\-o\fR \fIoutput\fR] \fIbib_file\fR .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-c\fR \fIconfig_file\fR" 4 .IX Item "-c config_file" Configuration file. If this file is absent, some defaults are used. See below for its format. +.IP "\fB\-f\fR" 4 +.IX Item "-f" +Force checking doi number even if one is present .IP "\fB\-o\fR \fIoutput\fR" 4 .IX Item "-o output" Output file. If this option is not used, the name for the @@ -186,7 +189,7 @@ members. Boris Veytsman .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" -Copyright (C) 2014 Boris Veytsman +Copyright (C) 2014\-2016 Boris Veytsman .PP This is free software. You may redistribute copies of it under the terms of the \s-1GNU\s0 General Public License diff --git a/Master/texmf-dist/doc/man/man1/bibdoiadd.man1.pdf b/Master/texmf-dist/doc/man/man1/bibdoiadd.man1.pdf Binary files differindex 46c4540b164..7e5a2cacaff 100644 --- a/Master/texmf-dist/doc/man/man1/bibdoiadd.man1.pdf +++ b/Master/texmf-dist/doc/man/man1/bibdoiadd.man1.pdf diff --git a/Master/texmf-dist/doc/man/man1/bibzbladd.1 b/Master/texmf-dist/doc/man/man1/bibzbladd.1 index f2d5aca3047..f795148d0a7 100644 --- a/Master/texmf-dist/doc/man/man1/bibzbladd.1 +++ b/Master/texmf-dist/doc/man/man1/bibzbladd.1 @@ -124,7 +124,7 @@ .\" ======================================================================== .\" .IX Title "bibzbladd 1" -.TH bibzbladd 1 "2014-10-18" "" "CROSSREF LIBRARY" +.TH bibzbladd 1 "2016-02-14" "" "CROSSREF LIBRARY" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -133,9 +133,12 @@ bibzbladd.pl \- add Zbl numbers to papers in a given bib file .SH "SYNOPSIS" .IX Header "SYNOPSIS" -bibzbladd [\fB\-o\fR \fIoutput\fR] \fIbib_file\fR +bibzbladd [\fB\-f\fR] [\fB\-o\fR \fIoutput\fR] \fIbib_file\fR .SH "OPTIONS" .IX Header "OPTIONS" +.IP "\fB\-f\fR" 4 +.IX Item "-f" +Force searching for Zbl numbers even if the entry already has one. .IP "\fB\-o\fR \fIoutput\fR" 4 .IX Item "-o output" Output file. If this option is not used, the name for the @@ -143,7 +146,7 @@ output file is formed by adding \f(CW\*(C`_zbl\*(C'\fR to the input file .SH "DESCRIPTION" .IX Header "DESCRIPTION" The script reads a BibTeX file. It checks whether the entries have -Zbls. If now, tries to contact internet to get the numbers. The +Zbls. If not, tries to contact internet to get the numbers. The result is a BibTeX file with the fields \&\f(CW\*(C`zblnumber=...\*(C'\fR added. .PP @@ -154,7 +157,7 @@ is derived by adding the suffix \f(CW\*(C`_zbl\*(C'\fR to the output file. Boris Veytsman .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" -Copyright (C) 2014 Boris Veytsman +Copyright (C) 2014\-2016 Boris Veytsman .PP This is free software. You may redistribute copies of it under the terms of the \s-1GNU\s0 General Public License diff --git a/Master/texmf-dist/doc/man/man1/bibzbladd.man1.pdf b/Master/texmf-dist/doc/man/man1/bibzbladd.man1.pdf Binary files differindex 0e7e13a2e82..9d45ecec113 100644 --- a/Master/texmf-dist/doc/man/man1/bibzbladd.man1.pdf +++ b/Master/texmf-dist/doc/man/man1/bibzbladd.man1.pdf diff --git a/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.1 b/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.1 index 9a605700cff..f1d5afcf43e 100644 --- a/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.1 +++ b/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.1 @@ -124,7 +124,7 @@ .\" ======================================================================== .\" .IX Title "ltx2crossrefxml 1" -.TH ltx2crossrefxml 1 "2015-08-18" "" "CROSSREF LIBRARY" +.TH ltx2crossrefxml 1 "2016-02-14" "" "CROSSREF LIBRARY" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -172,7 +172,7 @@ The configuration file is mostly self-explanatory: it has comments Boris Veytsman .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" -Copyright (C) 2012\-2015 Boris Veytsman +Copyright (C) 2012\-2016 Boris Veytsman .PP This is free software. You may redistribute copies of it under the terms of the \s-1GNU\s0 General Public License diff --git a/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.man1.pdf b/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.man1.pdf Binary files differindex 92939671c9c..16d5e55b5b1 100644 --- a/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.man1.pdf +++ b/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.man1.pdf diff --git a/Master/texmf-dist/doc/support/crossrefware/Makefile b/Master/texmf-dist/doc/support/crossrefware/Makefile index 2126040c452..76089804b3f 100644 --- a/Master/texmf-dist/doc/support/crossrefware/Makefile +++ b/Master/texmf-dist/doc/support/crossrefware/Makefile @@ -37,4 +37,5 @@ crossrefware.tex: ${SCRIPTS} pod2latex -modify -full -prefile head.ltx -out $@ $+ archive: all clean - cd ..; tar -czvf crossrefware.tgz crossref --exclude CVS
\ No newline at end of file + cd ..; tar -czvf crossrefware.tgz crossref --exclude CVS \ + --exclude test --exclude *.bib
\ No newline at end of file diff --git a/Master/texmf-dist/doc/support/crossrefware/README b/Master/texmf-dist/doc/support/crossrefware/README index 276cb5da18d..2d64b4ac5fb 100644 --- a/Master/texmf-dist/doc/support/crossrefware/README +++ b/Master/texmf-dist/doc/support/crossrefware/README @@ -1,13 +1,15 @@ Crossrefware Bundle - version 1.1 + version 2.0 -Scripts useful for working with crossref.org. +Scripts useful for working with crossref.org and Zentralblatt MATH. bibdoiadd.pl - add DOI numbers to papers in a given bib file bibzbladd.pl - add Zbl numbers to papers in a given bib file ltx2crossrefxml.pl - a tool for creation of XML files for submitting to crossref.org +The scripts use bibtexperllibs libraries from CTAN + Installation: 1. Move *.pl files to the binaries directory in your system. @@ -19,4 +21,8 @@ Installation: Changes: - version 1.1: workaround for a bug with macrons in TeX::Encode
\ No newline at end of file + Version 2.0: Moved to BibTeX::Parser suite. + Now we use new Zbmath interface. + Now we use bibtexperllibs libraries + + Version 1.1: workaround for a bug with macrons in TeX::Encode
\ No newline at end of file diff --git a/Master/texmf-dist/doc/support/crossrefware/aomsample.bib b/Master/texmf-dist/doc/support/crossrefware/aomsample.bib deleted file mode 100644 index 1ca4c7908eb..00000000000 --- a/Master/texmf-dist/doc/support/crossrefware/aomsample.bib +++ /dev/null @@ -1,277 +0,0 @@ - -@Article{dihe:newdir, - author = {W. Diffie and E. Hellman}, - title = {New directions in Cryptography}, - journal = {IEEE Transactions on Information Theory}, - year = 1976, - volume = 22, - number = 5, - pages = {644--654} -} - - - - - -@Misc{fre:cichon, - author = {D. H. Fremlin}, - title = {Cichon's Diagram}, - howpublished = {presented at the -S{\'e}minaire Initiation {\`a} l'Analyse, G. Choquet, M. Rogalski, J. -Saint Raymond, at the Universit{\'e} Pierre et Marie Curie, Paris, 23e -ann{\'e}e.}, - year = {1983/194} -} - - - - - -@Book{fre:riesz, - author = {D. H. Fremlin}, - title = {Topological {R}iesz Spaces and Measure Theory}, - publisher = {Cambridge University Press}, - year = 2008 -} - - -@Article{gouja:lagrmeth, - author = {I. P. Goulden and D. M. Jackson}, - title = {The Enumeration of Directed -Closed {E}uler Trails and Directed {H}amiltonian Circuits by -{L}angrangian Methods}, - journal = {European Journal of Combinatorics}, - year = 1981, - volume = 2, - pages = {131--212} -} - - - -@Book{hapa:graphenum, - author = {F. Harary and E. M. Palmer}, - title = {Graphical Enumeration}, - publisher = {Academic Press}, - year = 1973 -} - - - - -@InProceedings{imlelu:oneway, - author = {R. Impagliazzo and L. Levin and M. Luby}, - title = {Pseudo-random Generation from One-Way Functions}, - booktitle = {Proc. 21st STOC}, - pages = {12--24}, - year = 1989, - venue = {Seattle, WA, USA}, - address = {New York}, - publisher = {ACM} -} - - - - -@TechReport{komiyo:unipfunc, - author = {M. Kojima and S. Mizuno and A. Yoshise}, - title = {A New Continuation Method -for Complementarity Problems With Uniform $p$-Functions}, - institution = {Tokyo Inst. of Technology, Dept. of Information Sciences}, - year = 1987, - number = {B-194}, - address = {Tokyo} -} - - - - -@TechReport{komiyo:lincomp, - author = {M. Kojima and S. Mizuno and A. Yoshise}, - title = {A Polynomial-Time Algorithm For a Class of Linear -Complementarity Problems}, - institution = {Tokyo Inst. of Technology, Dept. of Information Sciences}, - year = 1987, - number = {B-193}, - address = {Tokyo} -} - - - - -@Article{liuchow:formalsum, - author = {C. J. Liu and Yutze Chow}, - title = {On Operator and Formal Sum Methods for -Graph Enumeration Problems}, - journal = {SIAM Journal of Algorithms and Discrete Methods}, - year = 1984, - volume = 5, - pages = {384--438} -} - - - - -@Article{mami:matrixth, - author = {M. Marcus and H. Minc}, - title = {A Survey of Matrix Theory and Matrix -Inequalities}, - journal = {Complementary Series in Mathematics}, - year = 1964, - volume = 14, - pages = {21--48} -} - - - - -@TechReport{miyoki:lincomp, - author = {S. Mizuno and A. Yoshise and T. Kikuchi}, - title = {Practical Polynomial Time -Algorithms for Linear Complementarity Problems}, - institution = {Tokyo Inst. of Technology, Dept. of Industrial Engineering -and Management}, - year = 1988, - number = 13, - address = {Tokyo}, - month = {April} -} - - - - -@TechReport{moad:quadpro, - author = {R. D. Monteiro and I. Adler}, - title = {Interior Path Following Primal-Dual -Algorithms, Part {II}: Quadratic Programming}, - institution = {Dept. of Industrial Engineering and Operations Research}, - year = 1987, - type = {Working Paper}, - month = {August} -} - - - - -@Book{ste:sint, - author = {E. M. Stein}, - title = {Singular Integrals and Differentiability Properties -of Functions}, - publisher = {Princeton Univ. Press}, - year = 1970, - address = {Princeton, NJ} -} - - - - - -@PhdThesis{ye:intalg, - author = {Y. Ye}, - title = {Interior Algorithms for Linear, Quadratic and Linearly -Constrained Convex Programming}, - school = {Stanford Univ., Dept. of Engineering--Economic Systems}, - year = 1987, - address = {Palo Alto, CA}, - month = {July} -} - -@article{Lenstra74, -author= {Lenstra, Jr., Hendrik W. and Oort, Frans}, -title= {Simple abelian varieties having a prescribed formal isogeny type.}, -journal="J. Pure Appl. Algebra ", -volume= 4 , -pages= {47--53}, -year= 1974, -doi = "10.1016/0022-4049(74)90029-2", -mrnumber = {0279.14009}, -url = {http://www.math.leidenuniv.nl/~hwl/PUBLICATIONS/1973a/art.pdf} -} - - - -@Unpublished{Minasyan08, - author = {A. Minasyan and D. Osin}, - title = {Normal Automorphisms of Relatively Hyperbolic Groups}, - arxiv = {0809.2408}, - year = 2008 -} - -@Article{Zarhin92, - key = {Zarh92}, - author = {Zarhin, {\relax Yu}ri G.}, - title = {Abelian Varieties Having a Reduction of {K3} Type}, - journal = {Duke Math J.}, - year = 1992, - volume = 65, - number = 3, - pages = {511--527}, - mrnumber= {1154181}, -} - -@Book{Arnold89:MathMethodsMechanics, - author = {Arnold, V. I.}, - title = {Mathematical Methods of Classical Mechanics}, - publisher = {Springer}, - year = 1989, - volume = 60, - series = {Graduate Texts in Mathematics}, - address = {New York}, - edition = {Second} -} - -@Book{Michal48, - author = {A. D. Michal}, - title = {Matrix and Tensor Calculus}, - publisher = {John Wiley \& Sons, Inc.; Chapman \& Hall, Ltd.}, - year = 1948, - series = {GALCIT Aeronautical Series}, - address = {New York; London} -} - - -@Article{Michal38, - author = {A. D. Michal}, - title = {Differential Calculus in Linear Topological Spaces}, - journal = {Proc. nat. Acad. Sci. USA}, - year = 1938, - volume = 24, - jfmnumber = {64.0366.02}, - pages = {340--342} -} - -@Unpublished{Zarhin:AG, - author = {Zarhin, {\relax Yu}ri G.}, - title = {On Abel Groups}, - sortyear = 2200, - note = {Private Communication} -} - -@Unpublished{Zarhin:AC, - author = {Zarhin, {\relax Yu}ri G.}, - title = {Algebra and Cryptography}, - sortyear = 2100, - note = {Private Communication} -} - -@incollection{degroot1992stochastic, - author = {C. de Groot and D. W{\"u}rtz and M. Hanf and - R. Peikert and T. Koller and K. H. Hoffmann}, - title = {Stochastic Optimization---Efficient Algorithms to - Solve Complex Problems}, - booktitle = {System Modelling and Optimization, Proceedings of the Fifteenth IFIP Conference}, - year = 1992, - editor = {P. Kall}, - pages = {546--555}, - venue = {Z{\"u}rich}, - publisher = {Springer-Verlag}, -} - -@Book{Knuth94:TheTeXbook, - author = {Knuth, Donald Ervin}, - title = {The \TeX book}, - publisher = {Addison-Wesley Publishing Company}, - year = 1994, - series = {Computers \& Typesetting A}, - address = {Reading, MA}, - titlenote = {with illustrations by Duane Bibby} -} diff --git a/Master/texmf-dist/doc/support/crossrefware/citations.bib b/Master/texmf-dist/doc/support/crossrefware/citations.bib deleted file mode 100644 index 005b64998cc..00000000000 --- a/Master/texmf-dist/doc/support/crossrefware/citations.bib +++ /dev/null @@ -1,811 +0,0 @@ - -@incollection {amicevelu75, - MRKEY = {MR0376534}, - AUTHOR = {Amice, Yvette and V{\'e}lu, Jacques}, - TITLE = {Distributions {$p$}-adiques associ\'ees aux s\'eries de - {H}ecke}, - BOOKTITLE = {Journ\'ees {A}rithm\'etiques de {B}ordeaux ({C}onf., {U}niv. - {B}ordeaux, {B}ordeaux, 1974)}, - PAGES = {119--131. Ast\'erisque, Nos. 24-25}, - PUBLISHER = {Soc. Math. France}, - ADDRESS = {Paris}, - YEAR = {1975}, - MRCLASS = {10D05}, - MRNUMBER = {0376534 (51 \#12709}, -MRREVIEWER = {O. M. Fomenko}, -} - -%%%% - -@article {ashstevens86, - MRKEY = {MR860675}, - AUTHOR = {Ash, Avner and Stevens, Glenn}, - TITLE = {Modular forms in characteristic {$l$} and special values of - their {$L$}-functions}, - JOURNAL = {Duke Math. J.}, - FJOURNAL = {Duke Mathematical Journal}, - VOLUME = {53}, - YEAR = {1986}, - NUMBER = {3}, - PAGES = {849--868}, - ISSN = {0012-7094}, - CODEN = {DUMJAO}, - MRCLASS = {11F75}, - MRNUMBER = {860675 (88h:11036}, - URL = {http://dx.doi.org/10.1215/S0012-7094-86-05346-9}, -} - -%%%% - - -@incollection {MR760999, - MRKEY = {MR760999}, - AUTHOR = {Be{\u\i}linson, A. A.}, - TITLE = {Higher regulators and values of {$L$}-functions}, - BOOKTITLE = {Current problems in mathematics, {V}ol. 24}, - SERIES = {Itogi Nauki i Tekhniki}, - PAGES = {181--238}, - PUBLISHER = {Akad. Nauk SSSR Vsesoyuz. Inst. Nauchn. i Tekhn. Inform.}, - ADDRESS = {Moscow}, - YEAR = {1984}, - MRCLASS = {11R42 (11G40 11G45 11R70 14C35 18F25 19F27)}, - MRNUMBER = {760999 (86h:11103}, -MRREVIEWER = {Daniel R. Grayson}, -} - -%%%% - - -@article {bergerlizhu04, - MRKEY = {MR2060368}, - AUTHOR = {Berger, Laurent and Li, Hanfeng and Zhu, Hui June}, - TITLE = {Construction of some families of 2-dimensional crystalline - representations}, - JOURNAL = {Math. Ann.}, - FJOURNAL = {Mathematische Annalen}, - VOLUME = {329}, - YEAR = {2004}, - NUMBER = {2}, - PAGES = {365--377}, - ISSN = {0025-5831}, - CODEN = {MAANA}, - MRCLASS = {11F80 (11F33 11F85 14F30)}, - MRNUMBER = {2060368 (2005k:11104}, -MRREVIEWER = {Abdellah Mokrane}, - URL = {http://dx.doi.org/10.1007/s00208-004-0529-y}, -} - -%%%% - -%%%% - -@inproceedings {besser00, - MRKEY = {MR1809626}, - AUTHOR = {Besser, Amnon}, - TITLE = {Syntomic regulators and {$p$}-adic integration. {I}. {R}igid - syntomic regulators}, - BOOKTITLE = {Proceedings of the {C}onference on {$p$}-adic {A}spects of the - {T}heory of {A}utomorphic {R}epresentations ({J}erusalem, - 1998)}, - JOURNAL = {Israel J. Math.}, - FJOURNAL = {Israel Journal of Mathematics}, - VOLUME = {120}, - YEAR = {2000}, - NUMBER = {part B}, - PAGES = {291--334}, - ISSN = {0021-2172}, - CODEN = {ISJMAP}, - MRCLASS = {14F43 (11G25 14F30 14G22 19F27)}, - MRNUMBER = {1809626 (2002c:14035}, -MRREVIEWER = {Takao Yamazaki}, - URL = {http://dx.doi.org/10.1007/BF02834843}, -} - -%%%% - -@incollection {blochkato90, - MRKEY = {MR1086888}, - AUTHOR = {Bloch, Spencer and Kato, Kazuya}, - TITLE = {{$L$}-functions and {T}amagawa numbers of motives}, - BOOKTITLE = {The {G}rothendieck {F}estschrift, {V}ol.\ {I}}, - SERIES = {Progr. Math.}, - VOLUME = {86}, - PAGES = {333--400}, - PUBLISHER = {Birkh\"auser Boston}, - ADDRESS = {Boston, MA}, - YEAR = {1990}, - MRCLASS = {11G40 (11G09 14C35 14F30 14G10)}, - MRNUMBER = {1086888 (92g:11063}, -MRREVIEWER = {Ehud de Shalit}, -} - -%%%% - -@article {colemanedixhoven98, - MRKEY = {MR1600034}, - AUTHOR = {Coleman, Robert F. and Edixhoven, Bas}, - TITLE = {On the semi-simplicity of the {$U\sb p$}-operator on modular - forms}, - JOURNAL = {Math. Ann.}, - FJOURNAL = {Mathematische Annalen}, - VOLUME = {310}, - YEAR = {1998}, - NUMBER = {1}, - PAGES = {119--127}, - ISSN = {0025-5831}, - MRCLASS = {11F25 (11F11 11F33 11F85)}, - MRNUMBER = {1600034 (99b:11043}, -MRREVIEWER = {Alexey A. Panchishkin}, - URL = {http://dx.doi.org/10.1007/s002080050140}, -} - -%%%% - - -%%%% - -@book {deligne77, - MRKEY = {MR0463174}, - AUTHOR = {Deligne, P.}, - TITLE = {Cohomologie \'etale}, - SERIES = {Lecture Notes in Mathematics, Vol. 569}, - NOTE = {S{\'e}minaire de G{\'e}om{\'e}trie Alg{\'e}brique du - Bois-Marie SGA 4${1{\o}er 2}$, - Avec la collaboration de J. F. Boutot, A. Grothendieck, L. - Illusie et J. L. Verdier}, - PUBLISHER = {Springer-Verlag}, - ADDRESS = {Berlin}, - YEAR = {1977}, - PAGES = {iv+312pp}, - MRCLASS = {14F20}, - MRNUMBER = {0463174 (57 \#3132}, -MRREVIEWER = {J. S. Milne}, -} - -%%%% - -@incollection {delignerapoport73, - MRKEY = {MR0337993}, - AUTHOR = {Deligne, P. and Rapoport, M.}, - TITLE = {Les sch\'emas de modules de courbes elliptiques}, - BOOKTITLE = {Modular functions of one variable, {II} ({P}roc. {I}nternat. - {S}ummer {S}chool, {U}niv. {A}ntwerp, {A}ntwerp, 1972)}, - PAGES = {143--316. Lecture Notes in Math., Vol. 349}, - PUBLISHER = {Springer}, - ADDRESS = {Berlin}, - YEAR = {1973}, - MRCLASS = {14K10 (10D05)}, - MRNUMBER = {0337993 (49 \#2762}, -MRREVIEWER = {T. Oda}, -} - -%%%% - -@incollection {diamondim95, - MRKEY = {MR1357209}, - AUTHOR = {Diamond, Fred and Im, John}, - TITLE = {Modular forms and modular curves}, - BOOKTITLE = {Seminar on {F}ermat's {L}ast {T}heorem ({T}oronto, {ON}, - 1993--1994)}, - SERIES = {CMS Conf. Proc.}, - VOLUME = {17}, - PAGES = {39--133}, - PUBLISHER = {Amer. Math. Soc.}, - ADDRESS = {Providence, RI}, - YEAR = {1995}, - MRCLASS = {11F11 (11F25 11G05 11G18)}, - MRNUMBER = {1357209 (97g:11044}, -} - -%%%% - - -%%%% - -@article {flach92, - MRKEY = {MR1172693}, - AUTHOR = {Flach, Matthias}, - TITLE = {A finiteness theorem for the symmetric square of an elliptic - curve}, - JOURNAL = {Invent. Math.}, - FJOURNAL = {Inventiones Mathematicae}, - VOLUME = {109}, - YEAR = {1992}, - NUMBER = {2}, - PAGES = {307--327}, - ISSN = {0020-9910}, - CODEN = {INVMBH}, - MRCLASS = {11G40 (11F80 11G05 19F27)}, - MRNUMBER = {1172693 (93g:11066}, -MRREVIEWER = {Bas Edixhoven}, - URL = {http://dx.doi.org/10.1007/BF01232029}, -} - -%%%% - - -@article {huber00, - MRKEY = {MR1775312}, - AUTHOR = {Huber, Annette}, - TITLE = {Realization of {V}oevodsky's motives}, - JOURNAL = {J. Algebraic Geom.}, - FJOURNAL = {Journal of Algebraic Geometry}, - VOLUME = {9}, - YEAR = {2000}, - NUMBER = {4}, - PAGES = {755--799}, - ISSN = {1056-3911}, - MRCLASS = {14F42 (14F30 18E30)}, - MRNUMBER = {1775312 (2002d:14029}, -MRREVIEWER = {Yuichiro Takeda}, -} - -%%%% - -@article {iwahorimatsumoto65, - MRKEY = {MR0185016}, - AUTHOR = {Iwahori, N. and Matsumoto, H.}, - TITLE = {On some {B}ruhat decomposition and the structure of the - {H}ecke rings of {${\germ p}$}-adic {C}hevalley groups}, - JOURNAL = {Inst. Hautes \'Etudes Sci. Publ. Math.}, - FJOURNAL = {Institut des Hautes \'Etudes Scientifiques. Publications - Math\'ematiques}, - NUMBER = {25}, - YEAR = {1965}, - PAGES = {5--48}, - ISSN = {0073-8301}, - MRCLASS = {20.70 (14.50)}, - MRNUMBER = {0185016 (32 \#2486}, -MRREVIEWER = {Rimhak Ree}, -} - -%%%% - -@book {jacquet72, - MRKEY = {MR0562503}, - AUTHOR = {Jacquet, Herv{\'e}}, - TITLE = {Automorphic forms on {${\rm GL}(2)$}. {P}art {II}}, - SERIES = {Lecture Notes in Mathematics, Vol. 278}, - PUBLISHER = {Springer-Verlag}, - ADDRESS = {Berlin}, - YEAR = {1972}, - PAGES = {xiii+142}, - MRCLASS = {10D15 (22E55)}, - MRNUMBER = {0562503 (58 \#27778}, -MRREVIEWER = {Stephen Gelbart}, -} - -%%%% - -@article {jannsen88, - MRKEY = {MR929536}, - AUTHOR = {Jannsen, Uwe}, - TITLE = {Continuous \'etale cohomology}, - JOURNAL = {Math. Ann.}, - FJOURNAL = {Mathematische Annalen}, - VOLUME = {280}, - YEAR = {1988}, - NUMBER = {2}, - PAGES = {207--245}, - ISSN = {0025-5831}, - CODEN = {MAANA}, - MRCLASS = {14F20 (11G25)}, - MRNUMBER = {929536 (89a:14022}, -MRREVIEWER = {Wayne Raskind}, - URL = {http://dx.doi.org/10.1007/BF01456052}, -} - -%%%% - - -%%%% - -@article {kato04, - MRKEY = {MR2104361}, - AUTHOR = {Kato, Kazuya}, - TITLE = {{$p$}-adic {H}odge theory and values of zeta functions of - modular forms}, - NOTE = {Cohomologies $p$-adiques et applications arithm{\'e}tiques. - III}, - JOURNAL = {Ast\'erisque}, - FJOURNAL = {Ast\'erisque}, - NUMBER = {295}, - YEAR = {2004}, - PAGES = {ix, 117--290}, - ISSN = {0303-1179}, - MRCLASS = {11F85 (11F67 11G40 11R33 11S80 14G10 14G35)}, - MRNUMBER = {2104361 (2006b:11051}, -MRREVIEWER = {Fabrizio Andreatta}, -} - -%%%% - -@book {katok92, - MRKEY = {MR1177168}, - AUTHOR = {Katok, Svetlana}, - TITLE = {Fuchsian groups}, - SERIES = {Chicago Lectures in Mathematics}, - PUBLISHER = {University of Chicago Press}, - ADDRESS = {Chicago, IL}, - YEAR = {1992}, - PAGES = {x+175}, - ISBN = {0-226-42582-7; 0-226-42583-5}, - MRCLASS = {20H10 (30F35)}, - MRNUMBER = {1177168 (93d:20088}, -MRREVIEWER = {I. Kra}, -} - -%%%% - -@article {kurihara02, - MRKEY = {MR1914621}, - AUTHOR = {Kurihara, Masato}, - TITLE = {On the {T}ate {S}hafarevich groups over cyclotomic fields of - an elliptic curve with supersingular reduction. {I}}, - JOURNAL = {Invent. Math.}, - FJOURNAL = {Inventiones Mathematicae}, - VOLUME = {149}, - YEAR = {2002}, - NUMBER = {1}, - PAGES = {195--224}, - ISSN = {0020-9910}, - CODEN = {INVMBH}, - MRCLASS = {11G05 (11R23)}, - MRNUMBER = {1914621 (2003f:11078}, -MRREVIEWER = {Vinayak Vatsal}, - URL = {http://dx.doi.org/10.1007/s002220100206}, -} - -%%%% - -@article {landsburg91, - MRKEY = {MR1115990}, - AUTHOR = {Landsburg, Steven E.}, - TITLE = {Relative {C}how groups}, - JOURNAL = {Illinois J. Math.}, - FJOURNAL = {Illinois Journal of Mathematics}, - VOLUME = {35}, - YEAR = {1991}, - NUMBER = {4}, - PAGES = {618--641}, - ISSN = {0019-2082}, - CODEN = {IJMTAW}, - MRCLASS = {19E15 (14C15 14C35)}, - MRNUMBER = {1115990 (92i:19007}, -MRREVIEWER = {Luca Barbieri Viale}, - URL = {http://projecteuclid.org/euclid.ijm/1255987675}, -} - -%%%% - -@book {lang02, - MRKEY = {MR1878556}, - AUTHOR = {Lang, Serge}, - TITLE = {Algebra}, - SERIES = {Graduate Texts in Mathematics}, - VOLUME = {211}, - EDITION = {third}, - PUBLISHER = {Springer-Verlag}, - ADDRESS = {New York}, - YEAR = {2002}, - PAGES = {xvi+914}, - ISBN = {0-387-95385-X}, - MRCLASS = {00A05 (15-02)}, - MRNUMBER = {1878556 (2003e:00003}, - URL = {http://dx.doi.org/10.1007/978-1-4613-0041-0}, -} - -%%%% - - -%%%% - -@article {levine04, - MRKEY = {MR1740880}, - AUTHOR = {Levine, Marc}, - TITLE = {Inverting the motivic {B}ott element}, - JOURNAL = {$K$-Theory}, - FJOURNAL = {$K$-Theory. An Interdisciplinary Journal for the Development, - Application, and Influence of $K$-Theory in the Mathematical - Sciences}, - VOLUME = {19}, - YEAR = {2000}, - NUMBER = {1}, - PAGES = {1--28}, - ISSN = {0920-3036}, - CODEN = {KTHEEO}, - MRCLASS = {14F42 (14F20 19D45 19E08 19E20)}, - MRNUMBER = {1740880 (2001k:14048}, - URL = {http://dx.doi.org/10.1023/A:1007874218371}, -} - -%%%% - - -%%%% - -@article {loefflerzerbes10, - MRKEY = {MR3065158}, - AUTHOR = {Loeffler, David and Zerbes, Sarah Livia}, - TITLE = {Wach modules and critical slope {$p$}-adic {$L$}-functions}, - JOURNAL = {J. Reine Angew. Math.}, - FJOURNAL = {Journal f\"ur die Reine und Angewandte Mathematik. [Crelle's - Journal]}, - VOLUME = {679}, - YEAR = {2013}, - PAGES = {181--206}, - ISSN = {0075-4102}, - CODEN = {JRMAA8}, - MRCLASS = {11R23 (11F80)}, - MRNUMBER = {3065158}, -} - -%%%% - -@book {mazzavoevodskyweibel06, - MRKEY = {MR2242284}, - AUTHOR = {Mazza, Carlo and Voevodsky, Vladimir and Weibel, Charles}, - TITLE = {Lecture notes on motivic cohomology}, - SERIES = {Clay Mathematics Monographs}, - VOLUME = {2}, - PUBLISHER = {American Mathematical Society}, - ADDRESS = {Providence, RI}, - YEAR = {2006}, - PAGES = {xiv+216}, - ISBN = {978-0-8218-3847-1; 0-8218-3847-4}, - MRCLASS = {14F42 (19E15)}, - MRNUMBER = {2242284 (2007e:14035}, -MRREVIEWER = {Thomas Geisser}, -} - -%%%% - - -%%%% - -@article {momose81, - MRKEY = {MR617867}, - AUTHOR = {Momose, Fumiyuki}, - TITLE = {On the {$l$}-adic representations attached to modular forms}, - JOURNAL = {J. Fac. Sci. Univ. Tokyo Sect. IA Math.}, - FJOURNAL = {Journal of the Faculty of Science. University of Tokyo. - Section IA. Mathematics}, - VOLUME = {28}, - YEAR = {1981}, - NUMBER = {1}, - PAGES = {89--109}, - ISSN = {0040-8980}, - CODEN = {JFTMAT}, - MRCLASS = {10D12}, - MRNUMBER = {617867 (84a:10025}, -MRREVIEWER = {G. Frey}, -} - -%%%% - -@article {nekovar06, - MRKEY = {MR2333680}, - AUTHOR = {Nekov{\'a}{\v{r}}, Jan}, - TITLE = {Selmer complexes}, - JOURNAL = {Ast\'erisque}, - FJOURNAL = {Ast\'erisque}, - NUMBER = {310}, - YEAR = {2006}, - PAGES = {viii+559}, - ISSN = {0303-1179}, - ISBN = {978-2-85629-226-6}, - MRCLASS = {11R23 (11F41 11G40 11R34 22E41)}, - MRNUMBER = {2333680 (2009c:11176}, -MRREVIEWER = {Laurent N. Berger}, -} - -%%%% - -@article {ohta99, - MRKEY = {MR1674001}, - AUTHOR = {Ohta, Masami}, - TITLE = {Ordinary {$p$}-adic \'etale cohomology groups attached to - towers of elliptic modular curves}, - JOURNAL = {Compositio Math.}, - FJOURNAL = {Compositio Mathematica}, - VOLUME = {115}, - YEAR = {1999}, - NUMBER = {3}, - PAGES = {241--301}, - ISSN = {0010-437X}, - CODEN = {CMPMAF}, - MRCLASS = {11F33 (11F67 11G18)}, - MRNUMBER = {1674001 (2000d:11064}, -MRREVIEWER = {Andrea Mori}, - URL = {http://dx.doi.org/10.1023/A:1000556212097}, -} - -%%%% - - -%%%% - -@article {otsuki09, - MRKEY = {MR2541166}, - AUTHOR = {Otsuki, Rei}, - TITLE = {Construction of a homomorphism concerning {E}uler systems for - an elliptic curve}, - JOURNAL = {Tokyo J. Math.}, - FJOURNAL = {Tokyo Journal of Mathematics}, - VOLUME = {32}, - YEAR = {2009}, - NUMBER = {1}, - PAGES = {253--278}, - ISSN = {0387-3870}, - MRCLASS = {11G05 (11G40 11R23)}, - MRNUMBER = {2541166 (2010k:11093}, -MRREVIEWER = {Ahmet Tekcan}, - URL = {http://dx.doi.org/10.3836/tjm/1249648421}, -} - -%%%% - -@article {perrinriou92, - MRKEY = {MR1168369}, - AUTHOR = {Perrin-Riou, Bernadette}, - TITLE = {Th\'eorie d'{I}wasawa et hauteurs {$p$}-adiques}, - JOURNAL = {Invent. Math.}, - FJOURNAL = {Inventiones Mathematicae}, - VOLUME = {109}, - YEAR = {1992}, - NUMBER = {1}, - PAGES = {137--185}, - ISSN = {0020-9910}, - CODEN = {INVMBH}, - MRCLASS = {11R23 (11G40 11R42 11S25)}, - MRNUMBER = {1168369 (93g:11109}, -MRREVIEWER = {Douglas L. Ulmer}, - URL = {http://dx.doi.org/10.1007/BF01232022}, -} - -%%%% - - -%%%% - - -%%%% - -@article {pollackstevens11, - MRKEY = {MR2760194}, - AUTHOR = {Pollack, Robert and Stevens, Glenn}, - TITLE = {Overconvergent modular symbols and {$p$}-adic {$L$}-functions}, - JOURNAL = {Ann. Sci. \'Ec. Norm. Sup\'er. (4)}, - FJOURNAL = {Annales Scientifiques de l'\'Ecole Normale Sup\'erieure. - Quatri\`eme S\'erie}, - VOLUME = {44}, - YEAR = {2011}, - NUMBER = {1}, - PAGES = {1--42}, - ISSN = {0012-9593}, - MRCLASS = {11F85 (11F67 11S40)}, - MRNUMBER = {2760194 (2012m:11074}, -MRREVIEWER = {Jeanine Van Order}, -} - -%%%% - - -%%%% - -@incollection {quillen73, - MRKEY = {MR0338129}, - AUTHOR = {Quillen, Daniel}, - TITLE = {Higher algebraic {$K$}-theory. {I}}, - BOOKTITLE = {Algebraic {$K$}-theory, {I}: {H}igher {$K$}-theories ({P}roc. - {C}onf., {B}attelle {M}emorial {I}nst., {S}eattle, {W}ash., - 1972)}, - PAGES = {85--147. Lecture Notes in Math., Vol. 341}, - PUBLISHER = {Springer}, - ADDRESS = {Berlin}, - YEAR = {1973}, - MRCLASS = {18F25}, - MRNUMBER = {0338129 (49 \#2895}, -MRREVIEWER = {Stephen M. Gersten}, -} - -%%%% - -@article {ramakrishnan00, - MRKEY = {MR1792292}, - AUTHOR = {Ramakrishnan, Dinakar}, - TITLE = {Modularity of the {R}ankin-{S}elberg {$L$}-series, and - multiplicity one for {${\rm SL}(2)$}}, - JOURNAL = {Ann. of Math. (2)}, - FJOURNAL = {Annals of Mathematics. Second Series}, - VOLUME = {152}, - YEAR = {2000}, - NUMBER = {1}, - PAGES = {45--111}, - ISSN = {0003-486X}, - CODEN = {ANMAAH}, - MRCLASS = {11F70 (11F55 11F66 11F80 11G18 14G10 20G35 22E55)}, - MRNUMBER = {1792292 (2001g:11077}, -MRREVIEWER = {Solomon Friedberg}, - URL = {http://dx.doi.org/10.2307/2661379}, -} - -%%%% - -@article {ribet85, - MRKEY = {MR819838}, - AUTHOR = {Ribet, Kenneth A.}, - TITLE = {On {$l$}-adic representations attached to modular forms. {II}}, - JOURNAL = {Glasgow Math. J.}, - FJOURNAL = {Glasgow Mathematical Journal}, - VOLUME = {27}, - YEAR = {1985}, - PAGES = {185--194}, - ISSN = {0017-0895}, - CODEN = {GLMJAS}, - MRCLASS = {11F11 (11F33 11G10)}, - MRNUMBER = {819838 (88a:11041}, -MRREVIEWER = {G. Frey}, - URL = {http://dx.doi.org/10.1017/S0017089500006170}, -} - -%%%% - -@book {rubin00, - MRKEY = {MR1749177}, - AUTHOR = {Rubin, Karl}, - TITLE = {Euler systems}, - SERIES = {Annals of Mathematics Studies}, - VOLUME = {147}, - NOTE = {Hermann Weyl Lectures. The Institute for Advanced Study}, - PUBLISHER = {Princeton University Press}, - ADDRESS = {Princeton, NJ}, - YEAR = {2000}, - PAGES = {xii+227}, - ISBN = {0-691-05075-9; 0-691-05076-7}, - MRCLASS = {11R23 (11G40 11R34 11R42)}, - MRNUMBER = {1749177 (2001g:11170}, -MRREVIEWER = {Jan Nekov{\'a}{\v{r}}}, -} - -%%%% - - -%%%% - -@article {saitosato10, - MRKEY = {MR2804264}, - AUTHOR = {Saito, Shuji and Sato, Kanetomo}, - TITLE = {A {$p$}-adic regulator map and finiteness results for - arithmetic schemes}, - JOURNAL = {Doc. Math.}, - FJOURNAL = {Documenta Mathematica}, - YEAR = {2010}, - NUMBER = {Extra volume: Andrei A. Suslin sixtieth birthday}, - PAGES = {525--594}, - ISSN = {1431-0635}, - MRCLASS = {14G40 (11G25 14C15 14C25 19F27)}, - MRNUMBER = {2804264 (2012g:14044}, -MRREVIEWER = {Damian Roessler}, -} - -%%%% - -@incollection {scholl98, - MRKEY = {MR1696501}, - AUTHOR = {Scholl, A. J.}, - TITLE = {An introduction to {K}ato's {E}uler systems}, - BOOKTITLE = {Galois representations in arithmetic algebraic geometry - ({D}urham, 1996)}, - SERIES = {London Math. Soc. Lecture Note Ser.}, - VOLUME = {254}, - PAGES = {379--460}, - PUBLISHER = {Cambridge Univ. Press}, - ADDRESS = {Cambridge}, - YEAR = {1998}, - MRCLASS = {11G40 (11G16 11G18 11S25 14F30 19F15 19F27)}, - MRNUMBER = {1696501 (2000g:11057}, -MRREVIEWER = {Amnon Besser}, - URL = {http://dx.doi.org/10.1017/CBO9780511662010.011}, -} - -%%%% - -@article {shahidi81, - MRKEY = {MR610479}, - AUTHOR = {Shahidi, Freydoon}, - TITLE = {On certain {$L$}-functions}, - JOURNAL = {Amer. J. Math.}, - FJOURNAL = {American Journal of Mathematics}, - VOLUME = {103}, - YEAR = {1981}, - NUMBER = {2}, - PAGES = {297--355}, - ISSN = {0002-9327}, - CODEN = {AJMAAN}, - MRCLASS = {10D15 (10D40 22E45 22E55)}, - MRNUMBER = {610479 (82i:10030}, -MRREVIEWER = {Stephen Gelbart}, - URL = {http://dx.doi.org/10.2307/2374219}, -} - -%%%% - -@article {shimura76, - MRKEY = {MR0434962}, - AUTHOR = {Shimura, Goro}, - TITLE = {The special values of the zeta functions associated with cusp - forms}, - JOURNAL = {Comm. Pure Appl. Math.}, - FJOURNAL = {Communications on Pure and Applied Mathematics}, - VOLUME = {29}, - YEAR = {1976}, - NUMBER = {6}, - PAGES = {783--804}, - ISSN = {0010-3640}, - MRCLASS = {10D15 (10H10)}, - MRNUMBER = {0434962 (55 \#7925}, -MRREVIEWER = {K.-B. Gundlach}, -} - -%%%% - - -%%%% - -@book {shimura00, - MRKEY = {MR1780262}, - AUTHOR = {Shimura, Goro}, - TITLE = {Arithmeticity in the theory of automorphic forms}, - SERIES = {Mathematical Surveys and Monographs}, - VOLUME = {82}, - PUBLISHER = {American Mathematical Society}, - ADDRESS = {Providence, RI}, - YEAR = {2000}, - PAGES = {x+302}, - ISBN = {0-8218-2671-9}, - MRCLASS = {11F67 (11-02 11F30 11F41 11F55)}, - MRNUMBER = {1780262 (2001k:11086}, -MRREVIEWER = {Hideshi Takayanagi}, -} - -%%%% - -@incollection {swinnertondyer72, - MRKEY = {MR0406931}, - AUTHOR = {Swinnerton-Dyer, H. P. F.}, - TITLE = {On {$l$}-adic representations and congruences for coefficients - of modular forms}, - BOOKTITLE = {Modular functions of one variable, {III} ({P}roc. {I}nternat. - {S}ummer {S}chool, {U}niv. {A}ntwerp, 1972)}, - PAGES = {1--55. Lecture Notes in Math., Vol. 350}, - PUBLISHER = {Springer}, - ADDRESS = {Berlin}, - YEAR = {1973}, - MRCLASS = {10D05}, - MRNUMBER = {0406931 (53 \#10717a}, -MRREVIEWER = {K.-B. Gundlach}, -} - -%%%% - -@article {voevodsky02, - MRKEY = {MR1883180}, - AUTHOR = {Voevodsky, Vladimir}, - TITLE = {Motivic cohomology groups are isomorphic to higher {C}how - groups in any characteristic}, - JOURNAL = {Int. Math. Res. Not.}, - FJOURNAL = {International Mathematics Research Notices}, - YEAR = {2002}, - NUMBER = {7}, - PAGES = {351--355}, - ISSN = {1073-7928}, - MRCLASS = {14F42 (14C25 19E15)}, - MRNUMBER = {1883180 (2003c:14021}, -MRREVIEWER = {Thomas Geisser}, - URL = {http://dx.doi.org/10.1155/S107379280210403X}, -} - -%%%% - - diff --git a/Master/texmf-dist/doc/support/crossrefware/crossrefware.pdf b/Master/texmf-dist/doc/support/crossrefware/crossrefware.pdf Binary files differindex ca4a6b7a44d..ce573948667 100644 --- a/Master/texmf-dist/doc/support/crossrefware/crossrefware.pdf +++ b/Master/texmf-dist/doc/support/crossrefware/crossrefware.pdf diff --git a/Master/texmf-dist/doc/support/crossrefware/head.ltx b/Master/texmf-dist/doc/support/crossrefware/head.ltx index 552b829d579..6b0160194e7 100644 --- a/Master/texmf-dist/doc/support/crossrefware/head.ltx +++ b/Master/texmf-dist/doc/support/crossrefware/head.ltx @@ -9,18 +9,8 @@ \maketitle \tableofcontents -\section{Introduction} - -Crossrefware is a collection of Perl scripts used to help to submit -the documents to \url{http://www.crossref.org}. - -To use scrips you need a number of standard Perl libraries: -\begin{enumerate} -\item \path{Text::BibTeX} by Greg Ward, -\item \path{TeX::Encode} by Timothy D Brody -\end{enumerate} -They are included in most standard Perl distributions, or can be -installed from \url{http://www.cpan.org}. +These scripts can be used to submit files to Crossref, check and add +doi numbers and ZbMath numbers to papers. I am grateful to Josko Plazonic from Princeton Math Dept whose diff --git a/Master/texmf-dist/scripts/crossrefware/bibdoiadd.pl b/Master/texmf-dist/scripts/crossrefware/bibdoiadd.pl index b9be8dec824..8937729a3ba 100755 --- a/Master/texmf-dist/scripts/crossrefware/bibdoiadd.pl +++ b/Master/texmf-dist/scripts/crossrefware/bibdoiadd.pl @@ -8,7 +8,7 @@ bibdoiadd.pl - add DOI numbers to papers in a given bib file =head1 SYNOPSIS -bibdoiadd [B<-c> I<config_file>] [B<-o> I<output>] I<bib_file> +bibdoiadd [B<-c> I<config_file>] [B<-f>] [B<-o> I<output>] I<bib_file> =head1 OPTIONS @@ -19,6 +19,9 @@ bibdoiadd [B<-c> I<config_file>] [B<-o> I<output>] I<bib_file> Configuration file. If this file is absent, some defaults are used. See below for its format. +=item B<-f> + +Force checking doi number even if one is present =item B<-o> I<output> @@ -72,7 +75,7 @@ Boris Veytsman =head1 COPYRIGHT AND LICENSE -Copyright (C) 2014 Boris Veytsman +Copyright (C) 2014-2016 Boris Veytsman This is free software. You may redistribute copies of it under the terms of the GNU General Public License @@ -82,19 +85,23 @@ extent permitted by law. =cut use strict; -use Text::BibTeX; -use Text::BibTeX::Name; +BEGIN { + # find files relative to our installed location within TeX Live + chomp(my $TLMaster = `kpsewhich -var-value=SELFAUTOPARENT`); # TL root + if (length($TLMaster)) { + unshift @INC, "$TLMaster/texmf-dist/scripts/bibtexperllibs"; + } +} +use IO::File; +use BibTeX::Parser; +use LaTeX::ToUnicode qw (convert); use Getopt::Std; use URI::Escape; use LWP::Simple; -use TeX::Encode; -use Encode; -use HTML::Entities; -use XML::Entities; -my $USAGE="USAGE: $0 [-c config] [-o output] file\n"; +my $USAGE="USAGE: $0 [-c config] [-f] [-o output] file\n"; my $VERSION = <<END; -bibdoiadd v1.0 +bibdoiadd v2.0 This is free software. You may redistribute copies of it under the terms of the GNU General Public License http://www.gnu.org/licenses/gpl.html. There is NO WARRANTY, to the @@ -102,7 +109,7 @@ extent permitted by law. $USAGE END my %opts; -getopts('c:o:hV',\%opts) or die $USAGE; +getopts('fc:o:hV',\%opts) or die $USAGE; if ($opts{h} || $opts{V}){ print $VERSION; @@ -123,6 +130,9 @@ if ($opts{o}) { $outputfile = $opts{o}; } +my $forceSearch=$opts{f}; + + our $mode='free'; our $email; our $username; @@ -149,10 +159,12 @@ if ($mode eq 'paid' && (!length($username) || !length($password))) { "Crossref requires a username and password for the paid mode queries\n"; } -my $input = new Text::BibTeX::File "$inputfile" or - die "Cannot BibTeX file $inputfile\n"; -my $output = new Text::BibTeX::File "> $outputfile" or - die "Cannot write to $outputfile\n"; +my $input= IO::File->new($inputfile) or + die "Cannot find BibTeX file $inputfile\n$USAGE\n"; +my $output = IO::File->new("> $outputfile") or + die "Cannot write to $outputfile\n$USAGE\n"; + +my $parser=new BibTeX::Parser($input); my $prefix = "http://www.crossref.org/openurl?redirect=false"; @@ -164,30 +176,31 @@ if ($mode eq 'free') { } # Processing the input -while (my $entry = new Text::BibTeX::Entry $input) { +while (my $entry = $parser->next) { if (!$entry->parse_ok()) { print STDERR "Cannot understand entry: "; $entry->print(*STDERR); print STDERR "Skipping this entry\n"; next; } - if (!(($entry->metatype() eq BTE_REGULAR) && - ($entry->type() eq 'article'))) { - $entry->write($output); + + if (!($entry->type() eq 'ARTICLE')) { + print $output $entry->raw_bibtex(), "\n\n"; next; } - if ($entry->exists('doi')) { - $entry->write($output); + if ($entry->has('doi') && !$forceSearch) { + print $output $entry->raw_bibtex(), "\n\n"; next; } + + + my $doi = GetDoi($prefix, $entry); + if (length($doi)) { + $entry->field('doi',$doi); + } + print $output $entry->to_string(), "\n\n"; - # Now we have an entry with no doi. Let us get to work. - my $doi = GetDoi($prefix,$entry); - if (length($doi)) { - $entry->set('doi',$doi); - } - $entry->write($output); } @@ -201,33 +214,30 @@ exit 0; sub GetDoi { my ($url,$entry) = @_; - if ($entry->exists('issn')) { - $url .= "&issn=".uri_escape(SanitizeText($entry->get('issn'))); + if ($entry->has('issn')) { + $url .= "&issn=".uri_escape_utf8(SanitizeText($entry->field('issn'))); } - if ($entry->exists('journal')) { - $url .= "&title=".uri_escape(SanitizeText($entry->get('journal'))); + if ($entry->has('journal')) { + $url .= "&title=".uri_escape_utf8(SanitizeText($entry->field('journal'))); } - my @names=$entry->names ('author'); + my @names=$entry->author(); if (scalar(@names)) { - my @lastnames = $names[0]->part ('last'); - if (scalar(@lastnames)) { - my $lastname = SanitizeText(join(' ',@lastnames)); - $url .= "&aulast=".uri_escape($lastname); - } + my $lastname = SanitizeText($names[0]->last()); + $url .= "&aulast=".uri_escape_utf8($lastname); } - if ($entry->exists('volume')) { - $url .= "&volume=".uri_escape($entry->get('volume')); + if ($entry->has('volume')) { + $url .= "&volume=".uri_escape_utf8($entry->field('volume')); } - if ($entry->exists('number')) { - $url .= "&issue=".uri_escape($entry->get('number')); + if ($entry->has('number')) { + $url .= "&issue=".uri_escape_utf8($entry->field('number')); } - if ($entry->exists('pages')) { - my $pages=$entry->get('pages'); + if ($entry->has('pages')) { + my $pages=$entry->field('pages'); $pages =~ s/-.*$//; - $url .= "&spage=".uri_escape($pages); + $url .= "&spage=".uri_escape_utf8($pages); } - if ($entry->exists('year')) { - $url .= "&date=".uri_escape($entry->get('year')); + if ($entry->has('year')) { + $url .= "&date=".uri_escape_utf8($entry->field('year')); } my $result=get($url); @@ -244,24 +254,22 @@ sub GetDoi { ############################################################### sub SanitizeText { my $string = shift; - # There is a bug in the decode function, which we need to work - # around: it adds space to constructions like \o x - $string =~ s/(\\[a-zA-Z])\s+/$1/g; + $string = convert($string); $string =~ s/\\newblock//g; + $string =~ s/\\bgroup//g; + $string =~ s/\\egroup//g; + $string =~ s/\\scshape//g; $string =~ s/\\urlprefix//g; $string =~ s/\\emph//g; + $string =~ s/\\textbf//g; $string =~ s/\\enquote//g; $string =~ s/\\url/URL: /g; $string =~ s/\\doi/DOI: /g; $string =~ s/\\\\/ /g; - $string = decode('latex', $string); - $string =~ s/\\[a-zA-Z]+/ /g; - $string =~ s/\\\\/ /g; - $string =~ s/[\[\{\}\]]/ /g; - $string = encode_entities($string); - $string = XML::Entities::numify('all', $string); - $string =~ s/amp;//g; + $string =~ s/\$//g; + $string =~ s/\\checkcomma/,/g; $string =~ s/~/ /g; - $string =~ s/\s*([\.;,])/$1/g; + $string =~ s/[\{\}]//g; return $string; } + diff --git a/Master/texmf-dist/scripts/crossrefware/bibzbladd.pl b/Master/texmf-dist/scripts/crossrefware/bibzbladd.pl index 4059b7b0a12..f348cd4b946 100755 --- a/Master/texmf-dist/scripts/crossrefware/bibzbladd.pl +++ b/Master/texmf-dist/scripts/crossrefware/bibzbladd.pl @@ -8,12 +8,15 @@ bibzbladd.pl - add Zbl numbers to papers in a given bib file =head1 SYNOPSIS -bibzbladd [B<-o> I<output>] I<bib_file> +bibzbladd [B<-f>] [B<-o> I<output>] I<bib_file> =head1 OPTIONS =over 4 +=item B<-f> + +Force searching for Zbl numbers even if the entry already has one. =item B<-o> I<output> @@ -25,7 +28,7 @@ output file is formed by adding C<_zbl> to the input file =head1 DESCRIPTION The script reads a BibTeX file. It checks whether the entries have -Zbls. If now, tries to contact internet to get the numbers. The +Zbls. If not, tries to contact internet to get the numbers. The result is a BibTeX file with the fields C<zblnumber=...> added. @@ -38,7 +41,7 @@ Boris Veytsman =head1 COPYRIGHT AND LICENSE -Copyright (C) 2014 Boris Veytsman +Copyright (C) 2014-2016 Boris Veytsman This is free software. You may redistribute copies of it under the terms of the GNU General Public License @@ -48,16 +51,22 @@ extent permitted by law. =cut use strict; -use Text::BibTeX; -use Text::BibTeX::Name; +BEGIN { + # find files relative to our installed location within TeX Live + chomp(my $TLMaster = `kpsewhich -var-value=SELFAUTOPARENT`); # TL root + if (length($TLMaster)) { + unshift @INC, "$TLMaster/texmf-dist/scripts/bibtexperllibs"; + } +} +use IO::File; +use BibTeX::Parser; use Getopt::Std; use URI::Escape; use LWP::UserAgent; -use TeX::Encode; -my $USAGE="USAGE: $0 [-o output] file\n"; +my $USAGE="USAGE: $0 [-f] [-o output] file\n"; my $VERSION = <<END; -bibzbladd v1.0 +bibzbladd v2.0 This is free software. You may redistribute copies of it under the terms of the GNU General Public License http://www.gnu.org/licenses/gpl.html. There is NO WARRANTY, to the @@ -65,7 +74,7 @@ extent permitted by law. $USAGE END my %opts; -getopts('o:hV',\%opts) or die $USAGE; +getopts('fo:hV',\%opts) or die $USAGE; if ($opts{h} || $opts{V}){ print $VERSION; @@ -86,41 +95,45 @@ if ($opts{o}) { $outputfile = $opts{o}; } -my $input = new Text::BibTeX::File "$inputfile" or - die "Cannot BibTeX file $inputfile\n"; -my $output = new Text::BibTeX::File "> $outputfile" or - die "Cannot write to $outputfile\n"; +my $forceSearch=$opts{f}; + +my $input= IO::File->new($inputfile) or + die "Cannot find BibTeX file $inputfile\n$USAGE\n"; +my $output = IO::File->new("> $outputfile") or + die "Cannot write to $outputfile\n$USAGE\n"; + +my $parser=new BibTeX::Parser($input); + # Creating the HTTP parameters my $mirror = - "http://www.zentralblatt-math.org/MIRROR/zmath/en/search/"; + "https://zbmath.org/citationmatching/bibtex/match"; my $userAgent = LWP::UserAgent->new; -# Processing the input -while (my $entry = new Text::BibTeX::Entry $input) { +while (my $entry = $parser->next ) { if (!$entry->parse_ok()) { print STDERR "Cannot understand entry: "; $entry->print(*STDERR); print STDERR "Skipping this entry\n"; next; } - if (!(($entry->metatype() eq BTE_REGULAR))) { - $entry->write($output); + if (!($entry->type() eq 'ARTICLE')) { + print $output $entry->raw_bibtex(), "\n\n"; next; } - if ($entry->exists('zblnumber')) { - $entry->write($output); + if ($entry->has('zblnumber') && !$forceSearch) { + print $output $entry->raw_bibtex(), "\n\n"; next; } - # Now we have an entry with no Zbl. Let us get to work. - my $zbl = GetZbl($entry, $userAgent, $mirror); - if (length($zbl)) { - $entry->set('zblnumber',$zbl); - } - $entry->write($output); + # Now we have an entry with no Zbl. Let us get to work. + my $zbl = GetZbl($entry, $userAgent, $mirror); + if (length($zbl)) { + $entry->field('zblnumber',$zbl); + } + print $output $entry->to_string(), "\n\n"; } @@ -139,77 +152,16 @@ sub GetZbl { my @query; - my @names=$entry->names ('author'); - if (scalar(@names)) { - foreach my $name (@names) { - my @lastnames = $name->part ('last'); - if (scalar(@lastnames)) { - foreach my $lastname (@lastnames) { - push @query, "au:$lastname"; - } - } - } - } - if (my $title = $entry->get('title')) { - push @query, "ti:$title"; - } + my $string=uri_escape_utf8($entry->to_string()); - if (my $year = $entry->get('year')) { - push @query, "py:$year"; - } - - if (my $year = $entry->get('year')) { - push @query, "py:$year"; - } - my $type = $entry->type; - if ($type eq 'article') { - push @query, "dt:j"; - } - if ($type eq 'book') { - push @query, "dt:b"; - } - if ($type eq 'inproceedings' || $type eq 'incollection') { - push @query, "dt:a"; - } - - my $source = ""; - if ($type eq 'article') { - if ($entry->get('journal')) { - $source .= $entry->get('journal'); - } - if (my $vol=$entry->get('volume')) { - $source .= ",$vol"; - } - if (my $pages=$entry->get('pages')) { - $source .= ",$pages"; - } - } else { - if (my $bt=$entry->get('booktitle')) { - $source .= "$bt"; - } - } - - if ($source) { - push @query, "so:$source"; - } - - - my $qstring = join(" & ", @query); -# print STDERR "$qstring\n"; - my $form; - - $form->{name}='form'; - $form->{q} = $qstring; - $form->{type} = "ascii"; - $form->{submit} = 'Search'; - - my $response = $userAgent->post($mirror, $form); - if ($response->decoded_content =~ /^an:\s*Zbl\s*(\S+)\s*$/m) { + my $response = $userAgent->get("$mirror?bibtex=$string"); + if ($response->decoded_content =~ /^\s*"zbl_id":\s*"(.*)",\s*$/m) { return $1; - } else { - return (""); + } else { + return (""); } + } diff --git a/Master/texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl b/Master/texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl index 5824511cdbf..f9585399cfa 100755 --- a/Master/texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl +++ b/Master/texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl @@ -56,7 +56,7 @@ Boris Veytsman =head1 COPYRIGHT AND LICENSE -Copyright (C) 2012-2015 Boris Veytsman +Copyright (C) 2012-2016 Boris Veytsman This is free software. You may redistribute copies of it under the terms of the GNU General Public License @@ -67,18 +67,22 @@ extent permitted by law. =cut use strict; + + BEGIN { + # find files relative to our installed location within TeX Live + chomp(my $TLMaster = `kpsewhich -var-value=SELFAUTOPARENT`); # TL root + if (length($TLMaster)) { + unshift @INC, "$TLMaster/texmf-dist/scripts/bibtexperllibs"; + } + } use POSIX qw(strftime); - use Text::BibTeX; - use Text::BibTeX::Name; - use TeX::Encode; - use Encode; - use HTML::Entities; - use XML::Entities; + use BibTeX::Parser::Author; + use LaTeX::ToUnicode qw (convert); use File::Basename; use File::Spec; my $USAGE="USAGE: $0 [-c config] [-o output] file1 file2 ...\n"; my $VERSION = <<END; -ltx2crossrefxml v1.0 +ltx2crossrefxml v2.0 This is free software. You may redistribute copies of it under the terms of the GNU General Public License http://www.gnu.org/licenses/gpl.html. There is NO WARRANTY, to the @@ -88,6 +92,8 @@ END use Getopt::Std; my %opts; getopts('c:o:hV',\%opts) or die $USAGE; + use utf8; + binmode(STDOUT, ":utf8"); if ($opts{h} || $opts{V}){ print $VERSION; @@ -102,6 +108,7 @@ if ($opts{h} || $opts{V}){ if (defined($opts{o})) { open (OUT, ">$opts{o}") or die "Cannot open file $opts{o} for writing\n"; + binmode(OUT, ":utf8") } @@ -292,7 +299,7 @@ END ############################################################### sub PrintPaper { my $paper = shift; - my $title=SanitizeText($paper->{title}); + my $title=convert($paper->{title}); my $url=GetURL($paper); print OUT <<END; <journal_article publication_type="full_text"> @@ -358,9 +365,7 @@ END ############################################################### sub SanitizeText { my $string = shift; - # There is a bug in the decode function, which we need to work - # around: it adds space to constructions like \o x - $string =~ s/(\\[a-zA-Z])\s+/$1/g; + $string = convert($string); $string =~ s/\\newblock//g; $string =~ s/\\bgroup//g; $string =~ s/\\egroup//g; @@ -373,27 +378,9 @@ sub SanitizeText { $string =~ s/\\doi/DOI: /g; $string =~ s/\\\\/ /g; $string =~ s/\$//g; - # Another bug in decode: it does not understan macrons - $string =~ s/\\=(A|\{A\})/##SANITIZE#MACRON##256;/g; - $string =~ s/\\=(a|\{a\})/##SANITIZE#MACRON##257;/g; - $string =~ s/\\=(E|\{E\})/##SANITIZE#MACRON##274;/g; - $string =~ s/\\=(e|\{e\})/##SANITIZE#MACRON##275;/g; - $string =~ s/\\=(I|\{I\})/##SANITIZE#MACRON##298;/g; - $string =~ s/\\=(i|\{i\})/##SANITIZE#MACRON##299;/g; - $string =~ s/\\=(O|\{O\})/##SANITIZE#MACRON##332;/g; - $string =~ s/\\=(o|\{o\})/##SANITIZE#MACRON##333;/g; - $string =~ s/\\=(U|\{U\})/##SANITIZE#MACRON##362;/g; - $string =~ s/\\=(u|\{u\})/##SANITIZE#MACRON##363;/g; - $string = decode('latex', $string); - $string =~ s/\\[a-zA-Z]+/ /g; - $string =~ s/\\\\/ /g; - $string =~ s/[\[\{\}\]]/ /g; - $string = encode_entities($string); - $string = XML::Entities::numify('all', $string); - $string =~ s/amp;//g; + $string =~ s/\\checkcomma/,/g; $string =~ s/~/ /g; - $string =~ s/\s*([\.;,])/$1/g; - $string =~ s/##SANITIZE#MACRON##(\d+);/&#$1;/g; + $string =~ s/[\{\}]//g; return $string; } @@ -403,11 +390,10 @@ sub SanitizeText { sub PrintAuthor { my $author=shift; - my $person=new Text::BibTeX::Name ($author); + my $person=new BibTeX::Parser::Author ($author); - if ($person->part('first')) { - my @tokens = $person->part('first'); - my $line = join(" ", @tokens); + if ($person->first) { + my $line = $person->first; $line = SanitizeText($line); print OUT <<END; <given_name>$line</given_name> @@ -415,16 +401,19 @@ END } - if ($person->part('last')) { - my $line = SanitizeText($person->part('last')); + if ($person->last) { + my $line = SanitizeText($person->last); + if ($person->von) { + $line = SanitizeText($person->von)." $line"; + } print OUT <<END; <surname>$line</surname> END } - if ($person->part('jr')) { - my $line = SanitizeText($person->part('jr')); + if ($person->jr) { + my $line = SanitizeText($person->jr); print OUT <<END; <suffix>$line</suffix> END diff --git a/Master/texmf-dist/tex/latex/crossrefware/bibdoiadd.cfg b/Master/texmf-dist/tex/latex/crossrefware/bibdoiadd.cfg index 48dd0b244c4..05becec62c9 100644 --- a/Master/texmf-dist/tex/latex/crossrefware/bibdoiadd.cfg +++ b/Master/texmf-dist/tex/latex/crossrefware/bibdoiadd.cfg @@ -4,6 +4,7 @@ $username = 'XXXXXX'; # For paid users $password = 'XXXXXX'; # For paid users + # Last line must be 1; 1; |