
\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}