14

biblatex-apa gives me this:

! Undefined control sequence.
<argument> \mkbibdateapalongextra 
                              {labelyear}{labelmonth}{labelday}\iffieldu...

I'm using the default (english) language, and have done the:

\DeclareLanguageMapping{norsk}{norsk-apa}
\DeclareLanguageMapping{english}{american-apa}

thing.

Here's a short example:

\documentclass[english]{memoir}
\usepackage{babel}
\usepackage{roffe}
\usepackage[backend=biber,date=short,maxcitenames=2,style=apa]{biblatex}

\DeclareLanguageMapping{norsk}{norsk-apa}
\DeclareLanguageMapping{english}{american-apa}
\addbibresource{Papers2.bib}
\addbibresource{R.bib}

\begin{document}
\cite{R-base}

\printbibliography
\end{document}

This one replicates the problem.

9
  • 2
    Without a MWE we can only guess. Did you put \DeclareLanguageMapping{english}{american-apa} after babel and biblatex? Do you load the language english or american in babel?
    – moewe
    Sep 17, 2013 at 7:49
  • Welcome to TeX.SX! Your question would require for a definite/specific answer a Minimal Working Example, or MWE
    – TheVal
    Sep 17, 2013 at 7:51
  • I've tried to build an MWE, but, and here's the rub, none that replicates this error. Which is why I'm stymied. Is there anything I should look for in the .log file? Sep 17, 2013 at 15:10
  • @roffe Well, if you have no way of reproducing the error, it is quite hard to track down the problem. You could start off with the affected document and delete the unnecessary parts, thereby arriving at a MWE. Did you try deleting all the temporary files and recompile? Maybe an update can help.
    – moewe
    Sep 17, 2013 at 16:36
  • (pastebin.com/gNDrMnMk) replicates the problem. Sep 18, 2013 at 12:42

2 Answers 2

19

Update

Starting from biblatex v3.8 (2017-11-04) and biblatex-apa v7.5 (2017-11-05) an explicit \DeclareLanguageMapping is not needed any more. The mapping is automatically done for you with \DeclareLanguageMappingSuffix{-apa}.

Of course this can only work properly if biblatex-apa comes with an .lbx file for your language.

Update biblatex, Biber and biblatex-apa to their newest versions if you experience problems with an undefined \mkbibdateapalongextra. The old version of this answer is left below in case you are stuck with an old version of biblatex or biblatex-apa.


Old answer

If you use biblatex-apa you will need a language mapping for each used language (at least the main language) to its -apa counterpart

\DeclareLanguageMapping{american}{american-apa}

if your document is american. See also problems using apa6e with biblatex-apa.

This is pointed out in the biblatex-apa documentation, § 3

Specify the style in the usual way when loading biblatex. If you are using babel:

\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=apa]{biblatex}
\DeclareLanguageMapping{american}{american-apa}

Refer to section 3.2 Localisation for a few more hints.

That means for each language you load with babel or polyglossia (but there things are a bit more complicated), you will need a mapping.

You will also have to provide a language mapping if you don't load babel at all. In that case the default language is English and you need \DeclareLanguageMapping{english}{english-apa}.


Whenever you declare a language mapping, biblatex uses the new file (in our case british-apa.lbx) if need be, that is if the mapped language is requested (in our case english).

british-apa.lbx contains some additional "BibliographyExtras" declared by \DefineBibliographyExtras{british}. These extras are only available for the exact language they are specified for (here british). So even though we have forced biblatex to load british-apa.lbx instead of english.lbx we cannot use the "BibliographyExtras" since our document requests them for english only, but they are only available for british.

The relevant part of the documentation, § 4.11.8 Custom Localization Modules, p. 232 states:

Note that \DeclareLanguageMapping is not intended to handle language variants (e.g., AmericanEnglish vs. BritishEnglish) or babel language aliases (e.g., USenglish vs. american). For example, babel offers the USenglish option which is similar to american. Therefore, biblatex ships with an USenglish.lbx file which simply inherits all data from american.lbx (which in turn gets the ‘strings’ from english.lbx). In other words, the mapping of language variants and babel language aliases happens on the file level, the point being that biblatex's language support can be extended simply by adding additional lbx files.

The simplest solution would be to use british or american instead of the "generic" english.

The following MWE works on my machine.

\documentclass[british]{article}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber,date=short,maxcitenames=2,style=apa]{biblatex}

\DeclareLanguageMapping{british}{british-apa}
\addbibresource{\jobname.bib}

\begin{filecontents}{\jobname.bib}
@Manual{R-base,
  title = {R: A Language and Environment for Statistical Computing},
  author = {{R Development Core Team}},
  organization = {R Foundation for Statistical Computing},
  address = {Vienna, Austria},
  year = {2008},
  isbn  = {3-900051-07-0},
  url = {http://www.R-project.org},
}
\end{filecontents}

\begin{document}
  \cite{R-base}
  \nocite{*}
  \printbibliography
\end{document}

If you do not want to switch to a language other than english, you can go with the fix suggested in Polyglossia and biblatex-apa.

Copy british-apa.lbx to a place LaTeX can find it, rename it to english-apa.lbx and replace all occurrences of british with english (the most important of which is \DefineBibliographyExtras{british} which becomes \DefineBibliographyExtras{english})

1

I had the same error message and the reason was simple – my language (Finnish) is not yet (today, 2021-12-12) included in the official LaTeX distribution:

https://www.tug.org/texlive//Contents/live/texmf-dist/tex/latex/biblatex-apa6/

although someone has made the localization in Github:

https://github.com/plk/biblatex-apa/blob/master/tex/latex/biblatex-apa/lbx/finnish-apa.lbx

I spotted the problem by looking carefully through the pdflatex output, there was a warning I missed first (lost in the jungle of Overfull hbox -warnings):

    Package biblatex Warning: File 'finnish-apa.lbx' not found!
(biblatex)                Ignoring mapping 'finnish' -> 'finnish-apa'.

The solution is either to install the Finnish-apa.lbx manually (see where your distribution stores the other lbx files) or using other citation style if possible (I chose "authordate", works like charm.

1

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .