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