![自动包含文件夹中所有文件的列表](https://linux22.com/image/435821/%E8%87%AA%E5%8A%A8%E5%8C%85%E5%90%AB%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%E7%9A%84%E5%88%97%E8%A1%A8.png)
我的论文导师要求我把所有的 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}