Confusión con "xkeyval" y "newcommand": mejor manera de usarlo con "lstinputlisting"

Confusión con "xkeyval" y "newcommand": mejor manera de usarlo con "lstinputlisting"

Escribí este comando para obtener "fragmentos" de código:

\newcommand\codesnippetsnippet[3]{
\immediate\write18{find ../../../.. -name '#1' -print | grep #2 | xargs cat > ./listingwithoutcomments}

\lstinputlisting[autogobble=true,linerange=#3,rangeprefix=//---,includerangemarker=false,language=mycodelanguage,frame=single]{./listingwithoutcomments}

\immediate\write18{rm -f -- 'listingwithoutcomments'}
}

Se usa así:

\codesnippet{option1}{option2}{option3}

Más plenamente:

\codesnippet{thisissomecode.codefile}{thisisagrepfilter}{thisisalinerangemarker}

La motivación detrás de esto es básicamente porque estoy tratando de usar lstinputlistingpara buscar archivos de forma recursiva dentro de una estructura de directorios (Linux), y estoy usando findBash para evitar el hecho de que no puede. Al menos yo no creo que pueda ser así.

La cuestión es que sospecho que esta no es la mejor manera de hacerlo, pero funciona en el sentido de que hace lo que quiero. Sin embargo, no soy un gran admirador de la forma en que uso tres opciones separadas, y eso es lo que realmente quiero evitar si es posible, pero realmente estoy luchando por entender cómo usaría xkeyvalpara lograr esto, lo cual Creo que es mi mejor apuesta. Lo que realmente me gustaría, por ejemplo, es poder utilizar codesnippetasí:

\codesnippet[filename=,grepfilter=,linerangemarker=}

... o incluso mejor, use linerange según la opción lstinputlisting, pero sospecho que esto probablemente no sea posible:

\codesnippet[filename=,grepfilter=,linerange=}

Creo que mi problema se debe al hecho de que estoy incrustando un comando ( lstinputlisting) dentro de mi "nuevo comando", y como no he tenido suerte experimentando, xkeyvalsolo quiero preguntar si alguien podría:

R. Ayúdame a seguir el camino correcto entendiendo cómo usaría xkeyvalpara llegar a algo como esto:

\codesnippet[filename=,grepfilter=,linerangemarker=}

B. Ayúdame a entender si el uso de lstinputlistingpuede complicar las cosas, ya que tiene sus propias opciones.

C. (Bonificación) Ayúdame a comprender si existe una manera mejor de hacer esto y qué más puedo estar haciendo mal... por ejemplo, ¿hay alguna manera de buscar lstinputlistingarchivos de forma recursiva sin usarlos findpor completo?

Cualquier ayuda será, como siempre, muy apreciada.

información relacionada