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

관련 정보