diff options
author | Karl Berry <karl@freefriends.org> | 2014-10-19 22:36:21 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2014-10-19 22:36:21 +0000 |
commit | 85fe62616c2d0cda42038452c38374f1cf5d855a (patch) | |
tree | 45a4890dc18b6bd0d1e6142eeebf19ee293c10a3 | |
parent | c07d0b959c7e9bbc2b3beeeab1ebf9ab11489255 (diff) |
crossrefware (19oct14)
git-svn-id: svn://tug.org/texlive/trunk@35401 c570f23f-e606-0410-a88d-b1316a301751
89 files changed, 3703 insertions, 2 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/Makefile.am b/Build/source/texk/texlive/linked_scripts/Makefile.am index 033eb06b2eb..d55a854cabb 100644 --- a/Build/source/texk/texlive/linked_scripts/Makefile.am +++ b/Build/source/texk/texlive/linked_scripts/Makefile.am @@ -85,6 +85,9 @@ texmf_other_scripts = \ checkcites/checkcites.lua \ context/perl/mptopdf.pl \ convbkmk/convbkmk.rb \ + crossrefware/bibdoiadd.pl \ + crossrefware/bibzbladd.pl \ + crossrefware/ltx2crossrefxml.pl \ ctanify/ctanify \ ctanupload/ctanupload.pl \ de-macro/de-macro \ diff --git a/Build/source/texk/texlive/linked_scripts/Makefile.in b/Build/source/texk/texlive/linked_scripts/Makefile.in index ba63d1db542..da0994089d8 100644 --- a/Build/source/texk/texlive/linked_scripts/Makefile.in +++ b/Build/source/texk/texlive/linked_scripts/Makefile.in @@ -293,6 +293,9 @@ texmf_other_scripts = \ checkcites/checkcites.lua \ context/perl/mptopdf.pl \ convbkmk/convbkmk.rb \ + crossrefware/bibdoiadd.pl \ + crossrefware/bibzbladd.pl \ + crossrefware/ltx2crossrefxml.pl \ ctanify/ctanify \ ctanupload/ctanupload.pl \ de-macro/de-macro \ diff --git a/Build/source/texk/texlive/linked_scripts/crossrefware/bibdoiadd.pl b/Build/source/texk/texlive/linked_scripts/crossrefware/bibdoiadd.pl new file mode 100755 index 00000000000..b9be8dec824 --- /dev/null +++ b/Build/source/texk/texlive/linked_scripts/crossrefware/bibdoiadd.pl @@ -0,0 +1,267 @@ +#!/usr/bin/env perl + +=pod + +=head1 NAME + +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> + +=head1 OPTIONS + +=over 4 + +=item B<-c> I<config_file> + +Configuration file. If this file is absent, some defaults are used. +See below for its format. + + +=item B<-o> I<output> + +Output file. If this option is not used, the name for the +output file is formed by adding C<_doi> to the input file + +=back + +=head1 DESCRIPTION + +The script reads a BibTeX file. It checks whether the entries have +DOIs. If now, tries to contact http://www.crossref.org to get the +corresponding DOI. The result is a BibTeX file with the fields +C<doi=...> added. + +The name of the output file is either set by the B<-o> option or +is derived by adding the suffix C<_doi> to the output file. + +There are two options for making queries with Crossref: free account +and paid membership. In the first case you still must register with +Crossref and are limited to a small number of queries, see the +agreement at +C<http://www.crossref.org/01company/free_services_agreement.html>. In +the second case you have a username and password, and can use them for +automatic queries. I am not sure whether the use of this script is +allowed for the free account holders. Anyway if you try to add DOI +to a large number of entries, you should register as a paid member. + + + +=head1 CONFIGURATION FILE + +The configuration file is mostly self-explanatory: it has comments +(starting with C<#>) and assginments in the form + + $field = value ; + +The important parameters are C<$mode> (C<'free'> or C<'paid'>, +C<$email> (for free users) and C<$username> & C<$password> for paid +members. + + +=head1 EXAMPLES + + bibdoiadd -c bibdoiadd.cfg citations.bib > result.bib + bibdoiadd -c bibdoiadd.cfg citations.bib -o result.bib + +=head1 AUTHOR + +Boris Veytsman + +=head1 COPYRIGHT AND LICENSE + +Copyright (C) 2014 Boris Veytsman + +This is free software. You may redistribute copies of it under the +terms of the GNU General Public License +L<http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the +extent permitted by law. + +=cut + +use strict; +use Text::BibTeX; +use Text::BibTeX::Name; +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 $VERSION = <<END; +bibdoiadd v1.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 +extent permitted by law. +$USAGE +END +my %opts; +getopts('c:o:hV',\%opts) or die $USAGE; + +if ($opts{h} || $opts{V}){ + print $VERSION; + exit 0; +} + +################################################################ +# Defaults and parameters +################################################################ + +my $inputfile = shift; + +my $outputfile = $inputfile; + +$outputfile =~ s/\.([^\.]*)$/_doi.$1/; + +if ($opts{o}) { + $outputfile = $opts{o}; +} + +our $mode='free'; +our $email; +our $username; +our $password; + +if ($opts{c}) { + if (-r $opts{c}) { + push @INC, "."; + require $opts{c}; + } else { + die "Cannot read options $opts{c}. $USAGE"; + } +} + + +# Check the consistency + +if ($mode eq 'free' && !length($email)) { + die "Crossref requires a registered e-mail for the free mode queries\n"; +} + +if ($mode eq 'paid' && (!length($username) || !length($password))) { + die + "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 $prefix = + "http://www.crossref.org/openurl?redirect=false"; +if ($mode eq 'free') { + $prefix .= '&pid='.uri_escape($email); +} else { + $prefix .= '&pid='.uri_escape($username).":". + uri_escape($password); +} + +# Processing the input +while (my $entry = new Text::BibTeX::Entry $input) { + 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); + next; + } + if ($entry->exists('doi')) { + $entry->write($output); + next; + } + + + # 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); + +} + +$input->close(); +$output->close(); +exit 0; + +############################################################### +# Getting one doi +############################################################### + +sub GetDoi { + my ($url,$entry) = @_; + if ($entry->exists('issn')) { + $url .= "&issn=".uri_escape(SanitizeText($entry->get('issn'))); + } + if ($entry->exists('journal')) { + $url .= "&title=".uri_escape(SanitizeText($entry->get('journal'))); + } + my @names=$entry->names ('author'); + if (scalar(@names)) { + my @lastnames = $names[0]->part ('last'); + if (scalar(@lastnames)) { + my $lastname = SanitizeText(join(' ',@lastnames)); + $url .= "&aulast=".uri_escape($lastname); + } + } + if ($entry->exists('volume')) { + $url .= "&volume=".uri_escape($entry->get('volume')); + } + if ($entry->exists('number')) { + $url .= "&issue=".uri_escape($entry->get('number')); + } + if ($entry->exists('pages')) { + my $pages=$entry->get('pages'); + $pages =~ s/-.*$//; + $url .= "&spage=".uri_escape($pages); + } + if ($entry->exists('year')) { + $url .= "&date=".uri_escape($entry->get('year')); + } + + my $result=get($url); + + if ($result =~ m/<doi [^>]*>(.*)<\/doi>/) { + return $1; + } else { + return ""; + } +} + +############################################################### +# Sanitization of a text string +############################################################### +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 =~ s/\\newblock//g; + $string =~ s/\\urlprefix//g; + $string =~ s/\\emph//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/\s*([\.;,])/$1/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 new file mode 100755 index 00000000000..4059b7b0a12 --- /dev/null +++ b/Build/source/texk/texlive/linked_scripts/crossrefware/bibzbladd.pl @@ -0,0 +1,215 @@ +#!/usr/bin/env perl + +=pod + +=head1 NAME + +bibzbladd.pl - add Zbl numbers to papers in a given bib file + +=head1 SYNOPSIS + +bibzbladd [B<-o> I<output>] I<bib_file> + +=head1 OPTIONS + +=over 4 + + +=item B<-o> I<output> + +Output file. If this option is not used, the name for the +output file is formed by adding C<_zbl> to the input file + +=back + +=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 +result is a BibTeX file with the fields +C<zblnumber=...> added. + +The name of the output file is either set by the B<-o> option or +is derived by adding the suffix C<_zbl> to the output file. + +=head1 AUTHOR + +Boris Veytsman + +=head1 COPYRIGHT AND LICENSE + +Copyright (C) 2014 Boris Veytsman + +This is free software. You may redistribute copies of it under the +terms of the GNU General Public License +L<http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the +extent permitted by law. + +=cut + +use strict; +use Text::BibTeX; +use Text::BibTeX::Name; +use Getopt::Std; +use URI::Escape; +use LWP::UserAgent; +use TeX::Encode; + +my $USAGE="USAGE: $0 [-o output] file\n"; +my $VERSION = <<END; +bibzbladd v1.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 +extent permitted by law. +$USAGE +END +my %opts; +getopts('o:hV',\%opts) or die $USAGE; + +if ($opts{h} || $opts{V}){ + print $VERSION; + exit 0; +} + +################################################################ +# Defaults and parameters +################################################################ + +my $inputfile = shift; + +my $outputfile = $inputfile; + +$outputfile =~ s/\.([^\.]*)$/_zbl.$1/; + +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"; + + +# Creating the HTTP parameters +my $mirror = + "http://www.zentralblatt-math.org/MIRROR/zmath/en/search/"; +my $userAgent = LWP::UserAgent->new; + +# Processing the input +while (my $entry = new Text::BibTeX::Entry $input) { + 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); + next; + } + if ($entry->exists('zblnumber')) { + $entry->write($output); + 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); + +} + +$input->close(); +$output->close(); +exit 0; + +############################################################### +# Getting one Zbl +############################################################### + +sub GetZbl { + my $entry=shift; + my $userAgent=shift; + my $mirror=shift; + + 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"; + } + + 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) { + return $1; + } else { + return (""); + } +} + diff --git a/Build/source/texk/texlive/linked_scripts/crossrefware/ltx2crossrefxml.pl b/Build/source/texk/texlive/linked_scripts/crossrefware/ltx2crossrefxml.pl new file mode 100755 index 00000000000..5ceee5f13df --- /dev/null +++ b/Build/source/texk/texlive/linked_scripts/crossrefware/ltx2crossrefxml.pl @@ -0,0 +1,460 @@ +#!/usr/bin/env perl + +=pod + +=head1 NAME + +ltx2crossrefxml.pl - a tool for creation of XML files for submitting to crossref. + +=head1 SYNOPSIS + +ltx2crossrefxml [B<-c> I<config_file>] [B<-o> I<output>] I<latex_file> I<latex_file> ... + + +=head1 OPTIONS + +=over 4 + +=item B<-c> I<config_file> + +Configuration file. If this file is absent, some defaults are used. +See below for its format. + + +=item B<-o> I<output> + +Output file. If this option is not used, the XML is output to stdout. + +=back + +=head1 DESCRIPTION + +The script takes a number of latex files and produces an XML file +ready for submission to Crossref. Each file must be previously processed +by LaTeX with the newest C<resphilosophica> package: the package creates +the file C<.rti> wtih the information about the bibliography. + +The processing of reference list is at present rather limited: only so +called unstructured references are produced. + +=head1 CONFIGURATION FILE FORMAT + +The configuration file is mostly self-explanatory: it has comments +(starting with C<#>) and assginments in the form + + $field = value ; + +=head1 EXAMPLES + + ltx2crossrefxml.pl ../paper1/paper1.tex ../paper2/paper2.tex -o result.xml + + ltx2crossrefxml.pl -c myconfig.cnf paper.tex -o paper.xml + +=head1 AUTHOR + +Boris Veytsman + +=head1 COPYRIGHT AND LICENSE + +Copyright (C) 2012 Boris Veytsman + +This is free software. You may redistribute copies of it under the +terms of the GNU General Public License +L<http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the +extent permitted by law. + + +=cut + + use strict; + use POSIX qw(strftime); + use Text::BibTeX; + use Text::BibTeX::Name; + use TeX::Encode; + use Encode; + use HTML::Entities; + use XML::Entities; + use File::Basename; + use File::Spec; + my $USAGE="USAGE: $0 [-c config] [-o output] file1 file2 ...\n"; +my $VERSION = <<END; +ltx2crossrefxml v1.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 +extent permitted by law. +$USAGE +END + use Getopt::Std; + my %opts; + getopts('c:o:hV',\%opts) or die $USAGE; + +if ($opts{h} || $opts{V}){ + print $VERSION; + exit 0; +} + + ################################################################ + # Defaults and parameters + ################################################################ + + *OUT=*STDOUT; + + if (defined($opts{o})) { + open (OUT, ">$opts{o}") or die "Cannot open file $opts{o} for writing\n"; + } + + + our $depositorName='DEPOSITOR_NAME'; + our $depositorEmail='DEPOSITOR_EMAIL'; + our $registrant='REGISTRANT'; + our $fullTitle = "FULL TITLE"; + our $abbrevTitle = "ABBR. Title."; + our $issn = "1234-5678"; + our $coden = "CODEN"; + our $batchId="ltx2crossref$$"; + our $timestamp=strftime("%Y%m%d%H%M%S", gmtime); + + + if ($opts{c}) { + if (-r $opts{c}) { + require $opts{c}; + } else { + die "Cannot read options $opts{c}. $USAGE"; + } + } + + + + PrintHead(); + + # + # The hash %papers. Keys year->vol->issue->number + # + my %papers; + + foreach my $file (@ARGV) { + AddPaper($file); + } + + foreach my $year (keys %papers) { + foreach my $volume (keys %{$papers{$year}}) { + foreach my $issue (keys %{$papers{$year}->{$volume}}) { + PrintIssueHead($year, $volume, $issue); + my $paperList = $papers{$year}->{$volume}->{$issue}; + foreach my $paper (@{$paperList}) { + PrintPaper($paper); + } + } + } + + } + + PrintTail(); + + exit(0); + + +##################################################### +# Printing the head and the tail +##################################################### + +sub PrintHead { + + + print OUT <<END; +<doi_batch xmlns="http://www.crossref.org/schema/4.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="4.3.0" xsi:schemaLocation="http://www.crossref.org/schema/4.3.0 http://www.crossref.org/schema/deposit/crossref4.3.0.xsd"> + <head> + <doi_batch_id>$batchId</doi_batch_id> + <timestamp>$timestamp</timestamp> + <depositor> + <name>$depositorName</name> + <email_address>$depositorEmail</email_address> + </depositor> + <registrant>$registrant</registrant> + </head> + <body> + <journal> + <journal_metadata language="en"> + <full_title>$fullTitle</full_title> + <abbrev_title>$abbrevTitle</abbrev_title> + <issn>$issn</issn> + <coden>$coden</coden> + </journal_metadata> +END + +} + +sub PrintTail { + print OUT <<END; + </journal> + </body> +</doi_batch> +END + +return; +} + + +####################################################### +# Adding one paper +####################################################### + +sub AddPaper { + my $file = shift; + my ($name,$path,$suffix) = fileparse($file, '\.[^\.]*$'); + my $rpifile = File::Spec->catfile($path, "$name.rpi"); + open (RPI, $rpifile) or die + "Cannot find $rpifile. Did you process $file?\n"; + my %data; + while (<RPI>) { + chomp; + if (/^%([^=]*)\s*=\s*(.*)\s*$/) { + $data{$1}=$2; + } + } + close RPI; + my @bibliography; + foreach my $bibfile ($file, File::Spec->catfile($path, "$name.bbl")) { + @bibliography = (@bibliography, + AddBibliography($bibfile)); + } + $data{'bibliography'}=\@bibliography; + push @{$papers{$data{year}}->{$data{volume}}->{$data{issue}}}, \%data; +} + +############################################################## +# Reading a list of papers and adding it to the +# bibliography +############################################################## + +sub AddBibliography { + my $bibfile = shift; + open (BIB, $bibfile) or return; + my $insidebibliography = 0; + my $currpaper=""; + my @result; + my $key; + while (<BIB>) { + chomp; + if (/^\s*\\bibitem(?:\[.*\])?+\{(.+)\}/) { + if ($insidebibliography) { + if ($currpaper) { + my %paperhash; + $paperhash{$key}=$currpaper; + push @result, \%paperhash; + } + } + $key = $1; + $currpaper=""; + $insidebibliography=1; + next; + } + if (/^\s*\\end\{thebibliography\}/) { + if ($currpaper) { + my %paperhash; + $paperhash{$key}=$currpaper; + push @result, \%paperhash; + } + $currpaper=""; + $insidebibliography=0; + next; + } + if ($insidebibliography) { + $currpaper .= " $_"; + } + } + close BIB; + return @result; +} + +################################################################# +# Printing information about one issue +################################################################# + +sub PrintIssueHead { + my ($year, $volume, $issue) = @_; + print OUT <<END; + <journal_issue> + <publication_date media_type="print"> + <year>$year</year> + </publication_date> + <journal_volume> + <volume>$volume</volume> + </journal_volume> + <issue>$issue</issue> + </journal_issue> +END +} + +############################################################### +# Printing information about one paper +############################################################### +sub PrintPaper { + my $paper = shift; + my $title=SanitizeText($paper->{title}); + my $url=GetURL($paper); + print OUT <<END; + <journal_article publication_type="full_text"> + <titles> + <title> + $title + </title> + </titles> + <contributors> +END +my @authors = split /\s*\\and\s*/, $paper->{authors}; + my $seq='first'; + foreach my $author (@authors) { + print OUT <<END; + <person_name sequence="$seq" contributor_role="author"> +END +$seq='additional'; + PrintAuthor($author); + print OUT <<END; + </person_name> +END + + } + + print OUT <<END; + </contributors> + <publication_date media_type="print"> + <year>$paper->{year}</year> + </publication_date> + <pages> + <first_page>$paper->{startpage}</first_page> + <last_page>$paper->{endpage}</last_page> + </pages> + <doi_data> + <doi>$paper->{doi}</doi> + <timestamp>$timestamp</timestamp> + <resource>$url</resource> + </doi_data> +END + +if (scalar(@{$paper->{bibliography}})) { + print OUT <<END; + <citation_list> +END + foreach my $citation (@{$paper->{bibliography}}) { + PrintCitation($citation); + } + print OUT <<END; + </citation_list> +END +} + + print OUT <<END; + </journal_article> +END + + +} + + +############################################################### +# Sanitization of a text string +############################################################### +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 =~ 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 =~ 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/\s*([\.;,])/$1/g; + return $string; +} + +################################################################ +# Printing one author +################################################################ +sub PrintAuthor { + my $author=shift; + + my $person=new Text::BibTeX::Name ($author); + + if ($person->part('first')) { + my @tokens = $person->part('first'); + my $line = join(" ", @tokens); + $line = SanitizeText($line); + print OUT <<END; + <given_name>$line</given_name> +END + + } + + if ($person->part('last')) { + my $line = SanitizeText($person->part('last')); + print OUT <<END; + <surname>$line</surname> +END + + } + + if ($person->part('jr')) { + my $line = SanitizeText($person->part('jr')); + print OUT <<END; + <suffix>$line</suffix> +END + + } + +} + +############################################################# +# Printing citations +############################################################# +sub PrintCitation { + my $paperhash=shift; + foreach my $key (keys (%{$paperhash})) { + my $citation=$paperhash->{$key}; + $citation=SanitizeText($citation); + + print OUT <<END; + <citation key="$key"> + <unstructured_citation> + $citation + </unstructured_citation> + </citation> +END +} + +} + +############################################################## +# Calculating URL +############################################################## + +sub GetURL { + my $paper = shift; + + my $result; + if ($paper->{paperUrl}) { + $result= $paper->{paperUrl} + } else { + my $doi=$paper->{doi}; + $result= 'http://www.pdcnet.org/oom/service?url_ver=Z39.88-2004&rft_val_fmt=&rft.imuse_synonym=resphilosophica&rft.DOI='.$doi.'&svc_id=info:www.pdcnet.org/collection'; + } + $result =~ s/&/&/g; + return $result; +} diff --git a/Master/bin/alpha-linux/bibdoiadd b/Master/bin/alpha-linux/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/alpha-linux/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/alpha-linux/bibzbladd b/Master/bin/alpha-linux/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/alpha-linux/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/alpha-linux/ltx2crossrefxml b/Master/bin/alpha-linux/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/alpha-linux/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/amd64-freebsd/bibdoiadd b/Master/bin/amd64-freebsd/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/amd64-freebsd/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/amd64-freebsd/bibzbladd b/Master/bin/amd64-freebsd/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/amd64-freebsd/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/amd64-freebsd/ltx2crossrefxml b/Master/bin/amd64-freebsd/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/amd64-freebsd/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/amd64-kfreebsd/bibdoiadd b/Master/bin/amd64-kfreebsd/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/amd64-kfreebsd/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/amd64-kfreebsd/bibzbladd b/Master/bin/amd64-kfreebsd/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/amd64-kfreebsd/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/amd64-kfreebsd/ltx2crossrefxml b/Master/bin/amd64-kfreebsd/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/amd64-kfreebsd/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/amd64-netbsd/bibdoiadd b/Master/bin/amd64-netbsd/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/amd64-netbsd/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/amd64-netbsd/bibzbladd b/Master/bin/amd64-netbsd/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/amd64-netbsd/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/amd64-netbsd/ltx2crossrefxml b/Master/bin/amd64-netbsd/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/amd64-netbsd/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/armel-linux/bibdoiadd b/Master/bin/armel-linux/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/armel-linux/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/armel-linux/bibzbladd b/Master/bin/armel-linux/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/armel-linux/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/armel-linux/ltx2crossrefxml b/Master/bin/armel-linux/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/armel-linux/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/armhf-linux/bibdoiadd b/Master/bin/armhf-linux/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/armhf-linux/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/armhf-linux/bibzbladd b/Master/bin/armhf-linux/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/armhf-linux/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/armhf-linux/ltx2crossrefxml b/Master/bin/armhf-linux/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/armhf-linux/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/i386-cygwin/bibdoiadd b/Master/bin/i386-cygwin/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/i386-cygwin/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/i386-cygwin/bibzbladd b/Master/bin/i386-cygwin/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/i386-cygwin/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/i386-cygwin/ltx2crossrefxml b/Master/bin/i386-cygwin/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/i386-cygwin/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/i386-freebsd/bibdoiadd b/Master/bin/i386-freebsd/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/i386-freebsd/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/i386-freebsd/bibzbladd b/Master/bin/i386-freebsd/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/i386-freebsd/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/i386-freebsd/ltx2crossrefxml b/Master/bin/i386-freebsd/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/i386-freebsd/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/i386-kfreebsd/bibdoiadd b/Master/bin/i386-kfreebsd/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/i386-kfreebsd/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/i386-kfreebsd/bibzbladd b/Master/bin/i386-kfreebsd/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/i386-kfreebsd/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/i386-kfreebsd/ltx2crossrefxml b/Master/bin/i386-kfreebsd/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/i386-kfreebsd/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/i386-linux/bibdoiadd b/Master/bin/i386-linux/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/i386-linux/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/i386-linux/bibzbladd b/Master/bin/i386-linux/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/i386-linux/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/i386-linux/ltx2crossrefxml b/Master/bin/i386-linux/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/i386-linux/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/i386-netbsd/bibdoiadd b/Master/bin/i386-netbsd/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/i386-netbsd/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/i386-netbsd/bibzbladd b/Master/bin/i386-netbsd/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/i386-netbsd/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/i386-netbsd/ltx2crossrefxml b/Master/bin/i386-netbsd/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/i386-netbsd/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/i386-solaris/bibdoiadd b/Master/bin/i386-solaris/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/i386-solaris/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/i386-solaris/bibzbladd b/Master/bin/i386-solaris/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/i386-solaris/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/i386-solaris/ltx2crossrefxml b/Master/bin/i386-solaris/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/i386-solaris/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/mipsel-linux/bibdoiadd b/Master/bin/mipsel-linux/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/mipsel-linux/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/mipsel-linux/bibzbladd b/Master/bin/mipsel-linux/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/mipsel-linux/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/mipsel-linux/ltx2crossrefxml b/Master/bin/mipsel-linux/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/mipsel-linux/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/bibdoiadd b/Master/bin/powerpc-linux/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/powerpc-linux/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/bibzbladd b/Master/bin/powerpc-linux/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/powerpc-linux/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/ltx2crossrefxml b/Master/bin/powerpc-linux/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/powerpc-linux/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/sparc-solaris/bibdoiadd b/Master/bin/sparc-solaris/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/sparc-solaris/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/sparc-solaris/bibzbladd b/Master/bin/sparc-solaris/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/sparc-solaris/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/sparc-solaris/ltx2crossrefxml b/Master/bin/sparc-solaris/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/sparc-solaris/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/universal-darwin/bibdoiadd b/Master/bin/universal-darwin/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/universal-darwin/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/universal-darwin/bibzbladd b/Master/bin/universal-darwin/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/universal-darwin/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/universal-darwin/ltx2crossrefxml b/Master/bin/universal-darwin/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/universal-darwin/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/win32/bibdoiadd.exe b/Master/bin/win32/bibdoiadd.exe Binary files differnew file mode 100755 index 00000000000..5777d90a17a --- /dev/null +++ b/Master/bin/win32/bibdoiadd.exe diff --git a/Master/bin/win32/bibzbladd.exe b/Master/bin/win32/bibzbladd.exe Binary files differnew file mode 100755 index 00000000000..5777d90a17a --- /dev/null +++ b/Master/bin/win32/bibzbladd.exe diff --git a/Master/bin/win32/ltx2crossrefxml.exe b/Master/bin/win32/ltx2crossrefxml.exe Binary files differnew file mode 100755 index 00000000000..5777d90a17a --- /dev/null +++ b/Master/bin/win32/ltx2crossrefxml.exe diff --git a/Master/bin/x86_64-cygwin/bibdoiadd b/Master/bin/x86_64-cygwin/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/x86_64-cygwin/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/x86_64-cygwin/bibzbladd b/Master/bin/x86_64-cygwin/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/x86_64-cygwin/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/x86_64-cygwin/ltx2crossrefxml b/Master/bin/x86_64-cygwin/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/x86_64-cygwin/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/x86_64-darwin/bibdoiadd b/Master/bin/x86_64-darwin/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/x86_64-darwin/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/x86_64-darwin/bibzbladd b/Master/bin/x86_64-darwin/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/x86_64-darwin/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/x86_64-darwin/ltx2crossrefxml b/Master/bin/x86_64-darwin/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/x86_64-darwin/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/x86_64-linux/bibdoiadd b/Master/bin/x86_64-linux/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/x86_64-linux/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/x86_64-linux/bibzbladd b/Master/bin/x86_64-linux/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/x86_64-linux/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/x86_64-linux/ltx2crossrefxml b/Master/bin/x86_64-linux/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/x86_64-linux/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/bin/x86_64-solaris/bibdoiadd b/Master/bin/x86_64-solaris/bibdoiadd new file mode 120000 index 00000000000..3b37bd661ae --- /dev/null +++ b/Master/bin/x86_64-solaris/bibdoiadd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibdoiadd.pl
\ No newline at end of file diff --git a/Master/bin/x86_64-solaris/bibzbladd b/Master/bin/x86_64-solaris/bibzbladd new file mode 120000 index 00000000000..0661a888028 --- /dev/null +++ b/Master/bin/x86_64-solaris/bibzbladd @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/bibzbladd.pl
\ No newline at end of file diff --git a/Master/bin/x86_64-solaris/ltx2crossrefxml b/Master/bin/x86_64-solaris/ltx2crossrefxml new file mode 120000 index 00000000000..39f658b7c97 --- /dev/null +++ b/Master/bin/x86_64-solaris/ltx2crossrefxml @@ -0,0 +1 @@ +../../texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl
\ No newline at end of file diff --git a/Master/texmf-dist/doc/man/man1/bibdoiadd.1 b/Master/texmf-dist/doc/man/man1/bibdoiadd.1 new file mode 100644 index 00000000000..00103374766 --- /dev/null +++ b/Master/texmf-dist/doc/man/man1/bibdoiadd.1 @@ -0,0 +1,194 @@ +.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "bibdoiadd 1" +.TH bibdoiadd 1 "2014-10-18" "" "CROSSREF LIBRARY" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +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 +.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\-o\fR \fIoutput\fR" 4 +.IX Item "-o output" +Output file. If this option is not used, the name for the +output file is formed by adding \f(CW\*(C`_doi\*(C'\fR to the input file +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The script reads a BibTeX file. It checks whether the entries have +DOIs. If now, tries to contact http://www.crossref.org to get the +corresponding \s-1DOI\s0. The result is a BibTeX file with the fields +\&\f(CW\*(C`doi=...\*(C'\fR added. +.PP +The name of the output file is either set by the \fB\-o\fR option or +is derived by adding the suffix \f(CW\*(C`_doi\*(C'\fR to the output file. +.PP +There are two options for making queries with Crossref: free account +and paid membership. In the first case you still must register with +Crossref and are limited to a small number of queries, see the +agreement at +\&\f(CW\*(C`http://www.crossref.org/01company/free_services_agreement.html\*(C'\fR. In +the second case you have a username and password, and can use them for +automatic queries. I am not sure whether the use of this script is +allowed for the free account holders. Anyway if you try to add \s-1DOI\s0 +to a large number of entries, you should register as a paid member. +.SH "CONFIGURATION FILE" +.IX Header "CONFIGURATION FILE" +The configuration file is mostly self-explanatory: it has comments +(starting with \f(CW\*(C`#\*(C'\fR) and assginments in the form +.PP +.Vb 1 +\& $field = value ; +.Ve +.PP +The important parameters are \f(CW$mode\fR (\f(CW\*(Aqfree\*(Aq\fR or \f(CW\*(Aqpaid\*(Aq\fR, +\&\f(CW$email\fR (for free users) and \f(CW$username\fR & \f(CW$password\fR for paid +members. +.SH "EXAMPLES" +.IX Header "EXAMPLES" +.Vb 2 +\& bibdoiadd \-c bibdoiadd.cfg citations.bib > result.bib +\& bibdoiadd \-c bibdoiadd.cfg citations.bib \-o result.bib +.Ve +.SH "AUTHOR" +.IX Header "AUTHOR" +Boris Veytsman +.SH "COPYRIGHT AND LICENSE" +.IX Header "COPYRIGHT AND LICENSE" +Copyright (C) 2014 Boris Veytsman +.PP +This is free software. You may redistribute copies of it under the +terms of the \s-1GNU\s0 General Public License +<http://www.gnu.org/licenses/gpl.html>. There is \s-1NO\s0 \s-1WARRANTY\s0, to the +extent permitted by law. diff --git a/Master/texmf-dist/doc/man/man1/bibdoiadd.man1.pdf b/Master/texmf-dist/doc/man/man1/bibdoiadd.man1.pdf Binary files differnew file mode 100644 index 00000000000..46c4540b164 --- /dev/null +++ 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 new file mode 100644 index 00000000000..f2d5aca3047 --- /dev/null +++ b/Master/texmf-dist/doc/man/man1/bibzbladd.1 @@ -0,0 +1,162 @@ +.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "bibzbladd 1" +.TH bibzbladd 1 "2014-10-18" "" "CROSSREF LIBRARY" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +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 +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-o\fR \fIoutput\fR" 4 +.IX Item "-o output" +Output file. If this option is not used, the name for the +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 +result is a BibTeX file with the fields +\&\f(CW\*(C`zblnumber=...\*(C'\fR added. +.PP +The name of the output file is either set by the \fB\-o\fR option or +is derived by adding the suffix \f(CW\*(C`_zbl\*(C'\fR to the output file. +.SH "AUTHOR" +.IX Header "AUTHOR" +Boris Veytsman +.SH "COPYRIGHT AND LICENSE" +.IX Header "COPYRIGHT AND LICENSE" +Copyright (C) 2014 Boris Veytsman +.PP +This is free software. You may redistribute copies of it under the +terms of the \s-1GNU\s0 General Public License +<http://www.gnu.org/licenses/gpl.html>. There is \s-1NO\s0 \s-1WARRANTY\s0, to the +extent permitted by law. diff --git a/Master/texmf-dist/doc/man/man1/bibzbladd.man1.pdf b/Master/texmf-dist/doc/man/man1/bibzbladd.man1.pdf Binary files differnew file mode 100644 index 00000000000..0e7e13a2e82 --- /dev/null +++ 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 new file mode 100644 index 00000000000..983e7b99b8e --- /dev/null +++ b/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.1 @@ -0,0 +1,180 @@ +.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "ltx2crossrefxml 1" +.TH ltx2crossrefxml 1 "2014-10-18" "" "CROSSREF LIBRARY" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +ltx2crossrefxml.pl \- a tool for creation of XML files for submitting to crossref. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +ltx2crossrefxml [\fB\-c\fR \fIconfig_file\fR] [\fB\-o\fR \fIoutput\fR] \fIlatex_file\fR \fIlatex_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\-o\fR \fIoutput\fR" 4 +.IX Item "-o output" +Output file. If this option is not used, the \s-1XML\s0 is output to stdout. +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The script takes a number of latex files and produces an \s-1XML\s0 file +ready for submission to Crossref. Each file must be previously processed +by LaTeX with the newest \f(CW\*(C`resphilosophica\*(C'\fR package: the package creates +the file \f(CW\*(C`.rti\*(C'\fR wtih the information about the bibliography. +.PP +The processing of reference list is at present rather limited: only so +called unstructured references are produced. +.SH "CONFIGURATION FILE FORMAT" +.IX Header "CONFIGURATION FILE FORMAT" +The configuration file is mostly self-explanatory: it has comments +(starting with \f(CW\*(C`#\*(C'\fR) and assginments in the form +.PP +.Vb 1 +\& $field = value ; +.Ve +.SH "EXAMPLES" +.IX Header "EXAMPLES" +.Vb 1 +\& ltx2crossrefxml.pl ../paper1/paper1.tex ../paper2/paper2.tex \-o result.xml +\& +\& ltx2crossrefxml.pl \-c myconfig.cnf paper.tex \-o paper.xml +.Ve +.SH "AUTHOR" +.IX Header "AUTHOR" +Boris Veytsman +.SH "COPYRIGHT AND LICENSE" +.IX Header "COPYRIGHT AND LICENSE" +Copyright (C) 2012 Boris Veytsman +.PP +This is free software. You may redistribute copies of it under the +terms of the \s-1GNU\s0 General Public License +<http://www.gnu.org/licenses/gpl.html>. There is \s-1NO\s0 \s-1WARRANTY\s0, to the +extent permitted by law. diff --git a/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.man1.pdf b/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.man1.pdf Binary files differnew file mode 100644 index 00000000000..984ddee4c7f --- /dev/null +++ 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 new file mode 100644 index 00000000000..2126040c452 --- /dev/null +++ b/Master/texmf-dist/doc/support/crossrefware/Makefile @@ -0,0 +1,40 @@ +SCRIPTS = \ + ltx2crossrefxml.pl \ + bibdoiadd.pl \ + bibzbladd.pl + + +MAN1 = ${SCRIPTS:%.pl=%.1} + +PDF = crossrefware.pdf + +all: ${MAN1} ${PDF} + chmod a+x ${SCRIPTS} + + + +%.1: %.pl + pod2man -c "CROSSREF LIBRARY" -n $* -s 1 -r "" $< > $@ + + + + +clean: + $(RM) *.aux *.toc *.log *.tex *.idx *.ilg *.ind *.out *.zip *.tgz + +distclean: clean + $(RM) *.pdf *.1 *.3 + + +%.pdf: %.tex + pdflatex $* + makeindex $* + pdflatex $* + +crossrefware.tex: head.ltx + +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 diff --git a/Master/texmf-dist/doc/support/crossrefware/README b/Master/texmf-dist/doc/support/crossrefware/README new file mode 100644 index 00000000000..f5d0d13c9d3 --- /dev/null +++ b/Master/texmf-dist/doc/support/crossrefware/README @@ -0,0 +1,17 @@ + Crossrefware Bundle + version 1.0 + + +Scripts useful for working with crossref.org. + +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 + +Installation: + +1. Move *.pl files to the binaries directory in your system. + +2. Use *.cfg files as configuration files samples. + +3. Move *.1 to the man pages directory in your system. diff --git a/Master/texmf-dist/doc/support/crossrefware/aomsample.bib b/Master/texmf-dist/doc/support/crossrefware/aomsample.bib new file mode 100644 index 00000000000..1ca4c7908eb --- /dev/null +++ b/Master/texmf-dist/doc/support/crossrefware/aomsample.bib @@ -0,0 +1,277 @@ + +@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 new file mode 100644 index 00000000000..005b64998cc --- /dev/null +++ b/Master/texmf-dist/doc/support/crossrefware/citations.bib @@ -0,0 +1,811 @@ + +@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 differnew file mode 100644 index 00000000000..bfc0c19f196 --- /dev/null +++ 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 new file mode 100644 index 00000000000..552b829d579 --- /dev/null +++ b/Master/texmf-dist/doc/support/crossrefware/head.ltx @@ -0,0 +1,28 @@ +\documentclass{article} +\usepackage{makeidx} +\usepackage{librecaslon} +\usepackage[hidelinks]{hyperref} +\makeindex +\begin{document} +\title{Crossrefware documentation} +\author{Boris Veytsman} +\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}. + + +I am grateful to Josko Plazonic from Princeton Math Dept whose +(unpublished) Python script was an inspiration for this suite. + diff --git a/Master/texmf-dist/scripts/crossrefware/bibdoiadd.pl b/Master/texmf-dist/scripts/crossrefware/bibdoiadd.pl new file mode 100755 index 00000000000..b9be8dec824 --- /dev/null +++ b/Master/texmf-dist/scripts/crossrefware/bibdoiadd.pl @@ -0,0 +1,267 @@ +#!/usr/bin/env perl + +=pod + +=head1 NAME + +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> + +=head1 OPTIONS + +=over 4 + +=item B<-c> I<config_file> + +Configuration file. If this file is absent, some defaults are used. +See below for its format. + + +=item B<-o> I<output> + +Output file. If this option is not used, the name for the +output file is formed by adding C<_doi> to the input file + +=back + +=head1 DESCRIPTION + +The script reads a BibTeX file. It checks whether the entries have +DOIs. If now, tries to contact http://www.crossref.org to get the +corresponding DOI. The result is a BibTeX file with the fields +C<doi=...> added. + +The name of the output file is either set by the B<-o> option or +is derived by adding the suffix C<_doi> to the output file. + +There are two options for making queries with Crossref: free account +and paid membership. In the first case you still must register with +Crossref and are limited to a small number of queries, see the +agreement at +C<http://www.crossref.org/01company/free_services_agreement.html>. In +the second case you have a username and password, and can use them for +automatic queries. I am not sure whether the use of this script is +allowed for the free account holders. Anyway if you try to add DOI +to a large number of entries, you should register as a paid member. + + + +=head1 CONFIGURATION FILE + +The configuration file is mostly self-explanatory: it has comments +(starting with C<#>) and assginments in the form + + $field = value ; + +The important parameters are C<$mode> (C<'free'> or C<'paid'>, +C<$email> (for free users) and C<$username> & C<$password> for paid +members. + + +=head1 EXAMPLES + + bibdoiadd -c bibdoiadd.cfg citations.bib > result.bib + bibdoiadd -c bibdoiadd.cfg citations.bib -o result.bib + +=head1 AUTHOR + +Boris Veytsman + +=head1 COPYRIGHT AND LICENSE + +Copyright (C) 2014 Boris Veytsman + +This is free software. You may redistribute copies of it under the +terms of the GNU General Public License +L<http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the +extent permitted by law. + +=cut + +use strict; +use Text::BibTeX; +use Text::BibTeX::Name; +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 $VERSION = <<END; +bibdoiadd v1.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 +extent permitted by law. +$USAGE +END +my %opts; +getopts('c:o:hV',\%opts) or die $USAGE; + +if ($opts{h} || $opts{V}){ + print $VERSION; + exit 0; +} + +################################################################ +# Defaults and parameters +################################################################ + +my $inputfile = shift; + +my $outputfile = $inputfile; + +$outputfile =~ s/\.([^\.]*)$/_doi.$1/; + +if ($opts{o}) { + $outputfile = $opts{o}; +} + +our $mode='free'; +our $email; +our $username; +our $password; + +if ($opts{c}) { + if (-r $opts{c}) { + push @INC, "."; + require $opts{c}; + } else { + die "Cannot read options $opts{c}. $USAGE"; + } +} + + +# Check the consistency + +if ($mode eq 'free' && !length($email)) { + die "Crossref requires a registered e-mail for the free mode queries\n"; +} + +if ($mode eq 'paid' && (!length($username) || !length($password))) { + die + "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 $prefix = + "http://www.crossref.org/openurl?redirect=false"; +if ($mode eq 'free') { + $prefix .= '&pid='.uri_escape($email); +} else { + $prefix .= '&pid='.uri_escape($username).":". + uri_escape($password); +} + +# Processing the input +while (my $entry = new Text::BibTeX::Entry $input) { + 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); + next; + } + if ($entry->exists('doi')) { + $entry->write($output); + next; + } + + + # 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); + +} + +$input->close(); +$output->close(); +exit 0; + +############################################################### +# Getting one doi +############################################################### + +sub GetDoi { + my ($url,$entry) = @_; + if ($entry->exists('issn')) { + $url .= "&issn=".uri_escape(SanitizeText($entry->get('issn'))); + } + if ($entry->exists('journal')) { + $url .= "&title=".uri_escape(SanitizeText($entry->get('journal'))); + } + my @names=$entry->names ('author'); + if (scalar(@names)) { + my @lastnames = $names[0]->part ('last'); + if (scalar(@lastnames)) { + my $lastname = SanitizeText(join(' ',@lastnames)); + $url .= "&aulast=".uri_escape($lastname); + } + } + if ($entry->exists('volume')) { + $url .= "&volume=".uri_escape($entry->get('volume')); + } + if ($entry->exists('number')) { + $url .= "&issue=".uri_escape($entry->get('number')); + } + if ($entry->exists('pages')) { + my $pages=$entry->get('pages'); + $pages =~ s/-.*$//; + $url .= "&spage=".uri_escape($pages); + } + if ($entry->exists('year')) { + $url .= "&date=".uri_escape($entry->get('year')); + } + + my $result=get($url); + + if ($result =~ m/<doi [^>]*>(.*)<\/doi>/) { + return $1; + } else { + return ""; + } +} + +############################################################### +# Sanitization of a text string +############################################################### +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 =~ s/\\newblock//g; + $string =~ s/\\urlprefix//g; + $string =~ s/\\emph//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/\s*([\.;,])/$1/g; + return $string; +} diff --git a/Master/texmf-dist/scripts/crossrefware/bibzbladd.pl b/Master/texmf-dist/scripts/crossrefware/bibzbladd.pl new file mode 100755 index 00000000000..4059b7b0a12 --- /dev/null +++ b/Master/texmf-dist/scripts/crossrefware/bibzbladd.pl @@ -0,0 +1,215 @@ +#!/usr/bin/env perl + +=pod + +=head1 NAME + +bibzbladd.pl - add Zbl numbers to papers in a given bib file + +=head1 SYNOPSIS + +bibzbladd [B<-o> I<output>] I<bib_file> + +=head1 OPTIONS + +=over 4 + + +=item B<-o> I<output> + +Output file. If this option is not used, the name for the +output file is formed by adding C<_zbl> to the input file + +=back + +=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 +result is a BibTeX file with the fields +C<zblnumber=...> added. + +The name of the output file is either set by the B<-o> option or +is derived by adding the suffix C<_zbl> to the output file. + +=head1 AUTHOR + +Boris Veytsman + +=head1 COPYRIGHT AND LICENSE + +Copyright (C) 2014 Boris Veytsman + +This is free software. You may redistribute copies of it under the +terms of the GNU General Public License +L<http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the +extent permitted by law. + +=cut + +use strict; +use Text::BibTeX; +use Text::BibTeX::Name; +use Getopt::Std; +use URI::Escape; +use LWP::UserAgent; +use TeX::Encode; + +my $USAGE="USAGE: $0 [-o output] file\n"; +my $VERSION = <<END; +bibzbladd v1.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 +extent permitted by law. +$USAGE +END +my %opts; +getopts('o:hV',\%opts) or die $USAGE; + +if ($opts{h} || $opts{V}){ + print $VERSION; + exit 0; +} + +################################################################ +# Defaults and parameters +################################################################ + +my $inputfile = shift; + +my $outputfile = $inputfile; + +$outputfile =~ s/\.([^\.]*)$/_zbl.$1/; + +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"; + + +# Creating the HTTP parameters +my $mirror = + "http://www.zentralblatt-math.org/MIRROR/zmath/en/search/"; +my $userAgent = LWP::UserAgent->new; + +# Processing the input +while (my $entry = new Text::BibTeX::Entry $input) { + 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); + next; + } + if ($entry->exists('zblnumber')) { + $entry->write($output); + 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); + +} + +$input->close(); +$output->close(); +exit 0; + +############################################################### +# Getting one Zbl +############################################################### + +sub GetZbl { + my $entry=shift; + my $userAgent=shift; + my $mirror=shift; + + 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"; + } + + 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) { + return $1; + } else { + return (""); + } +} + diff --git a/Master/texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl b/Master/texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl new file mode 100755 index 00000000000..5ceee5f13df --- /dev/null +++ b/Master/texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl @@ -0,0 +1,460 @@ +#!/usr/bin/env perl + +=pod + +=head1 NAME + +ltx2crossrefxml.pl - a tool for creation of XML files for submitting to crossref. + +=head1 SYNOPSIS + +ltx2crossrefxml [B<-c> I<config_file>] [B<-o> I<output>] I<latex_file> I<latex_file> ... + + +=head1 OPTIONS + +=over 4 + +=item B<-c> I<config_file> + +Configuration file. If this file is absent, some defaults are used. +See below for its format. + + +=item B<-o> I<output> + +Output file. If this option is not used, the XML is output to stdout. + +=back + +=head1 DESCRIPTION + +The script takes a number of latex files and produces an XML file +ready for submission to Crossref. Each file must be previously processed +by LaTeX with the newest C<resphilosophica> package: the package creates +the file C<.rti> wtih the information about the bibliography. + +The processing of reference list is at present rather limited: only so +called unstructured references are produced. + +=head1 CONFIGURATION FILE FORMAT + +The configuration file is mostly self-explanatory: it has comments +(starting with C<#>) and assginments in the form + + $field = value ; + +=head1 EXAMPLES + + ltx2crossrefxml.pl ../paper1/paper1.tex ../paper2/paper2.tex -o result.xml + + ltx2crossrefxml.pl -c myconfig.cnf paper.tex -o paper.xml + +=head1 AUTHOR + +Boris Veytsman + +=head1 COPYRIGHT AND LICENSE + +Copyright (C) 2012 Boris Veytsman + +This is free software. You may redistribute copies of it under the +terms of the GNU General Public License +L<http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the +extent permitted by law. + + +=cut + + use strict; + use POSIX qw(strftime); + use Text::BibTeX; + use Text::BibTeX::Name; + use TeX::Encode; + use Encode; + use HTML::Entities; + use XML::Entities; + use File::Basename; + use File::Spec; + my $USAGE="USAGE: $0 [-c config] [-o output] file1 file2 ...\n"; +my $VERSION = <<END; +ltx2crossrefxml v1.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 +extent permitted by law. +$USAGE +END + use Getopt::Std; + my %opts; + getopts('c:o:hV',\%opts) or die $USAGE; + +if ($opts{h} || $opts{V}){ + print $VERSION; + exit 0; +} + + ################################################################ + # Defaults and parameters + ################################################################ + + *OUT=*STDOUT; + + if (defined($opts{o})) { + open (OUT, ">$opts{o}") or die "Cannot open file $opts{o} for writing\n"; + } + + + our $depositorName='DEPOSITOR_NAME'; + our $depositorEmail='DEPOSITOR_EMAIL'; + our $registrant='REGISTRANT'; + our $fullTitle = "FULL TITLE"; + our $abbrevTitle = "ABBR. Title."; + our $issn = "1234-5678"; + our $coden = "CODEN"; + our $batchId="ltx2crossref$$"; + our $timestamp=strftime("%Y%m%d%H%M%S", gmtime); + + + if ($opts{c}) { + if (-r $opts{c}) { + require $opts{c}; + } else { + die "Cannot read options $opts{c}. $USAGE"; + } + } + + + + PrintHead(); + + # + # The hash %papers. Keys year->vol->issue->number + # + my %papers; + + foreach my $file (@ARGV) { + AddPaper($file); + } + + foreach my $year (keys %papers) { + foreach my $volume (keys %{$papers{$year}}) { + foreach my $issue (keys %{$papers{$year}->{$volume}}) { + PrintIssueHead($year, $volume, $issue); + my $paperList = $papers{$year}->{$volume}->{$issue}; + foreach my $paper (@{$paperList}) { + PrintPaper($paper); + } + } + } + + } + + PrintTail(); + + exit(0); + + +##################################################### +# Printing the head and the tail +##################################################### + +sub PrintHead { + + + print OUT <<END; +<doi_batch xmlns="http://www.crossref.org/schema/4.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="4.3.0" xsi:schemaLocation="http://www.crossref.org/schema/4.3.0 http://www.crossref.org/schema/deposit/crossref4.3.0.xsd"> + <head> + <doi_batch_id>$batchId</doi_batch_id> + <timestamp>$timestamp</timestamp> + <depositor> + <name>$depositorName</name> + <email_address>$depositorEmail</email_address> + </depositor> + <registrant>$registrant</registrant> + </head> + <body> + <journal> + <journal_metadata language="en"> + <full_title>$fullTitle</full_title> + <abbrev_title>$abbrevTitle</abbrev_title> + <issn>$issn</issn> + <coden>$coden</coden> + </journal_metadata> +END + +} + +sub PrintTail { + print OUT <<END; + </journal> + </body> +</doi_batch> +END + +return; +} + + +####################################################### +# Adding one paper +####################################################### + +sub AddPaper { + my $file = shift; + my ($name,$path,$suffix) = fileparse($file, '\.[^\.]*$'); + my $rpifile = File::Spec->catfile($path, "$name.rpi"); + open (RPI, $rpifile) or die + "Cannot find $rpifile. Did you process $file?\n"; + my %data; + while (<RPI>) { + chomp; + if (/^%([^=]*)\s*=\s*(.*)\s*$/) { + $data{$1}=$2; + } + } + close RPI; + my @bibliography; + foreach my $bibfile ($file, File::Spec->catfile($path, "$name.bbl")) { + @bibliography = (@bibliography, + AddBibliography($bibfile)); + } + $data{'bibliography'}=\@bibliography; + push @{$papers{$data{year}}->{$data{volume}}->{$data{issue}}}, \%data; +} + +############################################################## +# Reading a list of papers and adding it to the +# bibliography +############################################################## + +sub AddBibliography { + my $bibfile = shift; + open (BIB, $bibfile) or return; + my $insidebibliography = 0; + my $currpaper=""; + my @result; + my $key; + while (<BIB>) { + chomp; + if (/^\s*\\bibitem(?:\[.*\])?+\{(.+)\}/) { + if ($insidebibliography) { + if ($currpaper) { + my %paperhash; + $paperhash{$key}=$currpaper; + push @result, \%paperhash; + } + } + $key = $1; + $currpaper=""; + $insidebibliography=1; + next; + } + if (/^\s*\\end\{thebibliography\}/) { + if ($currpaper) { + my %paperhash; + $paperhash{$key}=$currpaper; + push @result, \%paperhash; + } + $currpaper=""; + $insidebibliography=0; + next; + } + if ($insidebibliography) { + $currpaper .= " $_"; + } + } + close BIB; + return @result; +} + +################################################################# +# Printing information about one issue +################################################################# + +sub PrintIssueHead { + my ($year, $volume, $issue) = @_; + print OUT <<END; + <journal_issue> + <publication_date media_type="print"> + <year>$year</year> + </publication_date> + <journal_volume> + <volume>$volume</volume> + </journal_volume> + <issue>$issue</issue> + </journal_issue> +END +} + +############################################################### +# Printing information about one paper +############################################################### +sub PrintPaper { + my $paper = shift; + my $title=SanitizeText($paper->{title}); + my $url=GetURL($paper); + print OUT <<END; + <journal_article publication_type="full_text"> + <titles> + <title> + $title + </title> + </titles> + <contributors> +END +my @authors = split /\s*\\and\s*/, $paper->{authors}; + my $seq='first'; + foreach my $author (@authors) { + print OUT <<END; + <person_name sequence="$seq" contributor_role="author"> +END +$seq='additional'; + PrintAuthor($author); + print OUT <<END; + </person_name> +END + + } + + print OUT <<END; + </contributors> + <publication_date media_type="print"> + <year>$paper->{year}</year> + </publication_date> + <pages> + <first_page>$paper->{startpage}</first_page> + <last_page>$paper->{endpage}</last_page> + </pages> + <doi_data> + <doi>$paper->{doi}</doi> + <timestamp>$timestamp</timestamp> + <resource>$url</resource> + </doi_data> +END + +if (scalar(@{$paper->{bibliography}})) { + print OUT <<END; + <citation_list> +END + foreach my $citation (@{$paper->{bibliography}}) { + PrintCitation($citation); + } + print OUT <<END; + </citation_list> +END +} + + print OUT <<END; + </journal_article> +END + + +} + + +############################################################### +# Sanitization of a text string +############################################################### +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 =~ 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 =~ 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/\s*([\.;,])/$1/g; + return $string; +} + +################################################################ +# Printing one author +################################################################ +sub PrintAuthor { + my $author=shift; + + my $person=new Text::BibTeX::Name ($author); + + if ($person->part('first')) { + my @tokens = $person->part('first'); + my $line = join(" ", @tokens); + $line = SanitizeText($line); + print OUT <<END; + <given_name>$line</given_name> +END + + } + + if ($person->part('last')) { + my $line = SanitizeText($person->part('last')); + print OUT <<END; + <surname>$line</surname> +END + + } + + if ($person->part('jr')) { + my $line = SanitizeText($person->part('jr')); + print OUT <<END; + <suffix>$line</suffix> +END + + } + +} + +############################################################# +# Printing citations +############################################################# +sub PrintCitation { + my $paperhash=shift; + foreach my $key (keys (%{$paperhash})) { + my $citation=$paperhash->{$key}; + $citation=SanitizeText($citation); + + print OUT <<END; + <citation key="$key"> + <unstructured_citation> + $citation + </unstructured_citation> + </citation> +END +} + +} + +############################################################## +# Calculating URL +############################################################## + +sub GetURL { + my $paper = shift; + + my $result; + if ($paper->{paperUrl}) { + $result= $paper->{paperUrl} + } else { + my $doi=$paper->{doi}; + $result= 'http://www.pdcnet.org/oom/service?url_ver=Z39.88-2004&rft_val_fmt=&rft.imuse_synonym=resphilosophica&rft.DOI='.$doi.'&svc_id=info:www.pdcnet.org/collection'; + } + $result =~ s/&/&/g; + return $result; +} diff --git a/Master/texmf-dist/tex/latex/crossrefware/bibdoiadd.cfg b/Master/texmf-dist/tex/latex/crossrefware/bibdoiadd.cfg new file mode 100644 index 00000000000..48dd0b244c4 --- /dev/null +++ b/Master/texmf-dist/tex/latex/crossrefware/bibdoiadd.cfg @@ -0,0 +1,9 @@ +$mode = 'paid'; # Other option is 'free' +$email = 'user@company.domain'; +$username = 'XXXXXX'; # For paid users +$password = 'XXXXXX'; # For paid users + + +# Last line must be 1; + +1; diff --git a/Master/texmf-dist/tex/latex/crossrefware/ltx2crossrefxml.cfg b/Master/texmf-dist/tex/latex/crossrefware/ltx2crossrefxml.cfg new file mode 100644 index 00000000000..e6a1459e180 --- /dev/null +++ b/Master/texmf-dist/tex/latex/crossrefware/ltx2crossrefxml.cfg @@ -0,0 +1,22 @@ +# +# Configuration file for ltx2crossrefxml.pl +# + +# Name of the depositor +$depositorName='NAME'; + +# Email +$depositorEmail='EMAIL'; + +# Organization +$registrant='ORGANIZATION'; + +# The rest is self-evident +$fullTitle = "TITLE"; +$abbrevTitle = "TTL"; +$issn = "NNNN-NNNNNN"; +$coden = "CODEN"; + + +# The last line must be 1; +1;
\ No newline at end of file diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 77e31aa83fa..54bc764db88 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -149,7 +149,7 @@ my @TLP_working = qw( countriesofeurope counttexruns courier-scaled courseoutline coursepaper coverpage covington cprotect - crbox crop crossreference crossword crosswrd cryst + crbox crop crossreference crossrefware crossword crosswrd cryst cs csbulletin cslatex csplain csquotes csquotes-de csvsimple csvtools cstex ctanify ctanupload ctable ctex ctex-faq cursolatex cuisine diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 6ba1a8e3e45..c187df5091e 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -2509,6 +2509,7 @@ $standardxmt='\.xmt'; 'bundledoc' => '(arlatex|bundledoc)$', 'checkcites' => '\.lua$', 'convbkmk' => '\.rb$', + 'crossrefware' => '\.pl$', 'ctanify' => '^ctanify$', 'ctanupload' => '\.pl$', 'de-macro' => 'de-macro', @@ -2598,6 +2599,7 @@ $standardxmt='\.xmt'; # packages which have man pages to install. %specialmans = ( 'bundledoc' => '\.1$', + 'crossrefware' => '\.1$', 'ctanify' => '\.1$', 'dosepsbin' => 'dosepsbin.man', 'epstopdf' => 'r?epstopdf.1|epstopdf.man1.pdf', # don't keep pdf @@ -3095,7 +3097,7 @@ sub runins { print "\t RUNINS $thispatt\n"; for (grep (/$thispatt/, @filenames)) { # do not infinite loop on docstrip "output directory", e.g., fltpoint. - &runjob ("yes | sed 10q | env MKTEXTFM=1 MKTEXMF=1 MKTEXPK=0 $insrunner $_"); + &runjob ("yes | sed 10q | env MKTEXTFM=0 MKTEXMF=0 MKTEXPK=0 $insrunner $_"); # in the case of fullblck (et al.?), the .dtx creates the .ins (so the # .ins is not in @filenames), and the .ins creates the .sty. diff --git a/Master/tlpkg/tlpsrc/collection-bibtexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-bibtexextra.tlpsrc index 835c61e6d6b..8b1280a68e7 100644 --- a/Master/tlpkg/tlpsrc/collection-bibtexextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-bibtexextra.tlpsrc @@ -59,6 +59,7 @@ depend chembst depend chscite depend collref depend compactbib +depend crossrefware depend custom-bib depend din1505 depend dk-bib diff --git a/Master/tlpkg/tlpsrc/crossrefware.tlpsrc b/Master/tlpkg/tlpsrc/crossrefware.tlpsrc new file mode 100644 index 00000000000..6929fb622ea --- /dev/null +++ b/Master/tlpkg/tlpsrc/crossrefware.tlpsrc @@ -0,0 +1,8 @@ +binpattern f bin/${ARCH}/bibdoiadd +docpattern +f texmf-dist/doc/man/man1/bibdoiadd.* +# +binpattern f bin/${ARCH}/bibzbladd +docpattern +f texmf-dist/doc/man/man1/bibzbladd.* +# +binpattern f bin/${ARCH}/ltx2crossrefxml +docpattern +f texmf-dist/doc/man/man1/ltx2crossrefxml.* |