我正在尝试使用为我的(特别是该部分)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