
Estoy intentando utilizar xkeyval
para crear una opción personalizada ( \codeblock
) para mi lstinputlisting
(específicamente para la linerange
pieza). Este es mi MWE:
\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
Recibo el error:
! Improper alphabetic constant.
<to be read again>
\code
l.4 \code[block=inout]
Esto proviene del uso:
\linerange=\block
Entonces lo intenté:
\linerange=\\block
... pero luego la lista resultante está completamente vacía.
No creo que haya ningún problema con mi xkeyval
sintaxis, pero no estoy seguro de cómo hacer que esto funcione.
Respuesta1
Resolví esto con:
\edef\dolisting{\noexpand\lstinputlisting[linerange=\codeblock,rangeprefix=//---,includerangemarker=false,language=maxj,frame=single]{./listingwithoutcomments}}
\dolisting