xkeyval/lstinputlisting: „unangemessene alphabetische Konstante“ bei Verwendung mit der Linerange-Option

xkeyval/lstinputlisting: „unangemessene alphabetische Konstante“ bei Verwendung mit der Linerange-Option

Ich versuche, eine benutzerdefinierte Option ( ) für mein (speziell für das Teil) xkeyvalzu erstellen . Dies ist mein 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

Ich erhalte die Fehlermeldung:

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

Dies kommt durch die Verwendung von:

\linerange=\block

Also habe ich versucht:

\linerange=\\block

... aber dann ist die resultierende Liste völlig leer.

Ich glaube nicht, dass mit meiner Syntax etwas nicht stimmt, xkeyvalbin mir aber nicht sicher, wie ich das zum Laufen bekomme.

Antwort1

Ich habe das Problem folgendermaßen umgangen:

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

verwandte Informationen