\" -*- mode: troff; coding: utf-8 -*-
\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
\"
\" 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
.
\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
ie n \{\
   ds C` ""
   ds C' ""
'br\}
el\{\
   ds C`
   ds C'
'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 >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.
\"
\" Avoid warning from groff about undefined register 'F'.
de IX
.
nr rF 0
if \n(.g .if rF .nr rF 1
if (\n(rF:(\n(.g==0)) \{\
   if \nF \{\
       de IX
       tm Index:\\$1\t\\n%\t"\\$2"
.
       if !\nF==2 \{\
           nr % 0
           nr F 2
       \}
   \}
\}
rr rF
\" ========================================================================
\"
IX Title "bibdoiadd 1"
TH bibdoiadd 1 2024-09-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
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\-C\fR 1|0] [\fB\-e\fR 1|0] [\fB\-f\fR] [\fB\-o\fR \fIoutput\fR] \fIbib_file\fR
SH OPTIONS
IX Header "OPTIONS"
IP "\fB\-c\fR \fIconfig_file\fR" 4
IX Item "-c config_file"
Configuration file.  If this file is absent, some defaults are used.
See below for its format.
IP "\fB\-C\fR 1|0" 4
IX Item "-C 1|0"
Whether to canonicalize names in the output (1) or not (0).  By default, 1.
IP \fB\-e\fR 4
IX Item "-e"
If 1 (default), add empty doi if a doi cannot be found.  This prevents
repeated searches for the same entries if you add new entries to the
file.  Calling \f(CW\*(C`\-e 0\*(C'\fR suppresses this behavior.
IP \fB\-f\fR 4
IX Item "-f"
Force checking doi number even if one is present
IP "\fB\-o\fR \fIoutput\fR" 4
IX Item "-o output"
Output file.  If this option is not used, the name for the
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 not, it tries to contact http://www.crossref.org to get the
corresponding DOI.  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
Every BibTeX record in the input is parsed, using BibTeX::Parser, but
only the ones that do not have the \f(CW\*(C`doi\*(C'\fR field (or \f(CW\*(C`mrnumber\*(C'\fR or
\&\f(CW\*(C`zblnumber\*(C'\fR for the sibling scripts) are processed. These entries
without the requested field are written back, as described in
BibTeX::Parser::Entry.
PP
The bib records that are not processed (because they already have the
requested field) are written back as-is, without any reformatting.
PP
There are (were?) 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. At any rate, if you want to add
DOIs to a large number of entries, you should register as a paid member.
SH "CONFIGURATION FILE"
IX Header "CONFIGURATION FILE"
The configuration file relates to the Crossref queries, and 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 \-o \- citations.bib > result.bib
\&   bibdoiadd \-c bibdoiadd.cfg \-o result.bib citations.bib
Ve
SH AUTHOR
IX Header "AUTHOR"
Boris Veytsman
SH "COPYRIGHT AND LICENSE"
IX Header "COPYRIGHT AND LICENSE"
Copyright (C) 2014\-2024 Boris Veytsman
PP
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.