
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 lstinputlisting
para buscar archivos de forma recursiva dentro de una estructura de directorios (Linux), y estoy usando find
Bash 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 xkeyval
para lograr esto, lo cual Creo que es mi mejor apuesta. Lo que realmente me gustaría, por ejemplo, es poder utilizar codesnippet
así:
\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, xkeyval
solo quiero preguntar si alguien podría:
R. Ayúdame a seguir el camino correcto entendiendo cómo usaría xkeyval
para llegar a algo como esto:
\codesnippet[filename=,grepfilter=,linerangemarker=}
B. Ayúdame a entender si el uso de lstinputlisting
puede 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 lstinputlisting
archivos de forma recursiva sin usarlos find
por completo?
Cualquier ayuda será, como siempre, muy apreciada.