특정 디렉터리에 있는 모든 소스 코드 파일을 자동으로 포함하려면 어떻게 해야 합니까?

특정 디렉터리에 있는 모든 소스 코드 파일을 자동으로 포함하려면 어떻게 해야 합니까?

패키지 를 사용하여 디렉터리의 모든 파일과 보고서의 모든 하위 디렉터리를 코드 부록으로 포함하는 방법이 있습니까 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}

관련 정보