パッケージを使用して、ディレクトリ内のすべてのファイルとすべてのサブディレクトリをコード付録としてレポートに含める方法はありますかlistings
?
listings
パッケージとを使用して個々のファイルをインクルードできることはわかっています\lstinputlisting
が、コード付録にそれらを挿入するより簡単な方法があるかどうか疑問に思っています...
答え1
リストにも機能する優れたソリューションがここに提供されています:フォルダ内のファイル名を反復処理する方法コードを次のように変更するだけです。
\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}
Windows で実行している場合は、コマンドを次のように置き換える必要があることに注意してください\app@exe
(テストは行われていませんが、前のスレッドで提供された回答に基づいています)。
\app@exe{cmd /c dir /b * > \jobname.tmp}%
\AtEndOfDocument{\app@exe{rm -f #1/\jobname.tmp}}}
私が示したコードは、ディレクトリ内のすべてのファイルを含めます。特定の拡張子を持つファイルのみを含めたい場合は、\app@exe
コマンドで直接指定できます。
を使用してコンパイルすることを忘れないでくださいpdflatex -shell-escape yourfile.tex
。
答え2
私はこれを使って Python コードをロードしようとしていました。しかし、あなたの例ではファイル名のみがリストされていました。それが意図されたのでしょうか? とにかく、次の方法は私にとってはうまく機能しているようです。もっとエレガントな方法はありますか?
\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}