mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 17:51:38 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			464 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			464 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
| %%
 | |
| %% This is file `lstpatch.sty', generated manually.
 | |
| %%
 | |
| %% Please read the software license in listings.dtx or listings.dvi.
 | |
| %%
 | |
| %% (w)(c) 2002 Carsten Heinz
 | |
| %%
 | |
| %% This file is distributed under the terms of the LaTeX Project Public
 | |
| %% License from CTAN archives in directory  macros/latex/base/lppl.txt.
 | |
| %% Either version 1.0 or, at your option, any later version.
 | |
| %%
 | |
| %% Send comments and ideas on the package, error reports and additional
 | |
| %% programming languages to <cheinz@gmx.de>.
 | |
| %%
 | |
| %% This patch file will remove the following bugs from the listings package.
 | |
| %% Each item contains the bug finder with date of report and first bug fix
 | |
| %% version, a short description of the problem, and the reason for the bug
 | |
| %% in parenthesis.
 | |
| %%
 | |
| %%  1) Jochen Schneider, 2002/04/03, 1.0a (2002/04/05)
 | |
| %%
 | |
| %%     undefined control sequence \lst@CommentB with HTML, XML, tcl
 | |
| %%     (I didn't renamed them to \lst@DefDelimB|E)
 | |
| %%
 | |
| %%  2) Michael Niedermair, 2002/04/07, 1.0b
 | |
| %%
 | |
| %%     undefined control sequence \lst@commentmode with XML
 | |
| %%     (mode not defined any more)
 | |
| %%
 | |
| %%  3) Carsten Heinz, 2002/04/08, 1.0b
 | |
| %%
 | |
| %%     bad PODs (investigating bugs 1 and 2)
 | |
| %%     (definition doesn't use 1.0 style)
 | |
| %%
 | |
| %%  4) Peter Bartke, 2002/04/10, 1.0b
 | |
| %%
 | |
| %%     various problems with fancyvrb interface: string ".5" at beginning
 | |
| %%     of first line when using lineskip; ditto "perhaps a missing \item
 | |
| %%     error"; wrong placed characters , and - when using fancyvrb
 | |
| %%     (bad use of \strip@pt; TeX is not in vertical mode when leaving
 | |
| %%     Verbatim; bad `noligs' handling)
 | |
| %%
 | |
| %%  5) Rolf Niepraschk, 2002/04/12, 1.0b
 | |
| %%
 | |
| %%     \RequirePackage is missing keywordstyle when near the top of a page
 | |
| %%     (\lst@lastother not saved away across page breaks)
 | |
| %%
 | |
| %%  6) Peter Ruckdeschel, 2002/04/12, 1.0b
 | |
| %%     Timothy Van Zandt analyzed and fixed the bug
 | |
| %%
 | |
| %%     incompatibility with seminar class
 | |
| %%     (bad assignment of \lst@do@noligs in \lst@SelectCharTable)
 | |
| %%
 | |
| %%  7) Rene H. Larsen, 2002/04/12, 1.0b
 | |
| %%
 | |
| %%     \lstinputlistings and texcl conflict
 | |
| %%     (^^M not active to reenter modes)
 | |
| %%
 | |
| %%  8) Carsten Heinz, 2002/04/15, 1.0b (2002/04/15)
 | |
| %%
 | |
| %%     gobble doesn't always work (investigating problem with VTeX)
 | |
| %%     (\lst@BOLGobble@ must test against \lst@Process{FormFeed|Tabulator}X)
 | |
| %%
 | |
| %%  9) Peter Bartke, 2002/04/17, 1.0c
 | |
| %%
 | |
| %%     TeX capacity exceeded with fancyvrb
 | |
| %%     (\let\lst@entermodes\@empty must stay in \lstFV@VerbatimBegin)
 | |
| %%
 | |
| %% 10) Svend Tollak Munkejord, 2002/04/17, 1.0c
 | |
| %%     Heiko Oberdiek analyzed and fixed the bug
 | |
| %%
 | |
| %%     package incompatible with Lucida .fd files
 | |
| %%     (parentheses have active catcodes when reading the file)
 | |
| %%
 | |
| %% 11) Carsten Hamm, 2002/04/19, 1.0c (2002/04/24)
 | |
| %%
 | |
| %%     wrong frame rules with breaklines and xleftmargin>0pt
 | |
| %%     (missing \kern-\lst@xleftmargin in \lst@discretionary)
 | |
| %%
 | |
| %% 12) Michael Niedermair, 2002/05/14, 1.0d
 | |
| %%
 | |
| %%     backgroundcolor take effect on bottom captions
 | |
| %%     (wrong order of \everypar{} and \lsthk@ExitVars in \lst@DeInit)
 | |
| %%
 | |
| %% 13) Georg Rehm, 2002/05/14, 1.0d
 | |
| %%
 | |
| %%     bad baselineskip with captionpos=b
 | |
| %%     (missing \normalbaselines)
 | |
| %%
 | |
| %% 14) Herfried Karl Wagner, 2002/05/11, 1.0d
 | |
| %%
 | |
| %%     undefined control sequence \lst@entermodes
 | |
| %%     (\output called before first \lst@EnterMode)
 | |
| %%
 | |
| %% 15) Peter K\"oller, 2002/05/24, 1.0d
 | |
| %%
 | |
| %%     XML keywords don't have keywordstyle
 | |
| %%     (missing \ifx... in implementation of contentsstyle)
 | |
| %%
 | |
| %% 16) Stephen Reindl, 2002/05/28, 1.0d
 | |
| %%
 | |
| %%     \inaccessible using Cobol
 | |
| %%     (\lst@Delim@option didn't enclose option in [])
 | |
| %%
 | |
| %% 17) Stephen Reindl, 2002/06/04, 1.0d (2002/06/12)
 | |
| %%
 | |
| %%     frames not deactivated for text style listings
 | |
| %%
 | |
| %% 18) Carsten Heinz, 2002/07/27, 1.0e (2002/07/31)
 | |
| %%
 | |
| %%     broken keywordcomments
 | |
| %%     (\lst@KCpost inside group level 2; bad \lst@BeginComment call)
 | |
| %%
 | |
| %% 19) Kris Luyten, 2002/07/30, 1.0f (2002/08/03)
 | |
| %%
 | |
| %%     Undefined control sequence \lst@thestyle
 | |
| %%     (undefined \lst@directives after _loading_ C)
 | |
| %%
 | |
| %% 20) Kris Luyten, 2002/08/03, 1.0g (2002/08/06)
 | |
| %%
 | |
| %%     Undefined control sequence \lst@thestyle
 | |
| %%     (side effect of 19-bugfix on \lst@ProvideFamily)
 | |
| %%
 | |
| %% 21) Venkatesh Prasad Ranganath, 2002/08/31, 1.0h
 | |
| %%
 | |
| %%     Undefined control sequence \thelstnumber with 0.21-option
 | |
| %%     (\let must be changed to a \def inition)
 | |
| %%
 | |
| %% 22) Fermin Reig, 2002/09/04, 1.0h (2002/09/09)
 | |
| %%
 | |
| %%     Bad top frame inside figure+centering
 | |
| %%     (reset of leftskip, rightskip and parfillskip comes too late)
 | |
| %%
 | |
| %% 23) Hermann H\"uttler, 2002/10/05, 1.0i (2002/10/13)
 | |
| %%
 | |
| %%     C++-string "... \\" does not end with second double quote
 | |
| %%     (missing \let\lst@lastother\@empty in old fix)
 | |
| %%
 | |
| %%
 | |
| %% Moreover the following functionality is added.
 | |
| %%
 | |
| %%  a) option "final" (Rolf Niepraschk, Enrico Straube)
 | |
| %%
 | |
| %%  b) keys "fvcmdparams" and "morefvcmdparams" (Denis Girou)
 | |
| %%
 | |
| %%  c) key "contentstyle" (Peter K\"oller)
 | |
| %%
 | |
| %%  d) key "numberfirstline" (Georg Rehm)
 | |
| %%
 | |
| %%
 | |
| \ProvidesFile{lstpatch.sty}[2002/10/13 1.0i (Carsten Heinz)]
 | |
| \lst@CheckVersion{1.0}
 | |
| {\typeout{^^J%
 | |
|     ***^^J%
 | |
|     *** This is a patch for `listings.sty' version 1.0, but^^J%
 | |
|     *** you're using version \lst@version.^^J%
 | |
|     ***^^J
 | |
|     *** Patch file not loaded.^^J%
 | |
|     ***^^J}%
 | |
|     \endinput
 | |
| }
 | |
| %
 | |
| % 1) Define the missing control sequences. (Not needed any more.)
 | |
| \def\lstpatch@comments{%
 | |
|     \global\let\lst@CommentB\lst@DefDelimB
 | |
|     \global\let\lst@CommentE\lst@DefDelimE}
 | |
| %
 | |
| % 2) Define  \lst@commentmode.
 | |
| \lst@NewMode\lst@commentmode
 | |
| %
 | |
| % 3) Introduce \lst@ifxpodcomment as master-clause and define 1.0 style
 | |
| %    contents for SelectCharTable.
 | |
| \def\lstpatch@pod{%
 | |
| \lst@Key{podcomment}{false}[t]{\lstKV@SetIf{##1}\lst@ifxpodcomment}%
 | |
| \lst@AddToHookExe{SetLanguage}{\let\lst@ifxpodcomment\iffalse}%
 | |
| \lst@AddToHook{SelectCharTable}%
 | |
|     {\lst@ifxpodcomment
 | |
|          \lst@CArgX =\relax\lst@DefDelimB{}{}%
 | |
|            {\ifnum\@tempcnta=\z@
 | |
|                 \lst@ifprintpod\else
 | |
|                     \def\lst@bnext{\lst@BeginDropOutput\lst@PODmode}%
 | |
|                     \expandafter\expandafter\expandafter\@gobblethree
 | |
|                 \fi
 | |
|             \else
 | |
|                \expandafter\@gobblethree
 | |
|             \fi}%
 | |
|            \lst@BeginComment\lst@PODmode{{\lst@commentstyle}}% modified
 | |
|          \lst@CArgX =cut\^^M\relax\lst@DefDelimE
 | |
|            {\lst@CalcColumn}%
 | |
|            {\ifnum\@tempcnta=\z@\else
 | |
|                 \expandafter\@gobblethree
 | |
|             \fi}%
 | |
|            {}%
 | |
|            \lst@EndComment\lst@PODmode
 | |
| 	 \fi}%
 | |
| }
 | |
| %
 | |
| % 4) Redefine lineskip like podcomment above and don't use \strip@pt
 | |
| %    together with \divide.
 | |
| \def\lstpatch@lineshape{%
 | |
| \lst@Key{lineskip}{\z@}{\def\lst@xlineskip{##1\relax}}
 | |
| \lst@AddToHook{Init}
 | |
|     {\ifdim\z@=\lst@xlineskip\else
 | |
|          \@tempdima\baselineskip
 | |
|          \advance\@tempdima\lst@xlineskip
 | |
|          \multiply\@tempdima\@cclvi
 | |
|          \divide\@tempdima\baselineskip\relax
 | |
|          \multiply\@tempdima\@cclvi
 | |
|          \edef\baselinestretch{\strip@pt\@tempdima}%
 | |
|          \selectfont
 | |
|      \fi}%
 | |
| % 11) Add \kern-\lst@xleftmargin.
 | |
| \gdef\lst@discretionary{%
 | |
|     \discretionary{\let\space\lst@spacekern\lst@prebreak}%
 | |
|                   {\llap{\lsthk@EveryLine
 | |
|                    \kern\lst@breakcurrindent\kern-\lst@xleftmargin}%
 | |
|                    \let\space\lst@spacekern\lst@postbreak}{}}%
 | |
| }
 | |
| % Back to 4): Insert \par for vertical mode.
 | |
| \def\lstpatch@fancyvrb{%
 | |
| \gdef\lstFV@VerbatimEnd{%
 | |
|     \ifx\FancyVerbFormatLine\lstFV@FancyVerbFormatLine
 | |
|         \global\setbox\lstFV@gtempboxa\box\@tempboxa
 | |
|         \global\let\@gtempa\FV@ProcessLine
 | |
|         \lst@mode\lst@Pmode
 | |
|         \lst@DeInit
 | |
|         \let\FV@ProcessLine\@gtempa
 | |
|         \setbox\@tempboxa\box\lstFV@gtempboxa
 | |
|         \par % modified
 | |
|     \fi}%
 | |
| % 9) Redefined \lstFV@VerbatimBegin removed.
 | |
| % b) Refine conversion definitions to either work as usual or to ...
 | |
| \gdef\lst@FVConvert{\@tempcnta\z@ \lst@FVConvertO@}%
 | |
| \gdef\lst@FVConvertO@{%
 | |
|     \ifcase\@tempcnta \expandafter
 | |
|         \futurelet\expandafter\@let@token\expandafter\lst@FVConvert@@
 | |
|     \else
 | |
| % append arguments as they are.
 | |
|         \expandafter\lst@FVConvertO@a
 | |
|     \fi}%
 | |
| \gdef\lst@FVConvertO@a##1{%
 | |
|     \lst@lAddTo\lst@arg{{##1}}\advance\@tempcnta\m@ne
 | |
|     \lst@FVConvertO@}%
 | |
| % Here, ...
 | |
| \gdef\lst@FVConvert@##1{%
 | |
|     \ifx \@nil##1\else
 | |
|        \if\relax\noexpand##1%
 | |
|           \lst@lAddTo\lst@arg{\lst@OutputLostSpace\lst@PrintToken##1}%
 | |
| % ... actually here, we check for commands with arguments and set the
 | |
| % value of \@tempcnta as required.
 | |
|           \def\lst@temp####1,##1####2,####3####4\relax{%
 | |
|               \ifx####3\@empty \else \@tempcnta####2\relax \fi}%
 | |
|           \expandafter\lst@temp\lst@FVcmdparams,##1\z@,\@empty\relax
 | |
|        \else
 | |
|           \lccode`\~=`##1\lowercase{\lst@lAddTo\lst@arg~}%
 | |
|        \fi
 | |
|        \expandafter\lst@FVConvertO@
 | |
|     \fi}
 | |
| % Eventually we define user keys to adjust \lst@FVcmdparams. The base
 | |
| % set of commands and parameter numbers was provided by Denis Girou.
 | |
| \lst@Key{fvcmdparams}%
 | |
| % D.G. suggestion begin - 2002/05/31
 | |
|     {\overlay\@ne}%
 | |
| % D.G. suggestion end
 | |
|     {\def\lst@FVcmdparams{,##1}}%
 | |
| \lst@Key{morefvcmdparams}\relax{\lst@lAddTo\lst@FVcmdparams{,##1}}%
 | |
| }
 | |
| %
 | |
| % 5) Extend \lst@SaveToken to save \lst@lastother.
 | |
| \def\lst@SaveToken{%
 | |
|     \global\let\lst@gthestyle\lst@thestyle
 | |
|     \global\let\lst@glastother\lst@lastother
 | |
|     \xdef\lst@RestoreToken{\noexpand\lst@token{\the\lst@token}%
 | |
|                            \noexpand\lst@length\the\lst@length\relax
 | |
|                            \noexpand\let\noexpand\lst@thestyle
 | |
|                                         \noexpand\lst@gthestyle
 | |
|                            \noexpand\let\noexpand\lst@lastother
 | |
|                                         \noexpand\lst@glastother}%
 | |
| }
 | |
| %
 | |
| % 6) Assign \lst@do@noligs to \do.
 | |
| \def\lst@SelectCharTable{%
 | |
|     \lst@SelectStdCharTable
 | |
|     \lst@ifactivechars
 | |
|         \catcode9\active \catcode12\active \catcode13\active
 | |
|         \@tempcnta=32\relax
 | |
|         \@whilenum\@tempcnta<128\do
 | |
|             {\catcode\@tempcnta\active\advance\@tempcnta\@ne}%
 | |
|     \fi
 | |
|     \lst@ifec \lst@DefEC \fi
 | |
|     \let\do\lst@do@noligs \verbatim@nolig@list % modified
 | |
|     \lsthk@SelectCharTable
 | |
|     \lst@DeveloperSCT
 | |
|     \ifx\lst@Backslash\relax\else
 | |
|         \lst@LetSaveDef{"5C}\lsts@backslash\lst@Backslash
 | |
|     \fi}
 | |
| % 4)+6) And we need correct versions of \lst@do@noligs[@].
 | |
| \def\lst@do@noligs#1{%
 | |
|     \begingroup \lccode`\~=`#1\lowercase{\endgroup
 | |
|     \lst@do@noligs@~}}
 | |
| \def\lst@do@noligs@#1{%
 | |
|     \expandafter\expandafter\expandafter\def
 | |
|     \expandafter\expandafter\expandafter#1%
 | |
|     \expandafter\expandafter\expandafter{\expandafter\lst@NoLig#1}}
 | |
| %
 | |
| % 7) Make ^^M active.
 | |
| \def\lst@InputListing#1{%
 | |
|     \begingroup
 | |
|       \lsthk@PreSet \gdef\lst@intname{#1}%
 | |
|       \expandafter\lstset\expandafter{\lst@set}%
 | |
|       \lsthk@DisplayStyle
 | |
|       \catcode\active=\active % added
 | |
|       \lst@Init\relax \let\lst@gobble\z@
 | |
|       \lst@SkipToFirst
 | |
|       \lst@ifprint \def\lst@next{\input{#1}}%
 | |
|              \else \let\lst@next\@empty \fi
 | |
|       \lst@next
 | |
|       \lst@DeInit
 | |
|     \endgroup}
 | |
| %
 | |
| % 8) Replace \lst@Process{FormFeed|Tabulator}.
 | |
| \def\lst@ProcessFormFeedX{\lst@ProcessFormFeed}
 | |
| \def\lst@ProcessTabulatorX{\lst@ProcessTabulator}
 | |
| \def\lst@BOLGobble@#1{%
 | |
|     \let\lst@next#1%
 | |
|     \ifx \lst@next\relax\else
 | |
|     \ifx \lst@next\lst@MProcessListing\else
 | |
|     \ifx \lst@next\lst@ProcessFormFeedX\else
 | |
|     \ifx \lst@next\lstenv@backslash
 | |
|         \let\lst@next\lstenv@BOLGobble@@
 | |
|     \else
 | |
|         \let\lst@next\lst@BOLGobble@@
 | |
|         \ifx #1\lst@ProcessTabulatorX
 | |
|             \advance\@tempcnta-\lst@tabsize\relax
 | |
|             \ifnum\@tempcnta<\z@
 | |
|                 \lst@length-\@tempcnta \lst@PreGotoTabStop
 | |
|             \fi
 | |
|         \else
 | |
|             \advance\@tempcnta\m@ne
 | |
|         \fi
 | |
|     \fi \fi \fi \fi
 | |
|     \lst@next}
 | |
| %
 | |
| % 10) Add some \@makeother to \lst@nfss@catcodes.
 | |
| \def\lst@nfss@catcodes{%
 | |
|     \lst@makeletter
 | |
|         ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\relax
 | |
|     \@makeother (\@makeother )\@makeother ,\@makeother :\@makeother &%
 | |
|     \@makeother 0\@makeother 1\@makeother 2\@makeother 3\@makeother 4%
 | |
|     \@makeother 5\@makeother 6\@makeother 7\@makeother 8\@makeother 9%
 | |
|     \@makeother =\lsts@nfss@catcodes}
 | |
| %
 | |
| % 12) and 13) Deactivate \everypar and use normal baseline parameters.
 | |
| \lst@AddToHook{DeInit}{\everypar{}\normalbaselines}
 | |
| %
 | |
| % 14) Define \lst@entermodes.
 | |
| \let\lst@entermodes\@empty
 | |
| %
 | |
| % 16) Insert [ and ] in replacement text.
 | |
| \def\lst@Delim@option[#1]{\def\lst@arg{[#1]}\lst@Delim@delim}
 | |
| %
 | |
| % 17) Just empty `frame' and top, right, bottom, and left shape.
 | |
| \lst@AddToHook{TextStyle}
 | |
|    {\let\lst@frame\@empty
 | |
|     \let\lst@frametshape\@empty
 | |
|     \let\lst@framershape\@empty
 | |
|     \let\lst@framebshape\@empty
 | |
|     \let\lst@framelshape\@empty}
 | |
| %
 | |
| % 18) Execute \lst@BeginKC and \lst@BeginKCS outside the two groups.
 | |
| %     Modify third argument to \lst@BeginComment to work properly.
 | |
| \def\lstpatch@keywordcomments{%
 | |
| \gdef\lst@BeginKC{\aftergroup\aftergroup\aftergroup\lst@BeginKC@}%
 | |
| \gdef\lst@BeginKC@{%
 | |
|     \lst@ResetToken
 | |
|     \lst@BeginComment\lst@KCmode{{\lst@commentstyle}\lst@modetrue}\@empty}%
 | |
| \gdef\lst@BeginKCS{\aftergroup\aftergroup\aftergroup\lst@BeginKCS@}%
 | |
| \gdef\lst@BeginKCS@{%
 | |
|     \lst@ResetToken
 | |
|     \lst@BeginComment\lst@KCSmode{{\lst@commentstyle}\lst@modetrue}\@empty}%
 | |
| \gdef\lst@EndKC{\lst@SaveToken \lst@LeaveMode \lst@RestoreToken
 | |
|     \let\lst@thestyle\lst@identifierstyle \lsthk@Output}% renew style selection
 | |
| }
 | |
| %
 | |
| % 19) Init \lst@directives.
 | |
| \def\lstpatch@directives{%
 | |
|     \global\let\lst@directives\@empty}
 | |
| %
 | |
| % 20) Use new prefix for a family -- the now initialized \lst@directives
 | |
| %     clashes with the default.
 | |
| \def\lstpatch@keywords{%
 | |
| \gdef\lst@ProvideFamily##1{%
 | |
|     \@ifundefined{lstfam@##1\ifnum\@tempcnta=\@ne\else \the\@tempcnta \fi}%
 | |
|     {\@namedef{lstfam@##1\ifnum\@tempcnta=\@ne\else \the\@tempcnta \fi}{}%
 | |
|      \expandafter\expandafter\expandafter\lst@ProvideFamily@
 | |
|          \csname\@lst @##1@data\endcsname
 | |
|          {\ifnum\@tempcnta=\@ne\else \the\@tempcnta \fi}}%
 | |
|     {}}%
 | |
| }
 | |
| % 21) Define \thelstnumber every listing via \def.
 | |
| \@namedef{lstpatch@021}{%
 | |
|     \lst@AddToHook{Init}{\def\thelstnumber{\thelstlabel}}%
 | |
| }
 | |
| % 22) Reset the registers in PreInit hook
 | |
| \lst@AddToHook{PreInit}
 | |
|   {\rightskip\z@ \leftskip\z@ \parfillskip\z@ plus 1fil}
 | |
| %
 | |
| % 23) Add \let\lst@lastother\@empty
 | |
| \lst@AddToHook{SelectCharTable}{%
 | |
|     \lst@ifbstring
 | |
|         \lst@CArgX \\\\\relax \lst@CDefX{}%
 | |
|            {\lst@ProcessOther\lstum@backslash
 | |
|             \lst@ProcessOther\lstum@backslash
 | |
|             \let\lst@lastother\@empty}%
 | |
|            {}%
 | |
|     \fi}
 | |
| %
 | |
| % a) Just declare the option.
 | |
| \DeclareOption{final}{\let\lst@ifdraft\iffalse}
 | |
| %
 | |
| % c) Define contentstyle and use it.
 | |
| \def\lstpatch@html{%
 | |
| \lst@Key{contentstyle}{}{\def\lst@contentstyle{##1}}%
 | |
| \lst@AddToHook{Init}%
 | |
|     {\ifx\lst@DefInside\@empty\else
 | |
|          \let\lst@tagstyle\lst@identifierstyle
 | |
|          \let\lst@identifierstyle\lst@contentstyle
 | |
|      \fi}%
 | |
| \lst@AddToHook{Output}%
 | |
|     {\ifnum\lst@mode=\lst@insidemode
 | |
| % 15) Check for keywordstyle.
 | |
|      \ifx\lst@thestyle\lst@gkeywords@sty\else
 | |
|          \lst@ifusekeysinside \let\lst@thestyle\lst@tagstyle
 | |
|                    \else \let\lst@thestyle\lst@gkeywords@sty \fi
 | |
|      \fi\fi}%
 | |
| \lst@AddToHook{OutputOther}%
 | |
|     {\lst@ifmode\else \ifnum\lst@mode=\lst@insidemode\else
 | |
|      \ifx\lst@DefInside\@empty\else
 | |
|          \let\lst@thestyle\lst@contentstyle
 | |
|      \fi
 | |
|      \fi\fi}%
 | |
| }
 | |
| %
 | |
| % d) Define key and adjust \lst@SkipOrPrintLabel.
 | |
| \def\lstpatch@labels{%
 | |
| \lst@Key{numberfirstline}{f}[t]{\lstKV@SetIf{##1}\lst@ifnumberfirstline}%
 | |
| \gdef\lst@numberfirstlinefalse{\let\lst@ifnumberfirstline\iffalse}
 | |
| \gdef\lst@SkipOrPrintLabel{%
 | |
|     \ifnum\lst@skipnumbers=\z@
 | |
|         \global\advance\lst@skipnumbers-\lst@stepnumber\relax
 | |
|         \lst@PlaceNumber
 | |
|         \lst@numberfirstlinefalse
 | |
|     \else
 | |
|         \lst@ifnumberfirstline
 | |
|             \lst@PlaceNumber
 | |
|             \lst@numberfirstlinefalse
 | |
|         \fi
 | |
|     \fi
 | |
|     \global\advance\lst@skipnumbers\@ne}%
 | |
| }
 | |
| %%
 | |
| \endinput
 | |
| %%
 | |
| %% End of file `lstpatch.sty'. | 
