por que o lualatex dá o erro "Muitos arquivos abertos", mas o pdflatex não aparece no mesmo arquivo de látex?

por que o lualatex dá o erro "Muitos arquivos abertos", mas o pdflatex não aparece no mesmo arquivo de látex?

Usando TL 2015 no Linux.

Tenho um arquivo látex que inclui gráficos, todos em formato pdf. Todas as imagens estão incluídas usando a chamada

\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{rules/file_name}

Há um total de 1.860 dessas imagens, todas em formato pdf.

Quando compilo este arquivo usando lualatex, em algum momento, quando chega à imagem número 1016, ele falha com o erro Too many open files. Compilar o mesmo arquivo com pdflatex não dá erro!

Existe uma limitação sobre como as imagens podem ser incluídas em um arquivo de látex ao usar lualatex ou isso é um bug? Parece que a versão lualatex includegraphics não está fechando os identificadores de arquivo ao carregar imagens e ficando sem identificadores de arquivo. Isso está no Linux mint 7.2.

Como o arquivo é grande. Coloquei o arquivo e as imagens que ele carrega \includegraphicsem um arquivo zip (80 MB). O link está no final deste post.

Para reproduzir, baixe o arquivo zip, descompacte-o usando o comando unzip file.zipe será criada uma nova pasta chamada lualatex_error/e dentro desta pasta está aquele arquivo report.texe a pasta que contém todas as imagens. Então digitando

lualatex report.tex

vai dar o erro

 lualatex: ./rules/1016.pdf: Too many open files

Dereport.log

This is LuaTeX, Version beta-0.80.0 (TeX Live 2015) (rev 5238) 
    (format=lualatex 2015.7.9)  31 JUL 2015 12:28
 restricted \write18 enabled.

lualatex_error>which lualatex
/usr/local/texlive/2015/bin/x86_64-linux/lualatex

O arquivo zip está emesta pasta(Este é um link para a pasta onde o arquivo zip está. Não é um link direto para o arquivo zip). Tamanho de 80 MB.

Qualquer outra informação que eu possa dar, por favor me avise.

Responder1

Posso confirmar esse comportamento. Testar:

Crie 1860 cópias de example-image-1x1.pdf(ou outra imagem de sua escolha) com o nome 1.pdf, 2.pdf,..., 1860.pdf. Se você usa bashe tem o TeX Live 2015 instalado no local padrão, você pode usar os seguintes comandos:

i=0; while [ $i -le 1860 ] ; do ((i++)); cp /usr/local/texlive/current/texmf-dist/tex/latex/mwe/example-image-1x1.pdf ./$i.pdf; done

Em seguida, crie o seguinte documento:

\documentclass{article}
\usepackage{graphicx}
\usepackage{expl3,xparse}
\ExplSyntaxOn
\int_new:N \l_nasser_loop_int
\tl_new:N \l_nasser_file_tl
\NewDocumentCommand \icing { }
{
  \int_set:Nn \l_nasser_loop_int { 0 }
  \int_do_while:nNnn { \l_nasser_loop_int } < { 1860 }
  {
    \int_incr:N \l_nasser_loop_int
    \tl_set:Nn \l_nasser_file_tl { \int_use:N \l_nasser_loop_int }
    \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{\l_nasser_file_tl}\par
  }
}
\ExplSyntaxOff
\begin{document}
\icing
\end{document}

Isso compila bem com pdflatex. Com lualatex, ele falha com o seguinte erro:

lualatex: ./1024.pdf: Too many open files

Abster-me-ei de publicar o resultado pdflatexproduzido: você terá que acreditar na minha palavra ou seguir o procedimento acima.

informação relacionada