diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/apacite/apacite.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/apacite/apacite.sty | 1809 |
1 files changed, 1204 insertions, 605 deletions
diff --git a/Master/texmf-dist/tex/latex/apacite/apacite.sty b/Master/texmf-dist/tex/latex/apacite/apacite.sty index 8a0cb810d61..3944dfd5454 100644 --- a/Master/texmf-dist/tex/latex/apacite/apacite.sty +++ b/Master/texmf-dist/tex/latex/apacite/apacite.sty @@ -1,128 +1,100 @@ -% \iffalse meta-comment -% -% This is file `apacite.sty'. -% -% Copyright 1994-2005 Erik Meijer and any individual authors listed -% elsewhere in this file. All rights reserved. -% -% This file is part of the `apacite' package. -% ------------------------------------------- -% -% It may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3 -% of this license or (at your option) any later version. -% The latest version of this license is in -% http://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of LaTeX -% version 2003/12/01 or later. -% -% The list of all files belonging to the `apacite' package, with a -% short description, is given in the file `manifest.txt'. -% -% \fi +%% +%% This is file `apacite.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% apacite.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Copyright (C) 1994-2007 Erik Meijer and any individual authors listed +%% elsewhere in this file. +%% +%% This file is part of the `apacite' package. +%% ------------------------------------------- +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% The `apacite' package consists of the files apacite.dtx and +%% apacite.ins, and the following generated files: +%% apacite.sty, apacite.bst, apacitex.bst, apa5ex.bib, +%% apacite.drv, apacdoc.sty, +%% english.apc, dutch.apc, finnish.apc, german.apc, ngerman.apc, +%% greek.apc, norsk.apc, spanish.apc, swedish.apc. +%% +%% This work has the LPPL maintenance status `maintained' +%% +%% The Current Maintainer of this work is Erik Meijer +%% +%% This file may only be distributed together with a copy of the +%% source files of the apacite package, i.e., apacite.dtx and +%% apacite.ins. You may however distribute the apacite package without +%% the generated files. +%% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{apacite} + [2007/09/03 v4.00 APA citation] +%% %% apacite.sty : citation and reference list according to APA manual -%% Written by Erik Meijer <e.meijer@eco.rug.nl> +%% Written by Erik Meijer %% %% Contains code adapted from %% index.sty [1995/09/28 v4.1beta Improved index support (dmj)], %% hyperref.dtx [6.71, 2000/10/04], %% babel.def [2001/03/01, v3.7h], %% backref.dtx [1.20, 2002/06/09], -%% and code (used with permission) provided by others: -%% Ross Moore, Stefan Bj\"ork. - -\NeedsTeXFormat{LaTeX2e}[1998/06/01] % Should this be a later one? -\ProvidesPackage{apacite}[2005/06/08 APA citation] - - +%% ltbibl.dtx [2004/02/15 v1.1q LaTeX Kernel (Bibliography)], +%% bibtopic.dtx [2002/08/22 v1.0k], +%% multibib.dtx [2004/01/28 v1.3 Multiple bibliographies for one document.], +%% multibbl.dtx [2004/07/27 v1.1], +%% amsrefs.dtx [2004/06/30 v2.0] +%% ltidxglo.dtx [1996/01/20 v1.1e LaTeX Kernel (Index and Glossary)] +%% doc.dtx [2004/02/09 v2.1b Standard LaTeX documentation package (FMi)] +%% and code (used with permission) provided by: +%% Stefan Bj\"ork. +%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Default. The ``old'' version %%% \def\@year@\BCAY#1#2#3{#3} %%% cannot exist jointly with this, so has to be moved to an option. \def\@year@\citeauthoryear#1#2#3{#3} -\DeclareOption{BCAY}{% kept for compatibility with previous versions +\DeclareOption{BCAY}{% kept for compatibility with old versions \def\@year@\BCAY#1#2#3{#3}% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%% Accent fix options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\DeclareOption{accentfix}{% - % - % A cedilla accent (\c{c}) in an author name used to lead - % to errors, only due to the checking whether subsequent authors - % in the same citation are equivalent. The same problem is - % anticipated with the \b{...} accent and the \d{...} accent - % and the \copyright symbol (will the latter turn up in an - % author name?), due to the same use of \crcr, cf. The TeXbook, p. 356. - % - % This fix therefore redefines these to sensible alternatives, - % only for comparison of authors, not for any real formatting. - % Therefore, the user should not notice this, apart from the - % lack of errors, of course. Therefore, it is also a default - % option. However, because I haven't tested this thoroughly, I give - % the user the option to turn it off (noaccentfix). The user - % is then responsible for fixing any error messages generated - % by such characters. - % - \def\b@APAC#1{#1\_}% bar-under accent - \def\c@APAC#1{\accent'30 #1}% cedilla accent - \def\d@APAC#1{#1.}% dot-under accent - \def\copyright@APAC#1{copyright}% copyright symbol - \def\@pre@accentfix{% - % - % store original definitions - \let\old@b@APAC\b - \let\old@c@APAC\c - \let\old@d@APAC\d - \let\old@copyright@APAC\copyright - % - % redefine them - \let\b\b@APAC - \let\c\c@APAC - \let\d\d@APAC - \let\copyright\copyright@APAC - }% - \def\@post@accentfix{% - % - % restore original definitions - \let\b\old@b@APAC - \let\c\old@c@APAC - \let\d\old@d@APAC - \let\copyright\old@copyright@APAC - }% -} - -\DeclareOption{noaccentfix}{% - % - % See accentfix above for description. - % - \let\@pre@accentfix\relax% - \let\@post@accentfix\relax% -} -%%% End Accent fix options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - %%%%%% No Author Index option %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% The \if is necessary because packages can not be required here, so -% we must handle the consequences of the index and noindex options -% later. -% \newif\if@APAC@index \DeclareOption{noindex}{\@APAC@indexfalse}% -% %%%%%% End No Author Index option %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%% Author Index option %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \DeclareOption{index}{\@APAC@indextrue}% -% %%%%%% End Author Index option %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%% Include Corporate Authors in index? %%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newif\if@APAC@include@corporate +\DeclareOption{includecorporate}{\@APAC@include@corporatetrue}% +\DeclareOption{suppresscorporate}{\@APAC@include@corporatefalse}% +%%%%%% End Corporate Author options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%% Use index package or standard LaTeX index? %%%%%%%%%%%%%%%%%%%%% +\newif\if@APAC@index@package +\DeclareOption{indexpackage}{\@APAC@index@packagetrue}% +\DeclareOption{noindexpackage}{\@APAC@index@packagefalse}% +%%%%%% End index package options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%% Modifications of Author Index %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% Standard index: from the index package @@ -134,6 +106,10 @@ %% i.e., without table of contents entry. %% \ExecuteOptions{index}% + %% + %% This option requires the index package + \ExecuteOptions{indexpackage}% + %% \AtEndOfPackage{% \@ifclassloaded{article}{% \renewenvironment{theindex}{% @@ -198,13 +174,16 @@ }% }% }% -% \DeclareOption{tocindex}{% %% %% Index style as with the stdindex option, but with an %% added table of contents entry. %% \ExecuteOptions{index}% + %% + %% This option requires the index package + \ExecuteOptions{indexpackage}% + %% \AtEndOfPackage{% \@ifclassloaded{article}{% \renewenvironment{theindex}{% @@ -277,12 +256,15 @@ }% }% } -% \DeclareOption{emindex}{% %% %% My (EM) own favorite index style. Maybe you like it too. %% \ExecuteOptions{index}% + %% + %% This option requires the index package + \ExecuteOptions{indexpackage}% + %% \AtEndOfPackage{% %% %% Redefine theindex such that automatically a chapter or section @@ -312,11 +294,54 @@ }% }% }% +\DeclareOption{ltxemindex}{% + %% + %% Variation on emindex, without the `index' package + %% + \ExecuteOptions{index}% + %% + %% This option drops the index package + \ExecuteOptions{noindexpackage}% + %% + \AtEndOfPackage{% + %% + %% Redefine theindex such that automatically a chapter or section + %% title is generated, with a corresponding table of contents + %% entry. theindex is now in multicol environment. + %% + \RequirePackage{multicol} + \renewenvironment{theindex}{% + % The index naming scheme of the `index' package is also absent, + % therefore try to guess an index name. + \@ifundefined{currentindexname}{% + \@ifundefined{indexname}{% + \edef\@indexname{Index}% + }{\edef\@indexname{\indexname}}% + }{\edef\@indexname{\currentindexname}}% + \@ifundefined{chapter}% + {\section*{\@indexname}% + \addcontentsline{toc}{section}{\@indexname}% + }% + {\chapter*{\@indexname}% + \addcontentsline{toc}{chapter}{\@indexname}% + }% + \@mkboth{{\@indexname}}{{\@indexname}}% do we need this? + \def\pfill{\relax{}}% + \parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \let\item\@idxitem + \setlength{\columnsep}{2em} + \small + \begin{multicols}{2} + \raggedright + }% + {\end{multicols}\normalsize + }% + }% +} %%%%%% End Modifications of Author Index %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - %%%%%% Some options for the bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \newif\if@numberedbib \DeclareOption{numberedbib}{% % @@ -394,120 +419,158 @@ \let\@bibnewpage\relax } - %%%%%% End options for the bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%% Hyperref compatibility option %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% (This does not work completely satisfactory, so -% is only a non-default option.) -% -\newif\if@hyper@APA@comp +%%%%%% Obsolete hyperref compatibility options %%%%%%%%%%%%%%%%%%%%%%%% \DeclareOption{hyper}{% - \@hyper@APA@comptrue % hyperref compatibility option is on + \PackageWarningNoLine{apacite}{Obsolete option `hyper' ignored}% } -%%%%%% End Hyperref compatibility option %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%% No Hyperref compatibility option %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% If the hyperref compatibility code is not desired. -% \DeclareOption{nohyper}{% - \@hyper@APA@compfalse % hyperref compatibility option is off + \PackageWarningNoLine{apacite}{Obsolete option `nohyper' ignored}% } -%%%%%% End No Hyperref compatibility option %%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%% End obsolete hyperref compatibility options %%%%%%%%%%%%%%%%%%%% +%%%%%% Obsolete accentfix options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\DeclareOption{accentfix}{% + \PackageWarningNoLine{apacite}{Obsolete option `accentfix' ignored}% +} +\DeclareOption{noaccentfix}{% + \PackageWarningNoLine{apacite}{Obsolete option `noaccentfix' ignored}% +} +%%%%%% End obsolete accentfix options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%% Execute default options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -\ExecuteOptions{accentfix,noindex,nohyper,unnumberedbib,tocbib,% - nobibnewpage} +\ExecuteOptions{noindex,indexpackage,unnumberedbib,tocbib,% + nobibnewpage,suppresscorporate} %%%%%% Execute user-requested options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \ProcessOptions %%%%%% Define author indexing stuff when requested -% \newcommand{\authorindexname}{Author Index} \if@APAC@index - % - % Author index requested. - % Load \pkg{index} package. - % - \RequirePackage{index}[1995/09/28] - % - % Define Author Index. - % This may be changed in the preamble of the - % document (or in a user-provided package) - % by a \renewindex command. - % - \newindex{autx}{adx}{and}{\authorindexname} - % - % Author indexing command - % - \def\AX#1{% - \write\@auxout% - {\string\@writefile{autx}{% - \string\indexentry{\string#1}{\thepage}}}% -% \expandafter\string\expandafter\indexentry{#1}{\thepage}}}% - } - % + % + % Author index requested. + % + \if@APAC@index@package + % + % Load \pkg{index} package. + \RequirePackage{index}[1995/09/28] + % + % Define Author Index. + % This may be changed in the preamble of the + % document (or in a user-provided package) + % by a \renewindex command. + % + \newindex{autx}{adx}{and}{\authorindexname} + % + % Author indexing command + % + \DeclareRobustCommand{\AX}[1]{% + \if@filesw{% + \protected@write\@auxout{}{% + \string\protected@write\string\tf@autx{}{% + \string\string\string + \indexentry{\string#1|hyperpage}{\thepage}}}% + }% + \fi + }% + \else + % + % Without \pkg{index} package (experimental). + % A bit of code adapted from ltidxglo.dtx + \newwrite\@AXfile + \immediate\openout\@AXfile=\jobname.adx + \typeout + {Writing author index file \jobname.adx }% + % + \DeclareRobustCommand{\AX}[1]{% + \protected@write\@AXfile{}% + {\string\indexentry{\string#1}{\thepage}}% + }% + % + % Some code adapted from doc.dtx + \def\PrintAX{\edef\currentindexname{\authorindexname}% + \@input@{\jobname.and}% + \global\let\PrintAX\@empty + }% + % + % Do some hacking to make sure both \printindex and \printindex[autx] are defined + % As yet untested. + \AtBeginDocument{% + % Make sure \printindex is defined. + \@ifundefined{printindex}{\makeindex}{}% + % Now, redefine \printindex to accommodate both \printindex and \printindex[autx] + \let\orig@printindex\printindex + \def\printindex{\@ifnextchar[{\APAC@printindex}{% + \orig@printindex}}% + % + \def\APAC@printindex[autx]{\PrintAX}% + }% + \fi + % + % Index corporate authors? + \if@APAC@include@corporate + % Include corporate authors in index. + \let\corporateAX\AX + \else + % Swallow argument (do not index). + \let\corporateAX\@gobble + \fi + % \else - % - % No author index. - % - % Wait till \begin{document} for checking whether another - % package is loaded that defines \printindex. - % - \AtBeginDocument{% - \@ifundefined{printindex}% - {%% \printindex not defined. Define \printindex so that it - % suppresses the indexes. - \def\printindex{\@ifnextchar[{\check@printindex}{% - \check@printindex[]}}% - % - \def\check@printindex[#1]{\relax }% - }% - {% \printindex defined, so save its definition. - \let\orig@printindex\printindex - % - % Redefine \printindex so that it suppresses the author index - % but does not change other indexes. - % 1. If there is no optional argument, use the original - % definition. - \def\printindex{\@ifnextchar[{\check@printindex}{\orig@printindex}}% - % - % 2. If there is an optional argument, check whether it is - % equal to `autx'. If so, suppress this (author) index. - % If not, use the original definition. - \def\check@printindex[#1]{% - % Use a clumsy way to check whether #1 = autx - % but seemingly more elegant ways somehow didn't work. - \expandafter\def\csname APAC@#1\endcsname{DUMMY}% - \@ifundefined{APAC@autx}% - {\orig@printindex[#1]}% - {\let\APAC@autx\@undefined}% - }% - }% - }% - % - % Empty author indexing command - % - \def\AX#1{} - % + % + % No author index. + % + % Wait till \begin{document} for checking whether another + % package is loaded that defines \printindex. + % + \AtBeginDocument{% + \@ifundefined{printindex}% + {%% \printindex not defined. Define \printindex so that it + % suppresses the indexes. + \def\printindex{\@ifnextchar[{\check@printindex}{% + \check@printindex[]}}% + % + \def\check@printindex[#1]{\relax }% + }% + {% \printindex defined, so save its definition. + \let\orig@printindex\printindex + % + % Redefine \printindex so that it suppresses the author index + % but does not change other indexes. + % 1. If there is no optional argument, use the original + % definition. + \def\printindex{\@ifnextchar[{\check@printindex}{\orig@printindex}}% + % + % 2. If there is an optional argument, check whether it is + % equal to `autx'. If so, suppress this (author) index. + % If not, use the original definition. + \def\check@printindex[#1]{% + % Use a clumsy way to check whether #1 = autx + % but seemingly more elegant ways somehow didn't work. + \expandafter\def\csname APAC@#1\endcsname{DUMMY}% + \@ifundefined{APAC@autx}% + {\orig@printindex[#1]}% + {\let\APAC@autx\@undefined}% + }% + }% + }% + % + % Empty author indexing commands + % + \let\AX\@gobble + \let\corporateAX\@gobble + % \fi - %%%%%% Chapterbib compatibility %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% From the instructions of the chapterbib package. \@ifundefined{@extra@b@citeb}{\def\@extra@b@citeb{}}{} \gdef\@extra@binfo{} %%%%%% End Chapterbib compatibility %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Commands for specific types of @misc entries. %%% These are recognized by apacite.bst. @@ -521,25 +584,23 @@ \newcommand{\bibprogramminglanguage}{Programming language} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Command for corporate authors. +%%% This is recognized by apacite.bst. +\let\bibcorporate\relax + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% The following commands are recognized by apacite.bst. %%% They denote that the publication date is unknown, %%% and that the type should be left empty (for @techreport, where %%% ``Tech. Rep.'' is the default type if the field is left empty). -\newcommand{\bibnodate}{n.d.{}} +\newcommand{\bibnodate}{n.d.\hbox{}} \newcommand{\bibnotype}{} %%%%%%%%%%%%%%%%%%%%% -% cite punctuations % %%%%%%%%%%%%%%%%%%%%% -% text style of authors in-text citation -% (\cite, \shortcite, \fullcite, -% \citeA, \shortciteA, \fullciteA, -% \citeNP, \shortciteNP, \fullciteNP) \newcommand{\BAstyle}{}% -% text style of authors in-text citation -% (\citeauthor, \shortciteauthor, \fullciteauthor) \newcommand{\BAastyle}{}% \newcommand{\BBOP}{(} % open parenthesis @@ -553,14 +614,13 @@ \newcommand{\BBN}{, } % before note \newcommand{\BBOQ}{} % open quote for article title \newcommand{\BBCQ}{} % closing quote for article title -% \newcommand{\BCBT}{,} % comma between authors in ref. sec % when no. of authors = 2 \newcommand{\BCBL}{,} % comma before last author \newcommand{\BAnd}{\&} % for ``Ed. \& Trans.'' in ref. list -% +\DeclareRobustCommand{\BPBI}{.~}% Period between initials +\DeclareRobustCommand{\BHBI}{.-}% Hyphen between initials \newcommand{\BBA}{\BBAA} -% \let\Bem\emph \newcommand{\APACciteatitle}[1]{``#1''}% Format as article title in text @@ -571,97 +631,60 @@ % the argument of this command, but the % argument is never displayed. -% Two commands that are used to trick natbib. \newcommand{\APACyear}[1]{{#1}}% \newcommand{\APACexlab}[1]{{#1}}% -% -% For multiple citations with same author-year. -% (Kruskal, 1964a, 1964b) -% The \protect is necessary when natbib is used. -% \newcounter{BibCnt} \renewcommand{\theBibCnt}{\alph{BibCnt}} \newcommand{\BCnt}[1]{\setcounter{BibCnt}{#1}\protect\theBibCnt} -% -% In press, no date. -% The \mbox prevents a line break at the hyphen. -% \newcommand{\BCntIP}[1]{\setcounter{BibCnt}{#1}\mbox{-\protect\theBibCnt}} \newcommand{\BCntND}[1]{\setcounter{BibCnt}{#1}\mbox{-\protect\theBibCnt}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Labels, mostly for reference list % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\BOthers}[1]{et al.{}} % ``others'', the argument contains a - % dot to suppress an additional one - % in the reference list -\newcommand{\BOthersPeriod}[1]{et al.{}}% ``others'', the argument contains a - % dot to suppress an additional one - % in the reference list. The difference - % with \BOthers is that, if another - % string is used to define \BOthers, - % this one should always finish with a - % period and the previous one not - % necessarily (e.g., if explicit - % ``others'' is used). +\newcommand{\BOthers}[1]{et al.\hbox{}} +\newcommand{\BOthersPeriod}[1]{et al.\hbox{}} \newcommand{\BIP}{in press} % used as year for in-press citations \newcommand{\BIn}{In} % for ``In '' editor... -\newcommand{\BCHAP}{chap.{}} % chapter -\newcommand{\BCHAPS}{chap.{}} % chapters -\newcommand{\BED}{Ed.{}} % editor -\newcommand{\BEDS}{Eds.{}} % editors -\newcommand{\BTRANS}{Trans.{}} % translator -\newcommand{\BTRANSS}{Trans.{}} % translators -\newcommand{\BTRANSL}{trans.{}} % translation, for the year field +\newcommand{\Bby}{by} % for ``by '' editor... (in reprints) +\newcommand{\BCHAP}{chap.\hbox{}} % chapter +\newcommand{\BCHAPS}{chap.\hbox{}} % chapters +\newcommand{\BED}{Ed.\hbox{}} % editor +\newcommand{\BEDS}{Eds.\hbox{}} % editors +\newcommand{\BTRANS}{Trans.\hbox{}} % translator +\newcommand{\BTRANSS}{Trans.\hbox{}} % translators +\newcommand{\BTRANSL}{trans.\hbox{}} % translation, for the year field \newcommand{\BCHAIR}{Chair} % chair of symposium \newcommand{\BCHAIRS}{Chairs} % chairs -\newcommand{\BVOL}{Vol.{}} % volume -\newcommand{\BVOLS}{Vols.{}} % volumes -\newcommand{\BNUM}{No.{}} % number -\newcommand{\BNUMS}{Nos.{}} % numbers -\newcommand{\BEd}{ed.{}} % edition -\newcommand{\BPG}{p.{}} % page -\newcommand{\BPGS}{pp.{}} % pages -\newcommand{\BTR}{Tech.\ Rep.{}} % (default) technical report type name -\newcommand{\BPhD}{Doctoral dissertation} - % (default) PhD thesis type name +\newcommand{\BVOL}{Vol.\hbox{}} % volume +\newcommand{\BVOLS}{Vols.\hbox{}} % volumes +\newcommand{\BNUM}{No.\hbox{}} % number +\newcommand{\BNUMS}{Nos.\hbox{}} % numbers +\newcommand{\BEd}{ed.\hbox{}} % edition +\newcommand{\BPG}{p.\hbox{}} % page +\newcommand{\BPGS}{pp.\hbox{}} % pages +\newcommand{\BTR}{Tech.\ Rep.\hbox{}} % (default) technical report type name +\newcommand{\BPhD}{Doctoral dissertation}% (default) PhD thesis type name \newcommand{\BUPhD}{Unpublished doctoral dissertation} - % (default) unpublished PhD thesis - % type name \newcommand{\BMTh}{Master's thesis} % (default) master's thesis type name -\newcommand{\BUMTh}% - {Unpublished master's thesis} % (default) unpublished - % master's thesis type name +\newcommand{\BUMTh}{Unpublished master's thesis} +\newcommand{\BAuthor}{Author} % Used if publisher = author \newcommand{\BOWP}{Original work published} \newcommand{\BREPR}{Reprinted from} - +\newcommand{\BAvailFrom}{Available from\ }% Websites; note the space. +\newcommand{\BRetrieved}[1]{Retrieved {#1}, from\ }% Websites; note the space. +\newcommand{\BMsgPostedTo}{Message posted to\ }% Messages; note the space. \def\refname{References}% Name of ref. list if it's a section. \def\bibname{References}% Name of ref. list if it's a chapter. -% -% An optional note just before the references in the reference list. -% Defaults to nothing, but can be changed to a list of commands -% (e.g., if author formatting should be different in the reference -% list) and/or text (e.g., for an explanatory note). -% \newcommand{\bibliographyprenote}{} -% -% Prenote used just before the references in the reference list -% when a meta-analysis is reported. -% \newcommand{\APACmetaprenote}{% References marked with an asterisk indicate studies included in the meta-analysis.} -% -% The star that's put in front of the entries used in the meta-analysis -% -\newcommand{\APACmetastar}{$\star$\ } +\newcommand{\APACmetastar}{\ensuremath{{}^\ast}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Load language dependent sections from an external file. -% (Based on code by Stefan Bj\"ork, 2004/12/25.) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \AtBeginDocument{% @@ -679,35 +702,6 @@ \@ifundefined{iflanguage}% {\relax }% {% % - % Define a modification of \iflanguage that executes the "true" - % code if the language is defined and equal to the current - % language and does nothing otherwise. (Just \iflanguage gives - % an error if the language is not loaded.) - % - \def\APAC@iflang#1#2{% - \expandafter\ifx\csname l@#1\endcsname\relax - \else - \ifnum\csname l@#1\endcsname=\language - {#2}% - \fi - \fi - }% - % Define language support file. The \def instead of a direct \input - % is done to provide a mechanism to check whether a language file - % has been defined. The language files that are shipped with the - % current release are defined explicitly. If the requested language - % is not in this list, \languagename.apc is loaded if it exists. - % - \APAC@iflang{dutch}{\gdef\APAC@apcfile{dutch.apc}}% - \APAC@iflang{english}{\gdef\APAC@apcfile{english.apc}}% - \APAC@iflang{german}{\gdef\APAC@apcfile{german.apc}}% - \APAC@iflang{ngerman}{\gdef\APAC@apcfile{ngerman.apc}}% - \APAC@iflang{greek}{\gdef\APAC@apcfile{greek.apc}}% - \APAC@iflang{swedish}{\gdef\APAC@apcfile{swedish.apc}}% - % - \@ifundefined{APAC@apcfile}{% - \def\APAC@apcfile{\languagename.apc}}{\relax}% - % % My teTeX under Cygwin automatically loads babel with % default language "nohyphenation", so this language should % revert to doing nothing. Strangely enough \iflanguage @@ -719,76 +713,352 @@ \edef\APAC@tmp{nohyphenation}% \ifx\languagename\APAC@tmp \else - \InputIfFileExists{\APAC@apcfile}{}{% - \PackageWarningNoLine{apacite}{% - Language definition file \APAC@apcfile\space not found.}}% + \InputIfFileExists{\languagename.apc}{}{% + % + % \languagename.apc does not exist; try whether the current + % language is a dialect of one of the known languages. This + % is not perfect, because languages for which no hyphenation + % patterns have been found revert to the default language, + % so that the wrong language file may be loaded here in that + % case. + % + % Define a modification of \iflanguage that executes the "true" + % code if the language is defined and equal to the current + % language and does nothing otherwise. (Just \iflanguage gives + % an error if the language is not loaded.) + % + \def\APAC@iflang##1##2{% + \expandafter\ifx\csname l@##1\endcsname\relax + \else + \ifnum\csname l@##1\endcsname=\language + {##2}% + \fi + \fi + }% + % Define language support file. The \def instead of a direct \input + % is done to provide a mechanism to check whether a language file + % has been defined. + % + \APAC@iflang{dutch}{\gdef\APAC@apcfile{dutch.apc}}% + \APAC@iflang{finnish}{\gdef\APAC@apcfile{finnish.apc}}% + \APAC@iflang{german}{\gdef\APAC@apcfile{german.apc}}% + \APAC@iflang{ngerman}{\gdef\APAC@apcfile{ngerman.apc}}% + \APAC@iflang{greek}{\gdef\APAC@apcfile{greek.apc}}% + \APAC@iflang{norsk}{\gdef\APAC@apcfile{norsk.apc}}% + \APAC@iflang{spanish}{\gdef\APAC@apcfile{spanish.apc}}% + \APAC@iflang{swedish}{\gdef\APAC@apcfile{swedish.apc}}% + % + % The default English as last one. + \APAC@iflang{english}{\gdef\APAC@apcfile{english.apc}}% + % + \@ifundefined{APAC@apcfile}{% + \PackageWarningNoLine{apacite}{% + No suitable language definition file (\languagename.apc) found}% + }{% + \InputIfFileExists{\APAC@apcfile}{}{% + \PackageWarningNoLine{apacite}{% + Language definition file \APAC@apcfile\space not found}% + }% + }% + \let\APAC@apcfile\@undefined + }% \fi \let\APAC@tmp\@undefined }% + \let\APAC@iflang\@undefined } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Bibliography style parameters. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\bibnewpage{\clearpage}% apa.cls uses \newpage, change with \renewcommand \let\bibliographytypesize\normalsize -% %%% declare four parameters \newskip{\bibleftmargin} \newskip{\bibindent} \newskip{\bibparsep} \newskip{\bibitemsep} -% %%% and give them default values \bibleftmargin=2.5em \bibindent=-\bibleftmargin \bibparsep=0pt% \bibitemsep\z@ \@plus .3\p@\relax -% -% To force another order (in Part 1, Part 2 cases) -% Actually, this is the same as \SortNoop used in the examples, -% so I do not discuss this in the documentation. It should -% not be considered part of apacite, but I keep it for backwards -% compatibility. \newcommand{\bibphant}[1]{} -% -% Around 1998, I got error messages with accented characters -% in author names. After some trial and error, I found out that -% this works. However, later it was apparently not necessary anymore -% (tests without it worked well), but I keep it because it's harmless -% and I'm not sure enough. -% -\@ifundefined{accent@spacefactor}{\def\accent@spacefactor{}}{} +\def\APAC@extra@b@citeb{\APAC@curr@aux\APAC@bu\@extra@b@citeb}% +\def\APAC@extra@binfo{\APAC@curr@aux\APAC@bu\@extra@binfo}% -%%%%%%%%%%%%% -% citations % -%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%% \def\@lbibitem[#1]#2{% \def\BBA{\BBAA}% - \item[\@biblabel{#1}]% + % For compatibility with chapterbib, bibunits, backref, and hyperref. + % Adapted from natbib.dtx. + \item[\hyper@natanchorstart{#2\APAC@extra@b@citeb}% + \@biblabel{#1}% + \hyper@natanchorend]% \if@filesw{% \def\BBA{\string\BBA}% - \def\protect##1{\string ##1}% - \immediate\write\@auxout{\string\bibcite{#2}{#1}}% + \let\protect\noexpand + % bibunits redefines \bibcite through \AtBeginDocument + % in a way that is incompatible with apacite's definition. + % The simplest way to get things working automatically + % seems to be introducing the parallel \APACbibcite command. + % This should also solve many other compatibility problems. + \immediate\write\@newciteauxhandle{\string\bibcite{#2}{#1}}% + \immediate\write\@newciteauxhandle{\string\APACbibcite{#2}{#1}}% \def\BBA{\BBAA}% }% - \fi% - \ignorespaces% + \fi + \ignorespaces +} + +\def\APACbibcite#1#2{% + \global\expandafter + \def\csname b@#1\APAC@extra@binfo\endcsname{#2}% names + \global\expandafter + \def\csname Y@#1\APAC@extra@binfo\endcsname{\@year@#2}% year } +\let\bibcite\APACbibcite + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% COMPATIBILITY WITH BABEL %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% COMMENTS FROM hyperref.dtx: +%% +%% Package |babel| redefines \cmd{\bibcite} with +%% macro \cmd{\bbl@cite@choice}. It needs to be overwritten +%% to avoid the warning ``Label(s) may have changed.''. +%% +%% END COMMENTS +%% +%% Here, a slightly adapted version of the code mentioned above is inserted. +%% The other \bibcite-restoring compatibility code above does something +%% similar, but does not do the job correctly if babel is loaded (why?). +%% Clearly, this only works if babel is loaded before apacite, but +%% putting it in a \AtBeginDocument does not work well. + +\@ifundefined{bbl@cite@choice}{}{% + \g@addto@macro\bbl@cite@choice{% + \let\bibcite\APACbibcite + }% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% COMPATIBILITY WITH BIBTOPIC %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\AtBeginDocument{% + \@ifpackageloaded{bibtopic}{% + % + % Somewhat rudely disable this command to prevent an undesired + % error message of bibtopic. + \renewcommand*\bt@change@thb{\relax}% + }{% + % + % These bibtopic hooks are included in the thebibliography + % environment, so bibtopic should work correctly. If bibtopic is + % not loaded, they should do nothing. + \providecommand{\bt@beg@thb@hook}{\relax} + \providecommand{\bt@end@thb@hook}{\relax} + }% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% COMPATIBILITY WITH BIBUNITS %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\AtEndOfPackage{% + \let\APACstd@cite\cite + \let\APACstd@nocite\nocite + \let\APACstd@lbibitem\@lbibitem +} + +\@ifundefined{APAC@bu}{\def\APAC@bu{}}{} + +\AtBeginDocument{% + \@ifpackageloaded{bibunits}{% + % To mimic chapterbib behavior (with flags etc.). + \def\APAC@bu{% + \ifx\cite\std@cite + % Outside a bibunit; the `@APACbu' strings are intended to + % minimize the possibility of wrong matches, such as + % \b@ex11 = ex11 from the global aux + % or + % \b@ex11 = ex1 from bibunit 1, + % and the last `@' is similarly intended to avoid confusion + % if both bibunits and chapterbib are loaded (`11@1' = 11th + % bibunit, 1st chapterbib unit; `1@11' = 1st bibunit, 11th + % chapterbib unit). It seems unlikely that both packages would + % be used at the same time, but safety first. + @APACbu0@% + \else + % Within a bibunit: use bibunit number to distinguish the bibunits. + @APACbu\the\@bibunitauxcnt @% + \fi + }%% + % Standard apacite definition of \cite and \nocite commands. + \let\std@cite\APACstd@cite + % This is mainly necessary to avoid incorrect `Citation undefined' + % warnings. + \let\std@nocite\APACstd@nocite + % Restore apacite definition of \bibitem, mainly because of the + % \@newciteauxhandle instead of \@auxout. + \def\std@lbibitem[#1]#2{% + \let\@APACtemp@auxout\@newciteauxhandle + \let\@newciteauxhandle\@bibunitaux + \APACstd@lbibitem[#1]{#2}% + \let\@newciteauxhandle\@APACtemp@auxout + }%% + % To make sure everything works whether bibunits is loaded + % before or after apacite. + \let\@lbibitem\std@lbibitem + % + }{}% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% COMPATIBILITY WITH MULTIBBL %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@ifundefined{APAC@curr@aux}{\def\APAC@curr@aux{}}{} +\AtBeginDocument{% + \@ifpackageloaded{multibbl}{% + % To mimic chapterbib behavior (with flags etc.). + \def\APAC@def@curr@aux#1{\def\APAC@curr@aux{@APACaux@#1@}}% + % Ditto. This puts the \bibcite commands in #1.aux instead + % of in the main aux file, so that the flags can be differentiated. + % This also means that the aux file has to be read by LaTeX + % before it is overwritten. + \def\newbibliography#1{% + \APAC@def@curr@aux{#1}% + \@input@{#1.aux}% + \begingroup + \if@filesw + \expandafter\newwrite\csname #1@auxfile\endcsname + \expandafter\immediate\openout + \csname #1@auxfile\endcsname #1.aux\relax + \typeout{Writing auxiliary file #1.aux }% + \fi + \endgroup + }%% + % Add the flag to the bibliography. + \let\APAC@mbbl@bibliography\bibliography + \def\bibliography#1#2#3{% + \APAC@def@curr@aux{#1}% + \let\@APACtemp@auxout\@newciteauxhandle + \def\@APACtemp{\csname #1@auxfile\endcsname}% + \let\@newciteauxhandle\@APACtemp + \APAC@mbbl@bibliography{#1}{#2}{#3}% + \let\@newciteauxhandle\@APACtemp@auxout + }%% + % Add an extra argument to \@@cite. + \let\@orig@@cite\@@cite + \def\@@cite<#1>[#2]#3#4{% + \nocite{#3}{#4}% + \let\@temp@nocite\nocite + \let\nocite\@gobble + % + \APAC@def@curr@aux{#3}% + \@orig@@cite<#1>[#2]{#4}% + % + \let\nocite\@temp@nocite + \let\@temp@nocite\@undefined + }%% + % + % Add an extra argument to \nocite. + \let\@orig@nocite\nocite + \def\nocite#1#2{% + % Define a flag. + \APAC@def@curr@aux{#1}% + % + % No flag-setting in \nocite: a no-cite is not a cite, + % so a subsequent cite may be the first cite. + \@bsphack + \ifx\@onlypreamble\document + % Since we are after \begin{document} we can do the citations: + \@for\@citeb:=#2\do{% + \edef\@citeb{\expandafter\@firstofone\@citeb}% + % \@newciteauxhandle for compatibility with multibib + % #1@auxfile for compatibility with multibbl + \@ifundefined{#1@auxfile}{% + \if@filesw + \immediate\write\@newciteauxhandle{\string\citation{\@citeb}}% + \fi + }{\if@filesw + \expandafter\immediate% + \write\csname #1@auxfile\endcsname{\string\citation{\@citeb}}% + \fi + }% + % + \@ifundefined{b@\@citeb\APAC@extra@b@citeb}{% + \edef\B@my@dummy{*}% + \ifx\@citeb\B@my@dummy + \else + \G@refundefinedtrue + \@latex@warning{Citation `\@citeb' undefined}% + \fi + }{}% + }% + \else + % apacite has no compatibility problems, because it does not work + % with LaTeX 2.09 anyway, so we can do the following, suggested + % in ltbibl.dtx: + \AtBeginDocument{\nocite{#1}{#2}}% + \fi + \@esphack + % + % For compatibility with multibib. + \@restore@auxhandle + }%% + % + % Add an extra argument to \nocitemeta. + \let\@orig@@nocitemeta\nocitemeta + \def\nocitemeta#1#2{% + \nocite{#1}{#2}% + \let\@temp@nocite\nocite + \let\nocite\@gobble + % + \@orig@@nocitemeta{#2}% + % + \let\nocite\@temp@nocite + \let\@temp@nocite\@undefined + }% + }{}% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% COMPATIBILITY WITH MULTIBIB %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\providecommand\@newciteauxhandle{\@auxout} +\def\@restore@auxhandle{\gdef\@newciteauxhandle{\@auxout}} +\def\@mb@citenamelist{% + cite,fullcite,shortcite,citeNP,fullciteNP,shortciteNP,% + citeA,fullciteA,shortciteA,citeauthor,fullciteauthor,shortciteauthor,% + citeauthorNP,fullciteauthorNP,shortciteauthorNP,% + citeyear,citeyearNP,nocite,nocitemeta% +}% +\AtBeginDocument{% + \@ifundefined{newcites}{\global\let\@restore@auxhandle\relax}{}% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% COMPATIBILITY WITH SPLITBIB %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Year is separately handled by \Y@<citation key> -\def\bibcite#1#2{% - \global\expandafter\def\csname b@#1\@extra@binfo\endcsname{#2}% names - \global\expandafter\def\csname Y@#1\@extra@binfo\endcsname{\@year@#2}% year +\AtBeginDocument{% + \@ifpackageloaded{splitbib}{% + % Presumably, this doesn't hurt without splitbib as well. + \def\citeauthoryear{\string\citeauthoryear}% + }{}% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% COMPATIBILITY WITH NATBIB %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \AtBeginDocument{% \@ifpackageloaded{natbib}{% % @@ -803,119 +1073,187 @@ % is necessary and therefore I do this here. % \def\NAT@parse@date#1#2#3#4#5#6@@{% - \def\NAT@year{{#1}}\def\NAT@exlab{{#2}}% + \def\NAT@year{{#1}}\def\NAT@exlab{{#2}}% + }% + % + % natbib redefines \thebibliography, which interferes a little + % with our purposes. Therefore, add some patches. + % + \let\@oldbibpreamble\bibpreamble + \def\bibpreamble{% This goes wrong if \bibpreamble is redefined + % later on, i.e., by the user, but I haven't thought + % of a better hack yet. + \@oldbibpreamble% + \bibliographytypesize% + \bibliographyprenote% + \@ifundefined{APAC@metaprenote@\APAC@extra@b@citeb}% + {}% skip + {\csname APAC@metaprenote@\APAC@extra@b@citeb\endcsname}% }% + \let\@old@endthebibliography\endthebibliography + \def\endthebibliography{\@old@endthebibliography% + \normalsize}% }{}% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% COMPATIBILITY WITH HYPERREF %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Include experimental hyperref-compatibility code provided by Ross Moore, -% if the hyper option is requested. -\if@hyper@APA@comp% hyperref compatibility option is on - % - % accommodate both APA and other (e.g. hyperref) patchings of \bibcite - % - \def\bibcite@APA@other#1#2{% - \bibcite@other{#1}{#2}% - \expandafter\xdef\csname Y@#1\endcsname{\@year@#2}}% - \let\bibcite@APA\bibcite % record the APA-only definition of \bibcite - % - % check via \AtBeginDocument as to whether \bibcite has been changed; - % if so, then correct the patching when the .aux file is read. - % - \AtBeginDocument{% - \ifx\bibcite\bibcite@APA\else - \immediate\write\@auxout{\string\install@other@APA}% - \fi }% - % - \def\install@other@APA{% - \ifx\bibcite\bibcite@APA\else - \let\bibcite@other\bibcite - \let\bibcite\bibcite@APA@other - \fi \let\install@other@APA\relax }% - % - % This command should not be needed; it allows the patch to be - % forced at an earlier time, if desired. - % - \def\installhyperAPA{% - \@ifpackageloaded{hyperref}{\install@other@APA}% - {\AtBeginDocument{\install@other@APA}}% - }% -\fi + +\AtBeginDocument{% + \@ifundefined{NAT@parse}{% + \def\NAT@parse{This is a fake natbib command to fool hyperref.}}{}% + \@ifundefined{hyper@natlinkstart}{% + \let\hyper@natlinkstart\@gobble}{}% + \@ifundefined{hyper@natlinkend}{% + \let\hyper@natlinkend\relax}{}% + \@ifundefined{hyper@natanchorstart}{% + \let\hyper@natanchorstart\@gobble}{}% + \@ifundefined{hyper@natanchorend}{% + \let\hyper@natanchorend\relax}{}% + \@ifundefined{hyperpage}{% + \def\hyperpage#1{#1}}{}% +} +\AtBeginDocument{% + \@ifpackageloaded{hyperref}{% + % The next should always be true, but just to be sure... + \@ifpackageloaded{url}{% + % Is obeyspaces option requested? If not, then... + \ifx\@empty\Url@ObeySp\@empty + % remove spaces from hyperlinks. + \def\url@#1{\def\@tmp@arg{\string#1}% + \HyPsd@Subst{ }{}{\@tmp@arg}% + \hyper@linkurl{\Hurl{#1}}{\@tmp@arg}}% + \fi + }{}% + }{}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% COMPATIBILITY WITH BABEL %% +%% COMPATIBILITY WITH BACKREF %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% -%% COMMENTS FROM hyperref.dtx: -%% -%% Package |babel| redefines \cmd{\bibcite} with -%% macro \cmd{\bbl@cite@choice}. It needs to be overwritten -%% to avoid the warning ``Label(s) may have changed.''. -%% -%% END COMMENTS -%% -%% Here, I (EM) literally insert the code mentioned above. -%% Are the \begingroup and \endgroup necessary or even useful? -%% The hyperref-compatibility patch above does a similar thing with -%% \bibcite. -%% - -\let\Hy@bibcite\bibcite -\begingroup - \@ifundefined{bbl@cite@choice}{}{% - \g@addto@macro\bbl@cite@choice{% - \let\bibcite\Hy@bibcite +%% A bit of code that makes life a little easier +%% (adapted from amsrefs.dtx). +\def\back@cite{}% +\def\CurrentBib{}% +\def\PrintBackRefs{}% +\def\APACrestorebibitem{}% +\AtBeginDocument{% + \@ifpackageloaded{backref}{% + % Make sure that \ifBR@verbose is defined. + \@ifundefined{ifBR@verbose}{% + \let\ifBR@verbose\iffalse + \let\fi\fi}{}% + % A backcite command that makes the code of other commands better + % readable. + \def\back@cite#1{% + \ifBR@verbose + \PackageInfo{backref}{back cite \string`#1\string'}% + \fi + \Hy@backout{#1\APAC@extra@b@citeb}% + }%% + % Adaptation of the \bibitem command so that backref does not + % scan the whole entry. The placement of the backrefs is explicitly + % done through \PrintBackRefs. + \def\APACrestorebibitem{% + \def\BR@@lbibitem[##1]##2{% + \BRorg@bibitem[{##1}]{##2}% + \def\CurrentBib{##2\APAC@extra@b@citeb}% + }%% }% + % Printing the backrefs: revert to the standard backrefs macro. + \def\PrintBackRefs#1{\BR@backref{#1}}% + }{%%% + % backref not loaded. + \let\back@cite\@gobble + \let\PrintBackRefs\@gobble }% -\endgroup +} + +\def\BR@@lbibitem[#1]#2#3\par{% + \BRorg@bibitem[#1]{#2}#3% + \BR@backref{#2}% +}% + +\def\makehashother{\catcode`\#=12\relax}% +\def\makehashmacropar{\catcode`\#=6\relax}% -%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% COMPATIBILITY WITH BACKREF %% +%% FOR USE WITH THE URL PACKAGE (AND HYPERREF) %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% some code from backref.dtx, adapted by EM -%% \AtBeginDocument{% - \@ifpackageloaded{backref}{% - \global\let\BRorg@citeapa\@@cite % EM - \global\let\@@cite\BR@citeapa % EM + \@ifpackageloaded{url}{% + % To circumvent an ``undefined'' error + \@ifundefined{Url@force@Tilde}{\def\Url@force@Tilde{\relax}}{}% + % + % The original dot. (Simply using `.' causes an infinite loop. + % This command is used below, so that encoding-issues can be resolved + % easier by redefining \Url@APACdot.) + \def\Url@APACdot{\mathchar"2E }% + \def\Url@APACcomma{\mathchar"2C }% + \def\Url@APACquestionmark{\mathchar"3F }% + \def\Url@APACexclamation{\mathchar"21 }% + \def\Url@APAChyphen{\mathchar"2D }% + \def\Url@APACunderscore{\_}% + % + % APA-definitions. + \def\APACurlBreaks{% + % Remove dot and slash from ordinary breaks. + \def\UrlBreaks{\do\@\do\\\do\|\do\;\do\>\do\]\do\)\do\'\do+\do\=\do\#}% + % Add slash to big breaks, so that http:// is broken after the second + % slash instead of after the colon. + \def\UrlBigBreaks{\do\/\do\:\do@url@hyp}% + % These are the default ones. Repeat them to get a complete style and + % we don't have to rely on what is the default (which might change). + \def\UrlNoBreaks{\do\(\do\[\do\{\do\<}% + \def\UrlOrds{\do\*\do\~\do\'\do\"}% + % Define a dot as an empty binary relation (after which a break may + % occur) followed by a dot-symbol (after which no break may occur). + % The Chicago Manual of Style requests the same treatment of + % a couple of other punctuation marks, different from url.sty's + % default behavior. + \def\UrlSpecials{% + \do\.{\mathbin{}\Url@APACdot }\do\,{\mathbin{}\Url@APACcomma }% + \do\-{\mathbin{}\Url@APAChyphen }% + \do\?{\mathbin{}\Url@APACquestionmark }% + \do\!{\mathbin{}\Url@APACexclamation }% + \do\_{\mathbin{}\Url@APACunderscore }% + \do\ {\Url@space}\do\%{\Url@percent}\do\^^M{\Url@space}% + \Url@force@Tilde}% package option may force faked text-ascii-tilde + }%% + % Change underscore for when a non-tt font is used. + \def\Url@OTnonTT{\do\<{\langle}\do\>{\mathbin{\rangle}}\do + \_{\mathbin{}\_}\do\|{\mid}\do\{{\lbrace}\do\}{\mathbin{\rbrace}}\do + \\{\mathbin{\backslash}}\UrlTildeSpecial} + + % Now define four APA url-styles, based on the standard styles in + % url.sty. + \def\url@APACttstyle{\def\UrlFont{\ttfamily}\APACurlBreaks }% + \def\url@APACrmstyle{\def\UrlFont{\rmfamily}\APACurlBreaks }% + \def\url@APACsfstyle{\def\UrlFont{\sffamily}\APACurlBreaks }% + \def\url@APACsamestyle{\def\UrlFont{}\APACurlBreaks }% + % + % Use APACtt-style by default. + \urlstyle{APACtt}% }{}% } -\def\BR@citeapa<#1>[#2]#3{% % EM - \BRorg@citeapa<#1>[#2]{#3}% % EM - \ifBR@verbose - \PackageInfo{backref}{back cite \string`#3\string'}% EM - % Am I allowed to define an info message of another package? - % It seems strange. But it's also strange to change `backref' - % into `apacite', because backref does the backreferencing, - % and the command is merely an adaptation of the corresponding - % backref command. - \fi - \Hy@backout{#3}% + +\AtBeginDocument{% + \@ifundefined{url}{% + \def\url#1{\texttt{#1}}% + }{}% } -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% THE CITATION COMMANDS %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% First citation in multi-citation. \newif\if@F@cite\@F@citetrue -% Two flags to denote whether only author or year must be cited or both. \newif\if@A@cite\@A@citefalse \newif\if@Y@cite\@Y@citefalse - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% \cite<prefix>[postfix]{keys} -% \fullcite<prefix>[postfix]{keys} -% \shortcite<prefix>[postfix]{keys} -% writes \citation{keys} on .aux -% produces (prefix Authors1, Year1; Authors2, Year2; ..., postfix) -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\cite{% @@ -949,13 +1287,6 @@ } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% \citeNP<prefix>[postfix]{keys} -% \fullciteNP<prefix>[postfix]{keys} -% \shortciteNP<prefix>[postfix]{keys} -% writes \citation{keys} on .aux -% produces prefix Authors1, Year1; Authors2, Year2; ..., postfix -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\citeNP{% @@ -989,9 +1320,6 @@ } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% second layer of \cite command -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\@cite<#1>{% @@ -1014,13 +1342,6 @@ } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% \citeA<prefix>[postfix]{keys} -% \fullciteA<prefix>[postfix]{keys} -% \shortciteA<prefix>[postfix]{keys} -% writes \citation{keys} on .aux -% produces prefix Authors1 (Year1), ..., AuthorN (YearN, postfix) -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\citeA{% @@ -1048,16 +1369,13 @@ } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% second layer of \citeA command -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\@citeA<#1>{% % % definition of some parameters % - \def\@BBOP{}% % open parenthesis + \def\@BBOP{}% % open parenthesis. \def\@BAP{\BAP}% % after precitation [=#1] before first citation \def\@BBA{\BBAB}% % `and' between authors \def\@BBAY{ \BBOP}%% between author and year @@ -1075,13 +1393,6 @@ } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% \citeauthor<prefix>[postfix]{keys} -% \fullciteauthor<prefix>[postfix]{keys} -% \shortciteauthor<prefix>[postfix]{keys} -% writes \citation{keys} on .aux -% produces prefix Authors1, ..., AuthorsN, postfix -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\citeauthor{% @@ -1108,10 +1419,31 @@ {\@citeauthor<>}% } +\def\citeauthorNP{% + \def\BCAY##1##2##3{\BCA{##1}{##2}}% kept for compat. with prev. versions + \def\citeauthoryear##1##2##3{\BCA{##1}{##2}}% + \@ifnextchar<% %> + {\@citeauthorNP}% + {\@citeauthorNP<>}% +} + +\def\fullciteauthorA{% + \def\BCAY##1##2##3{\BCA{##1}{##1}}% kept for compat. with prev. versions + \def\citeauthoryear##1##2##3{\BCA{##1}{##1}}% + \@ifnextchar<% %> + {\@citeauthorNP}% + {\@citeauthorNP<>}% +} + +\def\shortciteauthorA{% + \def\BCAY##1##2##3{\BCA{##2}{##2}}% kept for compat. with prev. versions + \def\citeauthoryear##1##2##3{\BCA{##2}{##2}}% + \@ifnextchar<% %> + {\@citeauthorNP}% + {\@citeauthorNP<>}% +} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% second layer of \citeauthor command -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\@citeauthor<#1>{% @@ -1135,16 +1467,28 @@ {\@@cite<#1>[]}% } +\def\@citeauthorNP<#1>{% + % + % definition of some parameters + % + \def\@BBOP{}% % open parenthesis + \def\@BAP{\BAP}% % after precitation [=#1] before first citation + \def\@BBA{\BBAA}% % `and' between authors + \def\@BBAY{}% % between author and year + \def\@BAY{}% % after year + \def\@BBY{}% % between years of multiple citations with same author + \def\@BBC{\BBC}% % between cites + \def\@BBN{\BBN}% % after last citation before note/postcitation [=#2] + \def\@BBCP{}% % close parenthesis + \def\@BAstyle{\BAastyle}% text style of authors + \@A@citetrue% % cite authors + \@Y@citefalse% % do not cite years + \@ifnextchar[% % ] + {\@@cite<#1>}% + {\@@cite<#1>[]}% +} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% \citeyear<prefix>[postfix]{keys} -% writes \citation{keys} on .aux -% produces (prefix Year1, ..., YearN, postfix) -% -% \citeyearNP<prefix>[postfix]{keys} -% writes \citation{keys} on .aux -% produces prefix Year1, ..., YearN, postfix -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\citeyear{% @@ -1168,9 +1512,6 @@ } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% second layer of \citeyear command -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\@citeyear<#1>{% @@ -1210,7 +1551,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Code to be executed if current author(s) equal previous -\def\@ifauthorsequalc@de{% +\def\@ifauthorsequalc@de#1{% \if@F@cite% \@F@citefalse% \else% @@ -1219,12 +1560,14 @@ \fi% \fi% \if@Y@cite% - {\csname Y@\@citeb\@extra@b@citeb\endcsname}% + \hyper@natlinkstart{#1}% + {\csname Y@\@citeb\APAC@extra@b@citeb\endcsname}% + \hyper@natlinkend \fi% } %%% Code to be executed if current author(s) do not equal previous -\def\@ifauthorsunequalc@de{% +\def\@ifauthorsunequalc@de#1{% \if@F@cite% \@F@citefalse% \else% @@ -1236,34 +1579,35 @@ \edef\@cite@undefined{?}% \def\BBA{\@BBA}% \if@A@cite% - {\csname b@\@citeb\@extra@b@citeb\endcsname}% + \hyper@natlinkstart{#1}% + {\csname b@\@citeb\APAC@extra@b@citeb\endcsname}% + \hyper@natlinkend \if@Y@cite% {\@BBAY}% \fi% \fi% \if@Y@cite% - {\csname Y@\@citeb\@extra@b@citeb\endcsname}% + \hyper@natlinkstart{#1}% + {\csname Y@\@citeb\APAC@extra@b@citeb\endcsname}% + \hyper@natlinkend \fi% \let\BBA\relax% } \def\@@cite<#1>[#2]#3{% % - % write citation(s) to .aux file + % Write citation(s) to .aux file(s) % - \if@filesw{% - \immediate\write\@auxout{\string\citation{#3}}% - }% - \fi% + \nocite{#3}% % % the previous cite, for multiple citations with same author % \edef\@citeP{}% % - % open parenthesis and precitation - % - {\@BBOP}% - \ifx\@empty#1% + % open parenthesis and pre-note + % The \mbox is to avoid hyperref problems if a \citeA follows an \item. + \mbox{\@BBOP}% + \ifx\@empty#1\@empty \else% {\ignorespaces #1\@BAP}% \fi% @@ -1271,15 +1615,22 @@ % loop over citation entries % \@for\@citeb:=#3\do{% + % Removes a possible space before the citation key, so that + % e.g. \cite{key1, key2} can be done. + \edef\@citeb{\expandafter\@firstofone\@citeb}% + % For backref. + \back@cite{\@citeb}% % % check whether citation is defined % - \@ifundefined{b@\@citeb\@extra@b@citeb}% - {\expandafter\def\csname b@\@citeb\@extra@b@citeb\endcsname{?}% - \expandafter\def\csname Y@\@citeb\@extra@b@citeb\endcsname{?}% - \@warning{Citation `\@citeb' on page \thepage\space undefined}% + \@ifundefined{b@\@citeb\APAC@extra@b@citeb}% + {\expandafter\def\csname b@\@citeb\APAC@extra@b@citeb\endcsname{?}% + \expandafter\def\csname Y@\@citeb\APAC@extra@b@citeb\endcsname{?}% + % The following is now handled by \nocite + %\G@refundefinedtrue + %\@latex@warning{Citation `\@citeb' undefined}% }%% - % if citation is defined: + % If citation is defined: % check whether flag is set that identifies that % this is not the first citation to the work % if flag is not set, it will be set to DUMMY @@ -1287,9 +1638,9 @@ % the full citation is used; else the short version % is used % - {\@ifundefined{flag@\@citeb\@extra@b@citeb}% + {\@ifundefined{flag@\@citeb\APAC@extra@b@citeb}% {\global\expandafter - \def\csname flag@\@citeb\@extra@b@citeb\endcsname{DUMMY}% + \def\csname flag@\@citeb\APAC@extra@b@citeb\endcsname{DUMMY}% \def\BCA##1##2{{\@BAstyle ##1}}% }% {\def\BCA##1##2{{\@BAstyle ##2}}% @@ -1300,48 +1651,26 @@ % and a \@BBY (probably comma and space) is inserted between % the two years. % - % Code differs depending on whether hyperref-compatibility - % option is loaded. - \if@hyper@APA@comp - % hyperref-compatibility option on - % (code provided by Ross Moore) - \expandafter\def\expandafter\B@my@dummy - \expandafter{\csname b@\@citeb\@extra@b@citeb\endcsname}% - \expandafter\expandafter\expandafter - \ifx\expandafter\@citeP\B@my@dummy\relax% - \@ifauthorsequalc@de - \else% - \@ifauthorsunequalc@de - \fi% - % define previous citation-author as current - % - \expandafter\def\expandafter\@citeP - \expandafter{\csname b@\@citeb\@extra@b@citeb\endcsname}% - % + % The \protected@edef fixes the problem with authors with accents + % (e.g., J{\"{o}}reskog). Previous versions of apacite solved this + % less elegantly (accentfix option). This fix provided by Robert Schlicht. + % See also the new definition of \@citeP below. + \protected@edef\B@my@dummy{\csname b@\@citeb\APAC@extra@b@citeb\endcsname}% + \ifx\@citeP\B@my@dummy% + \@ifauthorsequalc@de{\@citeb\APAC@extra@b@citeb}% \else% - % else: hyperref-compatibility option off - % (code dating from theapa.sty) - \@pre@accentfix% fix problems with cedilla-type accents - \edef\B@my@dummy{\csname b@\@citeb\@extra@b@citeb\endcsname}% - \@post@accentfix% return to old definitions - \ifx\@citeP\B@my@dummy% - \@ifauthorsequalc@de - \else% - \@ifauthorsunequalc@de - \fi% - % define previous citation-author as current - % - \@pre@accentfix% fix problems with cedilla-type accents - \edef\@citeP{\csname b@\@citeb\@extra@b@citeb\endcsname}% - \@post@accentfix% return to old definitions + \@ifauthorsunequalc@de{\@citeb\APAC@extra@b@citeb}% + \fi% + % define previous citation-author as current + % + \protected@edef\@citeP{\csname b@\@citeb\APAC@extra@b@citeb\endcsname}% % - \fi \let\BCA\relax% }%% % end loop over citation entries % add note [=#2] and closing parenthesis % - \ifx\@empty#2% + \ifx\@empty#2\@empty \else% {\@BBN #2}% \fi% @@ -1356,92 +1685,79 @@ } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% \nocite{key} : entry in reference list, not in text -% -% This is a little different from \@@cite with -% \@A@citefalse and \@Y@citefalse -% because of the `*' variant (cite all entries in bibfile) -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\nocite#1{% - \@bsphack% - \if@filesw{% - \immediate\write\@auxout{\string\citation{#1}}}% - \fi% + % No flag-setting in \nocite: a no-cite is not a cite, + % so a subsequent cite may be the first cite. + \@bsphack + \ifx\@onlypreamble\document + % Since we are after \begin{document} we can do the citations: \@for\@citeb:=#1\do{% - \@ifundefined{b@\@citeb\@extra@b@citeb}% - {\edef\B@my@dummy{*}% - \ifx\@citeb\B@my@dummy% - \else% - \@warning{Citation `\@citeb' on page \thepage\space undefined}% - \fi% - }% - {}% Removed flag-setting: a no-cite is not a cite, - % so a subsequent cite may be the first cite. + \edef\@citeb{\expandafter\@firstofone\@citeb}% + % \@newciteauxhandle for compatibility with multibib + \if@filesw + \immediate\write\@newciteauxhandle{\string\citation{\@citeb}}% + \fi + % + \@ifundefined{b@\@citeb\APAC@extra@b@citeb}{% + \edef\B@my@dummy{*}% + \ifx\@citeb\B@my@dummy + \else + \G@refundefinedtrue + \@latex@warning{Citation `\@citeb' undefined}% + \fi + }{}% }% - \@esphack% + \else + % apacite has no compatibility problems, because it does not work + % with LaTeX 2.09 anyway, so we can do the following, suggested + % in ltbibl.dtx: + \AtBeginDocument{\nocite{#1}}% + \fi + \@esphack + % + % For compatibility with multibib. + \@restore@auxhandle } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% \nocitemeta{key} : entry in reference list, not in text, -% for entries that are used in a meta-analysis. -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\nocitemeta#1{% + \nocite{#1}% \@bsphack% - \if@filesw{% - \immediate\write\@auxout{\string\citation{#1}}}% - \fi% - % - \global\def\APAC@metaprenote{\APACmetaprenote}% + \expandafter\global\expandafter\def + \csname APAC@metaprenote@\APAC@extra@b@citeb\endcsname{% + \APACmetaprenote}% + % \@for\@citeb:=#1\do{% - \@ifundefined{b@\@citeb\@extra@b@citeb}% - {\edef\B@my@dummy{*}% - \ifx\@citeb\B@my@dummy% - \else% - \@warning{Citation `\@citeb' on page \thepage\space undefined}% - \fi% - }% - { % Define meta-analysis flag for current item - % - \@ifundefined{flagmeta@\@citeb\@extra@b@citeb}% - {\global\expandafter - \def\csname flagmeta@\@citeb\@extra@b@citeb\endcsname{DUMMY}% - }% - {}% - }% + \edef\@citeb{\expandafter\@firstofone\@citeb}% + % Define meta-analysis flag for current item + \@ifundefined{flagmeta@\@citeb\APAC@extra@b@citeb}% + {\global\expandafter + \def\csname flagmeta@\@citeb\APAC@extra@b@citeb\endcsname{DUMMY}% + }% + {}% }% \@esphack% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% \APACinsertmetastar{key}: insert an asterisk before the names in the -% reference list for entries that are used in a meta-analysis. -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\APACinsertmetastar#1{% - \@bsphack% - \@for\@citeb:=#1\do{% - \@ifundefined{flagmeta@\@citeb\@extra@b@citeb}% - {}% skip - {{\APACmetastar}}% - }% - \@esphack% + \@for\@citeb:=#1\do{% + \edef\@citeb{\expandafter\@firstofone\@citeb}% + \@ifundefined{flagmeta@\@citeb\APAC@extra@b@citeb}% + {}% skip + {{\APACmetastar}}% + }% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% No labels in the bibliography. -% \def\@biblabel#1{} -% \def\st@rtbibsection{% \@bibnewpage% start a new page if desired \if@numberedbib% @@ -1457,7 +1773,6 @@ % \fi% }% -% \def\st@rtbibchapter{% % here no \@bibnewpage, because it is assumed that % the \chapter starts a new page @@ -1472,19 +1787,15 @@ % \fi% }% -% -% \def\thebibliography#1{% % % Start the bibliography section or chapter % \@ifundefined{chapter}% {\st@rtbibsection}% -% else: chapter is defined {\@ifundefined{@sectionbibtrue}% we have to guess {\@ifundefined{@mainmatterfalse}% check if mainmatter exists {\st@rtbibchapter}% -% else: mainmatter is defined {\if@mainmatter% \st@rtbibsection% typically, a chapter-specific bibliogr. \else% @@ -1504,47 +1815,335 @@ % \bibliographytypesize% e.g., to put the bibliography in \small type \bibliographyprenote% some explanatory note before the references - \@ifundefined{APAC@metaprenote} + % + \@ifundefined{APAC@metaprenote@\APAC@extra@b@citeb}% {}% skip - {\APAC@metaprenote} + {\csname APAC@metaprenote@\APAC@extra@b@citeb\endcsname}% % \list{\relax}{\labelsep=0em% -% \parskip\z@ \@plus .3\p@\relax \parsep=\bibparsep% \itemsep=\bibitemsep% \leftmargin=\bibleftmargin% \itemindent=\bibindent}% changed to cope with 4th ed. - \def\newblock{\unskip\ \hskip .11em plus .33em minus .07em}% + \def\newblock{\hskip .11em plus .33em minus .07em}% \sloppy\clubpenalty4000\widowpenalty4000 \sfcode`\.=1000\relax + % For compatibility with bibtopic. + \bt@beg@thb@hook + % To overrule backref. + \APACrestorebibitem } -\def\endthebibliography{\endlist\normalsize} -% -% natbib redefines \thebibliography, which interferes a little -% with our purposes. Therefore, add some patches. -% -\AtBeginDocument{% - \@ifpackageloaded{natbib}{% - \let\@oldbibpreamble\bibpreamble - \def\bibpreamble{% This goes wrong if \bibpreamble is redefined - % later on, i.e., by the user, but I haven't thought - % of a better hack yet. - \@oldbibpreamble% - \bibliographytypesize% - \bibliographyprenote% - \@ifundefined{APAC@metaprenote} - {}% skip - {\APAC@metaprenote}% - }% - \let\@old@endthebibliography\endthebibliography - \def\endthebibliography{\@old@endthebibliography% - \normalsize} +\def\endthebibliography{% + % For compatibility with bibtopic. + \bt@end@thb@hook + % + \def\@noitemerr{% + \@latex@warning{Empty `thebibliography' environment}% + }% + \endlist\normalsize +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% REFERENCE LIST FORMATTING COMMANDS %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\APACrefYear}[1]{% + % Should never be empty. + {\BBOP}{#1}{\BBCP}% +} +\newcommand{\APACmonth}[1]{\ifcase #1\or January\or February\or March\or + April\or May\or June\or July\or August\or September\or October\or + November\or December\or Winter\or Spring\or Summer\or Fall\else + {#1}\fi} +\newcommand{\APACrefYearMonthDay}[3]{% + % year (+ addendum) + {\BBOP}{#1}% + % month + \ifx\@empty#2\@empty + \else + \unskip, {#2}% + \fi + % day + \ifx\@empty#3\@empty + \else + \unskip\ {#3}% + \fi + {\BBCP}% +} +\newcommand{\APACrefatitle}[2]{#2} +\newcommand{\APACrefbtitle}[2]{\Bem{#2}} +\newcommand{\APACrefaetitle}[2]{[#2]} +\newcommand{\APACrefbetitle}[2]{[#2]} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\let\@xp\expandafter +\newcommand{\PrintCardinal}[1]{% + \afterassignment\print@cardinal + \count@ 0#1\relax\@nil +} +\def\print@cardinal#1#2\@nil{% + \ifx\relax#1\relax + \ifnum\count@>\z@ + \CardinalNumeric\count@ + \else + ??th% + \fi + \else + \ifnum \count@>\z@ \number\count@ \fi + #1#2\relax + \fi +} +\newcommand{\CardinalNumeric}[1]{% + \number#1\relax + \if + \ifnum#1<14 + \ifnum#1>\thr@@ T\else F\fi + \else + F% + \fi + T% + th% + \else + \@xp\keep@last@digit\@xp#1\number#1\relax + \ifcase#1th\or st\or nd\or rd\else th\fi + \fi +} +\def\keep@last@digit#1#2{% + \ifx\relax#2% + \@xp\@gobbletwo + \else + #1=#2\relax + \fi + \keep@last@digit#1% +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\APACjournalVolNumPages}[4]{% + % journal + \Bem{#1}% + % volume + \ifx\@empty#2\@empty + \else + \unskip, \Bem{#2}% + \fi + % issue number + \ifx\@empty#3\@empty + \else + \unskip({#3})% + \fi + % pages + \ifx\@empty#4\@empty + \else + \unskip, {#4}% + \fi +} +\newcommand{\APACaddressPublisher}[2]{% + \ifx\@empty#1\@empty + % publisher + \ifx\@empty#2\@empty + \else + {#2}% + \fi + % + \else + % address + {#1}% + % publisher + \ifx\@empty#2\@empty + \else + \unskip: {#2}% + \fi + % + \fi +} +\let\APACaddressInstitution\APACaddressPublisher +\newcommand{\APACaddressPublisherEqAuth}[2]{% + \ifx\@empty#1\@empty + % Publisher. This cannot be empty, because it is equal to the author. + {\BAuthor{}}% + % + \else + % Address and publisher. These are not empty. + {#1\unskip: \BAuthor{}}% + % + \fi +} +\let\APACaddressInstitutionEqAuth\APACaddressPublisherEqAuth +\let\APAChowpublished\relax +\newenvironment{APACrefURL}[1][]{% + \ifx\@empty#1\@empty + \BAvailFrom + \else + \BRetrieved{#1}% + \fi +}{} +\newenvironment{APACrefURLmsg}{% + \BMsgPostedTo +}{} +\newcommand{\APACorigED}[1]{% + \ifx\@empty#1\@empty + \else + % ``by E. D. Itor (Ed.)'' + \Bby\ {#1}, \BED{}% + \fi +} +\newcommand{\APACorigEDS}[1]{% + \ifx\@empty#1\@empty + \else + % ``by E. D. Itor \& A. N. Other (Eds.)'' + \Bby\ {#1}, \BEDS{}% + \fi +} +\newcommand{\APACrefnote}[1]{% + \ifx\@empty#1\@empty + \else + ({#1})% + \fi +} +\newcommand{\APACorigyearnote}[2]{% + \ifx\@empty#1\@empty + % Original year empty: format note. + \APACrefnote{#2}% + \else + % Check for \bibnodate. I think the following command does not check + % whether #1 = `\bibnodate', but expands them, but that should + % also be OK and saves a lot of juggling with \expandafter commands. + \ifx\bibnodate#1\@empty + % Original year unknown: format (only) note. + \APACrefnote{#2}% + \else + % Original year has been given: ``Original work published''. + (\BOWP{} {#1}% + % Note + \ifx\@empty#2\@empty + \else + \unskip; {#2}% + \fi + % Final parenthesis. + )%% + % + \fi + \fi +} +\newcommand{\APACorigjournalnote}[6]{% + % "(Reprinted from " (note the space) + (\BREPR{} % + % Journal (should not be empty) + \Bem{#2}% + % Year + \ifx\@empty#1\@empty + \else + \unskip, {#1}% + \fi + % Volume + \ifx\@empty#3\@empty + \else + \unskip, \Bem{#3}% + \fi + % Issue number + \ifx\@empty#4\@empty + \else + \unskip{[#4]}% + \fi + % Pages + \ifx\@empty#5\@empty + \else + \unskip, {#5}% + \fi + % Note + \ifx\@empty#6\@empty + \else + \unskip; {#6}% + \fi + % Final parenthesis. + )%% + % +} +\def\@connect@with@commas#1{% + % Commas should only be inserted if both sides are nonempty. + \def\@comma@space{\unskip, }% + \let\@connect@string\relax + % Loop over elements. + \@for\@element@:=#1\do{% + \ifx\@empty\@element@% + \else + % Not empty: insert connect string (nothing for the first + % nonempty element, a comma and space afterwards). + \@connect@string\@element@% + \let\@connect@string\@comma@space + \fi }% - {}% -}% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% EOF apacite.sty -% + \let\@connect@string\@undefined + \let\@comma@space\@undefined +} +\newcommand{\APACorigbooknote}[9]{% + % + % "(Reprinted from " (note the space) + (\BREPR{} % + % + % Title, edition, volume, pages, editor, year, address: publisher + % These should not all be empty, but this is not checked here + % (because it's done in the .bst file). + \@connect@with@commas{% + {#3},{#4},{#5},{#6},{#2},{#1},{\APACaddressPublisher{#7}{#8}}% + }%% + % + % Add optional note. + \ifx\@empty#9\@empty + \else + ; #9% + \fi + % + % Final parenthesis. + )%% + % +} +\newcommand{\APACbVolEdTR}[2]{% + \ifx\@empty#1\@empty + \ifx\@empty#2\@empty + \else + % (Technical Report No.\ <no>) + {(#2)}% + \fi + \else + % (2nd ed., Vol.~1 + ({#1}% + \ifx\@empty#2\@empty + \else + % ; Technical Report No.\ <no> + \unskip; {#2}% + \fi + % Final parenthesis. + )%% + \fi +} +\newcommand{\APACbVolEdTRpgs}[3]{% + \ifx\@empty#1\@empty + \ifx\@empty#2\@empty + \ifx\@empty#3\@empty + \else + % (pp. 10--30) + {(#3)}% + \fi + \else + % (Technical Report No.\ <no>, pp. 10--30) + (\@connect@with@commas{{#2},{#3}})% + \fi + \else + % (2nd ed., Vol.~1 + ({#1}% + \ifx\@empty#2\@empty + \ifx\@empty#3\@empty + \else + % ; pp. 10--30 + \unskip; {#3}% + \fi + \else + % ; Technical Report No.\ <no>, pp. 10--30 + \unskip; \@connect@with@commas{{#2},{#3}}% + \fi + % Final parenthesis. + )%% + \fi +} +%% +\endinput +%% +%% End of file `apacite.sty'. |