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 become very brittle?

@true_mxp has it ever been better, or did our expectations/use cases just become more challenging (e.g. multilingualism), which brings the internal inconsistencies to the surface?

@felwert Both, I guess. Package development moves much faster today, which is good in some respects, but also leads to instability and incompatibilities.

The days when you could say that, in contrast to Word, you can still process your LaTeX files from 10 years ago, are definitely over. This is one reason why I switched from to Markdown ( + ): I could no longer reasonably expect my slides from last semester to compile without changes.

@true_mxp Yes, I’m also exclusively using #pandoc these days. With #docker, you even get an actually reproducible build environment (not for the occasional slide set, but for larger projects). That way, it’s only the pandoc devs/contributors who have to keep track of the #LaTeX developments (if one still wants to use TeX for PDF builds).

@felwert Exactly my reasoning as well :-)

I hope to be able to replace LaTeX for PDF generation at some point: it’s so slow :-(

@true_mxp do you have a MWE for the first problem? This sounds like a bug that could be reported to Babel maintainers.

@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*

@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.

@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.

Sign in to participate in the conversation
Qoto Mastodon

QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.