#TeXLaTeX TIL:
1. Using an otherlanguage environment in the abstract environment produces spurious “unresolved references” that can never be resolved. Using otherlanguage* seems to avoid this problem.
2. biber sometimes simply stops working. The solution is to delete its cache, e.g., by saying rm -rf $(biber --cache)
Is it just me, or has #TeXLaTeX become very brittle?
@michal_h21 Kinda, but I currenlty don’t have the time for a bug report (because I need to grade…)
Actually, the issue seems to be due to an interaction between babel and biblatex (and unrelated to abstract). This example always produces “undefined references” (I only load csquotes to stop biblatex from complaining, it doesn’t change anything):
\documentclass{minimal}
\usepackage{csquotes}
\usepackage[english]{babel}
\usepackage{biblatex}
\begin{document}
English
\begin{otherlanguage}{german}
Deutsch
\end{otherlanguage}
\end{document}
I’ve found three ways to make it work:
- Remove biblatex; or
- Explicitly load the other language (here: german); or
- Use otherlanguage*
@michal_h21 Yes, but since Babel 3.39 this is supposed to be no longer necessary; see Section 1.3, “Mostly monolingual documents” in the Babel manual.
@true_mxp ah, that's new for me, thanks. I think that the `otherlanguage*` environment is a correct one to use, as it uses the `\foreignlanguage` command internally. From the section 1.7 in Babel manual, it seems that this command is recommended to use for languages that has not been declared as package options.
@michal_h21 Yeah, that’s possible, but the documentation of otherlanguage* talks more about what it is _not_ rather than what it is… Also, Babel doesn’t complain, so it might be that biblatex wants something that isn’t loaded.
@true_mxp I think that you need to pass all languages that will be used in the document to babel, asi it needs to load the definition files for all used languages. So I would use `\usepackage[german,english]{babel}`. The last language in the list is the main document language.