![子导入星级休息列表语言](https://linux22.com/image/284810/%E5%AD%90%E5%AF%BC%E5%85%A5%E6%98%9F%E7%BA%A7%E4%BC%91%E6%81%AF%E5%88%97%E8%A1%A8%E8%AF%AD%E8%A8%80.png)
\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}