サブインポートスターブレークリスト言語

サブインポートスターブレークリスト言語

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

ここに画像の説明を入力してください

関連情報