Closed u-fischer closed 1 year ago
I think we do this to get proper language setting in the toc and other lists. Probably we can omit the \selectlanguage
settings outside of the \@writefile
statements, but I am reluctant to touch this now as we had all sorts of issues with this.
So this is for later.
I think we do this to get proper language setting in the toc and other lists.
Sorry but this doesn't make sense. You are not doing any typesetting here or in other places where the aux-file is read.
The issue came up as in the next LaTeX release we want to offer hooks with arguments and this requires more parsing of the hook code and the fact that polyglossia filled up the hook in such an unrestricted way lead to a dramatic slow down: https://github.com/latex3/latex2e/issues/1078
We will adjust the LaTeX code but polyglossia should at least avoid to add code to hooks through a command like \selectlanguage
which is used many times in the document. So please adjust the definition of frenchitemlabels
and don't use \AfterPreamble there.
Ulrike, you are almost always right with your analyses, and I take it seriously that we have something wrong here most probably. But I need time to dig in and understand the issue and the history that led to this situation. As I plan a release shortly after the next LaTeX release, I do not want to touch this now.
(I'll check if I can solve the French problem before that, though. Keep you posted)
I have submitted a change to gloss-french
to the effect that itemlabels and footnote definitions are only written once, and not via a hook, but at the first main language selection in the document body.
Can you please check if this cures the main performance issue with French?
A closer look revealed that this is not only non-sensical, but potentially harmful, so I fixed it now after some testing.
at every language change polyglossia writes a
\selectlanguage
to the aux-file which is then as far as I can see more or less fully processed at the next compilation. This doesn't make much sense: you are in a group in the aux-file and most settings are lost again when the file ends and so it only slows down the compilation without much gain.As an example take french. One of its key adds code to the begindocument hook and so the following document not only processes this five times in the aux at the second compilation:
but it also blows up the begindocument hook tremendously which lots of repetitions of the same code: