xkeyval/lstinputlisting:与 linerange 选项一起使用时出现“不正确的字母常数”

xkeyval/lstinputlisting:与 linerange 选项一起使用时出现“不正确的字母常数”

我正在尝试使用为我的(特别是该部分)xkeyval创建一个自定义选项( ) 。这是我的 MWE:\codeblocklstinputlistinglinerange

\makeatletter

\newcommand{\code}{}

\define@key{code}{block}{\renewcommand\codeblock{#1}}

\setkeys{code}{block=}
{}
\savekeys{code}{block}

\newcommand\code[1][]{
\setkeys{code}{#1}

\lstinputlisting[linerange=\codeblock,rangeprefix=//---,includerangemarker=false]{./listingwithoutcomments}  

}
\makeatother

我收到错误:

! Improper alphabetic constant.
<to be read again>
                   \code
l.4 \code[block=inout]

这是通过使用:

\linerange=\block

所以我尝试了:

\linerange=\\block

...但结果列表完全是空的。

我认为我的语法没有任何问题,xkeyval但我不确定如何让它发挥作用?

答案1

我通过以下方式解决了这个问题:

\edef\dolisting{\noexpand\lstinputlisting[linerange=\codeblock,rangeprefix=//---,includerangemarker=false,language=maxj,frame=single]{./listingwithoutcomments}}
\dolisting

相关内容