导入代码时在lstinputlisting中添加更详细的参数?

导入代码时在lstinputlisting中添加更详细的参数?

我正在尝试将 Python 代码专门输入到文档中。因此,我使用了lstinputlisting如下代码:

\lstinputlisting[language=Python, firstline=37, lastline=45, caption={this is a long caption},label={lst:testlabel}]{./code/test_code.py}

我的第一个问题是,当您要从另一个目录导入多个列表时,是否有类似listpath的等效方法graphicspath?我搜索过了,但没找到。

其次,如果我想为列表添加简短和详细的标题怎么办?例如

\lstinputlisting[language=Python, firstline=37, lastline=45, caption=[short caption]{this is a long caption},label={lst:testlabel}]{./code/test_code.py}

无法编译。附加参数也一样,比如如果我想让列表成为 的目标hyperref。这:

\lstinputlisting[language=Python, firstline=37, lastline=45, caption={this is a long caption},label={lst:testlabel},hypertarget{target}]{./code/test_code.py}

似乎也不起作用。我会考虑使用,lstlisting但它似乎也不起作用,特别是因为我更喜欢导入代码以使其更清晰。

答案1

可选参数内的方括号不受保护,因此\lstinputlisting将被视为language=..., caption=[short caption可选参数,并且]是文件名。值周围的花括号有帮助:

\lstinputlisting[
  language=python,
  firstline=37,
  lastline=45,
  caption={[short caption]{this is a long caption},
  ...
]{code/test_code.py}

\graphicspath对于 listing没有等效项。解决方法:

  • 可以使用宏作为文件名开头的路径部分。

  • 环境变量TEXINPUTS可以包含源文件目录。

  • \input@path可以设置内部,这也适用于输入 TeX 文件、包、类,例如:

    \makeatletter
    \def\input@path{{pathA/}{pathB/}}
    \makeatother
    

超级目标可以在列表之外一开始就设置。列表本身可以跨越页面边界,而链接目标则不允许这样做。

相关内容