
Estoy trabajando en un documento que produce ~4000 páginas, cada una con al menos 30 gráficos por página. Hay muchos cambios de fuente y colores de diferentes caracteres de diferentes colores. Puedo limitar las páginas generadas, lo que me permite compilar correctamente. Estoy usando MikTex de 64 bits pero noté el mismo problema al intentar utilizar texLive.
Sin embargo, cuando intento aumentar el número de páginas más allá de cierta cantidad, LuaLaTex sale con:
! TeX capacity exceeded, sorry [number of strings=493869].
<argument> ...ter {\reserved@b Pianos/256px/F/Piano_482.png}
\ifeof \@inputcheck \else ...
l.33572 ...m]{{Pianos/256px/F/Piano_482.png}}F ♮3}
& \textcolor{F-Lt}{F} & ...
47374 words of node memory still in use:
972 hlist, 276 vlist, 615 rule, 1 adjust, 7 disc, 276 local_par, 7 dir, 4 ma
th, 1376 glue, 30 kern, 388 penalty, 96 unset, 596 glyph, 16 align_record, 3318
attribute, 142 glue_spec, 1660 attribute_list, 14 temp, 1 align_stack, 4 if_st
ack, 1 pdf_dest, 3 pdf_action, 412 pdf_colorstack, 26 pdf_setmatrix, 26 pdf_sav
e, 26 pdf_restore nodes
avail lists: 1:1,2:32136,3:1080,4:450,5:513,6:468,7:9915,8:39,9:4238,10:45,1
1:507
! ==> Fatal error occurred, no output PDF file produced!
SyncTeX written on document.synctex.gz.
Transcript written on document.log.
Realmente no puedo publicar un MWE porque creo que el problema proviene principalmente de incluir imágenes miles de veces. Estoy intentando pasar la opción de línea de comando lualatex
con -extra-mem-top=50000000
.
También intenté editar mi archivo textmf pero en realidad no pareció cambiar ese número mágico (493869) de cadenas. También estoy ejecutando la versión de 64 bits de los binarios porque leí que podría ayudar con la asignación de memoria, pero en realidad no cambió nada.
Respuesta1
LuaTeX utiliza una asignación de memoria dinámica para la memoria principal, por lo que la texmf.cnf
configuración que está utilizando no tendrá ningún efecto incluso si la configura para luatex en lugar de pdftex.
Sin embargo, todavía hereda algunos usos de matrices fijas del tex clásico, incluido el número de cadenas.
esto produce el error que usted indica (tenga en cuenta que es un bucle infinito, por lo quese basaen una condición de error para terminar.
\documentclass{article}
\begin{document}
\loop
\iftrue
\advance\count0 1
\expandafter\def\csname zzz\the\count0\endcsname{}
\repeat
\end{document}
Esto produce
LaTeX2e <2019-10-01> patch level 3
luaotfload | main : initialization completed in 2.242 seconds
(/usr/local/texlive/2019/texmf-dist/tex/latex/base/article.cls
Document Class: article 2019/10/25 v1.4k Standard LaTeX document class
(/usr/local/texlive/2019/texmf-dist/tex/latex/base/size10.clo)) (./cc372.aux)
! TeX capacity exceeded, sorry [number of strings=493861].
Puede aumentar el número de cadenas llamándolo de la siguiente manera (o editando texmf.cnf)
$ max_strings=1000000 lualatex cc372
This is LuaTeX, Version 1.10.0 (TeX Live 2019)
restricted system commands enabled.
(./cc372.tex
LaTeX2e <2019-10-01> patch level 3
luaotfload | main : initialization completed in 2.141 seconds
(/usr/local/texlive/2019/texmf-dist/tex/latex/base/article.cls
Document Class: article 2019/10/25 v1.4k Standard LaTeX document class
(/usr/local/texlive/2019/texmf-dist/tex/latex/base/size10.clo)) (./cc372.aux)
! TeX capacity exceeded, sorry [hash size=665536].
<recently read> \endcsname
Ahora verá que no se ha quedado sin cadenas, sino que ha desbordado la tabla hash, que podría aumentarse de manera similar. Debe repetir su documento real para aumentar lo que sea necesario.
Aquí, si aumento el tamaño de la tabla hash lo suficiente, tardará varios segundos en ejecutarse, pero eventualmente se quedará sin cadenas nuevamente:
$ max_strings=1000000 hash_extra=1000000 lualatex cc372
This is LuaTeX, Version 1.10.0 (TeX Live 2019)
restricted system commands enabled.
(./cc372.tex
LaTeX2e <2019-10-01> patch level 3
luaotfload | main : initialization completed in 2.187 seconds
(/usr/local/texlive/2019/texmf-dist/tex/latex/base/article.cls
Document Class: article 2019/10/25 v1.4k Standard LaTeX document class
(/usr/local/texlive/2019/texmf-dist/tex/latex/base/size10.clo)) (./cc372.aux)
! TeX capacity exceeded, sorry [number of strings=993861].
Respuesta2
editar lualatex.ini
para usar los valores que sugirió David Carlisle, luego reconstruir los formatos funcionó. Estoy feliz.
mi lualatex.ini
archivo:
main_memory=12000000
pool_size=4250000
max_strings=8000000
hash_extra=1000000
Para encontrar la ruta, abrí la Consola MikTeX y fui Configuración > Directorio > (luego el que está etiquetado como configuración). Abra esa carpeta y luego continúe ./miktex/config/lualatex.ini
desde allí. ¡Gracias!