我正在尝试将 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
超级目标可以在列表之外一开始就设置。列表本身可以跨越页面边界,而链接目标则不允许这样做。