From 9d67bfdcf1353cbb0d96f6eb0e10b469ab0020b9 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 3 Oct 2021 20:32:45 +0000 Subject: crossrefware (3oct21) git-svn-id: svn://tug.org/texlive/trunk@60689 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/man/man1/bbl2bib.1 | 16 +- Master/texmf-dist/doc/man/man1/bbl2bib.man1.pdf | Bin 22316 -> 22671 bytes Master/texmf-dist/doc/man/man1/bibdoiadd.1 | 16 +- Master/texmf-dist/doc/man/man1/bibdoiadd.man1.pdf | Bin 23495 -> 24312 bytes Master/texmf-dist/doc/man/man1/bibmradd.1 | 14 +- Master/texmf-dist/doc/man/man1/bibmradd.man1.pdf | Bin 18936 -> 19650 bytes Master/texmf-dist/doc/man/man1/biburl2doi.1 | 14 +- Master/texmf-dist/doc/man/man1/biburl2doi.man1.pdf | Bin 18240 -> 19142 bytes Master/texmf-dist/doc/man/man1/bibzbladd.1 | 14 +- Master/texmf-dist/doc/man/man1/bibzbladd.man1.pdf | Bin 19265 -> 19794 bytes Master/texmf-dist/doc/man/man1/ltx2crossrefxml.1 | 248 ++++++++++++++++++--- .../doc/man/man1/ltx2crossrefxml.man1.pdf | Bin 21261 -> 41710 bytes .../texmf-dist/doc/support/crossrefware/Makefile | 20 +- Master/texmf-dist/doc/support/crossrefware/README | 66 +++--- .../doc/support/crossrefware/crossrefware.pdf | Bin 136411 -> 233582 bytes .../texmf-dist/doc/support/crossrefware/head.ltx | 47 ++-- 16 files changed, 336 insertions(+), 119 deletions(-) (limited to 'Master/texmf-dist/doc') diff --git a/Master/texmf-dist/doc/man/man1/bbl2bib.1 b/Master/texmf-dist/doc/man/man1/bbl2bib.1 index e41fb401cd1..8cec0f740e4 100644 --- a/Master/texmf-dist/doc/man/man1/bbl2bib.1 +++ b/Master/texmf-dist/doc/man/man1/bbl2bib.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, 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. @@ -56,12 +56,12 @@ .. .nr rF 0 .if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ +. if !\nF==2 \{\ . nr % 0 . nr F 2 . \} @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "bbl2bib 1" -.TH bbl2bib 1 "2018-04-29" "" "CROSSREF LIBRARY" +.TH bbl2bib 1 "2021-10-02" "" "LATEX CROSSREFWARE" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -158,7 +158,7 @@ Do not clean \s-1URL\s0 fields. .Sp Normally \f(CW\*(C`bbl2bib\*(C'\fR recognizes \s-1URL\s0 fields of the kind \&\f(CW\*(C`http://dx.doi.org\*(C'\fR and their variants and converts them to \s-1DOI\s0 -fields (see also \fIbiburl2doi\fR\|(1) script). The switch \fB\-u\fR +fields (see also \fBbiburl2doi\fR\|(1) script). The switch \fB\-u\fR suppresses this cleanup. .SH "DESCRIPTION" .IX Header "DESCRIPTION" @@ -205,7 +205,7 @@ Each bibliography item starts from the line Boris Veytsman .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" -Copyright (C) 2014\-2017 Boris Veytsman +Copyright (C) 2014\-2021 Boris Veytsman .PP This is free software. You may redistribute copies of it under the terms of the \s-1GNU\s0 General Public License diff --git a/Master/texmf-dist/doc/man/man1/bbl2bib.man1.pdf b/Master/texmf-dist/doc/man/man1/bbl2bib.man1.pdf index 310326c188b..e7bfc4331f4 100644 Binary files a/Master/texmf-dist/doc/man/man1/bbl2bib.man1.pdf and b/Master/texmf-dist/doc/man/man1/bbl2bib.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/bibdoiadd.1 b/Master/texmf-dist/doc/man/man1/bibdoiadd.1 index 0c01604bd64..7c3e4ea3d02 100644 --- a/Master/texmf-dist/doc/man/man1/bibdoiadd.1 +++ b/Master/texmf-dist/doc/man/man1/bibdoiadd.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, 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. @@ -56,12 +56,12 @@ .. .nr rF 0 .if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ +. if !\nF==2 \{\ . nr % 0 . nr F 2 . \} @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "bibdoiadd 1" -.TH bibdoiadd 1 "2017-11-26" "" "CROSSREF LIBRARY" +.TH bibdoiadd 1 "2021-10-02" "" "LATEX CROSSREFWARE" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -168,7 +168,7 @@ output file is formed by adding \f(CW\*(C`_doi\*(C'\fR to the input file .IX Header "DESCRIPTION" The script reads a BibTeX file. It checks whether the entries have DOIs. If not, it tries to contact http://www.crossref.org to get the -corresponding \s-1DOI. \s0 The result is a BibTeX file with the fields +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 @@ -206,7 +206,7 @@ members. Boris Veytsman .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" -Copyright (C) 2014\-2017 Boris Veytsman +Copyright (C) 2014\-2021 Boris Veytsman .PP This is free software. You may redistribute copies of it under the terms of the \s-1GNU\s0 General Public License diff --git a/Master/texmf-dist/doc/man/man1/bibdoiadd.man1.pdf b/Master/texmf-dist/doc/man/man1/bibdoiadd.man1.pdf index 3cb5bebd318..d3e0fa1b326 100644 Binary files a/Master/texmf-dist/doc/man/man1/bibdoiadd.man1.pdf and b/Master/texmf-dist/doc/man/man1/bibdoiadd.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/bibmradd.1 b/Master/texmf-dist/doc/man/man1/bibmradd.1 index 6906820fc2c..2544d30900e 100644 --- a/Master/texmf-dist/doc/man/man1/bibmradd.1 +++ b/Master/texmf-dist/doc/man/man1/bibmradd.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, 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. @@ -56,12 +56,12 @@ .. .nr rF 0 .if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ +. if !\nF==2 \{\ . nr % 0 . nr F 2 . \} @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "bibmradd 1" -.TH bibmradd 1 "2017-11-18" "" "CROSSREF LIBRARY" +.TH bibmradd 1 "2021-10-02" "" "LATEX CROSSREFWARE" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -174,7 +174,7 @@ is derived by adding the suffix \f(CW\*(C`_mr\*(C'\fR to the output file. Boris Veytsman .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" -Copyright (C) 2014\-2017 Boris Veytsman +Copyright (C) 2014\-2021 Boris Veytsman .PP This is free software. You may redistribute copies of it under the terms of the \s-1GNU\s0 General Public License diff --git a/Master/texmf-dist/doc/man/man1/bibmradd.man1.pdf b/Master/texmf-dist/doc/man/man1/bibmradd.man1.pdf index 1af29d0ceb9..556c41ff6a4 100644 Binary files a/Master/texmf-dist/doc/man/man1/bibmradd.man1.pdf and b/Master/texmf-dist/doc/man/man1/bibmradd.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/biburl2doi.1 b/Master/texmf-dist/doc/man/man1/biburl2doi.1 index 5eee6a2cb38..8222c42693d 100644 --- a/Master/texmf-dist/doc/man/man1/biburl2doi.1 +++ b/Master/texmf-dist/doc/man/man1/biburl2doi.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, 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. @@ -56,12 +56,12 @@ .. .nr rF 0 .if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ +. if !\nF==2 \{\ . nr % 0 . nr F 2 . \} @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "biburl2doi 1" -.TH biburl2doi 1 "2017-11-26" "" "CROSSREF LIBRARY" +.TH biburl2doi 1 "2021-10-02" "" "LATEX CROSSREFWARE" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -162,7 +162,7 @@ fields. Boris Veytsman .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" -Copyright (C) 2017 Boris Veytsman +Copyright (C) 2021 Boris Veytsman .PP This is free software. You may redistribute copies of it under the terms of the \s-1GNU\s0 General Public License diff --git a/Master/texmf-dist/doc/man/man1/biburl2doi.man1.pdf b/Master/texmf-dist/doc/man/man1/biburl2doi.man1.pdf index 57e5611ae98..bb5c13c677e 100644 Binary files a/Master/texmf-dist/doc/man/man1/biburl2doi.man1.pdf and b/Master/texmf-dist/doc/man/man1/biburl2doi.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/bibzbladd.1 b/Master/texmf-dist/doc/man/man1/bibzbladd.1 index 67c4bcc17d6..5894f1677ad 100644 --- a/Master/texmf-dist/doc/man/man1/bibzbladd.1 +++ b/Master/texmf-dist/doc/man/man1/bibzbladd.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, 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. @@ -56,12 +56,12 @@ .. .nr rF 0 .if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ +. if !\nF==2 \{\ . nr % 0 . nr F 2 . \} @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "bibzbladd 1" -.TH bibzbladd 1 "2018-04-15" "" "CROSSREF LIBRARY" +.TH bibzbladd 1 "2021-10-02" "" "LATEX CROSSREFWARE" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -174,7 +174,7 @@ is derived by adding the suffix \f(CW\*(C`_zbl\*(C'\fR to the output file. Boris Veytsman .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" -Copyright (C) 2014\-2017 Boris Veytsman +Copyright (C) 2014\-2021 Boris Veytsman .PP This is free software. You may redistribute copies of it under the terms of the \s-1GNU\s0 General Public License diff --git a/Master/texmf-dist/doc/man/man1/bibzbladd.man1.pdf b/Master/texmf-dist/doc/man/man1/bibzbladd.man1.pdf index bb7d03ceb37..75650271fd3 100644 Binary files a/Master/texmf-dist/doc/man/man1/bibzbladd.man1.pdf and b/Master/texmf-dist/doc/man/man1/bibzbladd.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.1 b/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.1 index a938c221308..cb8343aa609 100644 --- a/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.1 +++ b/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, 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. @@ -56,12 +56,12 @@ .. .nr rF 0 .if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ +. if !\nF==2 \{\ . nr % 0 . nr F 2 . \} @@ -133,57 +133,253 @@ .\" ======================================================================== .\" .IX Title "ltx2crossrefxml 1" -.TH ltx2crossrefxml 1 "2017-11-18" "" "CROSSREF LIBRARY" +.TH ltx2crossrefxml 1 "2021-10-02" "" "LATEX CROSSREFWARE" .\" 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. +ltx2crossrefxml.pl \- create XML files for submitting to crossref.org .SH "SYNOPSIS" .IX Header "SYNOPSIS" -ltx2crossrefxml [\fB\-c\fR \fIconfig_file\fR] [\fB\-o\fR \fIoutput\fR] \fIlatex_file\fR \fIlatex_file\fR ... +ltx2crossrefxml [\fB\-c\fR \fIconfig_file\fR] [\fB\-o\fR \fIoutput_file\fR] [\fB\-input\-is\-xml\fR] + \fIlatex_file1\fR \fIlatex_file2\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. +Configuration file. If this file is absent, defaults are used. See below for its format. -.IP "\fB\-o\fR \fIoutput\fR" 4 -.IX Item "-o output" +.IP "\fB\-o\fR \fIoutput_file\fR" 4 +.IX Item "-o output_file" Output file. If this option is not used, the \s-1XML\s0 is output to stdout. +.IP "\fB\-rpi\-is\-xml\fR" 4 +.IX Item "-rpi-is-xml" +Do not transform author and title input strings, assume they are valid \s-1XML.\s0 +.PP +The usual \f(CW\*(C`\-\-help\*(C'\fR and \f(CW\*(C`\-\-version\*(C'\fR options are also supported. Options +can begin with either \f(CW\*(C`\-\*(C'\fR or \f(CW\*(C`\-\-\*(C'\fR, and ordered arbitrarily. .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. +For each given \fIlatex_file\fR, this script reads \f(CW\*(C`.rpi\*(C'\fR and (if they +exist) \f(CW\*(C`.bbl\*(C'\fR files and outputs corresponding \s-1XML\s0 that can be uploaded +to Crossref (). Any extension of \fIlatex_file\fR is +ignored, and \fIlatex_file\fR itself is not read (and need not even exist). +.PP +Each \f(CW\*(C`.rpi\*(C'\fR file specifies the metadata for a single article to be +uploaded to Crossref (a \f(CW\*(C`journal_article\*(C'\fR element in their schema); an +example is below. These files are output by the \f(CW\*(C`resphilosophica\*(C'\fR +package (), but (as always) can +also be created by hand or by whatever other method you implement. +.PP +Any \f(CW\*(C`.bbl\*(C'\fR files present are used for the citation information in the +output \s-1XML.\s0 See the \s-1CITATIONS\s0 section below. .PP -The processing of reference list is at present rather limited: only so -called unstructured references are produced. +Unless \f(CW\*(C`\-\-rpi\-is\-xml\*(C'\fR is specified, for all text (authors, title, +citations), standard TeX control sequences are replaced with plain text +or \s-1UTF\-8\s0 or eliminated, as appropriate. The \f(CW\*(C`LaTeX::ToUnicode::convert\*(C'\fR +routine is used for this (). +Tricky TeX control sequences will almost surely not be handled +correctly. If \f(CW\*(C`\-\-rpi\-is\-xml\*(C'\fR is given, the author and title strings +from the rpi files are output as-is, assuming they are valid \s-1XML\s0; no +checking is done. Citation text from \f(CW\*(C`.bbl\*(C'\fR files is always converted +from LaTeX to plain text. +.PP +This script just writes an \s-1XML\s0 file. It's up to you to actually do the +uploading to Crossref; for example, you can use their Java tool +\&\f(CW\*(C`crossref\-upload\-tool.jar\*(C'\fR +(). +For the definition of their schema, see + +(this is the schema version currently followed by this script). .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 +The configuration file is read as Perl code. Thus, comment lines +starting with \f(CW\*(C`#\*(C'\fR and blank lines are ignored. The other lines are +typically assignments in the form (spaces are optional): .PP .Vb 1 -\& $field = value ; +\& $variable = value ; +.Ve +.PP +Usually the value is a \f(CW"string"\fR enclosed in \s-1ASCII\s0 double-quote or +single-quote characters, per Perl syntax. The idea is to specify the +user-specific and journal-specific values needed for the Crossref +upload. The variables which are used are these: +.PP +.Vb 7 +\& $depositorName = "Depositor Name"; +\& $depositorEmail = \*(Aqdepositor@example.org\*(Aq; +\& $registrant = \*(AqRegistrant\*(Aq; # organization name +\& $fullTitle = "FULL TITLE"; # journal name +\& $issn = "1234\-5678"; # required +\& $abbrevTitle = "ABBR. TTL."; # optional +\& $coden = "CODEN"; # optional +.Ve +.PP +For a given run, all \f(CW\*(C`.rpi\*(C'\fR data read is assumed to belong to the +journal that is specified in the configuration file. More precisely, the +configuration data is written as a \f(CW\*(C`journal_metadata\*(C'\fR element, with +given \f(CW\*(C`full_title\*(C'\fR, \f(CW\*(C`issn\*(C'\fR, etc., and then each \f(CW\*(C`.rpi\*(C'\fR is written as +\&\f(CW\*(C`journal_issue\*(C'\fR plus \f(CW\*(C`journal_article\*(C'\fR elements. +.PP +The configuration file can also define one Perl function: +\&\f(CW\*(C`LaTeX_ToUnicode_convert_hook\*(C'\fR. If it is defined, it is called at the +beginning of the procedure that converts LaTeX text to Unicode, which is +done with the LaTeX::ToUnicode module, from the \f(CW\*(C`bibtexperllibs\*(C'\fR +package (). The function must +accept one string (the LaTeX text), and return one string (presumably +the transformed string). The standard conversions are then applied to +the returned string, so the configured function need only handle special +cases, such as control sequences particular to the journal at hand. +.SH "RPI FILE FORMAT" +.IX Header "RPI FILE FORMAT" +Here's the (relevant part of the) \f(CW\*(C`.rpi\*(C'\fR file corresponding to the +\&\f(CW\*(C`rpsample.tex\*(C'\fR example in the \f(CW\*(C`resphilosophica\*(C'\fR package +(): +.PP +.Vb 10 +\& %authors=Boris Veytsman\eand A. U. Th{\eo }r\eand C. O. R\e"espondent +\& %title=A Sample Paper:\e\e \eemph {A Template} +\& %year=2012 +\& %volume=90 +\& %issue=1\-\-2 +\& %startpage=1 +\& %endpage=1 +\& %doi=10.11612/resphil.A31245 +\& %paperUrl=http://borisv.lk.net/paper12 +\& %publicationType=full_text +.Ve +.PP +Other lines, some not beginning with %, are ignored (and not shown). +For more details on processing, see the code. +.PP +The \f(CW%paperUrl\fR value is what will be associated with the given \f(CW%doi\fR +(output as the \f(CW\*(C`resource\*(C'\fR element). Crossref strongly recommends that +the url be for a so-called landing page, and not directly for a pdf +(). +Special case: if the url is not specified, +and the journal is \fIRes\ Philosophica\fR, +a special-purpose search url using pdcnet.org is returned. +Any other journal must always specify this. +.PP +The \f(CW%authors\fR field is split at \f(CW\*(C`\eand\*(C'\fR (ignoring whitespace before +and after), and output as the \f(CW\*(C`contributors\*(C'\fR element, using +\&\f(CW\*(C`sequence="first"\*(C'\fR for the first listed, \f(CW\*(C`sequence="additional"\*(C'\fR for +the remainder. +.PP +If the \f(CW%publicationType\fR is not specified, it defaults to +\&\f(CW\*(C`full_text\*(C'\fR, since that has historically been the case; \f(CW\*(C`full_text\*(C'\fR +can also be given explicitly. The other values allowed by the Crossref +schema are \f(CW\*(C`abstract_only\*(C'\fR and \f(CW\*(C`bibliographic_record\*(C'\fR. Finally, if the +value is \f(CW\*(C`omit\*(C'\fR, the \f(CW\*(C`publication_type\*(C'\fR attribute is omitted entirely +from the given \f(CW\*(C`journal_article\*(C'\fR element. +.PP +Each \f(CW\*(C`.rpi\*(C'\fR must contain information for only one article, but multiple +files can be read in a single run. It would not be difficult to support +multiple articles in a single \f(CW\*(C`.rpi\*(C'\fR file, but it makes debugging and +error correction easier when each uploaded \s-1XML\s0 contains a single +article. +.SS "\s-1MORE ABOUT AUTHOR NAMES\s0" +.IX Subsection "MORE ABOUT AUTHOR NAMES" +The three formats for names recognized are (not coincidentally) the same +as BibTeX: +.PP +.Vb 3 +\& First von Last +\& von Last, First +\& von Last, Jr., First .Ve +.PP +The forms can be freely intermixed within a single \f(CW%authors\fR line, +separated with \f(CW\*(C`\eand\*(C'\fR (including the backslash). Commas as name +separators are not supported, unlike BibTeX. +.PP +In short, you may almost always use the first form; you shouldn't if +either there's a Jr part, or the Last part has multiple tokens but +there's no von part. See the \f(CW\*(C`btxdoc\*(C'\fR (``BibTeXing'' by Oren Patashnik) +document for details. +.PP +In the \f(CW%authors\fR line of a \f(CW\*(C`.rpi\*(C'\fR file, some secondary directives are +recognized, indicated by \f(CW\*(C`|\*(C'\fR characters. Easiest to explain with an +example: +.PP +.Vb 1 +\& %authors=|organization|\eLaTeX\e Project Team \eand Alex Brown|orcid=123 +.Ve +.PP +Thus: 1) if \f(CW\*(C`|organization|\*(C'\fR is specified, the author name will be output +as an \f(CW\*(C`organization\*(C'\fR contributor, instead of the usual \f(CW\*(C`person_name\*(C'\fR, +as the Crossref schema requires. +.PP +2) If \f(CW\*(C`|orcid=\f(CIvalue\f(CW|\*(C'\fR is specified, the \fIvalue\fR is output as an +\&\f(CW\*(C`ORCID\*(C'\fR element for that \f(CW\*(C`person_name\*(C'\fR. +.PP +These two directives, \f(CW\*(C`|organization\*(C'\fR| and \f(CW\*(C`|orcid|\*(C'\fR are mutually +exclusive, because that's how the Crossref schema defines them. The \f(CW\*(C`=\*(C'\fR +sign after \f(CW\*(C`orcid\*(C'\fR is required, while all spaces after the \f(CW\*(C`orcid\*(C'\fR +keyword are ignored. Other than that, the \s-1ORCID\s0 value is output +literally. (E.g., the \s-1ORCID\s0 value of \f(CW123\fR above is clearly invalid, +but it would be output anyway, with no warning.) +.PP +Extra \f(CW\*(C`|\*(C'\fR characters, at the beginning or end of the entire \f(CW%authors\fR +string, or doubled in the middle, are accepted and ignored. Whitespace +is ignored around all \f(CW\*(C`|\*(C'\fR characters. +.SH "CITATIONS" +.IX Header "CITATIONS" +Each \f(CW\*(C`.bbl\*(C'\fR file corresponding to an input \f(CW\*(C`.rpi\*(C'\fR file is read and +used to output a \f(CW\*(C`citation_list\*(C'\fR element for that \f(CW\*(C`journal_article\*(C'\fR in +the output \s-1XML.\s0 If no \f(CW\*(C`.bbl\*(C'\fR file exists for a given \f(CW\*(C`.rpi\*(C'\fR, +no \f(CW\*(C`citation_list\*(C'\fR is output for that article. +.PP +The \f(CW\*(C`.bbl\*(C'\fR processing is rudimentary: only so-called +\&\f(CW\*(C`unstructured_citation\*(C'\fR references are produced for Crossref, that is, +the contents of the citation (each paragraph in the \f(CW\*(C`.bbl\*(C'\fR) is dumped +as a single flat string without markup. +.PP +Bibliography text is unconditionally converted from TeX to \s-1XML,\s0 via the +method described above. It is not unusual for the conversion to be +incomplete or incorrect. It is up to you to check for this; e.g., if +any backslashes remain in the output, it is most likely an error. +.PP +Furthermore, it is assumed that the \f(CW\*(C`.bbl\*(C'\fR file contains a sequence of +references, each starting with \f(CW\*(C`\ebibitem{\f(CIKEY\f(CW}\*(C'\fR (which itself must be +at the beginning of a line, preceded only by whitespace), and the whole +bibliography ending with \f(CW\*(C`\eend{thebibliography}\*(C'\fR (similarly at the +beginning of a line). A bibliography not following this format will not +produce useful results. Bibliographies can be created by hand, or with +BibTeX, or any other method. +.PP +The \f(CW\*(C`key\*(C'\fR attribute for the \f(CW\*(C`citation\*(C'\fR element is taken as the \fI\s-1KEY\s0\fR +argument to the \f(CW\*(C`\ebibitem\*(C'\fR command. The sequential number of the +citation (1, 2, ...) is appended. The argument to \f(CW\*(C`\ebibitem\*(C'\fR can be +empty (\f(CW\*(C`\ebibitem{}\*(C'\fR, and the sequence number will be used on its own. +Although TeX will not handle empty \f(CW\*(C`\ebibitem\*(C'\fR keys, it can be +convenient when creating a \f(CW\*(C`.bbl\*(C'\fR purely for Crossref. +.PP +The \f(CW\*(C`.rpi\*(C'\fR file is also checked for the bibliography information, in +this same format. +.PP +Feature request: if anyone is interested in figuring out how to generate +structured citations +() +instead of these flat text dumps, that would be great. .SH "EXAMPLES" .IX Header "EXAMPLES" -.Vb 1 -\& ltx2crossrefxml.pl ../paper1/paper1.tex ../paper2/paper2.tex \-o result.xml +.Vb 2 +\& ltx2crossrefxml.pl ../paper1/paper1.tex ../paper2/paper2.tex \e +\& \-o result.xml \& -\& ltx2crossrefxml.pl \-c myconfig.cnf paper.tex \-o paper.xml +\& ltx2crossrefxml.pl \-c myconfig.cfg paper.tex \-o paper.xml .Ve .SH "AUTHOR" .IX Header "AUTHOR" -Boris Veytsman +Boris Veytsman .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" -Copyright (C) 2012\-2016 Boris Veytsman +Copyright (C) 2012\-2021 Boris Veytsman .PP This is free software. You may redistribute copies of it under the terms of the \s-1GNU\s0 General Public License -. There is \s-1NO WARRANTY,\s0 to the +. There is \s-1NO WARRANTY,\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 index d1dc98a9c5b..d7d89732a11 100644 Binary files a/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.man1.pdf and b/Master/texmf-dist/doc/man/man1/ltx2crossrefxml.man1.pdf differ diff --git a/Master/texmf-dist/doc/support/crossrefware/Makefile b/Master/texmf-dist/doc/support/crossrefware/Makefile index 8181d382e32..c8caf35d606 100644 --- a/Master/texmf-dist/doc/support/crossrefware/Makefile +++ b/Master/texmf-dist/doc/support/crossrefware/Makefile @@ -1,8 +1,10 @@ +# Makefile for the (La)TeX crossrefware package. Public domain. + SCRIPTS = \ ltx2crossrefxml.pl \ bibdoiadd.pl \ - bibzbladd.pl \ bibmradd.pl \ + bibzbladd.pl \ biburl2doi.pl \ bbl2bib.pl @@ -15,17 +17,16 @@ PDF = crossrefware.pdf all: ${MAN1} ${PDF} chmod a+x ${SCRIPTS} - +check: + ./ltx2crossrefxml.pl --help + ./ltx2crossrefxml.pl --version %.1: %.pl - pod2man -c "CROSSREF LIBRARY" -n $* -s 1 -r "" $< > $@ - - + pod2man -c "LATEX CROSSREFWARE" -n $* -s 1 -r "" $< > $@ clean: - $(RM) *.aux *.toc *.log *.tex *.idx *.ilg *.ind *.out *.zip *.tgz \ - *~ + $(RM) *.aux *.toc *.log *.tex *.idx *.ilg *.ind *.out *.zip *.tgz *~ distclean: clean $(RM) *.pdf *.1 *.3 @@ -42,4 +43,7 @@ crossrefware.tex: ${SCRIPTS} pod2latex -modify -full -prefile head.ltx -out $@ $+ archive: all clean - COPYFILE_DISABLE=1 tar -C .. -czvf ../$(PACKAGE).tgz --exclude '*~' --exclude '*.tgz' --exclude '*.zip' --exclude CVS --exclude '.git*' $(PACKAGE); mv ../$(PACKAGE).tgz . + COPYFILE_DISABLE=1 tar -C .. -czvf ../$(PACKAGE).tgz --exclude '*~' \ + --exclude '*.tgz' --exclude '*.zip' --exclude CVS \ + --exclude '.git*' $(PACKAGE) + mv ../$(PACKAGE).tgz . diff --git a/Master/texmf-dist/doc/support/crossrefware/README b/Master/texmf-dist/doc/support/crossrefware/README index 882bdb31e0b..1682b98fe32 100644 --- a/Master/texmf-dist/doc/support/crossrefware/README +++ b/Master/texmf-dist/doc/support/crossrefware/README @@ -1,55 +1,61 @@ Crossrefware Bundle - version 2017/11/26 - + version 2021-10-02 Scripts useful for working with Crossref, MathSciNet and Zentralblatt MATH. -This work was commissioned by The Saint Lois University and The -Princeton University (Mathematics Department) - bibdoiadd.pl - add DOI numbers to papers in a given bib file bibzbladd.pl - add Zbl numbers to papers in a given bib file bibmradd.pl - add MR numbers to papers in a given bib file bbl2bib.pl - convert `thebibliography' environment to a bib file biburl2doi.pl - convert urls pointing to doi.org to dois -ltx2crossrefxml.pl - a tool for creation of XML files for submitting to crossref.org +ltx2crossrefxml.pl - create XML files for submission to crossref.org -The scripts use bibtexperllibs libraries from CTAN +Bug reports, source code: https://github.com/borisveytsman/crossrefware +Releases: https://ctan.org/pkg/crossrefware -Installation: +These scripts rely on the bibtexperllibs libraries (replace +/crossrefware with /bibtexperllibs in the above urls). -1. Move *.pl files to the binaries directory in your system. +For an example of using ltx2crossrefxml and associated code, see the +TUGboat processing at +https://github.com/TeXUsersGroup/tugboat/tree/trunk/capsules/crossref. +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. +This work was commissioned by The Saint Louis University and +Princeton University (Mathematics Department). Thank you! Changes: - 2018/04/15 - Fixed a bug in bibzbladd - - Work around a bug in mathscinet +2021-10-02 - changed TEXSELFAUTOPARENT to TEXMFROOT + +2021-01-18 - all conversions moved from ltx2crossrefxml to LaTeX::ToUnicode. + - config file can provide a hook for processing. + +2018/04/15 - Fixed a bug in bibzbladd + - Work around a bug in mathscinet - 2017/11/26: - Switched to date-based versioning for the - bundle. - - bbl2bib now converts urls starting with - http(s)://(dx.)doi.org to dois. This functionality - is also provided by a separate script biburl2doi - - bibadddoi now has the option to (not) canonize - names +2017/11/26 - Switched to date-based versioning for the bundle. + - bbl2bib now converts urls starting with + http(s)://(dx.)doi.org to dois. This functionality + is also provided by a separate script biburl2doi + - bibadddoi now has the option to (not) canonize names - Version 2.2: We now treat absent CA permissively. - New debug options for bbl2bib +Version 2.2: We now treat absent CA permissively. + New debug options for bbl2bib - Version 2.1a: Bug in bbl2bib corrected +Version 2.1a: Bug in bbl2bib corrected - Version 2.1: New options to add empty doi and zbl when doi or zbl - are not found to prevent repeated searches. - Added bibmradd.pl - Added bbl2bib.pl +Version 2.1: New options to add empty doi and zbl when doi or zbl + are not found to prevent repeated searches. + Added bibmradd.pl + Added bbl2bib.pl - Version 2.0: Moved to BibTeX::Parser suite. - Now we use new Zbmath interface. - Now we use bibtexperllibs libraries +Version 2.0: Moved to BibTeX::Parser suite. + Now we use new Zbmath interface. + Now we use bibtexperllibs libraries - Version 1.1: workaround for a bug with macrons in TeX::Encode \ No newline at end of file +Version 1.1: workaround for a bug with macrons in TeX::Encode diff --git a/Master/texmf-dist/doc/support/crossrefware/crossrefware.pdf b/Master/texmf-dist/doc/support/crossrefware/crossrefware.pdf index 87d5bac969e..c40afb1dee4 100644 Binary files a/Master/texmf-dist/doc/support/crossrefware/crossrefware.pdf and b/Master/texmf-dist/doc/support/crossrefware/crossrefware.pdf differ diff --git a/Master/texmf-dist/doc/support/crossrefware/head.ltx b/Master/texmf-dist/doc/support/crossrefware/head.ltx index 16391486bf9..72ae89028e6 100644 --- a/Master/texmf-dist/doc/support/crossrefware/head.ltx +++ b/Master/texmf-dist/doc/support/crossrefware/head.ltx @@ -1,39 +1,50 @@ -\documentclass{article} -\usepackage{makeidx} -\usepackage[osf]{mathpazo} +\documentclass[11pt]{article} +\usepackage{makeidx,fullpage} \usepackage[hidelinks]{hyperref} \makeindex \begin{document} \sloppy \title{Crossrefware documentation\thanks{This work was commissioned by - The Saint Lois University and The Princeton University (Mathematics - Department)}} + Saint Louis University and Princeton University (Mathematics Department)}} \author{Boris Veytsman\thanks{borisv@lk.net, boris@varphi.com}} \maketitle \tableofcontents \section{Introduction} -These scripts can be used to submit files to Crossref, check and add -doi numbers, MathSciNet numbers and ZbMath numbers to papers, and to -convert `bbl' files to `bib' files. +These scripts can be used to create files for submission to Crossref, +check and add doi numbers, MathSciNet numbers and ZbMath numbers to +papers, and to convert `bbl' files to `bib' files. -I am grateful to Josko Plazonic from Princeton Math Dept whose -(unpublished) Python script was an inspiration for this suite. +Development sources and issue tracker are on github: +\url{https://github.com/borisveytsman/crossrefware}. +Releases are made on CTAN: +\url{https://ctan.org/pkg/crossrefware} +and from there included in \TeX\ Live and other distributions. + +The script \path{ltx2crossrefxml} extracts information from \path{.rpi} +files and (if present) \path{.bbl} files and generates an XML file +suitable for submission to crossref.org. (Crossref is the organization +that handles DOI numbers for scholarly papers.) It does not actually +upload the submission, just outputs XML. -The script \path{ltx2crossrefxml} is used to extract the information -from a \LaTeX\ file and generate an XML file suitable for submission -to Crossref (the organization that keeps DOI numbering system). +This \path{.rpi} file is a plain text representation of the metadata for +one article. It is written by the \path{resphilosophica} package +(\url{https://ctan.org/pkg/resphilosophica}). It can also be created by +hand. -Several scripts, \path{bibdoiadd}, \path{bibmradd} and \path{bibmradd} +Several scripts, \path{bibdoiadd}, \path{bibmradd} and \path{bibzbladd} take a \path{bib} file, and add to each entry a DOI, MR or ZBL number correspondingly, if they can find this entry in the corresponding database. -Script \path{bbl2bib} tries to reconstruct a \path{bib} file from the +The \path{bbl2bib} script tries to reconstruct a \path{bib} file from the corresponding \path{thebibliography} environment. One can argue that -this operation is akin to reconstructing a cow from the steak. The -way the script does it is searching for the entry in the MR database, +this operation is akin to reconstructing the cow from a steak. The +way the script does it is by searching for the entry in the MR database, and creating the corresponding Bib\TeX\ fields. -Below are manual pages for these scripts. +I am grateful to Josko Plazonic from Princeton Math Dept whose +(unpublished) Python script was an inspiration for this suite. + +Following are manual pages for these scripts. -- cgit v1.2.3