
我正在嘗試為我的(特別是該部分)xkeyval
建立自訂選項( ) 。這是我的 MWE:\codeblock
lstinputlisting
linerange
\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