如何在 rangeprefix 中转义反斜杠?

如何在 rangeprefix 中转义反斜杠?

我想将反斜杠转义为 a,如下所示。当前 MWE 无法按预期工作,因为它仍然导入所有代码,而不是夹在环境rangeprefix中的代码。document

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents*}{xxx.xxx}
\documentclass{article}
\usepackage{mwe}
\begin{document}
\lipsum[1]
\end{document}
\end{filecontents*}


\usepackage{listings}

\lstset
{
    includerangemarker=false,
    rangeprefix=\textbackslash,
    rangesuffix=\{document\},   
    linerange=begin-end,
}   

\begin{document}
    \lstinputlisting{xxx.xxx}
\end{document}

答案1

引用清单手册:

关键词 我们首先从关键词构建关键开始。注意:如果你想 进入 \,{, }, %, # 或 & 作为(的一部分)下面关键字的参数,您必须在前面加上反斜杠!

公平地说,这不在关于的部分中linerange。那里只说

请注意,TEX 的特殊字符(例如花括号、空格、百分号等)必须用反斜杠进行转义。

但实际上你可以使用\\转义的反斜杠:

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents*}{xxx.xxx}
\documentclass{article}
\usepackage{mwe}
\begin{document}
\lipsum[1]
\end{document}
\end{filecontents*}

\usepackage{listings}

\lstset
{
    includerangemarker=false,
    rangeprefix=\\,
    rangesuffix=\{document\},   
}   

\begin{document}
    \lstinputlisting[linerange=begin-end]{xxx.xxx}
\end{document}

哦,只是一个建议,以下内容可能更灵活一些:

\lstset
{
    includerangemarker=false,
    rangebeginprefix=\\begin\{,
    rangeendprefix=\\end\{,
    rangesuffix=\},   
}

\begin{document}
    \lstinputlisting[linerange=document-document]{xxx.xxx}
\end{document}

相关内容