Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx"

Added by Joss OUIN over 4 years ago

Bonjour,

J'ai un dépassement de capacité lorsque j'essaie de compiler 150 sujets de 3 pages soit 450 pages au total.
J'ai trouvé la cause, c'est l'utilisation d'une "questionmult" que j'ai transformé en commande TeX afin de pouvoir y insérer un résultat provenant de Python.

Il n'y a pas d'erreur LaTeX dans mon fichier .tex car si je génère moins de 80 copies, tout est OK, aucun message d'erreur. Par contre impossible de générer les 150 sujets (compilation en "shell-escape" pour y insérer du code Python).
J'ai le message suivant :

! TeX capacity exceeded, sorry [PDF object stream buffer=5000000].
\AtVeryEnd@AtVeryEndDocumentHook ...rue\fi \fi >>}
\edef \OBJ@acroform {\the ...
l.346 \end{document}
If you really absolutely need more capacity,
you can ask a wizard to enlarge me.
Here is how much of TeX's memory you used:
25180 strings out of 492982
531925 string characters out of 6134896
732191 words of memory out of 10000000
27586 multiletter control sequences out of 15000+600000
540247 words of font info for 42 fonts, out of 90000000 for 9000
1141 hyphenation exceptions out of 8191
56i,23n,96p,10373b,752s stack positions out of 15000i,500n,10000p,8000000b,80000s
! ==> Fatal error occurred, no output PDF file produced!

Il me faudrait plus de mémoire.
J'ai cherché dans les forums et j'ai appris que les réglages s'effectuaient dans le fichier texmf.cnf
Mais rien n'y fait : TexMaker ne semble pas prendre en compte mes modifications (notamment le paramètre main_memory = 5000000 (j'ai mis le maxi 7999999 mais sans effet)).
(avec le gestionnaire de fichiers en mode administrateur)

J'ai pourtant actualisé ce fichier de configuration

sudo update-texmf

J'ai essayé également

texhash

Mais c'est toujours le paramètre 5000000 qui apparaît dans le message d'erreur de Texmaker.

Est-ce que quelqu'un aurait une idée pour augmenter la taille "PDF object stream buffer" ?

En espérant que quelqu'un aura une solution,
J/O


Replies (24)

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Joss OUIN over 4 years ago

Re-bonjour,

Je précise que je suis dans le cas de figure "pré-association" avec un fichier .csv comportant 150 enregistrements.
Je continue à chercher sur les forum "LaTeX".

J/O

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Joss OUIN over 4 years ago

Re-bonjour,

Autre information qui a son importance : j'utilise l'option "pdfform" d'AMC afin de créer des copies "Formulaires PDF".

Si je compile avec xelatex, la compilation ne plante pas mais je perds tout les contenus liés à Python (package "pythontex").

J'ai essayé de modifier la commande utilisateur ainsi :

xelatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex |
python /usr/share/texlive/texmf-dist/scripts/pythontex/pythontex.py %.tex |
pdflatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex

et j'ai essayé ceci également :

xelatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex |
python /usr/share/texlive/texmf-dist/scripts/pythontex/pythontex.py %.tex |
xelatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex

Pas de plantage "TeX" mais les données python sont remplacées par des ??

J'ai consulté le post sur ce forum [https://project.auto-multiple-choice.net/boards/4/topics/6259] mais cela ne m'avance à rien.

J/O

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Joss OUIN over 4 years ago

Bonjour Gérard,

Merci pour votre réponse. j'ai fait un essai mais c'est toujours pareil : si je compile avec un csv contenant moins de 80 enregistrements tout fonctionne mais si je passe à une liste de 150 étudiants, j'ai toujours ce message : "! TeX capacity exceeded".

J'espère simplement avoir bien saisi les lignes conseillées :

\makeatletter
\ifAMC@catalog
  \def\nom{nom}
  \def\prenom{prenom}
  \def\etu{00000000}
  \sujet
\else
  \csvreader[head to column names]{demo.csv}{}{\sujet}
\fi
\makeatother

Et voici le début du fichier demo.csv (fictif)

nom,prenom,etu,mail
DUPONT,Paul,101,paul.dupont@yahoo.fr
DURAND,Isabelle,102,isabelle.durand@free.fr

Je pense que ce qui a fait dépasser la capacité limite est l'utilisation de commandes LaTeX pour définir une "questionmultx".
Voici ce que j'ai écrit :

\element{Equadiff-ordre2-yp}{
\begin{questionmultx}{Equa-2-yp1}

\pyc{resy=np.array([[ 1. ,    2.   ,  1.5   , 6.256],
 [ 9. ,    2.   ,  0.7  ,  2.929],
 [ 3.   ,  7. ,  -1.5,    5.453],
 [ 7.  ,   3.   , -2.5  ,  1.004],
 [ 5. ,    4. ,    1.3  ,  5.238],
 [ 3.  ,   4.   ,  1.2  ,  3.798],
 [ 2. ,    3. ,   -1.5 ,   2.547],
 [ 2.  ,   5.  ,  -0.5 ,   4.701],
 [ 2.  ,   7.   ,  1.4  ,  7.061],
 [ 7.   ,  5.   ,  0.8  ,  2.739]])}

\pyc{i=np.random.randint(0,9)} % numéro de ligne du tableau  
\pyc{r=round(resy[i,3],3)}

\def\pyNum{
  \pys{\AMCnumericChoices{!{r}}{digits=4,decimals=3,sign=false,scoreexact=4,scorewrong=-1}}
}

On considère l'équation différentielle $(E)$ suivante : $y''(x)-2y'(x)+y(x)=(\py{int(resy[i,0])}x+\py{int(resy[i,1])})\text{e}^{x}$

La solution $y_{0}(x)$ de l'équation sans second membre a pour expression :
\begin{center}
    $y_{0}(x)=(A+Bx)\text{e}^{x}$ où $A$ et $B \in \mathbb{R}$
\end{center}    

La solution générale de l'équation $(E)$ a pour expression : $y(x)=y_{0}(x)+y_{p}(x)$  où $y_{p}(x)$ est la solution particulière de l'équation $(E)$.

En utilisant l'expression $y(x)$ que vous venez de déterminer, calculer la valeur numérique de $y(\py{round(resy[i,2],1)})$ puis saisir cette valeur arrondie à $10^{-3}$.

\pyNum

    \end{questionmultx}
}

On dirait que c'est cette commande qui fait exploser la quantité de mémoire :

\def\pyNum{
  \pys{\AMCnumericChoices{!{r}}{digits=4,decimals=3,sign=false,scoreexact=4,scorewrong=-1}}
}

Je continue à chercher mais je crois que je vais devoir changer l'écriture "questionmultx + Python" en "questionmultx + FP"
A ce sujet, est-il possible avec FP de définir une liste de valeurs ? Par exemple : X = [1,2,3,4,5]

J/O

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Joss OUIN over 4 years ago

Que doit-on écrire dans le fichier .tex pour désactiver l'écriture du catalogue ?

J/O

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Joss OUIN over 4 years ago

Bonsoir,

J'ai continué mes essais et j'ai tenté la compilation avec une "questionmultx" très basique :

\element{Equadiff-ordre2-yp}{

    \begin{questionmultx}{Equa-2-yp1}

Démo

\AMCnumericChoices{2.458}{digits=4,decimals=3,sign=false,scoreexact=4,scorewrong=-1}

    \end{questionmultx}
}

En effectuant une "compilation rapide" et j'ai encore le message : "! TeX capacity exceeded".

Cela ne viendrait donc pas de l'utilisation de pythontex et des commandes du type \def\pyNum{etc...}
Donc (au conditionnel) le dépassement de capacité viendrait de l'utilisation d'une (ou de plusieurs) question de type "questionmultx".

Une idée ?
J/O

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Frédéric Bréal over 4 years ago

Que doit-on écrire dans le fichier .tex pour désactiver l'écriture du catalogue ?

Pour ma part, je décoche dans les préférences, onglet documents, catalogue.

A ce sujet, est-il possible avec FP de définir une liste de valeurs ? Par exemple : X = [1,2,3,4,5]

Il fait se tourner vers le paquet listofitem ou datatool pour faire une matrice mais il y a peut-être d'autres paquets plus intéressants.

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Joss OUIN over 4 years ago

Pour ma part, je décoche dans les préférences, onglet documents, catalogue.

Vous me parlez d'AMC mais la compilation ne s'effectue pas dans TexMaker : il faudrait donc une commande "AMC" pour désactiver le catalogue au sein du document .tex dans TexMaker.
(Quelque chose du type "AMC@catalog").

J/O

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Frédéric Bréal over 4 years ago

\makeatletter
\ifAMC@catalog
\relax
\else
  \csvreader[head to column names]{liste.csv}{}{\sujet}
\fi
\makeatother

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Joss OUIN over 4 years ago

Information supplémentaire :
Dans AMC, j'ai décoché la case "Catalogue".
Puis j'ai essayé de compiler le fichier .tex directement depuis AMC mais j'ai la même erreur : dépassement de capacité.

Voir la capture d'écran ci-jointe.

J/O

S__lection_048.png - Capture AMC : "! TeX capacity exceeded" (56 kB)

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Joss OUIN over 4 years ago

Je viens de tester avec "relax" :

\makeatletter
\ifAMC@catalog
\relax
\else
  \csvreader[head to column names]{liste.csv}{}{\sujet}
\fi
\makeatother

Mais j'ai encore la même erreur de dépassement de capacité.
Je ne sais pas ce qui se passe avec cette question "questionmultx" de base.

J/O

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Frédéric Bréal over 4 years ago

Peut-être un bog avec l'option pdfform ?
Les questions ouvertes ne sont pas possibles non plus #717

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Frédéric Bréal over 4 years ago

sur un site, il est conseillé de compiler avec lualatex

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Joss OUIN over 4 years ago

En "pdfform" seul tout fonctionne bien mais c'est la "pré-association + pdfform" qui pose problème.
Du coup je vais devoir abandonner l'idée de la pré-association et faire un sujet "pdfform" en demandant aux étudiants la saisie de "l'identifiant étudiant".

J/O
Nota : J'ai la version AMC+git2020-04-15

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Joss OUIN over 4 years ago

sur un site, il est conseillé de compiler avec lualatex

Oui mais dans ce cas je perds la compilation "pythontex" et j'obtiens des ?? à la place des valeurs issues de calculs Python.
J/O

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Joss OUIN over 4 years ago

Bonsoir,

Voici le fichier Demo-test.tex ainsi qu'une liste .csv "fictive" : liste-test.csv.
Est-ce vous pourriez essayer de voir si cela compile chez vous ?

Pour résumer :
Si on réduit le nombre d'enregistrements dans liste-test.csv, cela compile bien mais avec ces 150 enregistrements (en pré-association) il y a un dépassement de capacités.

Pour compiler (quand tout va bien) :
Commande utilisateur :

pdflatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex |
python /usr/share/texlive/texmf-dist/scripts/pythontex/pythontex.py %.tex |
pdflatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex

J'espère que l'on trouvera une solution.

J/O

Demo_test.tex - Fichier .tex (6.9 kB)

liste-test.csv - Fichier liste-test.csv (2.9 kB)

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Joss OUIN over 4 years ago

Une dernière chose : même en compilant en "Compilation rapide" on atteint le dépassement de capacités (donc en ignorant le package "pythontex").
J/O

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Joss OUIN over 4 years ago

Bonjour à tous,

Merci Gérard pour cette confirmation.
Ce serait donc l'association "pdfform" + "pré-association (package csvsimple)" + "questionmultx" qui "consommerait" trop de ressources LaTeX.
Je crois que pour ce devoir je vais faire sans "pré-association".

Bonne journée.
J/O

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Joss OUIN over 4 years ago

Il fait se tourner vers le paquet listofitem ou datatool pour faire une matrice mais il y a peut-être d'autres paquets plus intéressants.

Merci Gérard pour ces références, cela peut être une alternative au package "pythontex".

J/O

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Frédéric Bréal over 4 years ago

Pouvez-vous tester avec xelatex ? Cela semble fonctionner. #728

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Joss OUIN over 4 years ago

Pouvez-vous tester avec xelatex ? Cela semble fonctionner. #728

Bonsoir,

Non cela ne fonctionne pas : j'ai le même résultat qu'avec LuaLatex (j'ai même une erreur de compilation que je n'avais pas avec LuaLatex).
Le problème est assez délicat car je dois compiler les calculs effectués avec la bibliothèque "pythontex".

Voici les commandes utilisateur de compilation que j'ai utilisé :

xelatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex |
python /usr/share/texlive/texmf-dist/scripts/pythontex/pythontex.py %.tex |
xelatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex

Vous pouvez faire un essai avec les fichiers ci-joints.
Je ne suis pas sûr qu'il y ait une solution avec cette association : "pdfform + pré-association (package csvsimple) + questionmultx + pythontex".
Il peut en effet y avoir de multiples causes liées à un package qui n'a rien à voir avec AMC.

Bonne soirée.
J/O

Demo_test.tex - Fichier test (.tex) (6.9 kB)

liste-test.csv - demo de liste (.csv) (2.9 kB)

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Frédéric Bréal over 4 years ago

ça ne fonctionne pas, j'ai une erreur qui affiche autoprint. Même sans AMC, le code avec la variable aléatoire affiche des ??.
C'est trop complexe pour moi.

Quel est l'avantage par rapport au paqut fp ?

RE: Erreur de compilation "TeX capacity exceeded" pour une question "questionmultx" - Added by Joss OUIN over 4 years ago

Bonjour Gérard,

Merci pour t'être penché sur mon problème.

Quel est l'avantage par rapport au paquet fp ?

L'avantage du package "pythontex" par rapport à "fp" est que l'on peut créer n'importe quelle fonction et calculer ainsi des images pour n'importe quelle valeur d'antécédent.
Autrement dit, on a accès à toutes les possibilités du langage Python. On peut même faire du calcul formel (pour calculer une dérivée par exemple) et afficher le résultat dans le sujet du devoir. On peut également développer un polynôme à partir d'un forme factorisée : cela permet de choisir aléatoirement les racines puis développer l'expression et demander aux élèves de retrouver les racines.
J'ai fait une vidéo qui explique tout cela ici : https://www.youtube.com/watch?v=wbAhNezeuEE

Je pense malheureusement qu'il n'y a pas de solution pour une compilation avec un grand nombre de copies (> 80 copies).
J'ai cherché à augmenter la mémoire "LaTeX" mais sans succès.

Comme je le disais précédemment :

Ce serait donc l'association "pdfform" + "pré-association (package csvsimple)" + "questionmultx" qui "consommerait" trop de ressources LaTeX.

Solution donc : compiler avec xelatex sauf pour celles et ceux qui souhaitent utiliser le package "pythontex". Dans ce cas, pas de solution connue à ce jour.

J/O

(1-24/24)