TeX capacity exceeded

Bonjour.

Je suis nouveau ici, mais je me dis que ce forum va peut-être m’aider.

En mars dernier, j’ai produit un pdf comprenant diverses images et graphiques.

Il avait le préambule suivant :

\listfiles
\documentclass[12pt, a4paper, french, BCOR = 0pt, DIV =20, parskip=half,
]{scrartcl}
\usepackage[sfdefault]{plex-sans}
\usepackage{multicol}
\usepackage{multirow}
\usepackage[french]{varioref}
\usepackage{lua-list-hyphen}
\usepackage{graphicx,xcolor}
\usepackage{array}
\usepackage{float}
\usepackage{pdfpages}
\usepackage{longtable}
\usepackage{subcaption}
\usepackage{footmisc}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{positioning, decorations.text, decorations.markings}
\usepackage[font={small, sf}]{caption}
\usepackage{scrlayer-scrpage}
\usepackage{array, adjustbox}
\usepackage{lastpage}
\usepackage{siunitx}
\sisetup{
  output-decimal-marker = {,},
  exponent-product = \cdot,
  retain-unity-mantissa = false,
  scientific-notation = true
}
\usepackage{pdfpages}
\usepackage{pdflscape}
\usepackage{float}
\usepackage[french]{varioref}
\usepackage{gitinfo2}
\usepackage{hyperref}
\hypersetup{
	  pdftitle = Projet d'article,
          colorlinks,
	  linkcolor={red!20!black},
          citecolor={blue!30!black},
          urlcolor={blue!80!black}
        }
\renewcommand{\thefigure}{\arabic{figure}}
\renewcommand{\familydefault}{\sfdefault}
\setcounter{secnumdepth}{0}
\usepackage{babel}
\author{HB}
\begin{document}

J’ai eu à reprendre cet projet aujourd’hui et il ne compile plus :

! TeX capacity exceeded, sorry [input stack size=10000].
\extrasenglish → \extrasenglish
\def \reftextfaceafter {on the \reftextvario…

l.56 \begin{document}

550 words of node memory still in use:
3 hlist, 1 rule, 1 dir, 3 glue, 3 kern, 1 penalty, 2 glyph, 18 attribute, 64
glue_spec, 7 attribute_list, 5 if_stack, 2 write, 1 pdf_colorstack nodes
avail lists: 1:1,2:17,3:1,4:1,5:4,7:25,9:2,11:3
!  ==> Fatal error occurred, no output PDF file produced!
Transcript written on test.log.

Je dois dire que j’étais surpris : jamais je n’avais eu droit à « TeX capacity exceeded » !

Voyez-vous ce qui pose problème dans ce préambule ? Moi pas. Bon, cela ne revêt plus aucun caractère d’urgence : il me fallait présenter rapidement une version modifiée de ce projet et pour passer outre ce pépin de compilation j’ai simplifié le document et ré-écrit le préambule en fonction.

Je reste néanmoins très surpris qu’un document qui compilait en mars 2026, avec la TL 2025 à jour, ne compile plus en trois mois plus tard avec la TL 2026 tout aussi à jour (je mets quotidiennement à jour la distribution).

Cordialement,

Henri

[EDIT WEB] j’ai posté ce message par courriel, sans mettre en évidence les fragments de code car je ne sais comment faire. Y a-t-il sur le forum un mode d’emploi des balises à utiliser ?

Bonjour, sans garantie, je me demande si la solution ne consiste pas à
basculer en lualatex, beaucoup plus tolérant en matière de mémoire.
Mais peut être compiliez vous déjà en lualatex en 2025?

J’en profite pour poser une question à la liste: nos adresses mail
privées disparaissent avec ce nouveau système de diffusion.
N’y a-t-il pas moyen de les faire réapparaître? Parfois c’est plus
simple de répondre en privé à l’émetteur , ne serait-ce que pour le
remercier.

Bien cordialement (et merci pour la pub de mon livre)
Eric

Merci pour votre réponse. De fait, cela fait plusieurs années que je n’utilise plus que le moteur lualatex : en mars dernier, la compilation se déroulait sans encombre, avec le même moteur qui aujourd’hui s’arrête.

Peut-être un problème de tête de delco ? :wink:

Bonjour et bienvenue,

J’ai complété de façon minimale

\begin{document}

Hello !

\end{document}

Je reproduis le problème après la mise à jour de ma distribution tex (avant c’était OK) : j’en déduis que le problème est lié à un des packages appelés mis à jour récemment.

Après quelques investigations, je trouve que le coupable est varioref, effectivement mis à jour très récemment.

Attention, vous l’avez appelé deux fois (c’est mal, c’est mal) il faut donc commenter les deux appels et le fichier complété de façon minimale compile.

Notez que ça n’est pas un bug de varioref mais un conflit entre varioref et la classe de documents que vous utilisez. avec article au lieu de scrartcl vous pouvez garder varioref.

1 « J'aime »

Merci pour votre expertise. Ainsi donc, varioref et scrartcl ne s’entendraient plus. Pensez-vous qu’il soit nécessaire de faire remonter cette information aux développeurs desdits packages ?

Je précise que le double appel de varioref était dû à mes paramètres d’export org-mode. C’est corrigé.

Il me semble que cela devrait les intéresser, ce d’autant plus que cet exemple minimal

\documentclass{scrartcl}
\usepackage[nospace]{varioref}
\begin{document}
Hello world!
\end{document}

suffit à constater le problème.

Fait. Je n’ai pas fait remonter l’info aux développeurs de varioref, à savoir l’équipe de LaTeX3 : j’ai fait les tests indiqués sur cette page et obtenu la réponse suivante :

! Package latexbug Error: Third-party file(s)
(latexbug)                
(latexbug)                This test file uses third-party file(s)
(latexbug)                
(latexbug)                ==============
(latexbug)                scrartcl.cls
(latexbug)                scrsize11pt.clo
(latexbug)                ==============
(latexbug)                
(latexbug)                So you should contact the authors
(latexbug)                of these files, not the LaTeX Team!
(latexbug)                (Or remove the packages that load
(latexbug)                them, if they are not necessary to
(latexbug)                exhibit the problem).
(latexbug)                
(latexbug)                If you think the bug is in core LaTeX
(latexbug)                (as maintained by the LaTeX Team) but
(latexbug)                these files are needed to demonstrate
(latexbug)                the problem, please continue and mention
(latexbug)                this explicitly in your bug report
(latexbug)                (with an explanation why you think so).

On comprendra aisément que j’ai préféré m’abstenir.

1 « J'aime »

Me voilà bien : avec une remarquable promptitude, Markus Kohm (l’auteur de la classe scrartcl) vient de me répondre. Pour me dire de voir avec l’équipe de varioref ! Qui elle-même me dit de voir avec lui… Je suis donc pris entre deux feux et ne sais quoi faire.

Ça m’apprendra à déclarer des bugs, tiens ! Que faire ? Je veux bien des conseils.

Me voilà bien : avec une remarquable promptitude, Markus Kohm (l’auteur de la classe scrartcl) vient de me répondre. Pour me dire de voir avec l’équipe de varioref ! Qui elle-même me dit de voir avec lui… Je suis donc pris entre deux feux et ne sais quoi faire.

Ça m’apprendra à déclarer des bugs, tiens ! Que faire ? Je veux bien des conseils.

Markus a fourni l’ECM :

\documentclass{article}
\usepackage{varioref}
\begin{document}
\extrasenglish
Hello world!
\end{document}

qui montre bien que le problème est bien chez varioref et qui peut
donc être utilisé pour rapporter le bug à la LaTeX Team.

Il y a des liens à ce sujet ici.

Ça ne résoudra pas le bogue de la version récente de varioref mais il y a un moyen de faire appel à la dernière version qui fonctionnait avec

\usepackage{varioref}[=2019-10-01]

qui utilise le mécanisme de « rollback ».

Le bogue de varioref saute aux yeux en remplaçant dans le code de Markus Kohm l’appel à la commande \extrasenglish par \meaning \extrasenglish en compilant avec la dernière version bien entendu. On lira la cause de la boucle infernale sous la forme

macro:->\extrasenglish \def \reftextfaceafter % je coupe

Le problème doit se situer dans la définition de la commande \DeclareVrefOptions mais à partir d’ici ça dépasse mes compétences.

jeqça

2 « J'aime »

Oui, ça se voyait d’ailleurs dans le message d’erreur de compilation (par les temps qui courent la saturation de la mémoire vient d’ailleurs presque toujours d’une boucle infinie).

Ceci dit je me demande où et comment dans le source

\documentclass{scrartcl}
\usepackage[nospace]{varioref}
\begin{document}
Hello world!
\end{document}

l’appel à \extrasenglish se produit. On peut aussi se demander pourquoi, originellement cela se produit même avec l’option french. Ça j’ai fini par trouver : ligne 732 \ExecuteOptions{english,final,space}

qui définit de toute façon \extrasenglish. C’est ce qui fait qu’ensuite, un appel à \extrasenglish provoque le bug.

On peut d’ailleurs remarquer aussi que si varioref est appelé avec l’option french, \extrasfrench provoque lui aussi ce bug.

\documentclass{article}
\usepackage[french]{varioref}
\begin{document}
\extrasfrench
Hello world!
\end{document}

enfin oui tu as raison, le coupable est dans le \DeclareVrefOptions (qui a été introduit dans cette version de varioref), probablement même dans le \ExpandArgs{oo}%

Mais peut-être que l’on peut laisser Frank se débrouiller avec son package.

Le bug a été rapporté par Markus.

Oui, Markus Kohm est charmant : il m’évite ainsi d’avoir à rapporter ce bogue moi-même.

Ça fonctionne ! C’est formidable, mais… quel est ce mécanisme ? Ça semble bien mystérieux : la version 2019 de varioref a disparu de mon ordi depuis lurette, je pense !

Bonjour, dans TeXLive 2026, la version de 2019 se trouve à /usr/local/texlive/2026/texmf-dist/tex/latex-dev/tools/varioref-2019-10-01.sty.

Tandis que la version actuelle se trouve à /usr/local/texlive/2026/texmf-dist/tex/latex-dev/tools/varioref.sty.

Dans ce même dossier /usr/local/texlive/2026/texmf-dist/tex/latex-dev/tools, vous trouverez 5 versions du package array, 4 versions de multicol, 2 versions de showkeys, entre autres.

3 « J'aime »

Incroyable ! Si je m’attendais à cela ! Merci pour votre explication. Quel système génial !