如何自動包含位於給定目錄中的所有原始碼檔案?

如何自動包含位於給定目錄中的所有原始碼檔案?

有沒有辦法使用套件將目錄中的所有文件和報告中的所有子目錄作為程式碼附錄包含在內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}

相關內容