%%
%% This is file `babelbib.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% babelbib.dtx  (with options: `latex,package')
%% 
%%   babelbib package
%% 
%%   Copyright  2003--2021 Harald Harders
%%   Copyright  2019--2021 Norbert Preining
%% 
%%   This program can be redistributed and/or modified under the terms
%%   of the LaTeX Project Public License Distributed from CTAN
%%   archives in directory macros/latex/base/lppl.txt; either
%%   version 1 of the License, or any later version.
%% 
%%   harald.harders@gmx.de
%%   norbert@preining.info
%% 
\NeedsTeXFormat{LaTeX2e}[1998/06/01]
\ProvidesPackage{babelbib}
  [2021/01/06 v1.34  babelbib: multilingual bibliographies]
\let\bbbbifpackageloaded=\@ifpackageloaded
\newif\ifbbbbfixlanguage
\DeclareOption{fixlanguage}{\bbbbfixlanguagetrue}
\DeclareOption{varlanguage}{\bbbbfixlanguagefalse}
\newif\ifbbbblanguagenames
\DeclareOption{nolanguagenames}{\bbbblanguagenamesfalse}
\DeclareOption{languagenames}{\bbbblanguagenamestrue}
\newif\ifbbbbannotations
\DeclareOption{annote}{\bbbbannotationstrue}
\DeclareOption{noannote}{\bbbbannotationsfalse}
\newif\ifbtx@printISBN
\newif\ifbtx@printISSN
\DeclareOption{isbn}{\btx@printISBNtrue}
\DeclareOption{noisbn}{\btx@printISBNfalse}
\DeclareOption{issn}{\btx@printISSNtrue}
\DeclareOption{noissn}{\btx@printISSNfalse}
\newcommand\btxprintmonthyear[4]{}
\newcommand*\btx@dateasis{%
  \def\btxprintmonthyear##1##2##3##4{##2\ ##3}%
}
\newcommand*\btx@datenumeric{%
  \def\btxprintmonthyear##1##2##3##4{%
    \ifnumber{##2}{\btxprintmonthyearnum{##2}{##3}}{##2\ ##3}}%
}
\newcommand*\btx@datename{%
  \def\btxprintmonthyear##1##2##3##4{%
    \ifnumber{##2}{%
      \ifcase ##2 \or
      \csname btxmonjan##4\endcsname{##1}\or
      \csname btxmonfeb##4\endcsname{##1}\or
      \csname btxmonmar##4\endcsname{##1}\or
      \csname btxmonapr##4\endcsname{##1}\or
      \csname btxmonmay##4\endcsname{##1}\or
      \csname btxmonjun##4\endcsname{##1}\or
      \csname btxmonjul##4\endcsname{##1}\or
      \csname btxmonaug##4\endcsname{##1}\or
      \csname btxmonsep##4\endcsname{##1}\or
      \csname btxmonoct##4\endcsname{##1}\or
      \csname btxmonnov##4\endcsname{##1}\or
      \csname btxmondec##4\endcsname{##1}\or
      \PackageError{babelbib}{%
        Month outside range 1 to 12 used}{%
        Better use the BibTeX names jan, feb, mar, etc.}%
      \fi
      \ ##3%
    }{%
      ##2\ ##3}%
  }%
}
\DeclareOption{dateasis}{\btx@dateasis}
\DeclareOption{datenumeric}{\btx@datenumeric}
\DeclareOption{datename}{\btx@datename}
\DeclareOption*{%
  \InputIfFileExists{\CurrentOption.bdf}{%
    \typeout{babelbib: \CurrentOption.bdf loaded due to explicit package
      option \CurrentOption}%
    \expandafter\def\csname bbbb\CurrentOption loaded\endcsname{\@empty}%
  }{%
    \PackageError{babelbib}{%
      Language definition file \CurrentOption.bdf not found}{%
      Maybe you misspelled the language option?}%
  }%
}
\ExecuteOptions{varlanguage,nolanguagenames,noannote,isbn,issn,datename}
\ProcessOptions*
\newcommand*{\bbbbifundefined}[1]{%
  \begingroup\expandafter\expandafter\expandafter\endgroup
  \expandafter\ifx\csname #1\endcsname\relax
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
\newcommand\bbbbaddto[2]{%
  \expandafter\bbbbifundefined{extras#1}{}{%
    \expandafter\addto\expandafter{\csname extras#1\endcsname}{%
      \csname #2\endcsname}%
    \typeout{babelbib extension \@backslashchar #2 added to
      \string\extras #1}%
  }%
}
\newcommand\inputbdf[2]{%
  \bbbbifundefined{date#1}{}{%
    \@ifundefined{bbbb#2loaded}{%
      \expandafter\def\csname bbbb#2loaded\endcsname{\@empty}%
      \typeout{babelbib: #2.bdf loaded because language #2 defined.}%
      \input{#2.bdf}%
    }{}%
  }%
}
\ifbbbbfixlanguage
  \newcommand\selectbiblanguage[1]{%
    \AtBeginDocument{\@selectbiblanguage{#1}}%
  }
  \AtBeginDocument{%
    \renewcommand\selectbiblanguage[1]{\@selectbiblanguage{#1}}%
  }
  \newcommand\@selectbiblanguage[1]{%
    \bbbbifundefined{bibs#1}{%
      \bbbbifundefined{date#1}{%
        \PackageError{babelbib}{Language #1 in bibliography not loaded
          by babel}{%
          The language #1 hasn't been loaded by babel.
          Add it to the\MessageBreak
          options of the \string\usepackage{babel} command or to the
          global options.}%
      }{%
        \PackageError{babelbib}{Language #1 in bibliography unknown by
          babelbib}{%
          There are no definitions for #1 available in the
          current\MessageBreak
          version of babelbib. Please contact harald.harders@gmx.de.}%
      }%
    }{%
      \typeout{babelbib: Set language for keywords in the bibliography fixed to #1}%
      \csname bibs#1\endcsname
    }%
  }
\else
  \newcommand\selectbiblanguage[1]{%
    \PackageWarning{babelbib}{Command \string\selectbiblanguage\space
      used without package\MessageBreak
      option fixlanguage. Ignored}%
  }
  \AtBeginDocument{%
    \typeout{babelbib: Use citation-dependent languages in bibliography}%
  }
\fi
\newcommand\btxselectlanguage[1]{%
  \bbbbifundefined{bibs#1}{%
    \bbbbifundefined{date#1}{%
      \PackageError{babelbib}{Language #1 in bibliography not loaded
        by babel}{%
        The language #1 hasn't been loaded by babel.
        Add it to the\MessageBreak
        options of the \string\usepackage{babel} command or to the
        global options.}%
    }{%
      \ifbbbbfixlanguage
        \PackageWarning{babelbib}{Language #1 in bibliography
          unknown\MessageBreak
          by babelbib. Hyphenation will be\MessageBreak
          incorrect}%
      \else
        \PackageError{babelbib}{Language #1 in bibliography unknown by
          babelbib}{%
          There are no definitions for #1 available in the
          current\MessageBreak
          version of babelbib. Please contact harald.harders@gmx.de.}%
      \fi
    }%
  }{%
    \csname extras#1\endcsname
    \selectlanguage{#1}%
  }%
}
\newcommand\biblanguage[1]{{%
    \expandafter\selectlanguage\expandafter{\biblanguagename}#1}}
\newcommand\btxlanguagename[1]{%
  \bbbbifundefined{btxlanguagename#1}{%
    \PackageError{babelbib}{Languagename for #1 not
      defined\MessageBreak
      in \languagename\space language}{%
      Either you have forgotten to specify the option `languagenames'
      when loading\MessageBreak
      babelbib, or the command \string\bibs\languagename\space does
      not contain a definition\MessageBreak
      for the command \string\btxlanguagename#1.
      In the latter case, please\MessageBreak
      contact harald.harders@gmx.de.}%
    #1%
  }{%
    \@nameuse{btxlanguagename#1}%
  }%
}
\newcommand*\setbtxfallbacklanguage[1]{%
  \edef\btxfallbacklanguage{#1}%
  \typeout{babelbib: Set bibliography fall-back language to
    \btxfallbacklanguage}%
}
\AtBeginDocument{%
  \@ifundefined{btxfallbacklanguage}{%
    \edef\btxfallbacklanguage{\languagename}%
  \typeout{babelbib: Set bibliography fall-back language to
    \btxfallbacklanguage}%
  }{%
    \typeout{babelbib: Bibliography fall-back language unchanged
      (\btxfallbacklanguage)}%
  }%
}
\newcommand*\declarebtxcommands[2]{%
  \AtBeginDocument{%
    \typeout{babelbib: Add a command to \string\bibs#1}%
    \expandafter\g@addto@macro\csname bibs#1\endcsname{#2}%
    \ifbbbbfixlanguage
      \selectbiblanguage{\biblanguagename}%
    \fi
  }%
}
\@onlypreamble\declarebtxcommands
\newcommand*\btxifchangecaseon{%
  \def\btxifchangecase{\@firstoftwo}%
}%
\newcommand*\btxifchangecaseoff{%
  \def\btxifchangecase{\@secondoftwo}%
}%
\newcommand\setbibliographyfont{%
  \@ifnextchar*{\@@setbibliographyfont}{\@setbibliographyfont}%
}
\newcommand\@setbibliographyfont[2]{%
  \bbbbifundefined{btx#1font}{%
    \PackageError{babelbib}{Bibliography font `#1' can't be set}{%
      You have tried to define a font for the bibliographic element
      \MessageBreak
      `#1', which is unknown to babelbib}%
  }{%
    \expandafter\renewcommand\csname btx#1font\endcsname{#2}%
    \typeout{babelbib: Bibliography font for `#1' changed.}%
  }%
}
\newcommand\@@setbibliographyfont[3]{%
  \bbbbifundefined{btx#2font}{%
    \expandafter\newcommand\csname btx#2font\endcsname{#3}%
    \typeout{babelbib: Bibliography font for `#2' newly defined.}%
  }{%
    \expandafter\renewcommand\csname btx#2font\endcsname{#3}%
    \typeout{babelbib: Bibliography font for `#2' changed.}%
  }%
}
\newcommand\providebibliographyfont{%
  \@ifnextchar*{\@@providebibliographyfont}{\@providebibliographyfont}%
}
\newcommand\@providebibliographyfont[2]{%
  \bbbbifundefined{btx#1font}{%
    \PackageError{babelbib}{Bibliography font `#1' can't be set}{%
      You have tried to define a font for the bibliographic element
      \MessageBreak
      `#1', which is unknown to babelbib}%
  }{%
    \expandafter\ifx\csname btx#1font\endcsname\@empty
      \expandafter\renewcommand\csname btx#1font\endcsname{#2}%
      \typeout{babelbib: Using the BibTeX style's default font for `#1'.}%
    \else
      \typeout{babelbib: Using user changed font for `#1'.}%
    \fi
  }%
}
\newcommand\@@providebibliographyfont[3]{%
  \bbbbifundefined{btx#2font}{%
    \expandafter\newcommand\csname btx#2font\endcsname{#3}%
    \typeout{babelbib: Using the BibTeX style's default font for `#2'.}%
  }{%
    \expandafter\ifx\csname btx#2font\endcsname\@empty
      \expandafter\renewcommand\csname btx#2font\endcsname{#3}%
      \typeout{babelbib: Using the BibTeX style's default font for `#2'.}%
    \else
      \typeout{babelbib: Using user changed font for `#2'.}%
    \fi
  }%
}
\newcommand*\btxnamefont{}
\let\btxnamefont=\@empty
\newcommand*\btxlastnamefont{}
\let\btxlastnamefont=\@empty
\newcommand\btxtitlefont{}
\let\btxtitlefont=\@empty
\newcommand\btxjtitlefont{}
\let\btxjtitlefont=\@empty
\newcommand\btxetalfont{}
\let\btxetalfont=\@empty
\newcommand\btxjournalfont{}
\let\btxjournalfont=\@empty
\newcommand\btxpublisherfont{}
\let\btxpublisherfont=\@empty
\newcommand\btxvolumefont{}
\let\btxvolumefont=\@empty
\newcommand\btxISBNfont{}
\let\btxISBNfont=\@empty
\newcommand\btxISSNfont{}
\let\btxISSNfont=\@empty
\newcommand\btxurlfont{}
\let\btxurlfont=\@empty
\newcommand\btxurldatefont{}
\let\btxurldatefont=\@empty
\newcommand\btxnumeralfont{}
\let\btxnumeralfont=\@empty
\newcommand\btxauthorcolon{:}
\newcommand\btxISBN{ISBN}
\newcommand\btxISSN{ISSN}
\DeclareRobustCommand\ifbtxprintISBN[1]{\ifbtx@printISBN #1\fi}
\DeclareRobustCommand\ifbtxprintISSN[1]{\ifbtx@printISSN #1\fi}
\newcommand*\btxprintISBN[1]{\csname btx@printISBN#1\endcsname}
\newcommand*\btxprintISSN[1]{\csname btx@printISSN#1\endcsname}
\ifbbbbannotations
  \DeclareRobustCommand\btxannotation[1]{%
    \begin{quotation}%
      \noindent
      #1%
    \end{quotation}%
  }
\else
  \DeclareRobustCommand\btxannotation[1]{}%
\fi
\providecommand\ifnumber[3]{%
 \begingroup\@tempswafalse\let\scr@next\test@number
 \expandafter\scr@next#1\scr@next
 \if@tempswa\endgroup#2\else\endgroup#3\fi
}
\providecommand*\test@number[1]{%
 \ifx \scr@next#1%
  \let\scr@next\relax
 \else
  \@tempcnta=\expandafter\expandafter\expandafter\number
  \expandafter`#1\relax
  \ifnum \@tempcnta>47\relax
   \ifnum \@tempcnta<58\relax
    \@tempswatrue
   \else\@tempswafalse\fi
  \else\@tempswafalse\fi
  \if@tempswa\else\let\scr@next\gobble@till@next\fi\fi
 \scr@next
}
\def\gobble@till@next#1\scr@next{}
\def\btx@parsenum#1#2#3\@empty{%
  #1%
  \edef\btx@digitb{#3}%
  \ifx\@empty\btx@digitb
    #2%
    \edef\btx@digita{#1}%
    \edef\btx@digitb{#2}%
  \else
    \expandafter\btx@parsenum#2#3\@empty
  \fi
}
\DeclareRobustCommand\btxnumeralfallback[2]{%
  \foreignlanguage{#1}{%
    \ifnumber{#2}{%
      \PackageWarning{babelbib}{Handling of numerical editions not
        handled\MessageBreak by language #1 for edition `#2'}%
    }{}%
    #2%
  }%
}%
\DeclareRobustCommand\btxnumeraldot[2]{%
  \foreignlanguage{#1}{\ifnumber{#2}{#2.}{#2}}%
}
\DeclareRobustCommand\btxnumeralenglish[2]{%
  \foreignlanguage{#1}{%
    \ifnumber{#2}{%
      \expandafter\btx@parsenum#2\@empty\@empty\@empty
      \btxnumeralfont{%
        \ifx\btx@digitb\@empty
          \ifcase\btx@digita th\or st\or nd\or rd\else th\fi
        \else
          \ifnum\btx@digita=1
            th%
          \else
            \ifcase\btx@digitb th\or st\or nd\or rd\else th\fi
          \fi
        \fi
        }%
    }{#2}%
  }%
}
\newcounter{btxromaniannumeral}%
\renewcommand\thebtxromaniannumeral{\Roman{btxromaniannumeral}}%
\DeclareRobustCommand\btxnumeralromanian[2]{%
  \foreignlanguage{#1}{%
    \ifnumber{#2}{%
      \setcounter{btxromaniannumeral}{#2}%
      \ifcase#2 0\or \thebtxromaniannumeral\else a \thebtxromaniannumeral-a \fi
    }{#2}%
  }%
}
\DeclareRobustCommand\btxnumeralfrench[2]{%
  \foreignlanguage{#1}{%
    \ifnumber{#2}{%
      \expandafter\btx@parsenum#2\@empty\@empty\@empty
      \btxnumeralfont{%
        \ifx\btx@digitb\@empty
          \ifcase\btx@digita \ieme\or \iere\else \ieme\fi
        \else
          \ifnum\btx@digita=1
            th%
          \else
            \ifcase\btx@digitb \ieme\or \iere\else \ieme\fi
          \fi
        \fi
        }%
    }{#2}%
  }%
}
\DeclareRobustCommand\btxnumeralswedish[2]{%
  \foreignlanguage{#1}{%
    \ifnumber{#2}{%
      \expandafter\btx@parsenum#2\@empty\@empty\@empty
      \btxnumeralfont{%
        \ifx\btx@digitb\@empty
          \ifcase\btx@digita :e\or :a\or :a\or :e\else :e\fi
        \else
          \ifnum\btx@digita=1
            :a%
          \else
            \ifcase\btx@digitb :e\or :a\or :a\or :e\else :e\fi
          \fi
        \fi
        }%
    }{#2}%
  }%
}
\AtBeginDocument{%
  \providecommand\url[1]{%
    \PackageError{babelbib}{No \string\url\space command defined but
      field URL used\MessageBreak
      in bibliography}{%
      Please define a \string\url\space command for printing URLs
      before \string\begin{document}, e.\,g.\MessageBreak
        by loading the package `url.sty'.}%
    \texttt{#1}%
    }%
}
\AtBeginDocument{%
  \RequirePackage{babel}
  \inputbdf{afrikaans}{afrikaans}
  \inputbdf{american}{english}
  \inputbdf{austrian}{german}
  \inputbdf{bahasa}{bahasa}
  \inputbdf{brazil}{portuguese}
  \inputbdf{brazilian}{portuguese}
  \inputbdf{british}{english}
  \inputbdf{canadian}{english}
  \inputbdf{canadien}{french}
  \inputbdf{catalan}{catalan}
  \inputbdf{croatian}{croatian}
  \inputbdf{czech}{czech}
  \inputbdf{danish}{danish}
  \inputbdf{dutch}{dutch}
  \inputbdf{english}{english}
  \inputbdf{esperanto}{esperanto}
  \inputbdf{finnish}{finnish}
  \inputbdf{francais}{french}
  \inputbdf{french}{french}
  \inputbdf{frenchb}{french}
  \inputbdf{galician}{galician}
  \inputbdf{german}{german}
  \inputbdf{germanb}{german}
  \inputbdf{greek}{greek}
  \inputbdf{italian}{italian}
  \inputbdf{norsk}{norsk}
  \inputbdf{mexican}{spanish}
  \inputbdf{naustrian}{german}
  \inputbdf{ngerman}{german}
  \inputbdf{portuges}{portuguese}
  \inputbdf{portuguese}{portuguese}
  \inputbdf{romanian}{romanian}
  \inputbdf{russian}{russian}
  \inputbdf{russianb}{russian}
  \inputbdf{serbian}{serbian}
  \inputbdf{spanish}{spanish}
  \inputbdf{swedish}{swedish}
  \inputbdf{turkish}{turkish}
  \inputbdf{UKenglish}{english}
  \inputbdf{USenglish}{english}
  \ifbbbbfixlanguage
    \typeout{babelbib: Load BibTeX extensions
      \string\bibs\bbl@main@language\space for \bbl@main@language}%
    \selectbiblanguage{\bbl@main@language}%
  \else
    \expandafter\selectlanguage\expandafter{\bbl@main@language}%
  \fi
}

\endinput
%%
%% End of file `babelbib.sty'.
