Verwirrung mit „xkeyval“ und „newcommand“: Bessere Verwendung mit „lstinputlisting“

Verwirrung mit „xkeyval“ und „newcommand“: Bessere Verwendung mit „lstinputlisting“

Ich habe diesen Befehl geschrieben, um Code-Schnipsel zu erhalten:

\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'}
}

Es wird folgendermaßen verwendet:

\codesnippet{option1}{option2}{option3}

Vollständiger:

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

Der Grund dafür ist im Wesentlichen, dass ich versuche, lstinputlistingDateien rekursiv innerhalb einer (Linux-)Verzeichnisstruktur zu finden, und ich verwende findvon Bash aus, um die Tatsache zu umgehen, dass dies nicht möglich ist. Zumindest glaube ich nicht, dass es möglich ist.

Die Sache ist, dass ich vermute, dass dies nicht der beste Weg ist, aber es funktioniert in dem Sinne, dass es das tut, was ich will. Ich bin allerdings kein großer Fan davon, wie ich drei separate Optionen verwende, und das ist es, was ich nach Möglichkeit wirklich vermeiden möchte, aber ich habe wirklich Schwierigkeiten, einen Sinn darin zu erkennen, wie ich dies erreichen könnte , was meiner Meinung nach meine beste Option ist. Was ich zum Beispiel wirklich gerne hätte, ist, es so xkeyvalverwenden zu können :codesnippet

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

... oder noch besser, verwenden Sie tatsächlich „linerange“ gemäß der Option „lstinputlisting“, aber ich vermute, dass dies wahrscheinlich nicht möglich ist:

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

Ich denke, mein Problem rührt daher, dass ich einen Befehl ( lstinputlisting) in meinen „neuen Befehl“ einbette, und da ich beim Experimentieren mit keinen Erfolg hatte, xkeyvalmöchte ich einfach fragen, ob jemand Folgendes könnte:

xkeyvalA. Helfen Sie mir, auf den richtigen Weg zu kommen, indem Sie verstehen, wie ich auf so etwas kommen würde :

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

B. Helfen Sie mir zu verstehen, ob die Verwendung von lstinputlistingdie Dinge verkomplizieren kann, da es seine eigenen Optionen hat

C. (Bonus) Helfen Sie mir zu verstehen, ob es einen besseren Weg gibt, dies insgesamt zu tun, und was ich sonst noch falsch machen könnte … gibt es beispielsweise eine Möglichkeit, lstinputlistingDateien rekursiv zu finden, ohne sie findinsgesamt zu verwenden?

Für jede Hilfe wäre ich wie immer sehr dankbar.

verwandte Informationen