Subimport star breaks листинги языки

Subimport star breaks листинги языки

\subimport*{}{}из импорта пакета, похоже, нарушается список языков, но только если listingsязык не использовался в корневом документе:

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

Моя гипотеза заключается в том, что помеченная звездочкой версия subimportнарушает путь для списков, но каким-то образом она кэшируется, если список сначала используется вне импорта.

Есть ли решение этой проблемы (кроме отказа от импорта помеченных субтитров; я бы хотел продолжать его использовать, если это возможно...)

MWE ниже.


A/List.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/Гнездо/Гнездо/nested.tex:

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

решение1

Из документации пакета:

Чтобы избежать поиска TEXINPUTSпути при импорте файлов, используйте «звездчатые» версии команд: \import*и \subimport*.

Это означает, что pdflatexне может искать файлы, отличные от тех, что находятся в указанном каталоге. Однако настройки listingsязыков импортируются во время использования, поэтому память не засоряется десятками бесполезных языков.

Решение: использовать \lstloadlanguages.

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

\lstloadlanguages{Java}

\begin{document}

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

\end{document}

введите описание изображения здесь

Связанный контент