是否有与 \graphicspath 等效的列表?

是否有与 \graphicspath 等效的列表?

如何让\lstinputlisting搜索给定目录中的文件?我正在考虑一个解决方案,类似于这个问题

我想要一个解决方案

\lstinputpath{/some/path/in/the/system}
\lstinputlisting{file.ext}

其中file.ext位于/some/path/in/the/system。我尝试寻找这样的解决方案,但没有成功。我发现\lstinputlistings作者在 的定义中使用\lst@inputpath。但是,对这个宏进行简单的修改不会产生任何结果。

答案1

listings软件包提供了一个名为的键,用于指定应在其中搜索源文件的inputpath路径。请注意,仅在开发人员指南中记录,\lstinputlistinginputpathlistings不是在用户手册中;如果你还没有编译开发人员指南,请在列表.dtx将引导您找到密钥的定义inputpath。要使用后者,只需编写

\lstset{inputpath=<path-in-question>}

文档中的某个位置(不一定是前言中,当然listings,在加载 之后)。如果您确实坚持使用类似于 的宏\graphicspath,您可以自己定义一个\lstinputpath宏,如下所示

\newcommand*\lstinputpath[1]{\lstset{inputpath=#1}}

下面的代码假定文件位于您的工作目录的sample.c子目录中。test

在此处输入图片描述

\documentclass{article}

\usepackage{listings}

\newcommand*\lstinputpath[1]{\lstset{inputpath=#1}}

\lstinputpath{test}

\begin{document}
\lstinputlisting[
  language   = C,
  basicstyle = \ttfamily,
  frame      = single,
  caption    = {Hello world in C},
]{sample.c}
\end{document}

答案2

替代方案包括使用\input@pathLaTeX 内部宏。

也可以看看https://tex.stackexchange.com/a/24827/250119是否可以为 \input{...} 全局设置类似于 \graphicspath{...} 的默认路径?

例如

\documentclass{article}
\usepackage{listings}

\makeatletter
\def\input@path{{SubFolder/}}
\makeatother

\begin{document}
\lstinputlisting[
  language   = C,
  basicstyle = \ttfamily,
  frame      = single,
  caption    = {Hello world in C},
]{SubTest.tex}
\end{document}

优势:它可以工作,支持多条路径,并且不存在上面的评论

这里要注意的一个重要缺点是,即使提供的参数包含斜杠(即使它以斜杠开头,即它是绝对路径),输入路径也总是会被添加到前面。

坏处

  • 据我所知\input@path这是 LaTeX 的内部宏,它的原来的目的甚至不是为了允许用户扩展可能的位置\input......?(稍后详细说明)
  • 这只有效因为listings包文档恰好内部使用\input来内部处理文件。否则它将不起作用。

清单源代码文档

(顺便说一下,用来\active表示常数 13 与\endlinechar自文档代码相反。)

相关内容