\lst@CheckVersion{1.3}
{\typeout{^^J
***^^J
*** This is a patch for listings 1.3, but you're using^^J
*** version \lst@version.^^J
***^^J
*** Patch file not loaded.^^J
***^^J}
\endinput
}
\def\fileversion{1.3b}
\def\filedate{2004/10/17}
\ProvidesFile{lstpatch.sty}[\filedate\space\fileversion\space (Carsten Heinz)]
\def\@@xbitor #1{\@tempcntb \count#1
\ifnum \@tempcnta =\z@
\else
\divide\@tempcntb\@tempcnta
\ifodd\@tempcntb \@testtrue\fi
\fi}
\def\lstpatch@escape{
\gdef\lst@Escape##1##2##3##4{
\lst@CArgX ##1\relax\lst@CDefX
{}
{\lst@ifdropinput\else
\lst@TrackNewLines\lst@OutputLostSpace \lst@XPrintToken
\lst@InterruptModes
\lst@EnterMode{\lst@TeXmode}{\lst@modetrue}
\ifx\^^M##2
\lst@CArg ##2\relax\lst@ActiveCDefX
{}
{\lst@escapeend ##4\lst@LeaveAllModes\lst@ReenterModes}
{\lst@MProcessListing}
\else
\lst@CArg ##2\relax\lst@ActiveCDefX
{}
{\lst@escapeend ##4\lst@LeaveAllModes\lst@ReenterModes
\lst@newlines\z@ \lst@whitespacefalse}
{}
\fi
##3\lst@escapebegin
\fi}
{}}
}
\begingroup \catcode12=\active\let^^L\@empty
\gdef\lst@ScanChars{
\let\lsts@ssL^^L
\def^^L{\par}
\lst@GetChars\lst@RestoreOrigCatcodes\@ne {128}
\let^^L\lsts@ssL
\lst@GetChars\lst@RestoreOrigExtendedCatcodes{128}{256}}
\endgroup
\lst@lAddTo\lst@RestoreCatcodes{\catcode12\active}
\lst@Key{rangeprefix}\relax{\def\lst@rangebeginprefix{#1}
\def\lst@rangeendprefix{#1}}
\lst@Key{rangesuffix}\relax{\def\lst@rangebeginsuffix{#1}
\def\lst@rangeendsuffix{#1}}
\lst@Key{rangebeginprefix}{}{\def\lst@rangebeginprefix{#1}}
\lst@Key{rangebeginsuffix}{}{\def\lst@rangebeginsuffix{#1}}
\lst@Key{rangeendprefix}{}{\def\lst@rangeendprefix{#1}}
\lst@Key{rangeendsuffix}{}{\def\lst@rangeendsuffix{#1}}
\lst@Key{includerangemarker}{true}[t]{\lstKV@SetIf{#1}\lst@ifincluderangemarker}
\def\lst@GLI@#1-#2-#3\@nil{
\lst@IfNumber{#1}
{\ifx\@empty#1\@empty
\let\lst@firstline\@ne
\else
\def\lst@firstline{#1\relax}
\fi
\ifx\@empty#3\@empty
\def\lst@lastline{9999999\relax}
\else
\ifx\@empty#2\@empty
\let\lst@lastline\lst@firstline
\else
\def\lst@lastline{#2\relax}
\fi
\fi}
{\def\lst@firstline{9999999\relax}
\let\lst@lastline\lst@firstline
\let\lst@rangebegin\lst@rangebeginprefix
\lst@AddTo\lst@rangebegin{#1}\lst@Extend\lst@rangebegin\lst@rangebeginsuffix
\ifx\@empty#3\@empty
\let\lst@rangeend\lst@rangeendprefix
\lst@AddTo\lst@rangeend{#1}\lst@Extend\lst@rangeend\lst@rangeendsuffix
\else
\ifx\@empty#2\@empty
\let\lst@rangeend\@empty
\else
\let\lst@rangeend\lst@rangeendprefix
\lst@AddTo\lst@rangeend{#2}\lst@Extend\lst@rangeend\lst@rangeendsuffix
\fi
\fi
\global\def\lst@DefRange{\expandafter\lst@CArgX\lst@rangebegin\relax\lst@DefRangeB}
\ifnum\lst@mode=\lst@Pmode \expandafter\lst@DefRange \fi}}
\lst@AddToHookExe{DeInit}{\global\let\lst@DefRange\@empty}
\def\lst@DefRangeB#1#2{\lst@DefRangeB@#1#2}
\def\lst@DefRangeB@#1#2#3#4{
\lst@CDef{#1{#2}{#3}}#4{}
{\lst@ifincluderangemarker
\lst@LeaveMode
\let#1#4
\lst@DefRangeEnd
\lst@InitLstNumber
\else
\@tempcnta\lst@lineno \advance\@tempcnta\@ne
\edef\lst@firstline{\the\@tempcnta\relax}
\gdef\lst@OnceAtEOL{\let#1#4\lst@DefRangeEnd}
\lst@InitLstNumber
\fi
\global\let\lst@DefRange\lst@DefRangeEnd
\lst@CArgEmpty}
\@empty}
\def\lstpatch@labels{
\gdef\lst@SetFirstNumber{
\ifx\lst@firstnumber\@undefined
\@tempcnta 0\csname\@lst no@\lst@intname\endcsname\relax
\ifnum\@tempcnta=\z@ \else
\lst@nololtrue
\advance\@tempcnta\lst@advancenumber
\edef\lst@firstnumber{\the\@tempcnta\relax}
\fi
\fi}
}
\lst@AddToAtTop\lsthk@PreInit
{\ifx\lst@firstnumber\@undefined
\def\lst@firstnumber{\lst@lineno}
\fi}
\def\lst@InitLstNumber{
\global\c@lstnumber\lst@firstnumber
\global\advance\c@lstnumber\lst@advancenumber
\global\advance\c@lstnumber-\lst@advancelstnum
\ifx \lst@firstnumber\c@lstnumber
\global\advance\c@lstnumber-\lst@advancelstnum
\fi}
\def\lst@DefRangeEnd{
\ifx\lst@rangeend\@empty\else
\expandafter\lst@CArgX\lst@rangeend\relax\lst@DefRangeE
\fi}
\def\lst@DefRangeE#1#2{\lst@DefRangeE@#1#2}
\def\lst@DefRangeE@#1#2#3#4{
\lst@CDef{#1#2{#3}}#4{}
{\let#1#4
\edef\lst@lastline{\the\lst@lineno\relax}
\lst@DefRangeE@@}
\@empty}
\def\lst@DefRangeE@@#1\@empty{
\lst@ifincluderangemarker
#1\lst@XPrintToken
\fi
\lst@LeaveModeToPmode
\lst@BeginDropInput{\lst@Pmode}}
\def\lst@LeaveModeToPmode{
\ifnum\lst@mode=\lst@Pmode
\expandafter\lsthk@EndGroup
\else
\expandafter\egroup\expandafter\lst@LeaveModeToPmode
\fi}
\lst@AddToHook{EOL}{\lst@OnceAtEOL\global\let\lst@OnceAtEOL\@empty}
\gdef\lst@OnceAtEOL{}
\def\lst@MSkipToFirst{
\global\advance\lst@lineno\@ne
\ifnum \lst@lineno=\lst@firstline
\def\lst@next{\lst@LeaveMode \global\lst@newlines\z@
\lst@OnceAtEOL \global\let\lst@OnceAtEOL\@empty
\lst@InitLstNumber
\lsthk@InitVarsBOL
\lst@BOLGobble}
\expandafter\lst@next
\fi}
\def\lst@SkipToFirst{
\ifnum \lst@lineno<\lst@firstline
\def\lst@next{\lst@BeginDropInput\lst@Pmode
\lst@Let{13}\lst@MSkipToFirst
\lst@Let{10}\lst@MSkipToFirst}
\expandafter\lst@next
\else
\expandafter\lst@BOLGobble
\fi}
\def\lst@IfNumber#1{
\ifx\@empty#1\@empty
\let\lst@next\@firstoftwo
\else
\lst@IfNumber@#1\@nil
\fi
\lst@next}
\def\lst@IfNumber@#1#2\@nil{
\let\lst@next\@secondoftwo
\ifnum`#1>47\relax \ifnum`#1>57\relax\else
\let\lst@next\@firstoftwo
\fi\fi}
\lst@Key{multicols}{}{\@tempcnta=0#1\relax\def\lst@multicols{#1}}
\def\lst@Init#1{
\begingroup
\ifx\lst@float\relax\else
\edef\@tempa{\noexpand\lst@beginfloat{lstlisting}[\lst@float]}
\expandafter\@tempa
\fi
\ifx\lst@multicols\@empty\else
\edef\lst@next{\noexpand\multicols{\lst@multicols}}
\expandafter\lst@next
\fi
\ifhmode\ifinner \lst@boxtrue \fi\fi
\lst@ifbox
\lsthk@BoxUnsafe
\hbox to\z@\bgroup
$\if t\lst@boxpos \vtop
\else \if b\lst@boxpos \vbox
\else \vcenter \fi\fi
\bgroup \par\noindent
\else
\lst@ifdisplaystyle
\lst@EveryDisplay
\par\penalty-50\relax
\vspace\lst@aboveskip
\fi
\fi
\normalbaselines
\abovecaptionskip\lst@abovecaption\relax
\belowcaptionskip\lst@belowcaption\relax
\lst@MakeCaption t
\lsthk@PreInit \lsthk@Init
\lst@ifdisplaystyle
\global\let\lst@ltxlabel\@empty
\if@inlabel
\lst@ifresetmargins
\leavevmode
\else
\xdef\lst@ltxlabel{\the\everypar}
\lst@AddTo\lst@ltxlabel{
\global\let\lst@ltxlabel\@empty
\everypar{\lsthk@EveryLine\lsthk@EveryPar}}
\fi
\fi
\everypar\expandafter{\lst@ltxlabel
\lsthk@EveryLine\lsthk@EveryPar}
\else
\everypar{}\let\lst@NewLine\@empty
\fi
\lsthk@InitVars \lsthk@InitVarsBOL
\lst@Let{13}\lst@MProcessListing
\let\lst@Backslash#1
\lst@EnterMode{\lst@Pmode}{\lst@SelectCharTable}
\lst@InitFinalize}
\def\lst@DeInit{
\lst@XPrintToken \lst@EOLUpdate
\global\advance\lst@newlines\m@ne
\lst@ifshowlines
\lst@DoNewLines
\else
\setbox\@tempboxa\vbox{\lst@DoNewLines}
\fi
\lst@ifdisplaystyle \par\removelastskip \fi
\lsthk@ExitVars\everypar{}\lsthk@DeInit\normalbaselines\normalcolor
\lst@MakeCaption b
\lst@ifbox
\egroup $\hss \egroup
\vrule\@width\lst@maxwidth\@height\z@\@depth\z@
\else
\lst@ifdisplaystyle
\par\penalty-50\vspace\lst@belowskip
\fi
\fi
\ifx\lst@multicols\@empty\else
\def\lst@next{\global\let\@checkend\@gobble
\endmulticols
\global\let\@checkend\lst@@checkend}
\expandafter\lst@next
\fi
\ifx\lst@float\relax\else
\expandafter\lst@endfloat
\fi
\endgroup}
\let\lst@@checkend\@checkend
\endinput