%%
%% The LaTeX Companion, 3ed
%%
%% Example 4-2-57 on page I-330 in "listings --- Pretty-printing program code".
%%
%% Copyright (C) 2022 Frank Mittelbach
%%
%% It may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%%
%% See https://www.latex-project.org/lppl.txt for details.
%%

\documentclass{tlc3exa}
\pagestyle{empty}
\setcounter{page}{6}
\setlength\textwidth{183.0pt}

% for the book examples we shorten the vertical spaces
\makeatletter
\renewcommand\section{\@startsection{section}{1}{\z@}%
                                    {-1.25ex \@plus-1ex \@minus-.2ex}%
                                    {.5ex}%
                                    {\normalfont\large\bfseries}}
\makeatother

\begin{filecontents*}{pascal.src}
for i:=1 to maxint do
begin
  WrItE('This is stupid');
end.
\end{filecontents*}

\addtolength\textwidth{-20pt}

%StartShownPreambleCommands
\usepackage{listings} % pascal.src as before
%StopShownPreambleCommands

\begin{document}
\lstset{frame=single,frameround=tftt,
        language=Pascal,captionpos=b}
\lstlistoflistings
          % Normally the above is in the
\bigskip  % front matter section, but here ...
\noindent % ... so we need to help a bit.
The Pascal code in listing~\ref{foo} shows\ldots
\lstinputlisting
   [caption={[Pascal listing]Pascal},label=foo]
   {pascal.src}
\end{document}
