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