listings
Gibt es eine Möglichkeit, mithilfe des Pakets alle Dateien in einem Verzeichnis und allen Unterverzeichnissen als Codeanhang in einen Bericht aufzunehmen ?
listings
Ich weiß, dass ich mit dem Paket und jede einzelne Datei einbinden kann \lstinputlisting
, frage mich aber, ob es einen schnelleren Weg gibt, sie in einen Codeanhang einzufügen ...
Antwort1
Eine gute Lösung, die auch für Inserate funktioniert, wurde hier bereitgestellt:So durchlaufen Sie die Namen von Dateien in einem Ordner. Dazu müssen Sie den Code einfach wie folgt ändern:
\documentclass{article}
\usepackage{listings}
\makeatletter
\def\app@exe{\immediate\write18}
\def\listDir#1{%
\app@exe{ls #1/* | xargs cat >> \jobname.tmp}%
\lstinputlisting{\jobname.tmp}
\AtEndDocument{\app@exe{rm -f #1/\jobname.tmp}}}
\makeatother
\begin{document}
\listDir{your_directory}
\end{document}
Beachten Sie, dass Sie unter Windows die Befehle durch etwas wie Folgendes ersetzen müssen \app@exe
(nicht getestet, aber basierend auf der Antwort im vorherigen Thread):
\app@exe{cmd /c dir /b * > \jobname.tmp}%
\AtEndOfDocument{\app@exe{rm -f #1/\jobname.tmp}}}
Der von mir angegebene Code schließt alle Dateien des Verzeichnisses ein. Wenn Sie nur Dateien mit einer bestimmten Erweiterung einschließen möchten, können Sie diese direkt im \app@exe
Befehl angeben.
Vergessen Sie nicht, mit zu kompilieren pdflatex -shell-escape yourfile.tex
.
Antwort2
Ich habe versucht, damit Python-Code zu laden. Ihr Beispiel hat jedoch nur die Namen der Dateien aufgelistet. War das die Absicht? Wie auch immer, das Folgende scheint für mich zu funktionieren. Gibt es einen eleganteren Weg?
\documentclass{article}
\usepackage[cache=false]{minted}
\usepackage{listings}
\usepackage{pgffor}
\usepackage{pgfplotstable}
\usemintedstyle{friendly} % Python Code Style
\makeatletter
\def\app@exe{\immediate\write18}
\def\createData#1{%
\app@exe{cmd /c dir /b *.py > \jobname.dat}%
\AtEndDocument{\app@exe{cmd rm -f #1/\jobname.dat}}}
\makeatother
\begin{document}
\createData{.}% from the current dir
\pgfplotstableread[header=false]{\jobname.dat}{\mytable}
\pgfplotstablegetrowsof{\mytable}
\pgfmathsetmacro{\rows}{\pgfplotsretval-1}
\foreach \i in {0,...,\rows} {
\pgfplotstablegetelem{\i}{[index]0}\of\mytable
\subsection*{Source code for \textsf{\pgfplotsretval}}
\inputminted[
frame=lines,
framesep=2mm,
baselinestretch=1.2,
%bgcolor=gray,
fontsize=\footnotesize,
linenos
]
{python}{\pgfplotsretval}
}
\end{document}