使用 \lstinputlisting 包含文件的一部分,使用标签而不是行号

使用 \lstinputlisting 包含文件的一部分,使用标签而不是行号

我知道我可以像这样包含一部分代码文件:

\lstinputlisting[language=XML, firstline=37, lastline=45]{source_filename.xml}

但是如果我修改代码文件,行号就会改变。是否可以使用引用来指定第一行和最后一行?基本上我设想的是这样的:

\lstinputlisting[language=XML, firstline=\ref{tag-start}, lastline=\ref{tag-end}, escapeinside={@}{@}]{source_filename.xml}

文件中感兴趣的部分source_filename.xml如下所示:

<MyTag><!-- @\label{tag-start}@ -->
  ...
</MyTag><!-- @\label{tag-end}@ -->

答案1

根据@Jubobs 的评论,我最终得到了以下结论:

LaTeX 文件

\lstset{
  rangeprefix=<\!--\ ,
  rangesuffix=\ -->,
  includerangemarker=false
}

\lstinputlisting[language=XML, linerange=tag\-start-tag\-end]{source_filename.xml}

源文件名.xml

<!-- tag-start -->
<MyTag>
  ...
</MyTag>
<!-- tag-end -->

这是一个技巧,尽管我可能会将标记更改为不包含连字符。

相关内容