summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xBuild/source/texk/texlive/linked_scripts/crossrefware/bibdoiadd.pl122
-rwxr-xr-xBuild/source/texk/texlive/linked_scripts/crossrefware/bibzbladd.pl138
-rwxr-xr-xBuild/source/texk/texlive/linked_scripts/crossrefware/ltx2crossrefxml.pl69
-rw-r--r--Master/texmf-dist/doc/man/man1/bibdoiadd.19
-rw-r--r--Master/texmf-dist/doc/man/man1/bibdoiadd.man1.pdfbin5708 -> 22466 bytes
-rw-r--r--Master/texmf-dist/doc/man/man1/bibzbladd.111
-rw-r--r--Master/texmf-dist/doc/man/man1/bibzbladd.man1.pdfbin4470 -> 18109 bytes
-rw-r--r--Master/texmf-dist/doc/man/man1/ltx2crossrefxml.14
-rw-r--r--Master/texmf-dist/doc/man/man1/ltx2crossrefxml.man1.pdfbin5008 -> 21165 bytes
-rw-r--r--Master/texmf-dist/doc/support/crossrefware/Makefile3
-rw-r--r--Master/texmf-dist/doc/support/crossrefware/README12
-rw-r--r--Master/texmf-dist/doc/support/crossrefware/aomsample.bib277
-rw-r--r--Master/texmf-dist/doc/support/crossrefware/citations.bib811
-rw-r--r--Master/texmf-dist/doc/support/crossrefware/crossrefware.pdfbin133876 -> 132315 bytes
-rw-r--r--Master/texmf-dist/doc/support/crossrefware/head.ltx14
-rwxr-xr-xMaster/texmf-dist/scripts/crossrefware/bibdoiadd.pl122
-rwxr-xr-xMaster/texmf-dist/scripts/crossrefware/bibzbladd.pl138
-rwxr-xr-xMaster/texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl69
-rw-r--r--Master/texmf-dist/tex/latex/crossrefware/bibdoiadd.cfg1
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
index 46c4540b164..7e5a2cacaff 100644
--- a/Master/texmf-dist/doc/man/man1/bibdoiadd.man1.pdf
+++ b/Master/texmf-dist/doc/man/man1/bibdoiadd.man1.pdf
Binary files differ
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
index 0e7e13a2e82..9d45ecec113 100644
--- a/Master/texmf-dist/doc/man/man1/bibzbladd.man1.pdf
+++ b/Master/texmf-dist/doc/man/man1/bibzbladd.man1.pdf
Binary files differ
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
index 92939671c9c..16d5e55b5b1 100644
--- a/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.man1.pdf
+++ b/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.man1.pdf
Binary files differ
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
index ca4a6b7a44d..ce573948667 100644
--- a/Master/texmf-dist/doc/support/crossrefware/crossrefware.pdf
+++ b/Master/texmf-dist/doc/support/crossrefware/crossrefware.pdf
Binary files differ
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;