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

相關內容