Subimportar idiomas de listagens de quebras de estrelas

Subimportar idiomas de listagens de quebras de estrelas

\subimport*{}{}do pacote import parece quebrar os idiomas das listagens, mas somente se listingsum idioma não tiver sido usado no documento raiz:

! Package Listings Error: Couldn't load requested language.

Minha hipótese é que a versão com estrela subimportestá interrompendo o caminho das listagens, mas de alguma forma ela é armazenada em cache se a listagem for usada primeiro fora da importação.

Existe uma solução para isso (além de não usar a sub importação com estrela; gostaria de continuar usando, se possível...)

MWE abaixo.


A/Lista.tex:

\documentclass{article} 
\usepackage{import}
\usepackage{listings}
\begin{document}

% Uncommenting the problem, oddly enough.
%\begin{lstlisting}[language=Java]
%public static void main(String[] args) {} 
%\end{lstlisting}
\subimport*{Nest/Nest/}{nested}

\end{document}  

A/Ninho/Ninho/nested.tex:

\begin{lstlisting}[language=Java]
//Returns true
private static bool P() { 
}
\end{lstlisting}

Responder1

Da documentação do pacote:

Para evitar pesquisar o TEXINPUTScaminho ao importar arquivos, use as versões 'estrela' dos comandos: \import*e \subimport*.

Isso significa que pdflatexnão é possível procurar arquivos diferentes daqueles no diretório especificado. No entanto, as configurações de listingsidiomas são importadas no momento do uso, para que a memória não fique sobrecarregada com dezenas de idiomas inúteis.

Solução: use \lstloadlanguages.

\documentclass{article}
\usepackage{import}
\usepackage{listings}

\lstloadlanguages{Java}

\begin{document}

\subimport*{mattnest/mattnest/}{nested}

\end{document}

insira a descrição da imagem aqui

informação relacionada