
\subimport*{}{}
パッケージからのインポートは言語のリストを壊すようですが、それはlistings
ルート ドキュメントで言語が使用されていない場合のみです。
! Package Listings Error: Couldn't load requested language.
私の仮説は、 のスター付きバージョンがsubimport
リストのパスを壊しているが、リストが最初にインポートの外部で使用されると何らかの理由でキャッシュされるというものです。
これに対する解決策はありますか (スター付きのサブインポートを使用しないこと以外に、可能であればそれを使い続けたいのですが...)
以下MWE。
A/リスト.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/Nest/Nest/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}