“float” e “più pagine” è contraddittorio.
Se non vuoi inserire sempre il percorso, usa
`\lstinputlisting[…]{\listati/nome.m}`
Si può anche costruire un analogo di \graphicspath, ma ne vale la pena?
`\documentclass[a4paper]{article}
\usepackage{listings}
\usepackage{letltxmacro}
\makeatletter
\LetLtxMacro\@@lst@inputlisting\lst@inputlisting
\renewcommand\lst@inputlisting[2][]{%
\try@listingspath{#2}%
\if@tempswa
\typeout{Using \@foundlisting}%
\@@lst@inputlisting[#1]{\@foundlisting}%
\else
\typeout{Missing file #2}\endgroup
\fi}
\def\listingspath#1{\def\@listingspath{#1}}
\listingspath{}
\def\try@listingspath#1{%
\@tempswafalse
\expandafter\@tfor\expandafter\next
\expandafter:\expandafter=\@listingspath\do
{\if@tempswa\@break@tfor\fi
\IfFileExists{\next/#1}{\@tempswatrue\xdef\@foundlisting{\next/#1}}{}}%
}
\makeatletter
\listingspath{{./a}{./b}}
\begin{document}
\lstinputlisting{pippo.txt}
\lstinputlisting{pluto.txt}
\lstinputlisting{pppxx.txt}
\end{document}`
Ciao
Enrico