|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\NeedsTeXFormat{LaTeX2e}[1995/06/01] |
|
\ProvidesPackage{natbib} |
|
[2009/07/16 8.31 (PWD, AO)] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\providecommand\@ifxundefined[1]{ |
|
\ifx#1\@undefined\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi |
|
} |
|
\providecommand\@ifnum[1]{ |
|
\ifnum#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi |
|
} |
|
\providecommand\@ifx[1]{ |
|
\ifx#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi |
|
} |
|
\providecommand\appdef[2]{ |
|
\toks@\expandafter{#1}\@temptokena{#2} |
|
\edef#1{\the\toks@\the\@temptokena} |
|
} |
|
\@ifclassloaded{agu2001}{\PackageError{natbib} |
|
{The agu2001 class already includes natbib coding,\MessageBreak |
|
so you should not add it explicitly} |
|
{Type <Return> for now, but then later remove\MessageBreak |
|
the command \protect\usepackage{natbib} from the document} |
|
\endinput}{} |
|
\@ifclassloaded{agutex}{\PackageError{natbib} |
|
{The AGUTeX class already includes natbib coding,\MessageBreak |
|
so you should not add it explicitly} |
|
{Type <Return> for now, but then later remove\MessageBreak |
|
the command \protect\usepackage{natbib} from the document} |
|
\endinput}{} |
|
\@ifclassloaded{aguplus}{\PackageError{natbib} |
|
{The aguplus class already includes natbib coding,\MessageBreak |
|
so you should not add it explicitly} |
|
{Type <Return> for now, but then later remove\MessageBreak |
|
the command \protect\usepackage{natbib} from the document} |
|
\endinput}{} |
|
\@ifclassloaded{nlinproc}{\PackageError{natbib} |
|
{The nlinproc class already includes natbib coding,\MessageBreak |
|
so you should not add it explicitly} |
|
{Type <Return> for now, but then later remove\MessageBreak |
|
the command \protect\usepackage{natbib} from the document} |
|
\endinput}{} |
|
\@ifclassloaded{egs}{\PackageError{natbib} |
|
{The egs class already includes natbib coding,\MessageBreak |
|
so you should not add it explicitly} |
|
{Type <Return> for now, but then later remove\MessageBreak |
|
the command \protect\usepackage{natbib} from the document} |
|
\endinput}{} |
|
\@ifclassloaded{egu}{\PackageError{natbib} |
|
{The egu class already includes natbib coding,\MessageBreak |
|
so you should not add it explicitly} |
|
{Type <Return> for now, but then later remove\MessageBreak |
|
the command \protect\usepackage{natbib} from the document} |
|
\endinput}{} |
|
|
|
|
|
|
|
\newcommand\bibstyle@chicago{\bibpunct{(}{)}{;}{a}{,}{,}} |
|
\newcommand\bibstyle@named{\bibpunct{[}{]}{;}{a}{,}{,}} |
|
\newcommand\bibstyle@agu{\bibpunct{[}{]}{;}{a}{,}{,~}} |
|
\newcommand\bibstyle@copernicus{\bibpunct{(}{)}{;}{a}{,}{,}} |
|
\let\bibstyle@egu=\bibstyle@copernicus |
|
\let\bibstyle@egs=\bibstyle@copernicus |
|
\newcommand\bibstyle@agsm{\bibpunct{(}{)}{,}{a}{}{,}\gdef\harvardand{\&}} |
|
\newcommand\bibstyle@kluwer{\bibpunct{(}{)}{,}{a}{}{,}\gdef\harvardand{\&}} |
|
\newcommand\bibstyle@dcu{\bibpunct{(}{)}{;}{a}{;}{,}\gdef\harvardand{and}} |
|
\newcommand\bibstyle@aa{\bibpunct{(}{)}{;}{a}{}{,}} |
|
\newcommand\bibstyle@pass{\bibpunct{(}{)}{;}{a}{,}{,}} |
|
\newcommand\bibstyle@anngeo{\bibpunct{(}{)}{;}{a}{,}{,}} |
|
\newcommand\bibstyle@nlinproc{\bibpunct{(}{)}{;}{a}{,}{,}} |
|
|
|
\newcommand\bibstyle@cospar{\bibpunct{/}{/}{,}{n}{}{} |
|
\gdef\bibnumfmt##1{##1.}} |
|
\newcommand\bibstyle@esa{\bibpunct{(Ref.~}{)}{,}{n}{}{} |
|
\gdef\bibnumfmt##1{##1.\hspace{1em}}} |
|
\newcommand\bibstyle@nature{\bibpunct{}{}{,}{s}{}{\textsuperscript{,}} |
|
\gdef\bibnumfmt##1{##1.}} |
|
|
|
\newcommand\bibstyle@plain{\bibpunct{[}{]}{,}{n}{}{,}} |
|
\let\bibstyle@alpha=\bibstyle@plain |
|
\let\bibstyle@abbrv=\bibstyle@plain |
|
\let\bibstyle@unsrt=\bibstyle@plain |
|
|
|
\newcommand\bibstyle@plainnat{\bibpunct{[}{]}{,}{a}{,}{,}} |
|
\let\bibstyle@abbrvnat=\bibstyle@plainnat |
|
\let\bibstyle@unsrtnat=\bibstyle@plainnat |
|
\newif\ifNAT@numbers \NAT@numbersfalse |
|
\newif\ifNAT@super \NAT@superfalse |
|
\let\NAT@merge\z@ |
|
\DeclareOption{numbers}{\NAT@numberstrue |
|
\ExecuteOptions{square,comma,nobibstyle}} |
|
\DeclareOption{super}{\NAT@supertrue\NAT@numberstrue |
|
\renewcommand\NAT@open{}\renewcommand\NAT@close{} |
|
\ExecuteOptions{nobibstyle}} |
|
\DeclareOption{authoryear}{\NAT@numbersfalse |
|
\ExecuteOptions{round,semicolon,bibstyle}} |
|
\DeclareOption{round}{ |
|
\renewcommand\NAT@open{(} \renewcommand\NAT@close{)} |
|
\ExecuteOptions{nobibstyle}} |
|
\DeclareOption{square}{ |
|
\renewcommand\NAT@open{[} \renewcommand\NAT@close{]} |
|
\ExecuteOptions{nobibstyle}} |
|
\DeclareOption{angle}{ |
|
\renewcommand\NAT@open{$<$} \renewcommand\NAT@close{$>$} |
|
\ExecuteOptions{nobibstyle}} |
|
\DeclareOption{curly}{ |
|
\renewcommand\NAT@open{\{} \renewcommand\NAT@close{\}} |
|
\ExecuteOptions{nobibstyle}} |
|
\DeclareOption{comma}{\renewcommand\NAT@sep{,} |
|
\ExecuteOptions{nobibstyle}} |
|
\DeclareOption{semicolon}{\renewcommand\NAT@sep{;} |
|
\ExecuteOptions{nobibstyle}} |
|
\DeclareOption{colon}{\ExecuteOptions{semicolon}} |
|
\DeclareOption{nobibstyle}{\let\bibstyle=\@gobble} |
|
\DeclareOption{bibstyle}{\let\bibstyle=\@citestyle} |
|
\newif\ifNAT@openbib \NAT@openbibfalse |
|
\DeclareOption{openbib}{\NAT@openbibtrue} |
|
\DeclareOption{sectionbib}{\def\NAT@sectionbib{on}} |
|
\def\NAT@sort{\z@} |
|
\def\NAT@cmprs{\z@} |
|
\DeclareOption{sort}{\def\NAT@sort{\@ne}} |
|
\DeclareOption{compress}{\def\NAT@cmprs{\@ne}} |
|
\DeclareOption{sort&compress}{\def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}} |
|
\DeclareOption{mcite}{\let\NAT@merge\@ne} |
|
\DeclareOption{merge}{\@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}} |
|
\DeclareOption{elide}{\@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}} |
|
\@ifpackageloaded{cite}{\PackageWarningNoLine{natbib} |
|
{The `cite' package should not be used\MessageBreak |
|
with natbib. Use option `sort' instead}\ExecuteOptions{sort}}{} |
|
\@ifpackageloaded{mcite}{\PackageWarningNoLine{natbib} |
|
{The `mcite' package should not be used\MessageBreak |
|
with natbib. Use option `merge' instead}\ExecuteOptions{merge}}{} |
|
\@ifpackageloaded{citeref}{\PackageError{natbib} |
|
{The `citeref' package must be loaded after natbib} |
|
{Move \protect\usepackage{citeref} to after \string\usepackage{natbib}}}{} |
|
\newif\ifNAT@longnames\NAT@longnamesfalse |
|
\DeclareOption{longnamesfirst}{\NAT@longnamestrue} |
|
\DeclareOption{nonamebreak}{\def\NAT@nmfmt#1{\mbox{\NAT@up#1}}} |
|
\def\NAT@nmfmt#1{{\NAT@up#1}} |
|
\renewcommand\bibstyle[1]{\csname bibstyle@#1\endcsname} |
|
\AtBeginDocument{\global\let\bibstyle=\@gobble} |
|
\let\@citestyle\bibstyle |
|
\newcommand\citestyle[1]{\@citestyle{#1}\let\bibstyle\@gobble} |
|
\newcommand\bibpunct[7][, ] |
|
{\gdef\NAT@open{#2}\gdef\NAT@close{#3}\gdef |
|
\NAT@sep{#4}\global\NAT@numbersfalse |
|
\ifx #5n\global\NAT@numberstrue\global\NAT@superfalse |
|
\else |
|
\ifx #5s\global\NAT@numberstrue\global\NAT@supertrue |
|
\fi\fi |
|
\gdef\NAT@aysep{#6}\gdef\NAT@yrsep{#7} |
|
\gdef\NAT@cmt{#1} |
|
\NAT@@setcites |
|
} |
|
\newcommand\setcitestyle[1]{ |
|
\@for\@tempa:=#1\do |
|
{\def\@tempb{round}\ifx\@tempa\@tempb |
|
\renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi |
|
\def\@tempb{square}\ifx\@tempa\@tempb |
|
\renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi |
|
\def\@tempb{angle}\ifx\@tempa\@tempb |
|
\renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi |
|
\def\@tempb{curly}\ifx\@tempa\@tempb |
|
\renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi |
|
\def\@tempb{semicolon}\ifx\@tempa\@tempb |
|
\renewcommand\NAT@sep{;}\fi |
|
\def\@tempb{colon}\ifx\@tempa\@tempb |
|
\renewcommand\NAT@sep{;}\fi |
|
\def\@tempb{comma}\ifx\@tempa\@tempb |
|
\renewcommand\NAT@sep{,}\fi |
|
\def\@tempb{authoryear}\ifx\@tempa\@tempb |
|
\NAT@numbersfalse\fi |
|
\def\@tempb{numbers}\ifx\@tempa\@tempb |
|
\NAT@numberstrue\NAT@superfalse\fi |
|
\def\@tempb{super}\ifx\@tempa\@tempb |
|
\NAT@numberstrue\NAT@supertrue\fi |
|
\expandafter\NAT@find@eq\@tempa=\relax\@nil |
|
\if\@tempc\relax\else |
|
\expandafter\NAT@rem@eq\@tempc |
|
\def\@tempb{open}\ifx\@tempa\@tempb |
|
\xdef\NAT@open{\@tempc}\fi |
|
\def\@tempb{close}\ifx\@tempa\@tempb |
|
\xdef\NAT@close{\@tempc}\fi |
|
\def\@tempb{aysep}\ifx\@tempa\@tempb |
|
\xdef\NAT@aysep{\@tempc}\fi |
|
\def\@tempb{yysep}\ifx\@tempa\@tempb |
|
\xdef\NAT@yrsep{\@tempc}\fi |
|
\def\@tempb{notesep}\ifx\@tempa\@tempb |
|
\xdef\NAT@cmt{\@tempc}\fi |
|
\def\@tempb{citesep}\ifx\@tempa\@tempb |
|
\xdef\NAT@sep{\@tempc}\fi |
|
\fi |
|
} |
|
\NAT@@setcites |
|
} |
|
\def\NAT@find@eq#1=#2\@nil{\def\@tempa{#1}\def\@tempc{#2}} |
|
\def\NAT@rem@eq#1={\def\@tempc{#1}} |
|
\def\NAT@@setcites{\global\let\bibstyle\@gobble} |
|
\AtBeginDocument{\let\NAT@@setcites\NAT@set@cites} |
|
\newcommand\NAT@open{(} \newcommand\NAT@close{)} |
|
\newcommand\NAT@sep{;} |
|
\ProcessOptions |
|
\newcommand\NAT@aysep{,} \newcommand\NAT@yrsep{,} |
|
\newcommand\NAT@cmt{, } |
|
\newcommand\NAT@cite |
|
[3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi |
|
#1\if*#3*\else\NAT@cmt#3\fi\NAT@@close\else#1\fi\endgroup} |
|
\newcommand\NAT@citenum |
|
[3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi |
|
#1\if*#3*\else\NAT@cmt#3\fi\NAT@@close\else#1\fi\endgroup} |
|
\newcommand\NAT@citesuper[3]{\ifNAT@swa |
|
\if*#2*\else#2\NAT@spacechar\fi |
|
\unskip\kern\p@\textsuperscript{\NAT@@open#1\NAT@@close} |
|
\if*#3*\else\NAT@spacechar#3\fi\else #1\fi\endgroup} |
|
\providecommand\textsuperscript[1]{\mbox{$^{\mbox{\scriptsize#1}}$}} |
|
\begingroup \catcode`\_=8 |
|
\gdef\NAT@ifcat@num#1{ |
|
\ifcat_\ifnum\z@<0#1_\else A\fi |
|
\expandafter\@firstoftwo |
|
\else |
|
\expandafter\@secondoftwo |
|
\fi |
|
} |
|
\endgroup |
|
\providecommand\@firstofone[1]{#1} |
|
\newcommand\NAT@citexnum{} |
|
\def\NAT@citexnum[#1][#2]#3{ |
|
\NAT@reset@parser |
|
\NAT@sort@cites{#3} |
|
\NAT@reset@citea |
|
\@cite{\def\NAT@num{-1}\let\NAT@last@yr\relax\let\NAT@nm\@empty |
|
\@for\@citeb:=\NAT@cite@list\do |
|
{\@safe@activestrue |
|
\edef\@citeb{\expandafter\@firstofone\@citeb\@empty} |
|
\@safe@activesfalse |
|
\@ifundefined{b@\@citeb\@extra@b@citeb}{ |
|
{\reset@font\bfseries?} |
|
\NAT@citeundefined\PackageWarning{natbib} |
|
{Citation `\@citeb' on page \thepage \space undefined}} |
|
{\let\NAT@last@num\NAT@num\let\NAT@last@nm\NAT@nm |
|
\NAT@parse{\@citeb} |
|
\ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{ |
|
\let\NAT@name=\NAT@all@names |
|
\global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{} |
|
\fi |
|
\ifNAT@full\let\NAT@nm\NAT@all@names\else |
|
\let\NAT@nm\NAT@name\fi |
|
\ifNAT@swa |
|
\@ifnum{\NAT@ctype>\@ne}{ |
|
\@citea |
|
\NAT@hyper@{\@ifnum{\NAT@ctype=\tw@}{\NAT@test{\NAT@ctype}}{\NAT@alias}} |
|
}{ |
|
\@ifnum{\NAT@cmprs>\z@}{ |
|
\NAT@ifcat@num\NAT@num |
|
{\let\NAT@nm=\NAT@num} |
|
{\def\NAT@nm{-2}} |
|
\NAT@ifcat@num\NAT@last@num |
|
{\@tempcnta=\NAT@last@num\relax} |
|
{\@tempcnta\m@ne} |
|
\@ifnum{\NAT@nm=\@tempcnta}{ |
|
\@ifnum{\NAT@merge>\@ne}{}{\NAT@last@yr@mbox} |
|
}{ |
|
\advance\@tempcnta by\@ne |
|
\@ifnum{\NAT@nm=\@tempcnta}{ |
|
\ifx\NAT@last@yr\relax |
|
\def@NAT@last@yr{\@citea} |
|
\else |
|
\def@NAT@last@yr{--\NAT@penalty} |
|
\fi |
|
}{ |
|
\NAT@last@yr@mbox |
|
} |
|
} |
|
}{ |
|
\@tempswatrue |
|
\@ifnum{\NAT@merge>\@ne}{\@ifnum{\NAT@last@num=\NAT@num\relax}{\@tempswafalse}{}}{} |
|
\if@tempswa\NAT@citea@mbox\fi |
|
} |
|
} |
|
\NAT@def@citea |
|
\else |
|
\ifcase\NAT@ctype |
|
\ifx\NAT@last@nm\NAT@nm \NAT@yrsep\NAT@penalty\NAT@space\else |
|
\@citea \NAT@test{\@ne}\NAT@spacechar\NAT@mbox{\NAT@super@kern\NAT@@open} |
|
\fi |
|
\if*#1*\else#1\NAT@spacechar\fi |
|
\NAT@mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}} |
|
\NAT@def@citea@box |
|
\or |
|
\NAT@hyper@citea@space{\NAT@test{\NAT@ctype}} |
|
\or |
|
\NAT@hyper@citea@space{\NAT@test{\NAT@ctype}} |
|
\or |
|
\NAT@hyper@citea@space\NAT@alias |
|
\fi |
|
\fi |
|
} |
|
} |
|
\@ifnum{\NAT@cmprs>\z@}{\NAT@last@yr}{} |
|
\ifNAT@swa\else |
|
\@ifnum{\NAT@ctype=\z@}{ |
|
\if*#2*\else\NAT@cmt#2\fi |
|
}{} |
|
\NAT@mbox{\NAT@@close} |
|
\fi |
|
}{#1}{#2} |
|
} |
|
\def\NAT@citea@mbox{ |
|
\@citea\mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}} |
|
} |
|
\def\NAT@hyper@#1{ |
|
\hyper@natlinkstart{\@citeb\@extra@b@citeb}#1\hyper@natlinkend |
|
} |
|
\def\NAT@hyper@citea#1{ |
|
\@citea |
|
\NAT@hyper@{#1} |
|
\NAT@def@citea |
|
} |
|
\def\NAT@hyper@citea@space#1{ |
|
\@citea |
|
\NAT@hyper@{#1} |
|
\NAT@def@citea@space |
|
} |
|
\def\def@NAT@last@yr#1{ |
|
\protected@edef\NAT@last@yr{ |
|
#1 |
|
\noexpand\mbox{ |
|
\noexpand\hyper@natlinkstart{\@citeb\@extra@b@citeb} |
|
{\noexpand\citenumfont{\NAT@num}} |
|
\noexpand\hyper@natlinkend |
|
} |
|
} |
|
} |
|
\def\NAT@last@yr@mbox{ |
|
\NAT@last@yr\let\NAT@last@yr\relax |
|
\NAT@citea@mbox |
|
} |
|
\newcommand\NAT@test[1]{ |
|
\@ifnum{#1=\@ne}{ |
|
\ifx\NAT@nm\NAT@noname |
|
\begingroup\reset@font\bfseries(author?)\endgroup |
|
\PackageWarning{natbib}{ |
|
Author undefined for citation`\@citeb' \MessageBreak on page \thepage |
|
} |
|
\else \NAT@nm |
|
\fi |
|
}{ |
|
\if\relax\NAT@date\relax |
|
\begingroup\reset@font\bfseries(year?)\endgroup |
|
\PackageWarning{natbib}{ |
|
Year undefined for citation`\@citeb' \MessageBreak on page \thepage |
|
} |
|
\else \NAT@date |
|
\fi |
|
} |
|
} |
|
\let\citenumfont=\@empty |
|
\newcommand\NAT@citex{} |
|
\def\NAT@citex |
|
[#1][#2]#3{ |
|
\NAT@reset@parser |
|
\NAT@sort@cites{#3} |
|
\NAT@reset@citea |
|
\@cite{\let\NAT@nm\@empty\let\NAT@year\@empty |
|
\@for\@citeb:=\NAT@cite@list\do |
|
{\@safe@activestrue |
|
\edef\@citeb{\expandafter\@firstofone\@citeb\@empty} |
|
\@safe@activesfalse |
|
\@ifundefined{b@\@citeb\@extra@b@citeb}{\@citea |
|
{\reset@font\bfseries ?}\NAT@citeundefined |
|
\PackageWarning{natbib} |
|
{Citation `\@citeb' on page \thepage \space undefined}\def\NAT@date{}} |
|
{\let\NAT@last@nm=\NAT@nm\let\NAT@last@yr=\NAT@year |
|
\NAT@parse{\@citeb} |
|
\ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{ |
|
\let\NAT@name=\NAT@all@names |
|
\global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{} |
|
\fi |
|
\ifNAT@full\let\NAT@nm\NAT@all@names\else |
|
\let\NAT@nm\NAT@name\fi |
|
\ifNAT@swa\ifcase\NAT@ctype |
|
\if\relax\NAT@date\relax |
|
\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}\NAT@date} |
|
\else |
|
\ifx\NAT@last@nm\NAT@nm\NAT@yrsep |
|
\ifx\NAT@last@yr\NAT@year |
|
\def\NAT@temp{{?}} |
|
\ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib} |
|
{Multiple citation on page \thepage: same authors and |
|
year\MessageBreak without distinguishing extra |
|
letter,\MessageBreak appears as question mark}\fi |
|
\NAT@hyper@{\NAT@exlab} |
|
\else\unskip\NAT@spacechar |
|
\NAT@hyper@{\NAT@date} |
|
\fi |
|
\else |
|
\@citea\NAT@hyper@{ |
|
\NAT@nmfmt{\NAT@nm} |
|
\hyper@natlinkbreak{ |
|
\NAT@aysep\NAT@spacechar}{\@citeb\@extra@b@citeb |
|
} |
|
\NAT@date |
|
} |
|
\fi |
|
\fi |
|
\or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}} |
|
\or\@citea\NAT@hyper@{\NAT@date} |
|
\or\@citea\NAT@hyper@{\NAT@alias} |
|
\fi \NAT@def@citea |
|
\else |
|
\ifcase\NAT@ctype |
|
\if\relax\NAT@date\relax |
|
\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}} |
|
\else |
|
\ifx\NAT@last@nm\NAT@nm\NAT@yrsep |
|
\ifx\NAT@last@yr\NAT@year |
|
\def\NAT@temp{{?}} |
|
\ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib} |
|
{Multiple citation on page \thepage: same authors and |
|
year\MessageBreak without distinguishing extra |
|
letter,\MessageBreak appears as question mark}\fi |
|
\NAT@hyper@{\NAT@exlab} |
|
\else |
|
\unskip\NAT@spacechar |
|
\NAT@hyper@{\NAT@date} |
|
\fi |
|
\else |
|
\@citea\NAT@hyper@{ |
|
\NAT@nmfmt{\NAT@nm} |
|
\hyper@natlinkbreak{\NAT@spacechar\NAT@@open\if*#1*\else#1\NAT@spacechar\fi} |
|
{\@citeb\@extra@b@citeb} |
|
\NAT@date |
|
} |
|
\fi |
|
\fi |
|
\or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}} |
|
\or\@citea\NAT@hyper@{\NAT@date} |
|
\or\@citea\NAT@hyper@{\NAT@alias} |
|
\fi |
|
\if\relax\NAT@date\relax |
|
\NAT@def@citea |
|
\else |
|
\NAT@def@citea@close |
|
\fi |
|
\fi |
|
}}\ifNAT@swa\else\if*#2*\else\NAT@cmt#2\fi |
|
\if\relax\NAT@date\relax\else\NAT@@close\fi\fi}{#1}{#2}} |
|
\def\NAT@spacechar{\ } |
|
\def\NAT@separator{\NAT@sep\NAT@penalty} |
|
\def\NAT@reset@citea{\c@NAT@ctr\@ne\let\@citea\@empty} |
|
\def\NAT@def@citea{\def\@citea{\NAT@separator\NAT@space}} |
|
\def\NAT@def@citea@space{\def\@citea{\NAT@separator\NAT@spacechar}} |
|
\def\NAT@def@citea@close{\def\@citea{\NAT@@close\NAT@separator\NAT@space}} |
|
\def\NAT@def@citea@box{\def\@citea{\NAT@mbox{\NAT@@close}\NAT@separator\NAT@spacechar}} |
|
\newif\ifNAT@par \NAT@partrue |
|
\newcommand\NAT@@open{\ifNAT@par\NAT@open\fi} |
|
\newcommand\NAT@@close{\ifNAT@par\NAT@close\fi} |
|
\newcommand\NAT@alias{\@ifundefined{al@\@citeb\@extra@b@citeb}{ |
|
{\reset@font\bfseries(alias?)}\PackageWarning{natbib} |
|
{Alias undefined for citation `\@citeb' |
|
\MessageBreak on page \thepage}}{\@nameuse{al@\@citeb\@extra@b@citeb}}} |
|
\let\NAT@up\relax |
|
\newcommand\NAT@Up[1]{{\let\protect\@unexpandable@protect\let~\relax |
|
\expandafter\NAT@deftemp#1}\expandafter\NAT@UP\NAT@temp} |
|
\newcommand\NAT@deftemp[1]{\xdef\NAT@temp{#1}} |
|
\newcommand\NAT@UP[1]{\let\@tempa\NAT@UP\ifcat a#1\MakeUppercase{#1} |
|
\let\@tempa\relax\else#1\fi\@tempa} |
|
\newcommand\shortcites[1]{ |
|
\@bsphack\@for\@citeb:=#1\do |
|
{\@safe@activestrue |
|
\edef\@citeb{\expandafter\@firstofone\@citeb\@empty} |
|
\@safe@activesfalse |
|
\global\@namedef{bv@\@citeb\@extra@b@citeb}{}}\@esphack} |
|
\newcommand\NAT@biblabel[1]{\hfill} |
|
\newcommand\NAT@biblabelnum[1]{\bibnumfmt{#1}} |
|
\let\bibnumfmt\@empty |
|
\providecommand\@biblabel[1]{[#1]} |
|
\AtBeginDocument{\ifx\bibnumfmt\@empty\let\bibnumfmt\@biblabel\fi} |
|
\newcommand\NAT@bibsetnum[1]{\settowidth\labelwidth{\@biblabel{#1}} |
|
\setlength{\leftmargin}{\labelwidth}\addtolength{\leftmargin}{\labelsep} |
|
\setlength{\itemsep}{\bibsep}\setlength{\parsep}{\z@} |
|
\ifNAT@openbib |
|
\addtolength{\leftmargin}{\bibindent} |
|
\setlength{\itemindent}{-\bibindent} |
|
\setlength{\listparindent}{\itemindent} |
|
\setlength{\parsep}{0pt} |
|
\fi |
|
} |
|
\newlength{\bibhang} |
|
\setlength{\bibhang}{1em} |
|
\newlength{\bibsep} |
|
{\@listi \global\bibsep\itemsep \global\advance\bibsep by\parsep} |
|
|
|
\newcommand\NAT@bibsetup |
|
[1]{\setlength{\leftmargin}{\bibhang}\setlength{\itemindent}{-\leftmargin} |
|
\setlength{\itemsep}{\bibsep}\setlength{\parsep}{\z@}} |
|
\newcommand\NAT@set@cites{ |
|
\ifNAT@numbers |
|
\ifNAT@super \let\@cite\NAT@citesuper |
|
\def\NAT@mbox##1{\unskip\nobreak\textsuperscript{##1}} |
|
\let\citeyearpar=\citeyear |
|
\let\NAT@space\relax |
|
\def\NAT@super@kern{\kern\p@} |
|
\else |
|
\let\NAT@mbox=\mbox |
|
\let\@cite\NAT@citenum |
|
\let\NAT@space\NAT@spacechar |
|
\let\NAT@super@kern\relax |
|
\fi |
|
\let\@citex\NAT@citexnum |
|
\let\@biblabel\NAT@biblabelnum |
|
\let\@bibsetup\NAT@bibsetnum |
|
\renewcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@num\NAT@close} |
|
\def\natexlab##1{} |
|
\def\NAT@penalty{\penalty\@m} |
|
\else |
|
\let\@cite\NAT@cite |
|
\let\@citex\NAT@citex |
|
\let\@biblabel\NAT@biblabel |
|
\let\@bibsetup\NAT@bibsetup |
|
\let\NAT@space\NAT@spacechar |
|
\let\NAT@penalty\@empty |
|
\renewcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@date\NAT@close} |
|
\def\natexlab##1{##1} |
|
\fi} |
|
\AtBeginDocument{\NAT@set@cites} |
|
\AtBeginDocument{\ifx\SK@def\@undefined\else |
|
\ifx\SK@cite\@empty\else |
|
\SK@def\@citex[#1][#2]#3{\SK@\SK@@ref{#3}\SK@@citex[#1][#2]{#3}}\fi |
|
\ifx\SK@citeauthor\@undefined\def\HAR@checkdef{}\else |
|
\let\citeauthor\SK@citeauthor |
|
\let\citefullauthor\SK@citefullauthor |
|
\let\citeyear\SK@citeyear\fi |
|
\fi} |
|
\newif\ifNAT@full\NAT@fullfalse |
|
\newif\ifNAT@swa |
|
\DeclareRobustCommand\citet |
|
{\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@partrue |
|
\@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}} |
|
\newcommand\NAT@citetp{\@ifnextchar[{\NAT@@citetp}{\NAT@@citetp[]}} |
|
\newcommand\NAT@@citetp{} |
|
\def\NAT@@citetp[#1]{\@ifnextchar[{\@citex[#1]}{\@citex[][#1]}} |
|
\DeclareRobustCommand\citep |
|
{\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@partrue |
|
\@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}} |
|
\DeclareRobustCommand\cite |
|
{\begingroup\let\NAT@ctype\z@\NAT@partrue\NAT@swatrue |
|
\@ifstar{\NAT@fulltrue\NAT@cites}{\NAT@fullfalse\NAT@cites}} |
|
\newcommand\NAT@cites{\@ifnextchar [{\NAT@@citetp}{ |
|
\ifNAT@numbers\else |
|
\NAT@swafalse |
|
\fi |
|
\NAT@@citetp[]}} |
|
\DeclareRobustCommand\citealt |
|
{\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@parfalse |
|
\@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}} |
|
\DeclareRobustCommand\citealp |
|
{\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse |
|
\@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}} |
|
\DeclareRobustCommand\citenum |
|
{\begingroup |
|
\NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse\let\textsuperscript\NAT@spacechar |
|
\NAT@citexnum[][]} |
|
\DeclareRobustCommand\citeauthor |
|
{\begingroup\NAT@swafalse\let\NAT@ctype\@ne\NAT@parfalse |
|
\@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}} |
|
\DeclareRobustCommand\Citet |
|
{\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@partrue |
|
\let\NAT@up\NAT@Up |
|
\@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}} |
|
\DeclareRobustCommand\Citep |
|
{\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@partrue |
|
\let\NAT@up\NAT@Up |
|
\@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}} |
|
\DeclareRobustCommand\Citealt |
|
{\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@parfalse |
|
\let\NAT@up\NAT@Up |
|
\@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}} |
|
\DeclareRobustCommand\Citealp |
|
{\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse |
|
\let\NAT@up\NAT@Up |
|
\@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}} |
|
\DeclareRobustCommand\Citeauthor |
|
{\begingroup\NAT@swafalse\let\NAT@ctype\@ne\NAT@parfalse |
|
\let\NAT@up\NAT@Up |
|
\@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}} |
|
\DeclareRobustCommand\citeyear |
|
{\begingroup\NAT@swafalse\let\NAT@ctype\tw@\NAT@parfalse\NAT@citetp} |
|
\DeclareRobustCommand\citeyearpar |
|
{\begingroup\NAT@swatrue\let\NAT@ctype\tw@\NAT@partrue\NAT@citetp} |
|
\newcommand\citetext[1]{\NAT@open#1\NAT@close} |
|
\DeclareRobustCommand\citefullauthor |
|
{\citeauthor*} |
|
\newcommand\defcitealias[2]{ |
|
\@ifundefined{al@#1\@extra@b@citeb}{} |
|
{\PackageWarning{natbib}{Overwriting existing alias for citation #1}} |
|
\@namedef{al@#1\@extra@b@citeb}{#2}} |
|
\DeclareRobustCommand\citetalias{\begingroup |
|
\NAT@swafalse\let\NAT@ctype\thr@@\NAT@parfalse\NAT@citetp} |
|
\DeclareRobustCommand\citepalias{\begingroup |
|
\NAT@swatrue\let\NAT@ctype\thr@@\NAT@partrue\NAT@citetp} |
|
\renewcommand\nocite[1]{\@bsphack |
|
\@for\@citeb:=#1\do{ |
|
\@safe@activestrue |
|
\edef\@citeb{\expandafter\@firstofone\@citeb\@empty} |
|
\@safe@activesfalse |
|
\if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi |
|
\if*\@citeb\else |
|
\@ifundefined{b@\@citeb\@extra@b@citeb}{ |
|
\NAT@citeundefined \PackageWarning{natbib} |
|
{Citation `\@citeb' undefined}}{}\fi} |
|
\@esphack} |
|
\newcommand\NAT@parse[1]{ |
|
\begingroup |
|
\let\protect=\@unexpandable@protect |
|
\let~\relax |
|
\let\active@prefix=\@gobble |
|
\edef\NAT@temp{\csname b@#1\@extra@b@citeb\endcsname} |
|
\aftergroup\NAT@split |
|
\expandafter |
|
\endgroup |
|
\NAT@temp{}{}{}{}{}@@ |
|
\expandafter\NAT@parse@date\NAT@date??????@@ |
|
\ifciteindex\NAT@index\fi |
|
} |
|
\def\NAT@split#1#2#3#4#5@@{ |
|
\gdef\NAT@num{#1}\gdef\NAT@name{#3}\gdef\NAT@date{#2} |
|
\gdef\NAT@all@names{#4} |
|
\ifx\NAT@num\@empty\gdef\NAT@num{0}\fi |
|
\ifx\NAT@noname\NAT@all@names \gdef\NAT@all@names{#3}\fi |
|
} |
|
\def\NAT@reset@parser{ |
|
\global\let\NAT@num\@empty |
|
\global\let\NAT@name\@empty |
|
\global\let\NAT@date\@empty |
|
\global\let\NAT@all@names\@empty |
|
} |
|
\newcommand\NAT@parse@date{} |
|
\def\NAT@parse@date#1#2#3#4#5#6@@{ |
|
\ifnum\the\catcode`#1=11\def\NAT@year{}\def\NAT@exlab{#1}\else |
|
\ifnum\the\catcode`#2=11\def\NAT@year{#1}\def\NAT@exlab{#2}\else |
|
\ifnum\the\catcode`#3=11\def\NAT@year{#1#2}\def\NAT@exlab{#3}\else |
|
\ifnum\the\catcode`#4=11\def\NAT@year{#1#2#3}\def\NAT@exlab{#4}\else |
|
\def\NAT@year{#1#2#3#4}\def\NAT@exlab{{#5}}\fi\fi\fi\fi} |
|
\newcommand\NAT@index{} |
|
\let\NAT@makeindex=\makeindex |
|
\renewcommand\makeindex{\NAT@makeindex |
|
\renewcommand\NAT@index{\@bsphack\begingroup |
|
\def~{\string~}\@wrindex{\NAT@idxtxt}}} |
|
\newcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@date\NAT@close} |
|
\@ifxundefined\@indexfile{}{\let\NAT@makeindex\relax\makeindex} |
|
\newif\ifciteindex \citeindexfalse |
|
\newcommand\citeindextype{default} |
|
\newcommand\NAT@index@alt{{\let\protect=\noexpand\let~\relax |
|
\xdef\NAT@temp{\NAT@idxtxt}}\expandafter\NAT@exp\NAT@temp\@nil} |
|
\newcommand\NAT@exp{} |
|
\def\NAT@exp#1\@nil{\index[\citeindextype]{#1}} |
|
|
|
\AtBeginDocument{ |
|
\@ifpackageloaded{index}{\let\NAT@index=\NAT@index@alt}{}} |
|
\newcommand\NAT@ifcmd{\futurelet\NAT@temp\NAT@ifxcmd} |
|
\newcommand\NAT@ifxcmd{\ifx\NAT@temp\relax\else\expandafter\NAT@bare\fi} |
|
\def\NAT@bare#1(#2)#3(@)#4\@nil#5{ |
|
\if @#2 |
|
\expandafter\NAT@apalk#1, , \@nil{#5} |
|
\else |
|
\NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{#3}{#5} |
|
\fi |
|
} |
|
\newcommand\NAT@wrout[5]{ |
|
\if@filesw |
|
{\let\protect\noexpand\let~\relax |
|
\immediate |
|
\write\@auxout{\string\bibcite{#5}{{#1}{#2}{{#3}}{{#4}}}}}\fi |
|
\ignorespaces} |
|
\def\NAT@noname{{}} |
|
\renewcommand\bibitem{\@ifnextchar[{\@lbibitem}{\@lbibitem[]}} |
|
\let\NAT@bibitem@first@sw\@secondoftwo |
|
\def\@lbibitem[#1]#2{ |
|
\if\relax\@extra@b@citeb\relax\else |
|
\@ifundefined{br@#2\@extra@b@citeb}{}{ |
|
\@namedef{br@#2}{\@nameuse{br@#2\@extra@b@citeb}} |
|
} |
|
\fi |
|
\@ifundefined{b@#2\@extra@b@citeb}{ |
|
\def\NAT@num{} |
|
}{ |
|
\NAT@parse{#2} |
|
} |
|
\def\NAT@tmp{#1} |
|
\expandafter\let\expandafter\bibitemOpen\csname NAT@b@open@#2\endcsname |
|
\expandafter\let\expandafter\bibitemShut\csname NAT@b@shut@#2\endcsname |
|
\@ifnum{\NAT@merge>\@ne}{ |
|
\NAT@bibitem@first@sw{ |
|
\@firstoftwo |
|
}{ |
|
\@ifundefined{NAT@b*@#2}{ |
|
\@firstoftwo |
|
}{ |
|
\expandafter\def\expandafter\NAT@num\expandafter{\the\c@NAT@ctr} |
|
\@secondoftwo |
|
} |
|
} |
|
}{ |
|
\@firstoftwo |
|
} |
|
{ |
|
\global\advance\c@NAT@ctr\@ne |
|
\@ifx{\NAT@tmp\@empty}{\@firstoftwo}{ |
|
\@secondoftwo |
|
} |
|
{ |
|
\expandafter\def\expandafter\NAT@num\expandafter{\the\c@NAT@ctr} |
|
\global\NAT@stdbsttrue |
|
}{} |
|
\bibitem@fin |
|
\item[\hfil\NAT@anchor{#2}{\NAT@num}] |
|
\global\let\NAT@bibitem@first@sw\@secondoftwo |
|
\NAT@bibitem@init |
|
} |
|
{ |
|
\NAT@anchor{#2}{} |
|
\NAT@bibitem@cont |
|
\bibitem@fin |
|
} |
|
\@ifx{\NAT@tmp\@empty}{ |
|
\NAT@wrout{\the\c@NAT@ctr}{}{}{}{#2} |
|
}{ |
|
\expandafter\NAT@ifcmd\NAT@tmp(@)(@)\@nil{#2} |
|
} |
|
} |
|
\def\bibitem@fin{ |
|
\@ifxundefined\@bibstop{}{\csname bibitem@\@bibstop\endcsname} |
|
} |
|
\def\NAT@bibitem@init{ |
|
\let\@bibstop\@undefined |
|
} |
|
\def\NAT@bibitem@cont{ |
|
\let\bibitem@Stop\bibitemStop |
|
\let\bibitem@NoStop\bibitemContinue |
|
} |
|
\def\BibitemOpen{ |
|
\bibitemOpen |
|
} |
|
\def\BibitemShut#1{ |
|
\bibitemShut |
|
\def\@bibstop{#1} |
|
\let\bibitem@Stop\bibitemStop |
|
\let\bibitem@NoStop\bibitemNoStop |
|
} |
|
\def\bibitemStop{} |
|
\def\bibitemNoStop{.\spacefactor\@mmm\space} |
|
\def\bibitemContinue{\spacefactor\@mmm\space} |
|
\mathchardef\@mmm=3000 |
|
\providecommand{\bibAnnote}[3]{ |
|
\BibitemShut{#1} |
|
\def\@tempa{#3}\@ifx{\@tempa\@empty}{}{ |
|
\begin{quotation}\noindent |
|
\textsc{Key:}\ #2\\\textsc{Annotation:}\ \@tempa |
|
\end{quotation} |
|
} |
|
} |
|
\providecommand{\bibAnnoteFile}[2]{ |
|
\IfFileExists{#2}{ |
|
\bibAnnote{#1}{#2}{\input{#2}} |
|
}{ |
|
\bibAnnote{#1}{#2}{} |
|
} |
|
} |
|
\let\bibitemOpen\relax |
|
\let\bibitemShut\relax |
|
\def\bibfield{\@ifnum{\NAT@merge>\tw@}{\@bibfield}{\@secondoftwo}} |
|
\def\@bibfield#1#2{ |
|
\begingroup |
|
\let\Doi\@gobble |
|
\let\bibinfo\relax |
|
\let\restore@protect\@empty |
|
\protected@edef\@tempa{#2} |
|
\aftergroup\def\aftergroup\@tempa |
|
\expandafter\endgroup\expandafter{\@tempa} |
|
\expandafter\@ifx\expandafter{\csname @bib#1\endcsname\@tempa}{ |
|
\expandafter\let\expandafter\@tempa\csname @bib@X#1\endcsname |
|
}{ |
|
\expandafter\let\csname @bib#1\endcsname\@tempa |
|
\expandafter\let\expandafter\@tempa\csname @bib@Y#1\endcsname |
|
} |
|
\@ifx{\@tempa\relax}{\let\@tempa\@firstofone}{} |
|
\@tempa{#2} |
|
} |
|
\def\bibinfo#1{ |
|
\expandafter\let\expandafter\@tempa\csname bibinfo@X@#1\endcsname |
|
\@ifx{\@tempa\relax}{\@firstofone}{\@tempa} |
|
} |
|
\def\@bib@Xauthor#1{\let\@bib@Xjournal\@gobble} |
|
\def\@bib@Xjournal#1{\begingroup\let\bibinfo@X@journal\@bib@Z@journal#1\endgroup} |
|
\def\@bibibid@#1{\textit{ibid}.} |
|
\appdef\NAT@bibitem@init{ |
|
\let\@bibauthor \@empty |
|
\let\@bibjournal \@empty |
|
\let\@bib@Z@journal\@bibibid@ |
|
} |
|
\ifx\SK@lbibitem\@undefined\else |
|
\let\SK@lbibitem\@lbibitem |
|
\def\@lbibitem[#1]#2{ |
|
\SK@lbibitem[#1]{#2}\SK@\SK@@label{#2}\ignorespaces}\fi |
|
\newif\ifNAT@stdbst \NAT@stdbstfalse |
|
|
|
\AtEndDocument{ |
|
\ifNAT@stdbst\if@filesw |
|
\immediate\write\@auxout{ |
|
\string\providecommand\string\NAT@force@numbers{} |
|
\string\NAT@force@numbers |
|
} |
|
\fi\fi |
|
} |
|
\newcommand\NAT@force@numbers{ |
|
\ifNAT@numbers\else |
|
\PackageError{natbib}{Bibliography not compatible with author-year |
|
citations.\MessageBreak |
|
Press <return> to continue in numerical citation style} |
|
{Check the bibliography entries for non-compliant syntax,\MessageBreak |
|
or select author-year BibTeX style, e.g. plainnat} |
|
\global\NAT@numberstrue\fi} |
|
|
|
\providecommand\bibcite{} |
|
\renewcommand\bibcite[2]{ |
|
\@ifundefined{b@#1\@extra@binfo}{\relax}{ |
|
\NAT@citemultiple |
|
\PackageWarningNoLine{natbib}{Citation `#1' multiply defined}% |
|
}% |
|
\global\@namedef{b@#1\@extra@binfo}{#2}% |
|
}% |
|
\AtEndDocument{\NAT@swatrue\let\bibcite\NAT@testdef} |
|
\newcommand\NAT@testdef[2]{% |
|
\def\NAT@temp{#2}% |
|
\expandafter \ifx \csname b@#1\@extra@binfo\endcsname\NAT@temp |
|
\else |
|
\ifNAT@swa \NAT@swafalse |
|
\PackageWarningNoLine{natbib}{% |
|
Citation(s) may have changed.\MessageBreak |
|
Rerun to get citations correct% |
|
}% |
|
\fi |
|
\fi |
|
}% |
|
\newcommand\NAT@apalk{} |
|
\def\NAT@apalk#1, #2, #3\@nil#4{% |
|
\if\relax#2\relax |
|
\global\NAT@stdbsttrue |
|
\NAT@wrout{#1}{}{}{}{#4}% |
|
\else |
|
\NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#4}% |
|
\fi |
|
}% |
|
\newcommand\citeauthoryear{} |
|
\def\citeauthoryear#1#2#3(@)(@)\@nil#4{% |
|
\if\relax#3\relax |
|
\NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#4}% |
|
\else |
|
\NAT@wrout{\the\c@NAT@ctr}{#3}{#2}{#1}{#4}% |
|
\fi |
|
}% |
|
\newcommand\citestarts{\NAT@open}% |
|
\newcommand\citeends{\NAT@close}% |
|
\newcommand\betweenauthors{and}% |
|
\newcommand\astroncite{} |
|
\def\astroncite#1#2(@)(@)\@nil#3{% |
|
\NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#3}% |
|
}% |
|
\newcommand\citename{} |
|
\def\citename#1#2(@)(@)\@nil#3{\expandafter\NAT@apalk#1#2, \@nil{#3}} |
|
\newcommand\harvarditem[4][]{% |
|
\if\relax#1\relax |
|
\bibitem[#2(#3)]{#4}% |
|
\else |
|
\bibitem[#1(#3)#2]{#4}% |
|
\fi |
|
}% |
|
\newcommand\harvardleft{\NAT@open} |
|
\newcommand\harvardright{\NAT@close} |
|
\newcommand\harvardyearleft{\NAT@open} |
|
\newcommand\harvardyearright{\NAT@close} |
|
\AtBeginDocument{\providecommand{\harvardand}{and}} |
|
\newcommand\harvardurl[1]{\textbf{URL:} \textit{#1}} |
|
\providecommand\bibsection{} |
|
\@ifundefined{chapter}{% |
|
\renewcommand\bibsection{% |
|
\section*{\refname\@mkboth{\MakeUppercase{\refname}}{\MakeUppercase{\refname}}}% |
|
}% |
|
}{% |
|
\@ifxundefined\NAT@sectionbib{% |
|
\renewcommand\bibsection{% |
|
\chapter*{\bibname\@mkboth{\MakeUppercase{\bibname}}{\MakeUppercase{\bibname}}}% |
|
}% |
|
}{% |
|
\renewcommand\bibsection{% |
|
\section*{\bibname\ifx\@mkboth\@gobbletwo\else\markright{\MakeUppercase{\bibname}}\fi}% |
|
}% |
|
}% |
|
}% |
|
\@ifclassloaded{amsart}{\renewcommand\bibsection{\section*{\refname}}}{}% |
|
\@ifclassloaded{amsbook}{\renewcommand\bibsection{\chapter*{\bibname}}}{}% |
|
\@ifxundefined\bib@heading{}{\let\bibsection\bib@heading}% |
|
\newcounter{NAT@ctr} |
|
\renewenvironment{thebibliography}[1]{% |
|
\bibsection |
|
\parindent\z@ |
|
\bibpreamble |
|
\bibfont |
|
\list{\@biblabel{\the\c@NAT@ctr}}{\@bibsetup{#1}\global\c@NAT@ctr\z@}% |
|
\ifNAT@openbib |
|
\renewcommand\newblock{\par}% |
|
\else |
|
\renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% |
|
\fi |
|
\sloppy\clubpenalty4000\widowpenalty4000 |
|
\sfcode`\.\@m |
|
\let\NAT@bibitem@first@sw\@firstoftwo |
|
\let\citeN\cite \let\shortcite\cite |
|
\let\citeasnoun\cite |
|
}{% |
|
\bibitem@fin |
|
\bibpostamble |
|
\def\@noitemerr{% |
|
\PackageWarning{natbib}{Empty `thebibliography' environment} |
|
} |
|
\endlist |
|
\bibcleanup |
|
} |
|
\let\bibfont\@empty |
|
\let\bibpreamble\@empty |
|
\let\bibpostamble\@empty |
|
\def\bibcleanup{\vskip-\lastskip} |
|
\providecommand\reset@font{\relax} |
|
\providecommand\bibname{Bibliography} |
|
\providecommand\refname{References} |
|
\newcommand\NAT@citeundefined{\gdef \NAT@undefined { |
|
\PackageWarningNoLine{natbib}{There were undefined citations}}} |
|
\let \NAT@undefined \relax |
|
\newcommand\NAT@citemultiple{\gdef \NAT@multiple { |
|
\PackageWarningNoLine{natbib}{There were multiply defined citations}}} |
|
\let \NAT@multiple \relax |
|
\AtEndDocument{\NAT@undefined\NAT@multiple} |
|
\providecommand\@mkboth[2]{} |
|
\providecommand\MakeUppercase{\uppercase} |
|
\providecommand{\@extra@b@citeb}{} |
|
\gdef\@extra@binfo{} |
|
\def\NAT@anchor#1#2{ |
|
\hyper@natanchorstart{#1\@extra@b@citeb} |
|
\def\@tempa{#2}\@ifx{\@tempa\@empty}{}{\@biblabel{#2}} |
|
\hyper@natanchorend |
|
} |
|
\providecommand\hyper@natanchorstart[1]{} |
|
\providecommand\hyper@natanchorend{} |
|
\providecommand\hyper@natlinkstart[1]{} |
|
\providecommand\hyper@natlinkend{} |
|
\providecommand\hyper@natlinkbreak[2]{#1} |
|
\AtBeginDocument{ |
|
\@ifpackageloaded{babel}{ |
|
\let\org@@citex\@citex}{}} |
|
\providecommand\@safe@activestrue{} |
|
\providecommand\@safe@activesfalse{} |
|
|
|
\newcommand\NAT@sort@cites[1]{ |
|
\let\NAT@cite@list\@empty |
|
\@for\@citeb:=#1\do{\expandafter\NAT@star@cite\@citeb\@@} |
|
\if@filesw |
|
\expandafter\immediate\expandafter\write\expandafter\@auxout |
|
\expandafter{\expandafter\string\expandafter\citation\expandafter{\NAT@cite@list}} |
|
\fi |
|
\@ifnum{\NAT@sort>\z@}{ |
|
\expandafter\NAT@sort@cites@\expandafter{\NAT@cite@list} |
|
}{} |
|
} |
|
\def\NAT@star@cite{ |
|
\let\NAT@star@sw\@secondoftwo |
|
\@ifnum{\NAT@merge>\z@}{ |
|
\@ifnextchar*{ |
|
\let\NAT@star@sw\@firstoftwo |
|
\NAT@star@cite@star |
|
}{ |
|
\NAT@star@cite@nostar |
|
} |
|
}{ |
|
\NAT@star@cite@noextension |
|
} |
|
} |
|
\def\NAT@star@cite@star*{ |
|
\NAT@star@cite@nostar |
|
} |
|
\def\NAT@star@cite@nostar{ |
|
\let\nat@keyopt@open\@empty |
|
\let\nat@keyopt@shut\@empty |
|
\@ifnextchar[{\NAT@star@cite@pre}{\NAT@star@cite@pre[]} |
|
} |
|
\def\NAT@star@cite@pre[#1]{ |
|
\def\nat@keyopt@open{#1} |
|
\@ifnextchar[{\NAT@star@cite@post}{\NAT@star@cite@post[]} |
|
} |
|
\def\NAT@star@cite@post[#1]#2\@@{ |
|
\def\nat@keyopt@shut{#1} |
|
\NAT@star@sw{\expandafter\global\expandafter\let\csname NAT@b*@#2\endcsname\@empty}{} |
|
\NAT@cite@list@append{#2} |
|
} |
|
\def\NAT@star@cite@noextension#1\@@{ |
|
\let\nat@keyopt@open\@empty |
|
\let\nat@keyopt@shut\@empty |
|
\NAT@cite@list@append{#1} |
|
} |
|
\def\NAT@cite@list@append#1{ |
|
\edef\@citeb{\@firstofone#1\@empty} |
|
\if@filesw\@ifxundefined\@cprwrite{}{\expandafter\@cprwrite\@citeb=}\fi |
|
\if\relax\nat@keyopt@open\relax\else |
|
\global\expandafter\let\csname NAT@b@open@\@citeb\endcsname\nat@keyopt@open |
|
\fi |
|
\if\relax\nat@keyopt@shut\relax\else |
|
\global\expandafter\let\csname NAT@b@shut@\@citeb\endcsname\nat@keyopt@shut |
|
\fi |
|
\toks@\expandafter{\NAT@cite@list} |
|
\ifx\NAT@cite@list\@empty |
|
\@temptokena\expandafter{\@citeb} |
|
\else |
|
\@temptokena\expandafter{\expandafter,\@citeb} |
|
\fi |
|
\edef\NAT@cite@list{\the\toks@\the\@temptokena} |
|
} |
|
\newcommand\NAT@sort@cites@[1]{ |
|
\count@\z@ |
|
\@tempcntb\m@ne |
|
\let\@celt\delimiter |
|
\def\NAT@num@list{} |
|
\let\NAT@cite@list\@empty |
|
\let\NAT@nonsort@list\@empty |
|
\@for \@citeb:=#1\do{\NAT@make@cite@list} |
|
\ifx\NAT@nonsort@list\@empty\else |
|
\protected@edef\NAT@cite@list{\NAT@cite@list\NAT@nonsort@list} |
|
\fi |
|
\ifx\NAT@cite@list\@empty\else |
|
\protected@edef\NAT@cite@list{\expandafter\NAT@xcom\NAT@cite@list @@} |
|
\fi |
|
} |
|
\def\NAT@make@cite@list{ |
|
\advance\count@\@ne |
|
\@safe@activestrue |
|
\edef\@citeb{\expandafter\@firstofone\@citeb\@empty} |
|
\@safe@activesfalse |
|
\@ifundefined{b@\@citeb\@extra@b@citeb} |
|
{\def\NAT@num{A}} |
|
{\NAT@parse{\@citeb}} |
|
\NAT@ifcat@num\NAT@num |
|
{\@tempcnta\NAT@num \relax |
|
\@ifnum{\@tempcnta<\@tempcntb}{ |
|
\let\NAT@@cite@list=\NAT@cite@list |
|
\let\NAT@cite@list\@empty |
|
\begingroup\let\@celt=\NAT@celt\NAT@num@list\endgroup |
|
\protected@edef\NAT@num@list{ |
|
\expandafter\NAT@num@celt \NAT@num@list \@gobble @ |
|
} |
|
}{ |
|
\protected@edef\NAT@num@list{\NAT@num@list \@celt{\NAT@num}} |
|
\protected@edef\NAT@cite@list{\NAT@cite@list\@citeb,} |
|
\@tempcntb\@tempcnta |
|
} |
|
} |
|
{\protected@edef\NAT@nonsort@list{\NAT@nonsort@list\@citeb,}} |
|
} |
|
\def\NAT@celt#1{ |
|
\@ifnum{#1>\@tempcnta}{ |
|
\xdef\NAT@cite@list{\NAT@cite@list\@citeb,\NAT@@cite@list} |
|
\let\@celt\@gobble |
|
}{ |
|
\expandafter\def@NAT@cite@lists\NAT@@cite@list\@@ |
|
} |
|
} |
|
\def\NAT@num@celt#1#2{ |
|
\ifx#1\@celt |
|
\@ifnum{#2>\@tempcnta}{ |
|
\@celt{\number\@tempcnta} |
|
\@celt{#2} |
|
}{ |
|
\@celt{#2} |
|
\expandafter\NAT@num@celt |
|
} |
|
\fi |
|
} |
|
\def\def@NAT@cite@lists#1,#2\@@{ |
|
\xdef\NAT@cite@list{\NAT@cite@list#1,} |
|
\xdef\NAT@@cite@list{#2} |
|
} |
|
\def\NAT@nextc#1,#2@@{#1,} |
|
\def\NAT@restc#1,#2{#2} |
|
\def\NAT@xcom#1,@@{#1} |
|
\InputIfFileExists{natbib.cfg} |
|
{\typeout{Local config file natbib.cfg used}}{} |
|
|
|
|
|
|
|
|
|
|