
Estou tentando usar xkeyval
para criar uma opção customizada ( \codeblock
) para minha lstinputlisting
(especificamente para a linerange
peça). Este é o meu 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
Eu recebo o erro:
! Improper alphabetic constant.
<to be read again>
\code
l.4 \code[block=inout]
Isso vem do uso:
\linerange=\block
Então eu tentei:
\linerange=\\block
... mas a listagem resultante fica completamente vazia.
Não acho que haja algo errado com minha xkeyval
sintaxe, mas não tenho certeza de como fazer isso funcionar.
Responder1
Eu resolvi isso com:
\edef\dolisting{\noexpand\lstinputlisting[linerange=\codeblock,rangeprefix=//---,includerangemarker=false,language=maxj,frame=single]{./listingwithoutcomments}}
\dolisting