自动包含文件夹中所有文件的列表

自动包含文件夹中所有文件的列表

我的论文导师要求我把所有的 MATLAB 代码都放在 PDF 中。我的代码分散在十几个.m文件中,都放在同一个文件夹中。

我知道我可以使用该包来包含代码matlab-prettifier,我这样做如下:

\lstinputlisting[style=Matlab-editor]{codice/ICCplot.m}

本质上,我想做以下事情:

for \filename in codice/*.m
    \section{\filename}
    \lstinputlisting[style=Matlab-editor]{codice/\filename.m}
end for

答案1

我将使用 Makefile 来执行此操作,一个非常简单的方法是:

TEX=pdflatex
NAME=riccardos_thesis
MFILES=$(wildcard codice/*.m)

all: $(NAME).pdf

$(NAME).pdf: $(NAME).tex $(MFILES)
    $(TEX) -jobname="$(NAME)" "\def\RiccardosMFiles{$(MFILES)}\input{$(NAME).tex}"

与此主 TeX 文件一起:

\documentclass[]{article}

\usepackage{matlab-prettifier}


\ExplSyntaxOn
\NewDocumentCommand\showallmfiles{}
  {
    \exp_args:NNno \seq_set_split:Nnn \l_tmpa_seq { codice/ } \RiccardosMFiles
    \seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl
    \seq_map_inline:Nn \l_tmpa_seq
      {
        \section{##1}
        \lstinputlisting[style=Matlab-editor]{codice/##1}
      }
  }
\ExplSyntaxOff

\begin{document}
\showallmfiles
\end{document}

相关内容