| [9724df0] | 1 | %%
 | 
|---|
 | 2 | %% This is file `lstmisc.sty',
 | 
|---|
 | 3 | %% generated with the docstrip utility.
 | 
|---|
 | 4 | %%
 | 
|---|
 | 5 | %% The original source files were:
 | 
|---|
 | 6 | %%
 | 
|---|
 | 7 | %% listings.dtx  (with options: `misc,0.21')
 | 
|---|
 | 8 | %% 
 | 
|---|
 | 9 | %% Please read the software license in listings-1.3.dtx or listings-1.3.pdf.
 | 
|---|
 | 10 | %%
 | 
|---|
 | 11 | %% (w)(c) 1996--2004 Carsten Heinz and/or any other author listed
 | 
|---|
 | 12 | %% elsewhere in this file.
 | 
|---|
 | 13 | %% (c) 2006 Brooks Moses
 | 
|---|
 | 14 | %% (c) 2013- Jobst Hoffmann
 | 
|---|
 | 15 | %%
 | 
|---|
 | 16 | %% Send comments and ideas on the package, error reports and additional
 | 
|---|
 | 17 | %% programming languages to Jobst Hoffmann at <j.hoffmann@fh-aachen.de>.
 | 
|---|
 | 18 | %%
 | 
|---|
 | 19 | \def\filedate{2015/06/04}
 | 
|---|
 | 20 | \def\fileversion{1.6}
 | 
|---|
 | 21 | \ProvidesFile{lstmisc.sty}
 | 
|---|
 | 22 |              [\filedate\space\fileversion\space(Carsten Heinz)]
 | 
|---|
 | 23 | \lst@CheckVersion\fileversion
 | 
|---|
 | 24 |     {\typeout{^^J%
 | 
|---|
 | 25 |      ***^^J%
 | 
|---|
 | 26 |      *** This file requires `listings.sty' version \fileversion.^^J%
 | 
|---|
 | 27 |      *** You have a serious problem, so I'm exiting ...^^J%
 | 
|---|
 | 28 |      ***^^J}%
 | 
|---|
 | 29 |      \batchmode \@@end}
 | 
|---|
 | 30 | \lst@BeginAspect{writefile}
 | 
|---|
 | 31 | \newtoks\lst@WFtoken % global
 | 
|---|
 | 32 | \lst@AddToHook{InitVarsBOL}{\global\lst@WFtoken{}}
 | 
|---|
 | 33 | \newwrite\lst@WF
 | 
|---|
 | 34 | \global\let\lst@WFifopen\iffalse % init
 | 
|---|
 | 35 | \gdef\lst@WFWriteToFile{%
 | 
|---|
 | 36 |   \begingroup
 | 
|---|
 | 37 |    \let\lst@UM\@empty
 | 
|---|
 | 38 |    \expandafter\edef\expandafter\lst@temp\expandafter{\the\lst@WFtoken}%
 | 
|---|
 | 39 |    \immediate\write\lst@WF{\lst@temp}%
 | 
|---|
 | 40 |   \endgroup
 | 
|---|
 | 41 |   \global\lst@WFtoken{}}
 | 
|---|
 | 42 | \gdef\lst@WFAppend#1{%
 | 
|---|
 | 43 |     \global\lst@WFtoken=\expandafter{\the\lst@WFtoken#1}}
 | 
|---|
 | 44 | \gdef\lst@BeginWriteFile{\lst@WFBegin\@gobble}
 | 
|---|
 | 45 | \gdef\lst@BeginAlsoWriteFile{\lst@WFBegin\lst@OutputBox}
 | 
|---|
 | 46 | \begingroup \catcode`\^^I=11
 | 
|---|
 | 47 | \gdef\lst@WFBegin#1#2{%
 | 
|---|
 | 48 |     \begingroup
 | 
|---|
 | 49 |     \let\lst@OutputBox#1%
 | 
|---|
 | 50 |     \def\lst@Append##1{%
 | 
|---|
 | 51 |         \advance\lst@length\@ne
 | 
|---|
 | 52 |         \expandafter\lst@token\expandafter{\the\lst@token##1}%
 | 
|---|
 | 53 |         \ifx ##1\lst@outputspace \else
 | 
|---|
 | 54 |             \lst@WFAppend##1%
 | 
|---|
 | 55 |         \fi}%
 | 
|---|
 | 56 |     \lst@lAddTo\lst@PreGotoTabStop{\lst@WFAppend{^^I}}%
 | 
|---|
 | 57 |     \lst@lAddTo\lst@ProcessSpace{\lst@WFAppend{ }}%
 | 
|---|
 | 58 |     \let\lst@DeInit\lst@WFDeInit
 | 
|---|
 | 59 |     \let\lst@MProcessListing\lst@WFMProcessListing
 | 
|---|
 | 60 |     \lst@WFifopen\else
 | 
|---|
 | 61 |         \immediate\openout\lst@WF=#2\relax
 | 
|---|
 | 62 |         \global\let\lst@WFifopen\iftrue
 | 
|---|
 | 63 |         \@gobbletwo\fi\fi
 | 
|---|
 | 64 |     \fi}
 | 
|---|
 | 65 | \endgroup
 | 
|---|
 | 66 | \gdef\lst@EndWriteFile{%
 | 
|---|
 | 67 |     \immediate\closeout\lst@WF \endgroup
 | 
|---|
 | 68 |     \global\let\lst@WFifopen\iffalse}
 | 
|---|
 | 69 | \global\let\lst@WFMProcessListing\lst@MProcessListing
 | 
|---|
 | 70 | \global\let\lst@WFDeInit\lst@DeInit
 | 
|---|
 | 71 | \lst@AddToAtTop\lst@WFMProcessListing{\lst@WFWriteToFile}
 | 
|---|
 | 72 | \lst@AddToAtTop\lst@WFDeInit{%
 | 
|---|
 | 73 |     \ifnum\lst@length=\z@\else \lst@WFWriteToFile \fi}
 | 
|---|
 | 74 | \lst@EndAspect
 | 
|---|
 | 75 | \lst@BeginAspect{strings}
 | 
|---|
 | 76 | \gdef\lst@stringtypes{d,b,m,bd,db,s}
 | 
|---|
 | 77 | \gdef\lst@StringKey#1#2{%
 | 
|---|
 | 78 |     \lst@Delim\lst@stringstyle #2\relax
 | 
|---|
 | 79 |         {String}\lst@stringtypes #1%
 | 
|---|
 | 80 |                      {\lst@BeginString\lst@EndString}%
 | 
|---|
 | 81 |         \@@end\@empty{}}
 | 
|---|
 | 82 | \lst@Key{string}\relax{\lst@StringKey\@empty{#1}}
 | 
|---|
 | 83 | \lst@Key{morestring}\relax{\lst@StringKey\relax{#1}}
 | 
|---|
 | 84 | \lst@Key{deletestring}\relax{\lst@StringKey\@nil{#1}}
 | 
|---|
 | 85 | \lst@Key{stringstyle}{}{\def\lst@stringstyle{#1}}
 | 
|---|
 | 86 | \lst@AddToHook{EmptyStyle}{\let\lst@stringstyle\@empty}
 | 
|---|
 | 87 | \lst@Key{showstringspaces}t[t]{\lstKV@SetIf{#1}\lst@ifshowstringspaces}
 | 
|---|
 | 88 | \gdef\lst@BeginString{%
 | 
|---|
 | 89 |     \lst@DelimOpen
 | 
|---|
 | 90 |         \lst@ifexstrings\else
 | 
|---|
 | 91 |         {\lst@ifshowstringspaces
 | 
|---|
 | 92 |              \lst@keepspacestrue
 | 
|---|
 | 93 |              \let\lst@outputspace\lst@visiblespace
 | 
|---|
 | 94 |          \fi}}
 | 
|---|
 | 95 | \lst@AddToHookExe{ExcludeDelims}{\let\lst@ifexstrings\iffalse}
 | 
|---|
 | 96 | \gdef\lst@EndString{\lst@DelimClose\lst@ifexstrings\else}
 | 
|---|
 | 97 | \gdef\lst@StringDM@d#1#2\@empty#3#4#5{%
 | 
|---|
 | 98 |     \lst@CArg #2\relax\lst@DefDelimBE{}{}{}#3{#1}{#5}#4}
 | 
|---|
 | 99 | \gdef\lst@StringDM@b#1#2\@empty#3#4#5{%
 | 
|---|
 | 100 |     \let\lst@ifbstring\iftrue
 | 
|---|
 | 101 |     \lst@CArg #2\relax\lst@DefDelimBE
 | 
|---|
 | 102 |        {\lst@ifletter \lst@Output \lst@letterfalse \fi}%
 | 
|---|
 | 103 |        {\ifx\lst@lastother\lstum@backslash
 | 
|---|
 | 104 |             \expandafter\@gobblethree
 | 
|---|
 | 105 |         \fi}{}#3{#1}{#5}#4}
 | 
|---|
 | 106 | \global\let\lst@ifbstring\iffalse % init
 | 
|---|
 | 107 | \lst@AddToHook{SelectCharTable}{%
 | 
|---|
 | 108 |     \lst@ifbstring
 | 
|---|
 | 109 |         \lst@CArgX \\\\\relax \lst@CDefX{}%
 | 
|---|
 | 110 |            {\lst@ProcessOther\lstum@backslash
 | 
|---|
 | 111 |             \lst@ProcessOther\lstum@backslash
 | 
|---|
 | 112 |             \let\lst@lastother\relax}%
 | 
|---|
 | 113 |            {}%
 | 
|---|
 | 114 |     \fi}
 | 
|---|
 | 115 | \global\let\lst@StringDM@bd\lst@StringDM@b
 | 
|---|
 | 116 | \global\let\lst@StringDM@db\lst@StringDM@bd
 | 
|---|
 | 117 | \gdef\lst@StringDM@m#1#2\@empty#3#4#5{%
 | 
|---|
 | 118 |     \lst@CArg #2\relax\lst@DefDelimBE{}{}%
 | 
|---|
 | 119 |         {\let\lst@next\@gobblethree
 | 
|---|
 | 120 |          \lst@ifletter\else
 | 
|---|
 | 121 |              \lst@IfLastOtherOneOf{)].0123456789\lstum@rbrace'}%
 | 
|---|
 | 122 |                  {}%
 | 
|---|
 | 123 |                  {\let\lst@next\@empty}%
 | 
|---|
 | 124 |          \fi
 | 
|---|
 | 125 |          \lst@next}#3{#1}{#5}#4}
 | 
|---|
 | 126 | \gdef\lst@StringDM@s#1#2#3\@empty#4#5#6{%
 | 
|---|
 | 127 |     \lst@CArg #2\relax\lst@DefDelimB{}{}{}#4{#1}{#6}%
 | 
|---|
 | 128 |     \lst@CArg #3\relax\lst@DefDelimE{}{}{}#5{#1}}
 | 
|---|
 | 129 | \lst@SaveOutputDef{"7D}\lstum@rbrace
 | 
|---|
 | 130 | \lst@EndAspect
 | 
|---|
 | 131 | \lst@BeginAspect{mf}
 | 
|---|
 | 132 | \lst@AddTo\lst@stringtypes{,mf}
 | 
|---|
 | 133 | \lst@NewMode\lst@mfinputmode
 | 
|---|
 | 134 | \gdef\lst@String@mf#1\@empty#2#3#4{%
 | 
|---|
 | 135 |   \lst@CArg #1\relax\lst@DefDelimB
 | 
|---|
 | 136 |        {}{}{\lst@ifletter \expandafter\@gobblethree \fi}%
 | 
|---|
 | 137 |        \lst@BeginStringMFinput\lst@mfinputmode{#4\lst@Lmodetrue}%
 | 
|---|
 | 138 |   \@ifundefined{lsts@semicolon}%
 | 
|---|
 | 139 |   {\lst@DefSaveDef{`\;}\lsts@semicolon{% ; and space end the filename
 | 
|---|
 | 140 |       \ifnum\lst@mode=\lst@mfinputmode
 | 
|---|
 | 141 |           \lst@XPrintToken
 | 
|---|
 | 142 |           \expandafter\lst@LeaveMode
 | 
|---|
 | 143 |       \fi
 | 
|---|
 | 144 |       \lsts@semicolon}%
 | 
|---|
 | 145 |    \lst@DefSaveDef{`\ }\lsts@space{%
 | 
|---|
 | 146 |       \ifnum\lst@mode=\lst@mfinputmode
 | 
|---|
 | 147 |           \lst@XPrintToken
 | 
|---|
 | 148 |           \expandafter\lst@LeaveMode
 | 
|---|
 | 149 |       \fi
 | 
|---|
 | 150 |       \lsts@space}%
 | 
|---|
 | 151 |   }{}}
 | 
|---|
 | 152 | \gdef\lst@BeginStringMFinput#1#2#3\@empty{%
 | 
|---|
 | 153 |     \lst@TrackNewLines \lst@XPrintToken
 | 
|---|
 | 154 |       \begingroup
 | 
|---|
 | 155 |         \lst@mode\lst@nomode
 | 
|---|
 | 156 |         #3\lst@XPrintToken
 | 
|---|
 | 157 |       \endgroup
 | 
|---|
 | 158 |       \lst@ResetToken
 | 
|---|
 | 159 |     \lst@EnterMode{#1}{\def\lst@currstyle#2}%
 | 
|---|
 | 160 |     \lst@ifshowstringspaces
 | 
|---|
 | 161 |          \lst@keepspacestrue
 | 
|---|
 | 162 |          \let\lst@outputspace\lst@visiblespace
 | 
|---|
 | 163 |     \fi}
 | 
|---|
 | 164 | \lst@EndAspect
 | 
|---|
 | 165 | \lst@BeginAspect{comments}
 | 
|---|
 | 166 | \lst@NewMode\lst@commentmode
 | 
|---|
 | 167 | \gdef\lst@commenttypes{l,f,s,n}
 | 
|---|
 | 168 | \gdef\lst@CommentKey#1#2{%
 | 
|---|
 | 169 |     \lst@Delim\lst@commentstyle #2\relax
 | 
|---|
 | 170 |         {Comment}\lst@commenttypes #1%
 | 
|---|
 | 171 |                 {\lst@BeginComment\lst@EndComment}%
 | 
|---|
 | 172 |         i\@empty{\lst@BeginInvisible\lst@EndInvisible}}
 | 
|---|
 | 173 | \lst@Key{comment}\relax{\lst@CommentKey\@empty{#1}}
 | 
|---|
 | 174 | \lst@Key{morecomment}\relax{\lst@CommentKey\relax{#1}}
 | 
|---|
 | 175 | \lst@Key{deletecomment}\relax{\lst@CommentKey\@nil{#1}}
 | 
|---|
 | 176 | \lst@Key{commentstyle}{}{\def\lst@commentstyle{#1}}
 | 
|---|
 | 177 | \lst@AddToHook{EmptyStyle}{\let\lst@commentstyle\itshape}
 | 
|---|
 | 178 | \gdef\lst@BeginComment{%
 | 
|---|
 | 179 |     \lst@DelimOpen
 | 
|---|
 | 180 |         \lst@ifexcomments\else
 | 
|---|
 | 181 |         \lsthk@AfterBeginComment}
 | 
|---|
 | 182 | \gdef\lst@EndComment{\lst@DelimClose\lst@ifexcomments\else}
 | 
|---|
 | 183 | \lst@AddToHook{AfterBeginComment}{}
 | 
|---|
 | 184 | \lst@AddToHookExe{ExcludeDelims}{\let\lst@ifexcomments\iffalse}
 | 
|---|
 | 185 | \gdef\lst@BeginInvisible#1#2#3\@empty{%
 | 
|---|
 | 186 |     \lst@TrackNewLines \lst@XPrintToken
 | 
|---|
 | 187 |     \lst@BeginDropOutput{#1}}
 | 
|---|
 | 188 | \gdef\lst@EndInvisible#1\@empty{\lst@EndDropOutput}
 | 
|---|
 | 189 | \gdef\lst@CommentDM@l#1#2\@empty#3#4#5{%
 | 
|---|
 | 190 |     \lst@CArg #2\relax\lst@DefDelimB{}{}{}#3{#1}{#5\lst@Lmodetrue}}
 | 
|---|
 | 191 | \gdef\lst@CommentDM@f#1{%
 | 
|---|
 | 192 |     \@ifnextchar[{\lst@Comment@@f{#1}}%
 | 
|---|
 | 193 |                  {\lst@Comment@@f{#1}[0]}}
 | 
|---|
 | 194 | \gdef\lst@Comment@@f#1[#2]#3\@empty#4#5#6{%
 | 
|---|
 | 195 |     \lst@CArg #3\relax\lst@DefDelimB{}{}%
 | 
|---|
 | 196 |         {\lst@CalcColumn
 | 
|---|
 | 197 |          \ifnum #2=\@tempcnta\else
 | 
|---|
 | 198 |              \expandafter\@gobblethree
 | 
|---|
 | 199 |          \fi}%
 | 
|---|
 | 200 |         #4{#1}{#6\lst@Lmodetrue}}
 | 
|---|
 | 201 | \gdef\lst@CommentDM@s#1#2#3\@empty#4#5#6{%
 | 
|---|
 | 202 |     \lst@CArg #2\relax\lst@DefDelimB{}{}{}#4{#1}{#6}%
 | 
|---|
 | 203 |     \lst@CArg #3\relax\lst@DefDelimE{}{}{}#5{#1}}
 | 
|---|
 | 204 | \gdef\lst@CommentDM@n#1#2#3\@empty#4#5#6{%
 | 
|---|
 | 205 |     \ifx\@empty#3\@empty\else
 | 
|---|
 | 206 |         \def\@tempa{#2}\def\@tempb{#3}%
 | 
|---|
 | 207 |         \ifx\@tempa\@tempb
 | 
|---|
 | 208 |             \PackageError{Listings}{Identical delimiters}%
 | 
|---|
 | 209 |             {These delimiters make no sense with nested comments.}%
 | 
|---|
 | 210 |         \else
 | 
|---|
 | 211 |             \lst@CArg #2\relax\lst@DefDelimB
 | 
|---|
 | 212 |                 {}%
 | 
|---|
 | 213 |                 {\ifnum\lst@mode=#1\relax \expandafter\@gobble \fi}%
 | 
|---|
 | 214 |                 {}#4{#1}{#6}%
 | 
|---|
 | 215 |             \lst@CArg #3\relax\lst@DefDelimE{}{}{}#5{#1}%
 | 
|---|
 | 216 |         \fi
 | 
|---|
 | 217 |     \fi}
 | 
|---|
 | 218 | \lst@EndAspect
 | 
|---|
 | 219 | \lst@BeginAspect{pod}
 | 
|---|
 | 220 | \lst@Key{printpod}{false}[t]{\lstKV@SetIf{#1}\lst@ifprintpod}
 | 
|---|
 | 221 | \lst@Key{podcomment}{false}[t]{\lstKV@SetIf{#1}\lst@ifpodcomment}
 | 
|---|
 | 222 | \lst@AddToHookExe{SetLanguage}{\let\lst@ifpodcomment\iffalse}
 | 
|---|
 | 223 | \lst@NewMode\lst@PODmode
 | 
|---|
 | 224 | \lst@AddToHook{SelectCharTable}
 | 
|---|
 | 225 |     {\lst@ifpodcomment
 | 
|---|
 | 226 |          \lst@CArgX =\relax\lst@DefDelimB{}{}%
 | 
|---|
 | 227 |            {\ifnum\@tempcnta=\z@
 | 
|---|
 | 228 |                 \lst@ifprintpod\else
 | 
|---|
 | 229 |                     \def\lst@bnext{\lst@BeginDropOutput\lst@PODmode}%
 | 
|---|
 | 230 |                     \expandafter\expandafter\expandafter\@gobblethree
 | 
|---|
 | 231 |                 \fi
 | 
|---|
 | 232 |             \else
 | 
|---|
 | 233 |                \expandafter\@gobblethree
 | 
|---|
 | 234 |             \fi}%
 | 
|---|
 | 235 |            \lst@BeginComment\lst@PODmode{{\lst@commentstyle}}%
 | 
|---|
 | 236 |          \lst@CArgX =cut\^^M\relax\lst@DefDelimE
 | 
|---|
 | 237 |            {\lst@CalcColumn}%
 | 
|---|
 | 238 |            {\ifnum\@tempcnta=\z@\else
 | 
|---|
 | 239 |                 \expandafter\@gobblethree
 | 
|---|
 | 240 |             \fi}%
 | 
|---|
 | 241 |            {}%
 | 
|---|
 | 242 |            \lst@EndComment\lst@PODmode
 | 
|---|
 | 243 |      \fi}
 | 
|---|
 | 244 | \lst@EndAspect
 | 
|---|
 | 245 | \lst@BeginAspect[keywords]{html}
 | 
|---|
 | 246 | \gdef\lst@tagtypes{s}
 | 
|---|
 | 247 | \gdef\lst@TagKey#1#2{%
 | 
|---|
 | 248 |     \lst@Delim\lst@tagstyle #2\relax
 | 
|---|
 | 249 |         {Tag}\lst@tagtypes #1%
 | 
|---|
 | 250 |                      {\lst@BeginTag\lst@EndTag}%
 | 
|---|
 | 251 |         \@@end\@empty{}}
 | 
|---|
 | 252 | \lst@Key{tag}\relax{\lst@TagKey\@empty{#1}}
 | 
|---|
 | 253 | \lst@Key{tagstyle}{}{\def\lst@tagstyle{#1}}
 | 
|---|
 | 254 | \lst@AddToHook{EmptyStyle}{\let\lst@tagstyle\@empty}
 | 
|---|
 | 255 | \gdef\lst@BeginTag{%
 | 
|---|
 | 256 |     \lst@DelimOpen
 | 
|---|
 | 257 |         \lst@ifextags\else
 | 
|---|
 | 258 |         {\let\lst@ifkeywords\iftrue
 | 
|---|
 | 259 |          \lst@ifmarkfirstintag \lst@firstintagtrue \fi}}
 | 
|---|
 | 260 | \lst@AddToHookExe{ExcludeDelims}{\let\lst@ifextags\iffalse}
 | 
|---|
 | 261 | \gdef\lst@EndTag{\lst@DelimClose\lst@ifextags\else}
 | 
|---|
 | 262 | \lst@Key{usekeywordsintag}t[t]{\lstKV@SetIf{#1}\lst@ifusekeysintag}
 | 
|---|
 | 263 | \lst@Key{markfirstintag}f[t]{\lstKV@SetIf{#1}\lst@ifmarkfirstintag}
 | 
|---|
 | 264 | \gdef\lst@firstintagtrue{\global\let\lst@iffirstintag\iftrue}
 | 
|---|
 | 265 | \global\let\lst@iffirstintag\iffalse
 | 
|---|
 | 266 | \lst@AddToHook{PostOutput}{\lst@tagresetfirst}
 | 
|---|
 | 267 | \lst@AddToHook{Output}
 | 
|---|
 | 268 |     {\gdef\lst@tagresetfirst{\global\let\lst@iffirstintag\iffalse}}
 | 
|---|
 | 269 | \lst@AddToHook{OutputOther}{\gdef\lst@tagresetfirst{}}
 | 
|---|
 | 270 | \lst@AddToHook{Output}
 | 
|---|
 | 271 |     {\ifnum\lst@mode=\lst@tagmode
 | 
|---|
 | 272 |          \lst@iffirstintag \let\lst@thestyle\lst@gkeywords@sty \fi
 | 
|---|
 | 273 |          \lst@ifusekeysintag\else \let\lst@thestyle\lst@gkeywords@sty\fi
 | 
|---|
 | 274 |      \fi}
 | 
|---|
 | 275 | \lst@NewMode\lst@tagmode
 | 
|---|
 | 276 | \lst@AddToHook{Init}{\global\let\lst@ifnotag\iftrue}
 | 
|---|
 | 277 | \lst@AddToHook{SelectCharTable}{\let\lst@ifkeywords\lst@ifnotag}
 | 
|---|
 | 278 | \gdef\lst@Tag@s#1#2\@empty#3#4#5{%
 | 
|---|
 | 279 |     \global\let\lst@ifnotag\iffalse
 | 
|---|
 | 280 |     \lst@CArg #1\relax\lst@DefDelimB {}{}%
 | 
|---|
 | 281 |         {\ifnum\lst@mode=\lst@tagmode \expandafter\@gobblethree \fi}%
 | 
|---|
 | 282 |         #3\lst@tagmode{#5}%
 | 
|---|
 | 283 |     \lst@CArg #2\relax\lst@DefDelimE {}{}{}#4\lst@tagmode}%
 | 
|---|
 | 284 | \gdef\lst@BeginCDATA#1\@empty{%
 | 
|---|
 | 285 |     \lst@TrackNewLines \lst@PrintToken
 | 
|---|
 | 286 |     \lst@EnterMode\lst@GPmode{}\let\lst@ifmode\iffalse
 | 
|---|
 | 287 |     \lst@mode\lst@tagmode #1\lst@mode\lst@GPmode\relax\lst@modetrue}
 | 
|---|
 | 288 | \lst@EndAspect
 | 
|---|
 | 289 | \lst@BeginAspect{escape}
 | 
|---|
 | 290 | \lst@Key{texcl}{false}[t]{\lstKV@SetIf{#1}\lst@iftexcl}
 | 
|---|
 | 291 | \lst@AddToHook{TextStyle}{\let\lst@iftexcl\iffalse}
 | 
|---|
 | 292 | \lst@AddToHook{EOL}
 | 
|---|
 | 293 |     {\ifnum\lst@mode=\lst@TeXLmode
 | 
|---|
 | 294 |          \expandafter\lst@escapeend
 | 
|---|
 | 295 |          \expandafter\lst@LeaveAllModes
 | 
|---|
 | 296 |          \expandafter\lst@ReenterModes
 | 
|---|
 | 297 |      \fi}
 | 
|---|
 | 298 | \lst@AddToHook{AfterBeginComment}
 | 
|---|
 | 299 |     {\lst@iftexcl \lst@ifLmode \lst@ifdropinput\else
 | 
|---|
 | 300 |          \lst@PrintToken
 | 
|---|
 | 301 |          \lst@LeaveMode \lst@InterruptModes
 | 
|---|
 | 302 |          \lst@EnterMode{\lst@TeXLmode}{\lst@modetrue\lst@commentstyle}%
 | 
|---|
 | 303 |          \expandafter\expandafter\expandafter\lst@escapebegin
 | 
|---|
 | 304 |      \fi \fi \fi}
 | 
|---|
 | 305 | \lst@NewMode\lst@TeXLmode
 | 
|---|
 | 306 | \gdef\lst@ActiveCDefX#1{\lst@ActiveCDefX@#1}
 | 
|---|
 | 307 | \gdef\lst@ActiveCDefX@#1#2#3{
 | 
|---|
 | 308 |     \catcode`#1\active\lccode`\~=`#1%
 | 
|---|
 | 309 |     \lowercase{\lst@CDefIt~}{#2}{#3}{}}
 | 
|---|
 | 310 | \gdef\lst@Escape#1#2#3#4{%
 | 
|---|
 | 311 |     \lst@CArgX #1\relax\lst@CDefX
 | 
|---|
 | 312 |         {}%
 | 
|---|
 | 313 |         {\lst@ifdropinput\else
 | 
|---|
 | 314 |          \lst@TrackNewLines\lst@OutputLostSpace \lst@XPrintToken
 | 
|---|
 | 315 |          \lst@InterruptModes
 | 
|---|
 | 316 |          \lst@EnterMode{\lst@TeXmode}{\lst@modetrue}%
 | 
|---|
 | 317 |          \ifx\^^M#2%
 | 
|---|
 | 318 |              \lst@CArg #2\relax\lst@ActiveCDefX
 | 
|---|
 | 319 |                  {}%
 | 
|---|
 | 320 |                  {\lst@escapeend #4\lst@LeaveAllModes\lst@ReenterModes}%
 | 
|---|
 | 321 |                  {\lst@MProcessListing}%
 | 
|---|
 | 322 |          \else
 | 
|---|
 | 323 |              \lst@CArg #2\relax\lst@ActiveCDefX
 | 
|---|
 | 324 |                  {}%
 | 
|---|
 | 325 |                  {\lst@escapeend #4\lst@LeaveAllModes\lst@ReenterModes
 | 
|---|
 | 326 |                   \lst@newlines\z@ \lst@whitespacefalse}%
 | 
|---|
 | 327 |                  {}%
 | 
|---|
 | 328 |          \fi
 | 
|---|
 | 329 |          #3\lst@escapebegin
 | 
|---|
 | 330 |          \fi}%
 | 
|---|
 | 331 |         {}}
 | 
|---|
 | 332 | \lst@NewMode\lst@TeXmode
 | 
|---|
 | 333 | \lst@Key{escapebegin}{}{\def\lst@escapebegin{#1}}
 | 
|---|
 | 334 | \lst@Key{escapeend}{}{\def\lst@escapeend{#1}}
 | 
|---|
 | 335 | \lst@Key{escapechar}{}
 | 
|---|
 | 336 |     {\ifx\@empty#1\@empty
 | 
|---|
 | 337 |          \let\lst@DefEsc\relax
 | 
|---|
 | 338 |      \else
 | 
|---|
 | 339 |          \def\lst@DefEsc{\lst@Escape{#1}{#1}{}{}}%
 | 
|---|
 | 340 |      \fi}
 | 
|---|
 | 341 | \lst@AddToHook{TextStyle}{\let\lst@DefEsc\@empty}
 | 
|---|
 | 342 | \lst@AddToHook{SelectCharTable}{\lst@DefEsc}
 | 
|---|
 | 343 | \lst@Key{escapeinside}{}{\lstKV@TwoArg{#1}%
 | 
|---|
 | 344 |     {\let\lst@DefEsc\@empty
 | 
|---|
 | 345 |      \ifx\@empty##1@empty\else \ifx\@empty##2\@empty\else
 | 
|---|
 | 346 |          \def\lst@DefEsc{\lst@Escape{##1}{##2}{}{}}%
 | 
|---|
 | 347 |      \fi\fi}}
 | 
|---|
 | 348 | \lst@Key{mathescape}{false}[t]{\lstKV@SetIf{#1}\lst@ifmathescape}
 | 
|---|
 | 349 | \lst@AddToHook{SelectCharTable}
 | 
|---|
 | 350 |     {\lst@ifmathescape \lst@Escape{\$}{\$}%
 | 
|---|
 | 351 |         {\setbox\@tempboxa=\hbox\bgroup$}%
 | 
|---|
 | 352 |         {$\egroup \lst@CalcLostSpaceAndOutput}\fi}
 | 
|---|
 | 353 | \lst@EndAspect
 | 
|---|
 | 354 | \lst@BeginAspect{keywords}
 | 
|---|
 | 355 | \global\let\lst@ifsensitive\iftrue % init
 | 
|---|
 | 356 | \global\let\lst@ifsensitivedefed\iffalse % init % \global
 | 
|---|
 | 357 | \lst@ifsavemem\else
 | 
|---|
 | 358 | \gdef\lst@KeywordTest#1#2#3{%
 | 
|---|
 | 359 |     \begingroup \let\lst@UM\@empty
 | 
|---|
 | 360 |     \global\expandafter\let\expandafter\@gtempa
 | 
|---|
 | 361 |         \csname\@lst#1@\the\lst@token\endcsname
 | 
|---|
 | 362 |     \endgroup
 | 
|---|
 | 363 |     \ifx\@gtempa\relax\else
 | 
|---|
 | 364 |         \let\lst@thestyle\@gtempa
 | 
|---|
 | 365 |     \fi}
 | 
|---|
 | 366 | \gdef\lst@KEYWORDTEST{%
 | 
|---|
 | 367 |     \uppercase\expandafter{\expandafter
 | 
|---|
 | 368 |         \lst@KEYWORDTEST@\the\lst@token}\relax}
 | 
|---|
 | 369 | \gdef\lst@KEYWORDTEST@#1\relax#2#3#4{%
 | 
|---|
 | 370 |     \begingroup \let\lst@UM\@empty
 | 
|---|
 | 371 |     \global\expandafter\let\expandafter\@gtempa
 | 
|---|
 | 372 |         \csname\@lst#2@#1\endcsname
 | 
|---|
 | 373 |     \endgroup
 | 
|---|
 | 374 |     \ifx\@gtempa\relax\else
 | 
|---|
 | 375 |         \let\lst@thestyle\@gtempa
 | 
|---|
 | 376 |     \fi}
 | 
|---|
 | 377 | \gdef\lst@WorkingTest#1#2#3{%
 | 
|---|
 | 378 |     \begingroup \let\lst@UM\@empty
 | 
|---|
 | 379 |     \global\expandafter\let\expandafter\@gtempa
 | 
|---|
 | 380 |         \csname\@lst#1@\the\lst@token\endcsname
 | 
|---|
 | 381 |     \endgroup
 | 
|---|
 | 382 |     \@gtempa}
 | 
|---|
 | 383 | \gdef\lst@WORKINGTEST{%
 | 
|---|
 | 384 |     \uppercase\expandafter{\expandafter
 | 
|---|
 | 385 |         \lst@WORKINGTEST@\the\lst@token}\relax}
 | 
|---|
 | 386 | \gdef\lst@WORKINGTEST@#1\relax#2#3#4{%
 | 
|---|
 | 387 |     \begingroup \let\lst@UM\@empty
 | 
|---|
 | 388 |     \global\expandafter\let\expandafter\@gtempa
 | 
|---|
 | 389 |         \csname\@lst#2@#1\endcsname
 | 
|---|
 | 390 |     \endgroup
 | 
|---|
 | 391 |     \@gtempa}
 | 
|---|
 | 392 | \gdef\lst@DefineKeywords#1#2#3{%
 | 
|---|
 | 393 |     \lst@ifsensitive
 | 
|---|
 | 394 |         \def\lst@next{\lst@for#2}%
 | 
|---|
 | 395 |     \else
 | 
|---|
 | 396 |         \def\lst@next{\uppercase\expandafter{\expandafter\lst@for#2}}%
 | 
|---|
 | 397 |     \fi
 | 
|---|
 | 398 |     \lst@next\do
 | 
|---|
 | 399 |     {\expandafter\ifx\csname\@lst#1@##1\endcsname\relax
 | 
|---|
 | 400 |         \global\expandafter\let\csname\@lst#1@##1\endcsname#3%
 | 
|---|
 | 401 |      \fi}}
 | 
|---|
 | 402 | \gdef\lst@UndefineKeywords#1#2#3{%
 | 
|---|
 | 403 |     \lst@ifsensitivedefed
 | 
|---|
 | 404 |         \def\lst@next{\lst@for#2}%
 | 
|---|
 | 405 |     \else
 | 
|---|
 | 406 |         \def\lst@next{\uppercase\expandafter{\expandafter\lst@for#2}}%
 | 
|---|
 | 407 |     \fi
 | 
|---|
 | 408 |     \lst@next\do
 | 
|---|
 | 409 |     {\expandafter\ifx\csname\@lst#1@##1\endcsname#3%
 | 
|---|
 | 410 |         \global\expandafter\let\csname\@lst#1@##1\endcsname\relax
 | 
|---|
 | 411 |      \fi}}
 | 
|---|
 | 412 | \fi
 | 
|---|
 | 413 | \lst@ifsavemem
 | 
|---|
 | 414 | \gdef\lst@IfOneOutOf#1\relax#2{%
 | 
|---|
 | 415 |     \def\lst@temp##1,#1,##2##3\relax{%
 | 
|---|
 | 416 |         \ifx\@empty##2\else \expandafter\lst@IOOOfirst \fi}%
 | 
|---|
 | 417 |     \def\lst@next{\lst@IfOneOutOf@#1\relax}%
 | 
|---|
 | 418 |     \expandafter\lst@next#2\relax\relax}
 | 
|---|
 | 419 | \gdef\lst@IfOneOutOf@#1\relax#2#3{%
 | 
|---|
 | 420 |     \ifx#2\relax
 | 
|---|
 | 421 |         \expandafter\@secondoftwo
 | 
|---|
 | 422 |     \else
 | 
|---|
 | 423 |         \expandafter\lst@temp\expandafter,#2,#1,\@empty\relax
 | 
|---|
 | 424 |         \expandafter\lst@next
 | 
|---|
 | 425 |     \fi}
 | 
|---|
 | 426 | \ifx\iffalse\else\fi
 | 
|---|
 | 427 | \gdef\lst@IOOOfirst#1\relax#2#3{\fi#2}
 | 
|---|
 | 428 | \gdef\lst@IFONEOUTOF#1\relax#2{%
 | 
|---|
 | 429 |     \uppercase{\def\lst@temp##1,#1},##2##3\relax{%
 | 
|---|
 | 430 |         \ifx\@empty##2\else \expandafter\lst@IOOOfirst \fi}%
 | 
|---|
 | 431 |     \def\lst@next{\lst@IFONEOUTOF@#1\relax}%
 | 
|---|
 | 432 |     \expandafter\lst@next#2\relax}
 | 
|---|
 | 433 | \gdef\lst@IFONEOUTOF@#1\relax#2#3{%
 | 
|---|
 | 434 |     \ifx#2\relax
 | 
|---|
 | 435 |         \expandafter\@secondoftwo
 | 
|---|
 | 436 |     \else
 | 
|---|
 | 437 |         \uppercase
 | 
|---|
 | 438 |             {\expandafter\lst@temp\expandafter,#2,#1,\@empty\relax}%
 | 
|---|
 | 439 |         \expandafter\lst@next
 | 
|---|
 | 440 |     \fi}
 | 
|---|
 | 441 | \gdef\lst@KWTest{%
 | 
|---|
 | 442 |     \begingroup \let\lst@UM\@empty
 | 
|---|
 | 443 |     \expandafter\xdef\expandafter\@gtempa\expandafter{\the\lst@token}%
 | 
|---|
 | 444 |     \endgroup
 | 
|---|
 | 445 |     \expandafter\lst@IfOneOutOf\@gtempa\relax}
 | 
|---|
 | 446 | \gdef\lst@KeywordTest#1#2#3{\lst@KWTest #2{\let\lst@thestyle#3}{}}
 | 
|---|
 | 447 | \global\let\lst@KEYWORDTEST\lst@KeywordTest
 | 
|---|
 | 448 | \gdef\lst@WorkingTest#1#2#3{\lst@KWTest #2#3{}}
 | 
|---|
 | 449 | \global\let\lst@WORKINGTEST\lst@WorkingTest
 | 
|---|
 | 450 | \fi
 | 
|---|
 | 451 | \lst@Key{sensitive}\relax[t]{\lstKV@SetIf{#1}\lst@ifsensitive}
 | 
|---|
 | 452 | \lst@AddToHook{SetLanguage}{\let\lst@ifsensitive\iftrue}
 | 
|---|
 | 453 | \lst@AddToHook{Init}
 | 
|---|
 | 454 |     {\lst@ifsensitive\else
 | 
|---|
 | 455 |          \let\lst@KeywordTest\lst@KEYWORDTEST
 | 
|---|
 | 456 |          \let\lst@WorkingTest\lst@WORKINGTEST
 | 
|---|
 | 457 |          \let\lst@IfOneOutOf\lst@IFONEOUTOF
 | 
|---|
 | 458 |      \fi}
 | 
|---|
 | 459 | \gdef\lst@MakeMacroUppercase#1{%
 | 
|---|
 | 460 |     \ifx\@undefined#1\else \uppercase\expandafter
 | 
|---|
 | 461 |         {\expandafter\def\expandafter#1\expandafter{#1}}%
 | 
|---|
 | 462 |     \fi}
 | 
|---|
 | 463 | \gdef\lst@InstallTest#1#2#3#4#5#6#7#8{%
 | 
|---|
 | 464 |     \lst@AddToHook{TrackKeywords}{\lst@TrackKeywords{#1}#2#4#6#7#8}%
 | 
|---|
 | 465 |     \lst@AddToHook{PostTrackKeywords}{\lst@PostTrackKeywords#2#3#4#5}}
 | 
|---|
 | 466 | \lst@AddToHook{Init}{\lsthk@TrackKeywords\lsthk@PostTrackKeywords}
 | 
|---|
 | 467 | \lst@AddToHook{TrackKeywords}
 | 
|---|
 | 468 |     {\global\let\lst@DoDefineKeywords\@empty}% init
 | 
|---|
 | 469 | \lst@AddToHook{PostTrackKeywords}
 | 
|---|
 | 470 |     {\lst@DoDefineKeywords
 | 
|---|
 | 471 |      \global\let\lst@DoDefineKeywords\@empty}% init
 | 
|---|
 | 472 | \lst@AddToHook{Output}{\lst@ifkeywords \lsthk@DetectKeywords \fi}
 | 
|---|
 | 473 | \lst@AddToHook{DetectKeywords}{}% init
 | 
|---|
 | 474 | \lst@AddToHook{ModeTrue}{\let\lst@ifkeywords\iffalse}
 | 
|---|
 | 475 | \lst@AddToHookExe{Init}{\let\lst@ifkeywords\iftrue}
 | 
|---|
 | 476 | \gdef\lst@InstallTestNow#1#2#3#4#5{%
 | 
|---|
 | 477 |     \@ifundefined{\string#2#1}%
 | 
|---|
 | 478 |     {\global\@namedef{\string#2#1}{}%
 | 
|---|
 | 479 |      \edef\@tempa{%
 | 
|---|
 | 480 |          \noexpand\lst@AddToHook{\ifx#5dDetectKeywords\else Output\fi}%
 | 
|---|
 | 481 |          {\ifx #4w\noexpand\lst@WorkingTest
 | 
|---|
 | 482 |              \else\noexpand\lst@KeywordTest \fi
 | 
|---|
 | 483 |           {#1}\noexpand#2\noexpand#3}}%
 | 
|---|
 | 484 |      \lst@ifsavemem
 | 
|---|
 | 485 |          \@tempa
 | 
|---|
 | 486 |      \else
 | 
|---|
 | 487 |          \@ifundefined{\@lst#1@if@ins}%
 | 
|---|
 | 488 |              {\@tempa \global\@namedef{\@lst#1@if@ins}{}}%
 | 
|---|
 | 489 |              {}%
 | 
|---|
 | 490 |      \fi}
 | 
|---|
 | 491 |     {}}
 | 
|---|
 | 492 | \gdef\lst@TrackKeywords#1#2#3#4#5#6{%
 | 
|---|
 | 493 |     \lst@false
 | 
|---|
 | 494 |     \def\lst@arg{{#1}#4}%
 | 
|---|
 | 495 |     \expandafter\expandafter\expandafter\lst@TK@
 | 
|---|
 | 496 |         \expandafter\lst@arg#2\relax\relax
 | 
|---|
 | 497 |     \lst@ifsavemem\else
 | 
|---|
 | 498 |         \def\lst@arg{{#1}#4#2}%
 | 
|---|
 | 499 |         \expandafter\expandafter\expandafter\lst@TK@@
 | 
|---|
 | 500 |             \expandafter\lst@arg#3\relax\relax
 | 
|---|
 | 501 |     \fi
 | 
|---|
 | 502 |     \lst@if \lst@InstallTestNow{#1}#2#4#5#6\fi}
 | 
|---|
 | 503 | \gdef\lst@TK@#1#2#3#4{%
 | 
|---|
 | 504 |   \ifx\lst@ifsensitive\lst@ifsensitivedefed
 | 
|---|
 | 505 |     \ifx#3#4\else
 | 
|---|
 | 506 |       \lst@true
 | 
|---|
 | 507 |       \lst@ifsavemem\else
 | 
|---|
 | 508 |           \lst@UndefineKeywords{#1}#4#2%
 | 
|---|
 | 509 |           \lst@AddTo\lst@DoDefineKeywords{\lst@DefineKeywords{#1}#3#2}%
 | 
|---|
 | 510 |       \fi
 | 
|---|
 | 511 |     \fi
 | 
|---|
 | 512 |   \else
 | 
|---|
 | 513 |     \ifx#3\relax\else
 | 
|---|
 | 514 |       \lst@true
 | 
|---|
 | 515 |       \lst@ifsavemem\else
 | 
|---|
 | 516 |           \lst@UndefineKeywords{#1}#4#2%
 | 
|---|
 | 517 |           \lst@AddTo\lst@DoDefineKeywords{\lst@DefineKeywords{#1}#3#2}%
 | 
|---|
 | 518 |       \fi
 | 
|---|
 | 519 |     \fi
 | 
|---|
 | 520 |   \fi
 | 
|---|
 | 521 |   \lst@ifsavemem \ifx#3\relax\else
 | 
|---|
 | 522 |       \lst@ifsensitive\else \lst@MakeMacroUppercase#3\fi
 | 
|---|
 | 523 |   \fi \fi
 | 
|---|
 | 524 |   \ifx#3\relax
 | 
|---|
 | 525 |       \expandafter\@gobblethree
 | 
|---|
 | 526 |   \fi
 | 
|---|
 | 527 |   \lst@TK@{#1}#2}
 | 
|---|
 | 528 | \gdef\lst@TK@@#1#2#3#4#5{%
 | 
|---|
 | 529 |     \ifx#4\relax
 | 
|---|
 | 530 |         \expandafter\@gobblefour
 | 
|---|
 | 531 |     \else
 | 
|---|
 | 532 |         \lst@IfSubstring{#4#5}#3{}{\lst@UndefineKeywords{#1}#5#2}%
 | 
|---|
 | 533 |     \fi
 | 
|---|
 | 534 |     \lst@TK@@{#1}#2#3}
 | 
|---|
 | 535 | \lst@AddToHook{InitVars}
 | 
|---|
 | 536 |     {\global\let\lst@ifsensitivedefed\lst@ifsensitive}
 | 
|---|
 | 537 | \gdef\lst@PostTrackKeywords#1#2#3#4{%
 | 
|---|
 | 538 |     \lst@ifsavemem\else
 | 
|---|
 | 539 |         \global\let#3#1%
 | 
|---|
 | 540 |         \global\let#4#2%
 | 
|---|
 | 541 |     \fi}
 | 
|---|
 | 542 | \lst@Key{classoffset}\z@{\def\lst@classoffset{#1}}
 | 
|---|
 | 543 | \gdef\lst@InstallFamily#1#2#3#4#5{%
 | 
|---|
 | 544 |     \lst@Key{#2}\relax{\lst@UseFamily{#2}##1\relax\lst@MakeKeywords}%
 | 
|---|
 | 545 |     \lst@Key{more#2}\relax
 | 
|---|
 | 546 |         {\lst@UseFamily{#2}##1\relax\lst@MakeMoreKeywords}%
 | 
|---|
 | 547 |     \lst@Key{delete#2}\relax
 | 
|---|
 | 548 |         {\lst@UseFamily{#2}##1\relax\lst@DeleteKeywords}%
 | 
|---|
 | 549 |     \ifx\@empty#3\@empty\else
 | 
|---|
 | 550 |         \lst@Key{#3}{#4}{\lstKV@OptArg[\@ne]{##1}%
 | 
|---|
 | 551 |             {\@tempcnta\lst@classoffset \advance\@tempcnta####1\relax
 | 
|---|
 | 552 |              \@namedef{lst@#3\ifnum\@tempcnta=\@ne\else \the\@tempcnta
 | 
|---|
 | 553 |                              \fi}{####2}}}%
 | 
|---|
 | 554 |     \fi
 | 
|---|
 | 555 |     \expandafter\lst@InstallFamily@
 | 
|---|
 | 556 |         \csname\@lst @#2@data\expandafter\endcsname
 | 
|---|
 | 557 |         \csname\@lst @#5\endcsname {#1}{#2}{#3}}
 | 
|---|
 | 558 | \gdef\lst@InstallFamily@#1#2#3#4#5#6#7#8{%
 | 
|---|
 | 559 |     \gdef#1{{#3}{#4}{#5}#2#7}%
 | 
|---|
 | 560 |     \long\def\lst@temp##1{#6}%
 | 
|---|
 | 561 |     \ifx\lst@temp\@gobble
 | 
|---|
 | 562 |         \lst@AddTo#1{s#8}%
 | 
|---|
 | 563 |     \else
 | 
|---|
 | 564 |         \lst@AddTo#1{w#8}%
 | 
|---|
 | 565 |         \global\@namedef{lst@g#4@wp}##1{#6}%
 | 
|---|
 | 566 |     \fi}
 | 
|---|
 | 567 | \gdef\lst@UseFamily#1{%
 | 
|---|
 | 568 |     \def\lst@family{#1}%
 | 
|---|
 | 569 |     \@ifnextchar[\lst@UseFamily@{\lst@UseFamily@[\@ne]}}
 | 
|---|
 | 570 | \gdef\lst@UseFamily@[#1]{%
 | 
|---|
 | 571 |     \@tempcnta\lst@classoffset \advance\@tempcnta#1\relax
 | 
|---|
 | 572 |     \lst@ProvideFamily\lst@family
 | 
|---|
 | 573 |     \lst@UseFamily@a
 | 
|---|
 | 574 |         {\lst@family\ifnum\@tempcnta=\@ne\else \the\@tempcnta \fi}}
 | 
|---|
 | 575 | \gdef\lst@UseFamily@a#1{%
 | 
|---|
 | 576 |     \expandafter\lst@UseFamily@b
 | 
|---|
 | 577 |        \csname\@lst @#1@list\expandafter\endcsname
 | 
|---|
 | 578 |        \csname\@lst @#1\expandafter\endcsname
 | 
|---|
 | 579 |        \csname\@lst @#1@also\expandafter\endcsname
 | 
|---|
 | 580 |        \csname\@lst @g#1\endcsname}
 | 
|---|
 | 581 | \gdef\lst@UseFamily@b#1#2#3#4#5\relax#6{\lstKV@XOptArg[]{#5}#6#1#2#3#4}
 | 
|---|
 | 582 | \gdef\lst@ProvideFamily#1{%
 | 
|---|
 | 583 |     \@ifundefined{lstfam@#1\ifnum\@tempcnta=\@ne\else\the\@tempcnta\fi}%
 | 
|---|
 | 584 |     {\global\@namedef{lstfam@#1\ifnum\@tempcnta=\@ne\else
 | 
|---|
 | 585 |                                         \the\@tempcnta\fi}{}%
 | 
|---|
 | 586 |      \expandafter\expandafter\expandafter\lst@ProvideFamily@
 | 
|---|
 | 587 |          \csname\@lst @#1@data\endcsname
 | 
|---|
 | 588 |          {\ifnum\@tempcnta=\@ne\else \the\@tempcnta \fi}}%
 | 
|---|
 | 589 |     {}}%
 | 
|---|
 | 590 | \gdef\lst@ProvideFamily@#1#2#3#4#5#6#7#8{%
 | 
|---|
 | 591 |     \expandafter\xdef\csname\@lst @g#2#8@sty\endcsname
 | 
|---|
 | 592 |     {\if #6w%
 | 
|---|
 | 593 |          \expandafter\noexpand\csname\@lst @g#2@wp\endcsname{#8}%
 | 
|---|
 | 594 |      \else
 | 
|---|
 | 595 |          \expandafter\noexpand\csname\@lst @#3#8\endcsname
 | 
|---|
 | 596 |      \fi}%
 | 
|---|
 | 597 |     \ifx\@empty#3\@empty\else
 | 
|---|
 | 598 |         \edef\lst@temp{\noexpand\lst@AddToHook{Init}{%
 | 
|---|
 | 599 |             \noexpand\lst@ProvideStyle\expandafter\noexpand
 | 
|---|
 | 600 |                 \csname\@lst @#3#8\endcsname\noexpand#4}}%
 | 
|---|
 | 601 |         \lst@temp
 | 
|---|
 | 602 |     \fi
 | 
|---|
 | 603 |     \expandafter\lst@ProvideFamily@@
 | 
|---|
 | 604 |          \csname\@lst @#2#8@list\expandafter\endcsname
 | 
|---|
 | 605 |          \csname\@lst @#2#8\expandafter\endcsname
 | 
|---|
 | 606 |          \csname\@lst @#2#8@also\expandafter\endcsname
 | 
|---|
 | 607 |          \csname\@lst @g#2#8@list\expandafter\endcsname
 | 
|---|
 | 608 |          \csname\@lst @g#2#8\expandafter\endcsname
 | 
|---|
 | 609 |          \csname\@lst @g#2#8@sty\expandafter\endcsname
 | 
|---|
 | 610 |          {#1}#5#6#7}
 | 
|---|
 | 611 | \gdef\lst@ProvideFamily@@#1#2#3#4#5#6#7#8{%
 | 
|---|
 | 612 |     \gdef#1{#2#5}\global\let#2\@empty \global\let#3\@empty % init
 | 
|---|
 | 613 |     \gdef#4{#2#5}\global\let#5\@empty % init
 | 
|---|
 | 614 |     \if #8l\relax
 | 
|---|
 | 615 |         \lst@AddToHook{SetLanguage}{\def#1{#2#5}\let#2\@empty}%
 | 
|---|
 | 616 |     \fi
 | 
|---|
 | 617 |     \lst@InstallTest{#7}#1#2#4#5#6}
 | 
|---|
 | 618 | \gdef\lst@InstallKeywords#1#2#3#4#5{%
 | 
|---|
 | 619 |     \lst@Key{#2}\relax
 | 
|---|
 | 620 |         {\lst@UseFamily{#2}[\@ne]##1\relax\lst@MakeKeywords}%
 | 
|---|
 | 621 |     \lst@Key{more#2}\relax
 | 
|---|
 | 622 |         {\lst@UseFamily{#2}[\@ne]##1\relax\lst@MakeMoreKeywords}%
 | 
|---|
 | 623 |     \lst@Key{delete#2}\relax
 | 
|---|
 | 624 |         {\lst@UseFamily{#2}[\@ne]##1\relax\lst@DeleteKeywords}%
 | 
|---|
 | 625 |     \ifx\@empty#3\@empty\else
 | 
|---|
 | 626 |         \lst@Key{#3}{#4}{\@namedef{lst@#3}{##1}}%
 | 
|---|
 | 627 |     \fi
 | 
|---|
 | 628 |     \expandafter\lst@InstallFamily@
 | 
|---|
 | 629 |         \csname\@lst @#2@data\expandafter\endcsname
 | 
|---|
 | 630 |         \csname\@lst @#5\endcsname {#1}{#2}{#3}}
 | 
|---|
 | 631 | \gdef\lst@ProvideStyle#1#2{%
 | 
|---|
 | 632 |     \ifx#1\@undefined \let#1#2%
 | 
|---|
 | 633 |     \else\ifx#1\relax \let#1#2\fi\fi}
 | 
|---|
 | 634 | \gdef\lst@BuildClassList#1#2,{%
 | 
|---|
 | 635 |     \ifx\relax#2\@empty\else
 | 
|---|
 | 636 |         \ifx\@empty#2\@empty\else
 | 
|---|
 | 637 |             \lst@lExtend#1{\csname\@lst @#2\expandafter\endcsname
 | 
|---|
 | 638 |                            \csname\@lst @g#2\endcsname}%
 | 
|---|
 | 639 |         \fi
 | 
|---|
 | 640 |         \expandafter\lst@BuildClassList\expandafter#1
 | 
|---|
 | 641 |     \fi}
 | 
|---|
 | 642 | \gdef\lst@DeleteClassesIn#1#2{%
 | 
|---|
 | 643 |     \expandafter\lst@DCI@\expandafter#1#2\relax\relax}
 | 
|---|
 | 644 | \gdef\lst@DCI@#1#2#3{%
 | 
|---|
 | 645 |     \ifx#2\relax
 | 
|---|
 | 646 |         \expandafter\@gobbletwo
 | 
|---|
 | 647 |     \else
 | 
|---|
 | 648 |         \def\lst@temp##1#2#3##2{%
 | 
|---|
 | 649 |             \lst@lAddTo#1{##1}%
 | 
|---|
 | 650 |             \ifx ##2\relax\else
 | 
|---|
 | 651 |                 \expandafter\lst@temp
 | 
|---|
 | 652 |             \fi ##2}%
 | 
|---|
 | 653 |         \let\@tempa#1\let#1\@empty
 | 
|---|
 | 654 |         \expandafter\lst@temp\@tempa#2#3\relax
 | 
|---|
 | 655 |     \fi
 | 
|---|
 | 656 |     \lst@DCI@#1}
 | 
|---|
 | 657 | \gdef\lst@MakeKeywords[#1]#2#3#4#5#6{%
 | 
|---|
 | 658 |     \def#3{#4#6}\let#4\@empty \let#5\@empty
 | 
|---|
 | 659 |     \lst@MakeMoreKeywords[#1]{#2}#3#4#5#6}
 | 
|---|
 | 660 | \gdef\lst@MakeMoreKeywords[#1]#2#3#4#5#6{%
 | 
|---|
 | 661 |     \lst@BuildClassList#3#1,\relax,%
 | 
|---|
 | 662 |     \lst@DefOther\lst@temp{,#2}\lst@lExtend#4\lst@temp}
 | 
|---|
 | 663 | \gdef\lst@DeleteKeywords[#1]#2#3#4#5#6{%
 | 
|---|
 | 664 |     \lst@MakeKeywords[#1]{#2}\@tempa\@tempb#5#6%
 | 
|---|
 | 665 |     \lst@DeleteClassesIn#3\@tempa
 | 
|---|
 | 666 |     \lst@DeleteKeysIn#4\@tempb}
 | 
|---|
 | 667 | \lst@InstallFamily k{keywords}{keywordstyle}\bfseries{keywordstyle}{}ld
 | 
|---|
 | 668 | \gdef\lst@DefKeywordstyle#1#2\@nil@{%
 | 
|---|
 | 669 |    \@namedef{lst@keywordstyle\ifnum\@tempcnta=\@ne\else\the\@tempcnta
 | 
|---|
 | 670 |                              \fi}{#1#2}}%
 | 
|---|
 | 671 | \lst@Key{keywordstyle}{\bfseries}{\lstKV@OptArg[\@ne]{#1}%
 | 
|---|
 | 672 |   {\@tempcnta\lst@classoffset \advance\@tempcnta##1\relax
 | 
|---|
 | 673 |    \@ifstar{\lst@DefKeywordstyle{\uppercase\expandafter{%
 | 
|---|
 | 674 |                                  \expandafter\lst@token
 | 
|---|
 | 675 |                                  \expandafter{\the\lst@token}}}}%
 | 
|---|
 | 676 |            {\lst@DefKeywordstyle{}}##2\@nil@}}
 | 
|---|
 | 677 | \lst@Key{ndkeywords}\relax
 | 
|---|
 | 678 |     {\lst@UseFamily{keywords}[\tw@]#1\relax\lst@MakeKeywords}%
 | 
|---|
 | 679 | \lst@Key{morendkeywords}\relax
 | 
|---|
 | 680 |     {\lst@UseFamily{keywords}[\tw@]#1\relax\lst@MakeMoreKeywords}%
 | 
|---|
 | 681 | \lst@Key{deletendkeywords}\relax
 | 
|---|
 | 682 |     {\lst@UseFamily{keywords}[\tw@]#1\relax\lst@DeleteKeywords}%
 | 
|---|
 | 683 | \lst@Key{ndkeywordstyle}\relax{\@namedef{lst@keywordstyle2}{#1}}%
 | 
|---|
 | 684 | \lst@Key{keywordsprefix}\relax{\lst@DefActive\lst@keywordsprefix{#1}}
 | 
|---|
 | 685 | \global\let\lst@keywordsprefix\@empty
 | 
|---|
 | 686 | \lst@AddToHook{SelectCharTable}
 | 
|---|
 | 687 |     {\ifx\lst@keywordsprefix\@empty\else
 | 
|---|
 | 688 |          \expandafter\lst@CArg\lst@keywordsprefix\relax
 | 
|---|
 | 689 |              \lst@CDef{}%
 | 
|---|
 | 690 |                       {\lst@ifletter\else
 | 
|---|
 | 691 |                            \global\let\lst@prefixkeyword\@empty
 | 
|---|
 | 692 |                        \fi}%
 | 
|---|
 | 693 |                       {}%
 | 
|---|
 | 694 |      \fi}
 | 
|---|
 | 695 | \lst@AddToHook{Init}{\global\let\lst@prefixkeyword\relax}
 | 
|---|
 | 696 | \lst@AddToHook{Output}
 | 
|---|
 | 697 |     {\ifx\lst@prefixkeyword\@empty
 | 
|---|
 | 698 |          \let\lst@thestyle\lst@gkeywords@sty
 | 
|---|
 | 699 |          \global\let\lst@prefixkeyword\relax
 | 
|---|
 | 700 |      \fi}%
 | 
|---|
 | 701 | \lst@Key{otherkeywords}{}{%
 | 
|---|
 | 702 |     \let\lst@otherkeywords\@empty
 | 
|---|
 | 703 |     \lst@for{#1}\do{%
 | 
|---|
 | 704 |       \lst@MakeActive{##1}%
 | 
|---|
 | 705 |       \lst@lExtend\lst@otherkeywords{%
 | 
|---|
 | 706 |           \expandafter\lst@CArg\lst@temp\relax\lst@CDef
 | 
|---|
 | 707 |               {}\lst@PrintOtherKeyword\@empty}}}
 | 
|---|
 | 708 | \lst@AddToHook{SelectCharTable}{\lst@otherkeywords}
 | 
|---|
 | 709 | \gdef\lst@PrintOtherKeyword#1\@empty{%
 | 
|---|
 | 710 |     \lst@XPrintToken
 | 
|---|
 | 711 |     \begingroup
 | 
|---|
 | 712 |       \lst@modetrue \lsthk@TextStyle
 | 
|---|
 | 713 |       \let\lst@ProcessDigit\lst@ProcessLetter
 | 
|---|
 | 714 |       \let\lst@ProcessOther\lst@ProcessLetter
 | 
|---|
 | 715 |       \lst@lettertrue
 | 
|---|
 | 716 |       #1%
 | 
|---|
 | 717 |   \lst@SaveToken
 | 
|---|
 | 718 |     \endgroup
 | 
|---|
 | 719 | \lst@RestoreToken
 | 
|---|
 | 720 | \global\let\lst@savedcurrstyle\lst@currstyle
 | 
|---|
 | 721 | \let\lst@currstyle\lst@gkeywords@sty
 | 
|---|
 | 722 |     \lst@Output
 | 
|---|
 | 723 | \let\lst@currstyle\lst@savedcurrstyle}
 | 
|---|
 | 724 | \lst@EndAspect
 | 
|---|
 | 725 | \lst@BeginAspect[keywords]{emph}
 | 
|---|
 | 726 | \lst@InstallFamily e{emph}{emphstyle}{}{emphstyle}{}od
 | 
|---|
 | 727 | \lst@EndAspect
 | 
|---|
 | 728 | \lst@BeginAspect[keywords]{tex}
 | 
|---|
 | 729 | \lst@InstallFamily {cs}{texcs}{texcsstyle}\relax{keywordstyle}
 | 
|---|
 | 730 |     {\ifx\lst@lastother\lstum@backslash
 | 
|---|
 | 731 |          \expandafter\let\expandafter\lst@thestyle
 | 
|---|
 | 732 |                          \csname lst@texcsstyle#1\endcsname
 | 
|---|
 | 733 |      \fi}
 | 
|---|
 | 734 |     ld
 | 
|---|
 | 735 | \lst@Key{texcsstyle}\relax
 | 
|---|
 | 736 |   {\@ifstar{\lst@true\lst@DefTexcsstyle}%
 | 
|---|
 | 737 |            {\lst@false\lst@DefTexcsstyle}#1\@nil@}
 | 
|---|
 | 738 | \gdef\lst@DefTexcsstyle#1\@nil@{%
 | 
|---|
 | 739 |     \let\lst@iftexcsincludebs\lst@if
 | 
|---|
 | 740 |     \lstKV@OptArg[\@ne]{#1}%
 | 
|---|
 | 741 |     {\@tempcnta\lst@classoffset \advance\@tempcnta##1\relax
 | 
|---|
 | 742 |      \@namedef{lst@texcsstyle\ifnum\@tempcnta=\@ne\else
 | 
|---|
 | 743 |                                    \the\@tempcnta \fi}{##2}}}%
 | 
|---|
 | 744 | \global\let\lst@iftexcsincludebs\iffalse
 | 
|---|
 | 745 | \let\lst@iftexcsincludebs\iffalse
 | 
|---|
 | 746 | \lst@AddToHook{SelectCharTable}
 | 
|---|
 | 747 | {\lst@iftexcsincludebs \ifx\@empty\lst@texcs\else
 | 
|---|
 | 748 |      \lst@DefSaveDef{`\\}\lsts@texcsbs
 | 
|---|
 | 749 |       {\lst@ifletter
 | 
|---|
 | 750 |            \lst@Output
 | 
|---|
 | 751 |        \else
 | 
|---|
 | 752 |            \lst@OutputOther
 | 
|---|
 | 753 |        \fi
 | 
|---|
 | 754 |        \lst@Merge\lsts@texcsbs}%
 | 
|---|
 | 755 |  \fi \fi}
 | 
|---|
 | 756 | \lst@EndAspect
 | 
|---|
 | 757 | \lst@BeginAspect[keywords]{directives}
 | 
|---|
 | 758 | \lst@NewMode\lst@CDmode
 | 
|---|
 | 759 | \lst@AddToHook{EOL}{\ifnum\lst@mode=\lst@CDmode \lst@LeaveMode \fi}
 | 
|---|
 | 760 | \lst@InstallKeywords{d}{directives}{directivestyle}\relax{keywordstyle}
 | 
|---|
 | 761 |     {\ifnum\lst@mode=\lst@CDmode
 | 
|---|
 | 762 |          \let\lst@thestyle\lst@directivestyle
 | 
|---|
 | 763 |      \fi}
 | 
|---|
 | 764 |     ld
 | 
|---|
 | 765 | \global\let\lst@directives\@empty % init
 | 
|---|
 | 766 | \lst@AddTo\lst@delimtypes{,directive}
 | 
|---|
 | 767 | \gdef\lst@Delim@directive#1\@empty#2#3#4{%
 | 
|---|
 | 768 |     \lst@CArg #1\relax\lst@DefDelimB
 | 
|---|
 | 769 |         {\lst@CalcColumn}%
 | 
|---|
 | 770 |         {}%
 | 
|---|
 | 771 |         {\ifnum\@tempcnta=\z@
 | 
|---|
 | 772 |              \def\lst@bnext{#2\lst@CDmode{#4\lst@Lmodetrue}%
 | 
|---|
 | 773 |                 \let\lst@currstyle\lst@directivestyle}%
 | 
|---|
 | 774 |  \fi
 | 
|---|
 | 775 |  \@gobblethree}%
 | 
|---|
 | 776 |         #2\lst@CDmode{#4\lst@Lmodetrue}}
 | 
|---|
 | 777 | \lst@AddTo\lst@stringtypes{,directive}
 | 
|---|
 | 778 | \gdef\lst@StringDM@directive#1#2#3\@empty{%
 | 
|---|
 | 779 |     \lst@CArg #2\relax\lst@CDef
 | 
|---|
 | 780 |         {}%
 | 
|---|
 | 781 |         {\let\lst@bnext\lst@CArgEmpty
 | 
|---|
 | 782 |          \ifnum\lst@mode=\lst@CDmode
 | 
|---|
 | 783 |              \def\lst@bnext{\lst@BeginString{#1}}%
 | 
|---|
 | 784 |          \fi
 | 
|---|
 | 785 |          \lst@bnext}%
 | 
|---|
 | 786 |         \@empty
 | 
|---|
 | 787 |     \lst@CArg #3\relax\lst@CDef
 | 
|---|
 | 788 |         {}%
 | 
|---|
 | 789 |         {\let\lst@enext\lst@CArgEmpty
 | 
|---|
 | 790 |          \ifnum #1=\lst@mode
 | 
|---|
 | 791 |              \let\lst@bnext\lst@EndString
 | 
|---|
 | 792 |          \fi
 | 
|---|
 | 793 |          \lst@bnext}%
 | 
|---|
 | 794 |         \@empty}
 | 
|---|
 | 795 | \lst@EndAspect
 | 
|---|
 | 796 | \lst@BeginAspect[keywords,comments]{keywordcomments}
 | 
|---|
 | 797 | \lst@NewMode\lst@KCmode \lst@NewMode\lst@KCSmode
 | 
|---|
 | 798 | \gdef\lst@BeginKC{\aftergroup\aftergroup\aftergroup\lst@BeginKC@}%
 | 
|---|
 | 799 | \gdef\lst@BeginKC@{%
 | 
|---|
 | 800 |     \lst@ResetToken
 | 
|---|
 | 801 |     \lst@BeginComment\lst@KCmode{{\lst@commentstyle}\lst@modetrue}%
 | 
|---|
 | 802 |                      \@empty}%
 | 
|---|
 | 803 | \gdef\lst@BeginKCS{\aftergroup\aftergroup\aftergroup\lst@BeginKCS@}%
 | 
|---|
 | 804 | \gdef\lst@BeginKCS@{%
 | 
|---|
 | 805 |     \lst@ResetToken
 | 
|---|
 | 806 |     \lst@BeginComment\lst@KCSmode{{\lst@commentstyle}\lst@modetrue}%
 | 
|---|
 | 807 |                      \@empty}%
 | 
|---|
 | 808 | \lst@AddToHook{PostOutput}{\lst@KCpost \global\let\lst@KCpost\@empty}
 | 
|---|
 | 809 | \global\let\lst@KCpost\@empty % init
 | 
|---|
 | 810 | \gdef\lst@EndKC{\lst@SaveToken \lst@LeaveMode \lst@RestoreToken
 | 
|---|
 | 811 |     \let\lst@thestyle\lst@identifierstyle \lsthk@Output}
 | 
|---|
 | 812 | \lst@InstallKeywords{kc}{keywordcomment}{}\relax{}
 | 
|---|
 | 813 |     {\ifnum\lst@mode=\lst@KCmode
 | 
|---|
 | 814 |          \edef\lst@temp{\the\lst@token}%
 | 
|---|
 | 815 |          \ifx\lst@temp\lst@KCmatch
 | 
|---|
 | 816 |              \lst@EndKC
 | 
|---|
 | 817 |          \fi
 | 
|---|
 | 818 |      \else
 | 
|---|
 | 819 |          \lst@ifmode\else
 | 
|---|
 | 820 |              \xdef\lst@KCmatch{\the\lst@token}%
 | 
|---|
 | 821 |              \global\let\lst@KCpost\lst@BeginKC
 | 
|---|
 | 822 |          \fi
 | 
|---|
 | 823 |      \fi}
 | 
|---|
 | 824 |     lo
 | 
|---|
 | 825 | \lst@Key{keywordcommentsemicolon}{}{\lstKV@ThreeArg{#1}%
 | 
|---|
 | 826 |     {\def\lst@KCAkeywordsB{##1}%
 | 
|---|
 | 827 |      \def\lst@KCAkeywordsE{##2}%
 | 
|---|
 | 828 |      \def\lst@KCBkeywordsB{##3}%
 | 
|---|
 | 829 |      \def\lst@KCkeywords{##1##2##3}}}
 | 
|---|
 | 830 | \lst@AddToHook{SetLanguage}{%
 | 
|---|
 | 831 |     \let\lst@KCAkeywordsB\@empty \let\lst@KCAkeywordsE\@empty
 | 
|---|
 | 832 |     \let\lst@KCBkeywordsB\@empty \let\lst@KCkeywords\@empty}
 | 
|---|
 | 833 | \lst@AddToHook{SelectCharTable}
 | 
|---|
 | 834 |     {\ifx\lst@KCkeywords\@empty\else
 | 
|---|
 | 835 |         \lst@DefSaveDef{`\;}\lsts@EKC
 | 
|---|
 | 836 |             {\lst@XPrintToken
 | 
|---|
 | 837 |              \ifnum\lst@mode=\lst@KCmode \lst@EndComment\@empty \else
 | 
|---|
 | 838 |              \ifnum\lst@mode=\lst@KCSmode \lst@EndComment\@empty
 | 
|---|
 | 839 |              \fi \fi
 | 
|---|
 | 840 |              \lsts@EKC}%
 | 
|---|
 | 841 |      \fi}
 | 
|---|
 | 842 | \gdef\lst@KCAWorkB{%
 | 
|---|
 | 843 |     \lst@ifmode\else \global\let\lst@KCpost\lst@BeginKC \fi}
 | 
|---|
 | 844 | \gdef\lst@KCBWorkB{%
 | 
|---|
 | 845 |     \lst@ifmode\else \global\let\lst@KCpost\lst@BeginKCS \fi}
 | 
|---|
 | 846 | \gdef\lst@KCAWorkE{\ifnum\lst@mode=\lst@KCmode \lst@EndKC \fi}
 | 
|---|
 | 847 | \lst@ProvideFamily@@
 | 
|---|
 | 848 |     \lst@KCAkeywordsB@list\lst@KCAkeywordsB \lst@KC@also
 | 
|---|
 | 849 |     \lst@gKCAkeywordsB@list\lst@gKCAkeywordsB \lst@KCAWorkB
 | 
|---|
 | 850 |     {kcb}owo % prefix, other key, working procedure, Output hook
 | 
|---|
 | 851 | \lst@ProvideFamily@@
 | 
|---|
 | 852 |     \lst@KCAkeywordsE@list\lst@KCAkeywordsE \lst@KC@also
 | 
|---|
 | 853 |     \lst@gKCAkeywordsE@list\lst@gKCAkeywordsE \lst@KCAWorkE
 | 
|---|
 | 854 |     {kce}owo
 | 
|---|
 | 855 | \lst@ProvideFamily@@
 | 
|---|
 | 856 |     \lst@KCBkeywordsB@list\lst@KCBkeywordsB \lst@KC@also
 | 
|---|
 | 857 |     \lst@gKCBkeywordsB@list\lst@gKCBkeywordsB \lst@KCBWorkB
 | 
|---|
 | 858 |     {kcs}owo
 | 
|---|
 | 859 | \lst@EndAspect
 | 
|---|
 | 860 | \lst@BeginAspect[keywords]{index}
 | 
|---|
 | 861 | \lst@InstallFamily w{index}{indexstyle}\lstindexmacro{indexstyle}
 | 
|---|
 | 862 |     {\csname\@lst @indexstyle#1\expandafter\endcsname
 | 
|---|
 | 863 |          \expandafter{\the\lst@token}}
 | 
|---|
 | 864 |     od
 | 
|---|
 | 865 | \lst@UserCommand\lstindexmacro#1{\index{{\ttfamily#1}}}
 | 
|---|
 | 866 | \lst@EndAspect
 | 
|---|
 | 867 | \lst@BeginAspect[keywords]{procnames}
 | 
|---|
 | 868 | \gdef\lst@procnametrue{\global\let\lst@ifprocname\iftrue}
 | 
|---|
 | 869 | \gdef\lst@procnamefalse{\global\let\lst@ifprocname\iffalse}
 | 
|---|
 | 870 | \lst@AddToHook{Init}{\lst@procnamefalse}
 | 
|---|
 | 871 | \lst@AddToHook{DetectKeywords}
 | 
|---|
 | 872 |     {\lst@ifprocname
 | 
|---|
 | 873 |          \let\lst@thestyle\lst@procnamestyle
 | 
|---|
 | 874 |          \lst@ifindexproc \csname\@lst @gindex@sty\endcsname \fi
 | 
|---|
 | 875 |          \lst@procnamefalse
 | 
|---|
 | 876 |      \fi}
 | 
|---|
 | 877 | \lst@Key{procnamestyle}{}{\def\lst@procnamestyle{#1}}
 | 
|---|
 | 878 | \lst@Key{indexprocnames}{false}[t]{\lstKV@SetIf{#1}\lst@ifindexproc}
 | 
|---|
 | 879 | \lst@AddToHook{Init}{\lst@ifindexproc \lst@indexproc \fi}
 | 
|---|
 | 880 | \gdef\lst@indexproc{%
 | 
|---|
 | 881 |     \@ifundefined{lst@indexstyle1}%
 | 
|---|
 | 882 |         {\@namedef{lst@indexstyle1}##1{}}%
 | 
|---|
 | 883 |         {}}
 | 
|---|
 | 884 | \lst@InstallKeywords w{procnamekeys}{}\relax{}
 | 
|---|
 | 885 |     {\global\let\lst@PNpost\lst@procnametrue}
 | 
|---|
 | 886 |     od
 | 
|---|
 | 887 | \lst@AddToHook{PostOutput}{\lst@PNpost\global\let\lst@PNpost\@empty}
 | 
|---|
 | 888 | \global\let\lst@PNpost\@empty % init
 | 
|---|
 | 889 | \lst@EndAspect
 | 
|---|
 | 890 | \lst@BeginAspect{style}
 | 
|---|
 | 891 | \@ifundefined{lststylefiles}
 | 
|---|
 | 892 |     {\lst@UserCommand\lststylefiles{lststy0.sty}}{}
 | 
|---|
 | 893 | \lst@UserCommand\lstdefinestyle{\lst@DefStyle\iftrue}
 | 
|---|
 | 894 | \lst@UserCommand\lst@definestyle{\lst@DefStyle\iffalse}
 | 
|---|
 | 895 | \gdef\lst@DefStyle{\lst@DefDriver{style}{sty}\lstset}
 | 
|---|
 | 896 | \global\@namedef{lststy@$}{\lsthk@EmptyStyle}
 | 
|---|
 | 897 | \lst@AddToHook{EmptyStyle}{}% init
 | 
|---|
 | 898 | \lst@Key{style}\relax{%
 | 
|---|
 | 899 |     \lst@LAS{style}{sty}{[]{#1}}\lst@NoAlias\lststylefiles
 | 
|---|
 | 900 |         \lsthk@SetStyle
 | 
|---|
 | 901 |         {}}
 | 
|---|
 | 902 | \lst@AddToHook{SetStyle}{}% init
 | 
|---|
 | 903 | \lst@EndAspect
 | 
|---|
 | 904 | \lst@BeginAspect{language}
 | 
|---|
 | 905 | \@ifundefined{lstdriverfiles}
 | 
|---|
 | 906 |     {\lst@UserCommand\lstlanguagefiles{lstlang0.sty}}{}
 | 
|---|
 | 907 | \lst@UserCommand\lstdefinelanguage{\lst@DefLang\iftrue}
 | 
|---|
 | 908 | \lst@UserCommand\lst@definelanguage{\lst@DefLang\iffalse}
 | 
|---|
 | 909 | \gdef\lst@DefLang{\lst@DefDriver{language}{lang}\lstset}
 | 
|---|
 | 910 | \lstdefinelanguage{}{}
 | 
|---|
 | 911 | \lst@Key{language}\relax{\lstKV@OptArg[]{#1}%
 | 
|---|
 | 912 |     {\lst@LAS{language}{lang}{[##1]{##2}}\lst@FindAlias\lstlanguagefiles
 | 
|---|
 | 913 |          \lsthk@SetLanguage
 | 
|---|
 | 914 |          {\lst@FindAlias[##1]{##2}%
 | 
|---|
 | 915 |           \let\lst@language\lst@malias
 | 
|---|
 | 916 |           \let\lst@dialect\lst@oalias}}}
 | 
|---|
 | 917 | \lst@Key{alsolanguage}\relax{\lstKV@OptArg[]{#1}%
 | 
|---|
 | 918 |     {\lst@LAS{language}{lang}{[##1]{##2}}\lst@FindAlias\lstlanguagefiles
 | 
|---|
 | 919 |          {}%
 | 
|---|
 | 920 |          {\lst@FindAlias[##1]{##2}%
 | 
|---|
 | 921 |           \let\lst@language\lst@malias
 | 
|---|
 | 922 |           \let\lst@dialect\lst@oalias}}}
 | 
|---|
 | 923 | \lst@AddToHook{SetLanguage}{}% init
 | 
|---|
 | 924 | \lst@UserCommand\lstalias{\@ifnextchar[\lstalias@\lstalias@@}
 | 
|---|
 | 925 | \gdef\lstalias@[#1]#2{\lstalias@b #2$#1}
 | 
|---|
 | 926 | \gdef\lstalias@b#1[#2]#3{\lst@NormedNameDef{lsta@#1}{#3$#2}}
 | 
|---|
 | 927 | \gdef\lstalias@@#1#2{\lst@NormedNameDef{lsta@#1}{#2}}
 | 
|---|
 | 928 | \lst@Key{defaultdialect}\relax
 | 
|---|
 | 929 |     {\lstKV@OptArg[]{#1}{\lst@NormedNameDef{lstdd@##2}{##1}}}
 | 
|---|
 | 930 | \gdef\lst@FindAlias[#1]#2{%
 | 
|---|
 | 931 |     \lst@NormedDef\lst@oalias{#1}%
 | 
|---|
 | 932 |     \lst@NormedDef\lst@malias{#2}%
 | 
|---|
 | 933 |     \@ifundefined{lsta@\lst@malias}{}%
 | 
|---|
 | 934 |         {\edef\lst@malias{\csname\@lst a@\lst@malias\endcsname}}%
 | 
|---|
 | 935 |     \ifx\@empty\lst@oalias \@ifundefined{lstdd@\lst@malias}{}%
 | 
|---|
 | 936 |         {\edef\lst@oalias{\csname\@lst dd@\lst@malias\endcsname}}%
 | 
|---|
 | 937 |     \fi
 | 
|---|
 | 938 |     \edef\lst@temp{\lst@malias $\lst@oalias}%
 | 
|---|
 | 939 |     \@ifundefined{lsta@\lst@temp}{}%
 | 
|---|
 | 940 |         {\edef\lst@temp{\csname\@lst a@\lst@temp\endcsname}}%
 | 
|---|
 | 941 |     \expandafter\lst@FindAlias@\lst@temp $}
 | 
|---|
 | 942 | \gdef\lst@FindAlias@#1$#2${%
 | 
|---|
 | 943 |     \def\lst@malias{#1}\def\lst@oalias{#2}%
 | 
|---|
 | 944 |     \ifx\@empty\lst@oalias \@ifundefined{lstdd@\lst@malias}{}%
 | 
|---|
 | 945 |         {\edef\lst@oalias{\csname\@lst dd@\lst@malias\endcsname}}%
 | 
|---|
 | 946 |     \fi}
 | 
|---|
 | 947 | \gdef\lst@RequireLanguages#1{%
 | 
|---|
 | 948 |     \lst@Require{language}{lang}{#1}\lst@FindAlias\lstlanguagefiles
 | 
|---|
 | 949 |     \ifx\lst@loadaspects\@empty\else
 | 
|---|
 | 950 |         \lst@RequireAspects\lst@loadaspects
 | 
|---|
 | 951 |     \fi}
 | 
|---|
 | 952 | \global\let\lstloadlanguages\lst@RequireLanguages
 | 
|---|
 | 953 | \lst@EndAspect
 | 
|---|
 | 954 | \lst@BeginAspect{formats}
 | 
|---|
 | 955 | \@ifundefined{lstformatfiles}
 | 
|---|
 | 956 |     {\lst@UserCommand\lstformatfiles{lstfmt0.sty}}{}
 | 
|---|
 | 957 | \lst@UserCommand\lstdefineformat{\lst@DefFormat\iftrue}
 | 
|---|
 | 958 | \lst@UserCommand\lst@defineformat{\lst@DefFormat\iffalse}
 | 
|---|
 | 959 | \gdef\lst@DefFormat{\lst@DefDriver{format}{fmt}\lst@UseFormat}
 | 
|---|
 | 960 | \lstdefineformat{}{}
 | 
|---|
 | 961 | \lst@Key{format}\relax{%
 | 
|---|
 | 962 |     \lst@LAS{format}{fmt}{[]{#1}}\lst@NoAlias\lstformatfiles
 | 
|---|
 | 963 |         \lsthk@SetFormat
 | 
|---|
 | 964 |         {}}
 | 
|---|
 | 965 | \lst@AddToHook{SetFormat}{\let\lst@fmtformat\@empty}% init
 | 
|---|
 | 966 | \gdef\lst@fmtSplit#1#2{%
 | 
|---|
 | 967 |     \def\lst@temp##1#2##2\relax##3{%
 | 
|---|
 | 968 |         \ifnum##3=\z@
 | 
|---|
 | 969 |             \ifx\@empty##2\@empty
 | 
|---|
 | 970 |                 \lst@false
 | 
|---|
 | 971 |                 \let\lst@fmta#1%
 | 
|---|
 | 972 |                 \let\lst@fmtb\@empty
 | 
|---|
 | 973 |             \else
 | 
|---|
 | 974 |                 \expandafter\lst@temp#1\relax\@ne
 | 
|---|
 | 975 |             \fi
 | 
|---|
 | 976 |         \else
 | 
|---|
 | 977 |             \def\lst@fmta{##1}\def\lst@fmtb{##2}%
 | 
|---|
 | 978 |         \fi}%
 | 
|---|
 | 979 |     \lst@true
 | 
|---|
 | 980 |     \expandafter\lst@temp#1#2\relax\z@}
 | 
|---|
 | 981 | \gdef\lst@IfNextCharWhitespace#1#2#3{%
 | 
|---|
 | 982 |     \lst@IfSubstring#3\lst@whitespaces{#1}{#2}#3}
 | 
|---|
 | 983 | \begingroup
 | 
|---|
 | 984 | \catcode`\^^I=12\catcode`\^^J=12\catcode`\^^M=12\catcode`\^^L=12\relax%
 | 
|---|
 | 985 | \lst@DefActive\lst@whitespaces{\ ^^I^^J^^M}% add ^^L
 | 
|---|
 | 986 | \global\let\lst@whitespaces\lst@whitespaces%
 | 
|---|
 | 987 | \endgroup
 | 
|---|
 | 988 | \gdef\lst@fmtIfIdentifier#1{%
 | 
|---|
 | 989 |     \ifx\relax#1\@empty
 | 
|---|
 | 990 |         \expandafter\@secondoftwo
 | 
|---|
 | 991 |     \else
 | 
|---|
 | 992 |         \expandafter\lst@fmtIfIdentifier@\expandafter#1%
 | 
|---|
 | 993 |     \fi}
 | 
|---|
 | 994 | \gdef\lst@fmtIfIdentifier@#1#2\relax{%
 | 
|---|
 | 995 |     \let\lst@next\@secondoftwo
 | 
|---|
 | 996 |     \ifnum`#1=`_\else
 | 
|---|
 | 997 |     \ifnum`#1<64\else
 | 
|---|
 | 998 |     \ifnum`#1<91\let\lst@next\@firstoftwo\else
 | 
|---|
 | 999 |     \ifnum`#1<97\else
 | 
|---|
 | 1000 |     \ifnum`#1<123\let\lst@next\@firstoftwo\else
 | 
|---|
 | 1001 |     \fi \fi \fi \fi \fi
 | 
|---|
 | 1002 |     \lst@next}
 | 
|---|
 | 1003 | \gdef\lst@fmtIfNextCharIn#1{%
 | 
|---|
 | 1004 |     \ifx\@empty#1\@empty \expandafter\@secondoftwo \else
 | 
|---|
 | 1005 |                          \def\lst@next{\lst@fmtIfNextCharIn@{#1}}%
 | 
|---|
 | 1006 |                          \expandafter\lst@next\fi}
 | 
|---|
 | 1007 | \gdef\lst@fmtIfNextCharIn@#1#2#3#4{%
 | 
|---|
 | 1008 |     \def\lst@temp##1#4##2##3\relax{%
 | 
|---|
 | 1009 |         \ifx \@empty##2\expandafter\@secondoftwo
 | 
|---|
 | 1010 |                  \else \expandafter\@firstoftwo \fi}%
 | 
|---|
 | 1011 |     \lst@temp#1#4\@empty\relax{#2}{#3}#4}
 | 
|---|
 | 1012 | \gdef\lst@fmtCDef#1{\lst@fmtCDef@#1}
 | 
|---|
 | 1013 | \gdef\lst@fmtCDef@#1#2#3#4#5#6#7{%
 | 
|---|
 | 1014 |     \lst@CDefIt#1{#2}{#3}%
 | 
|---|
 | 1015 |                {\lst@fmtIfNextCharIn{#5}{#4#2#3}{#6#4#2#3#7}}%
 | 
|---|
 | 1016 |                #4%
 | 
|---|
 | 1017 |                {}{}{}}
 | 
|---|
 | 1018 | \gdef\lst@fmtCDefX#1{\lst@fmtCDefX@#1}
 | 
|---|
 | 1019 | \gdef\lst@fmtCDefX@#1#2#3#4#5#6#7{%
 | 
|---|
 | 1020 |     \let#4#1%
 | 
|---|
 | 1021 |     \ifx\@empty#2\@empty
 | 
|---|
 | 1022 |         \def#1{\lst@fmtIfNextCharIn{#5}{#4}{#6#7}}%
 | 
|---|
 | 1023 |     \else \ifx\@empty#3\@empty
 | 
|---|
 | 1024 |         \def#1##1{%
 | 
|---|
 | 1025 |             \ifx##1#2%
 | 
|---|
 | 1026 |                 \def\lst@next{\lst@fmtIfNextCharIn{#5}{#4##1}%
 | 
|---|
 | 1027 |                                                       {#6#7}}%
 | 
|---|
 | 1028 |             \else
 | 
|---|
 | 1029 |                  \def\lst@next{#4##1}%
 | 
|---|
 | 1030 |             \fi
 | 
|---|
 | 1031 |             \lst@next}%
 | 
|---|
 | 1032 |     \else
 | 
|---|
 | 1033 |         \def#1{%
 | 
|---|
 | 1034 |             \lst@IfNextCharsArg{#2#3}%
 | 
|---|
 | 1035 |                 {\lst@fmtIfNextCharIn{#5}{\expandafter#4\lst@eaten}%
 | 
|---|
 | 1036 |                                          {#6#7}}%
 | 
|---|
 | 1037 |                 {\expandafter#4\lst@eaten}}%
 | 
|---|
 | 1038 |     \fi \fi}
 | 
|---|
 | 1039 | \gdef\lst@UseFormat#1{%
 | 
|---|
 | 1040 |     \def\lst@fmtwhole{#1}%
 | 
|---|
 | 1041 |     \lst@UseFormat@}
 | 
|---|
 | 1042 | \gdef\lst@UseFormat@{%
 | 
|---|
 | 1043 |     \lst@fmtSplit\lst@fmtwhole,%
 | 
|---|
 | 1044 |     \let\lst@fmtwhole\lst@fmtb
 | 
|---|
 | 1045 |     \ifx\lst@fmta\@empty\else
 | 
|---|
 | 1046 |         \lst@fmtSplit\lst@fmta=%
 | 
|---|
 | 1047 |         \ifx\@empty\lst@fmta\else
 | 
|---|
 | 1048 |             \expandafter\lstKV@XOptArg\expandafter[\expandafter]%
 | 
|---|
 | 1049 |                 \expandafter{\lst@fmtb}\lst@UseFormat@b
 | 
|---|
 | 1050 |         \fi
 | 
|---|
 | 1051 |     \fi
 | 
|---|
 | 1052 |     \ifx\lst@fmtwhole\@empty\else
 | 
|---|
 | 1053 |         \expandafter\lst@UseFormat@
 | 
|---|
 | 1054 |     \fi}
 | 
|---|
 | 1055 | \gdef\lst@UseFormat@b[#1]#2{%
 | 
|---|
 | 1056 |     \def\lst@fmtc{{#1}}\lst@lExtend\lst@fmtc{\expandafter{\lst@fmta}}%
 | 
|---|
 | 1057 |     \def\lst@fmtb{#2}%
 | 
|---|
 | 1058 |     \lst@fmtSplit\lst@fmtb\string
 | 
|---|
 | 1059 |     \ifx\@empty\lst@fmta
 | 
|---|
 | 1060 |         \lst@lAddTo\lst@fmtc{{}}%
 | 
|---|
 | 1061 |     \else
 | 
|---|
 | 1062 |         \lst@lExtend\lst@fmtc{\expandafter
 | 
|---|
 | 1063 |             {\expandafter\lst@fmtPre\expandafter{\lst@fmta}}}%
 | 
|---|
 | 1064 |     \fi
 | 
|---|
 | 1065 |     \ifx\@empty\lst@fmtb
 | 
|---|
 | 1066 |         \lst@lAddTo\lst@fmtc{{}}%
 | 
|---|
 | 1067 |     \else
 | 
|---|
 | 1068 |         \lst@lExtend\lst@fmtc{\expandafter
 | 
|---|
 | 1069 |             {\expandafter\lst@fmtPost\expandafter{\lst@fmtb}}}%
 | 
|---|
 | 1070 |     \fi
 | 
|---|
 | 1071 |     \expandafter\lst@UseFormat@c\lst@fmtc}
 | 
|---|
 | 1072 | \gdef\lst@UseFormat@c#1#2#3#4{%
 | 
|---|
 | 1073 |     \lst@fmtIfIdentifier#2\relax
 | 
|---|
 | 1074 |     {\lst@fmtIdentifier{#2}%
 | 
|---|
 | 1075 |      \lst@if\else \PackageWarning{Listings}%
 | 
|---|
 | 1076 |          {Cannot drop identifier in format definition}%
 | 
|---|
 | 1077 |      \fi}%
 | 
|---|
 | 1078 |     {\lst@if
 | 
|---|
 | 1079 |          \lst@lAddTo\lst@fmtformat{\lst@CArgX#2\relax\lst@fmtCDef}%
 | 
|---|
 | 1080 |      \else
 | 
|---|
 | 1081 |          \lst@lAddTo\lst@fmtformat{\lst@CArgX#2\relax\lst@fmtCDefX}%
 | 
|---|
 | 1082 |      \fi
 | 
|---|
 | 1083 |      \lst@DefActive\lst@fmtc{#1}%
 | 
|---|
 | 1084 |      \lst@lExtend\lst@fmtformat{\expandafter{\lst@fmtc}{#3}{#4}}}}
 | 
|---|
 | 1085 | \lst@AddToHook{SelectCharTable}{\lst@fmtformat}
 | 
|---|
 | 1086 | \global\let\lst@fmtformat\@empty
 | 
|---|
 | 1087 | \gdef\lst@fmtPre#1{%
 | 
|---|
 | 1088 |     \lst@PrintToken
 | 
|---|
 | 1089 |     \begingroup
 | 
|---|
 | 1090 |     \let\newline\lst@fmtEnsureNewLine
 | 
|---|
 | 1091 |     \let\space\lst@fmtEnsureSpace
 | 
|---|
 | 1092 |     \let\indent\lst@fmtIndent
 | 
|---|
 | 1093 |     \let\noindent\lst@fmtNoindent
 | 
|---|
 | 1094 |     #1%
 | 
|---|
 | 1095 |     \endgroup}
 | 
|---|
 | 1096 | \gdef\lst@fmtPost#1{%
 | 
|---|
 | 1097 |     \global\let\lst@fmtPostOutput\@empty
 | 
|---|
 | 1098 |     \begingroup
 | 
|---|
 | 1099 |     \def\newline{\lst@AddTo\lst@fmtPostOutput\lst@fmtEnsureNewLine}%
 | 
|---|
 | 1100 |     \def\space{\aftergroup\lst@fmtEnsurePostSpace}%
 | 
|---|
 | 1101 |     \def\indent{\lst@AddTo\lst@fmtPostOutput\lst@fmtIndent}%
 | 
|---|
 | 1102 |     \def\noindent{\lst@AddTo\lst@fmtPostOutput\lst@fmtNoindent}%
 | 
|---|
 | 1103 |     \aftergroup\lst@PrintToken
 | 
|---|
 | 1104 |     #1%
 | 
|---|
 | 1105 |     \endgroup}
 | 
|---|
 | 1106 | \lst@AddToHook{Init}{\global\let\lst@fmtPostOutput\@empty}
 | 
|---|
 | 1107 | \lst@AddToHook{PostOutput}
 | 
|---|
 | 1108 |     {\lst@fmtPostOutput \global\let\lst@fmtPostOutput\@empty}
 | 
|---|
 | 1109 | \gdef\lst@fmtEnsureSpace{%
 | 
|---|
 | 1110 |     \lst@ifwhitespace\else \expandafter\lst@ProcessSpace \fi}
 | 
|---|
 | 1111 | \gdef\lst@fmtEnsurePostSpace{%
 | 
|---|
 | 1112 |     \lst@IfNextCharWhitespace{}{\lst@ProcessSpace}}
 | 
|---|
 | 1113 | \lst@Key{fmtindent}{20pt}{\def\lst@fmtindent{#1}}
 | 
|---|
 | 1114 | \newdimen\lst@fmtcurrindent
 | 
|---|
 | 1115 | \lst@AddToHook{InitVars}{\global\lst@fmtcurrindent\z@}
 | 
|---|
 | 1116 | \gdef\lst@fmtIndent{\global\advance\lst@fmtcurrindent\lst@fmtindent}
 | 
|---|
 | 1117 | \gdef\lst@fmtNoindent{\global\advance\lst@fmtcurrindent-\lst@fmtindent}
 | 
|---|
 | 1118 | \gdef\lst@fmtEnsureNewLine{%
 | 
|---|
 | 1119 |     \global\advance\lst@newlines\@ne
 | 
|---|
 | 1120 |     \global\advance\lst@newlinesensured\@ne
 | 
|---|
 | 1121 |     \lst@fmtignoretrue}
 | 
|---|
 | 1122 | \lst@AddToAtTop\lst@DoNewLines{%
 | 
|---|
 | 1123 |     \ifnum\lst@newlines>\lst@newlinesensured
 | 
|---|
 | 1124 |         \global\advance\lst@newlines-\lst@newlinesensured
 | 
|---|
 | 1125 |     \fi
 | 
|---|
 | 1126 |     \global\lst@newlinesensured\z@}
 | 
|---|
 | 1127 | \newcount\lst@newlinesensured % global
 | 
|---|
 | 1128 | \lst@AddToHook{Init}{\global\lst@newlinesensured\z@}
 | 
|---|
 | 1129 | \gdef\lst@fmtignoretrue{\let\lst@fmtifignore\iftrue}
 | 
|---|
 | 1130 | \gdef\lst@fmtignorefalse{\let\lst@fmtifignore\iffalse}
 | 
|---|
 | 1131 | \lst@AddToHook{InitVars}{\lst@fmtignorefalse}
 | 
|---|
 | 1132 | \lst@AddToHook{Output}{\lst@fmtignorefalse}
 | 
|---|
 | 1133 | \gdef\lst@fmtUseLostSpace{%
 | 
|---|
 | 1134 |     \lst@ifnewline \kern\lst@fmtcurrindent \global\lst@lostspace\z@
 | 
|---|
 | 1135 |     \else
 | 
|---|
 | 1136 |         \lst@OldOLS
 | 
|---|
 | 1137 |     \fi}
 | 
|---|
 | 1138 | \lst@AddToHook{Init}
 | 
|---|
 | 1139 |     {\lst@true
 | 
|---|
 | 1140 |      \ifx\lst@fmtformat\@empty \ifx\lst@fmt\@empty \lst@false \fi\fi
 | 
|---|
 | 1141 |      \lst@if
 | 
|---|
 | 1142 |         \let\lst@OldOLS\lst@OutputLostSpace
 | 
|---|
 | 1143 |         \let\lst@OutputLostSpace\lst@fmtUseLostSpace
 | 
|---|
 | 1144 |         \let\lst@ProcessSpace\lst@fmtProcessSpace
 | 
|---|
 | 1145 |      \fi}
 | 
|---|
 | 1146 | \gdef\lst@fmtProcessSpace{%
 | 
|---|
 | 1147 |     \lst@ifletter
 | 
|---|
 | 1148 |         \lst@Output
 | 
|---|
 | 1149 |         \lst@fmtifignore\else
 | 
|---|
 | 1150 |             \lst@AppendOther\lst@outputspace
 | 
|---|
 | 1151 |         \fi
 | 
|---|
 | 1152 |     \else \lst@ifkeepspaces
 | 
|---|
 | 1153 |         \lst@AppendOther\lst@outputspace
 | 
|---|
 | 1154 |     \else \ifnum\lst@newlines=\z@
 | 
|---|
 | 1155 |         \lst@AppendSpecialSpace
 | 
|---|
 | 1156 |     \else \ifnum\lst@length=\z@
 | 
|---|
 | 1157 |             \global\advance\lst@lostspace\lst@width
 | 
|---|
 | 1158 |             \global\advance\lst@pos\m@ne
 | 
|---|
 | 1159 |         \else
 | 
|---|
 | 1160 |             \lst@AppendSpecialSpace
 | 
|---|
 | 1161 |         \fi
 | 
|---|
 | 1162 |     \fi \fi \fi
 | 
|---|
 | 1163 |     \lst@whitespacetrue}
 | 
|---|
 | 1164 | \lst@InstallTest{f}
 | 
|---|
 | 1165 |     \lst@fmt@list\lst@fmt \lst@gfmt@list\lst@gfmt
 | 
|---|
 | 1166 |     \lst@gfmt@wp
 | 
|---|
 | 1167 |     wd
 | 
|---|
 | 1168 | \gdef\lst@fmt@list{\lst@fmt\lst@gfmt}\global\let\lst@fmt\@empty
 | 
|---|
 | 1169 | \gdef\lst@gfmt@list{\lst@fmt\lst@gfmt}\global\let\lst@gfmt\@empty
 | 
|---|
 | 1170 | \gdef\lst@gfmt@wp{%
 | 
|---|
 | 1171 |     \begingroup \let\lst@UM\@empty
 | 
|---|
 | 1172 |     \let\lst@PrintToken\@empty
 | 
|---|
 | 1173 |     \csname\@lst @fmt$\the\lst@token\endcsname
 | 
|---|
 | 1174 |     \endgroup}
 | 
|---|
 | 1175 | \gdef\lst@fmtIdentifier#1#2#3#4{%
 | 
|---|
 | 1176 |     \lst@DefOther\lst@fmta{#2}\edef\lst@fmt{\lst@fmt,\lst@fmta}%
 | 
|---|
 | 1177 |     \@namedef{\@lst @fmt$\lst@fmta}{#3#4}}
 | 
|---|
 | 1178 | \lst@EndAspect
 | 
|---|
 | 1179 | \lst@BeginAspect{labels}
 | 
|---|
 | 1180 | \lst@Key{numbers}{none}{%
 | 
|---|
 | 1181 |     \let\lst@PlaceNumber\@empty
 | 
|---|
 | 1182 |     \lstKV@SwitchCases{#1}%
 | 
|---|
 | 1183 |     {none&\\%
 | 
|---|
 | 1184 |      left&\def\lst@PlaceNumber{\llap{\normalfont
 | 
|---|
 | 1185 |                 \lst@numberstyle{\thelstnumber}\kern\lst@numbersep}}\\%
 | 
|---|
 | 1186 |      right&\def\lst@PlaceNumber{\rlap{\normalfont
 | 
|---|
 | 1187 |                 \kern\linewidth \kern\lst@numbersep
 | 
|---|
 | 1188 |                 \lst@numberstyle{\thelstnumber}}}%
 | 
|---|
 | 1189 |     }{\PackageError{Listings}{Numbers #1 unknown}\@ehc}}
 | 
|---|
 | 1190 | \lst@Key{numberstyle}{}{\def\lst@numberstyle{#1}}
 | 
|---|
 | 1191 | \lst@Key{numbersep}{10pt}{\def\lst@numbersep{#1}}
 | 
|---|
 | 1192 | \lst@Key{stepnumber}{1}{\def\lst@stepnumber{#1\relax}}
 | 
|---|
 | 1193 | \lst@AddToHook{EmptyStyle}{\let\lst@stepnumber\@ne}
 | 
|---|
 | 1194 | \lst@Key{numberblanklines}{true}[t]
 | 
|---|
 | 1195 |     {\lstKV@SetIf{#1}\lst@ifnumberblanklines}
 | 
|---|
 | 1196 | \lst@Key{numberfirstline}{f}[t]{\lstKV@SetIf{#1}\lst@ifnumberfirstline}
 | 
|---|
 | 1197 | \gdef\lst@numberfirstlinefalse{\let\lst@ifnumberfirstline\iffalse}
 | 
|---|
 | 1198 | \lst@Key{firstnumber}{auto}{%
 | 
|---|
 | 1199 |     \lstKV@SwitchCases{#1}%
 | 
|---|
 | 1200 |     {auto&\let\lst@firstnumber\@undefined\\%
 | 
|---|
 | 1201 |      last&\let\lst@firstnumber\c@lstnumber
 | 
|---|
 | 1202 |     }{\def\lst@firstnumber{#1\relax}}}
 | 
|---|
 | 1203 | \lst@AddToHook{PreSet}{\let\lst@advancenumber\z@}
 | 
|---|
 | 1204 | \lst@AddToHook{PreInit}
 | 
|---|
 | 1205 |     {\ifx\lst@firstnumber\@undefined
 | 
|---|
 | 1206 |          \def\lst@firstnumber{\lst@lineno}%
 | 
|---|
 | 1207 |      \fi}
 | 
|---|
 | 1208 | \gdef\lst@SetFirstNumber{%
 | 
|---|
 | 1209 |     \ifx\lst@firstnumber\@undefined
 | 
|---|
 | 1210 |         \@tempcnta 0\csname\@lst no@\lst@intname\endcsname\relax
 | 
|---|
 | 1211 |         \ifnum\@tempcnta=\z@ \@tempcnta\lst@firstline
 | 
|---|
 | 1212 |                        \else \lst@nololtrue \fi
 | 
|---|
 | 1213 |         \advance\@tempcnta\lst@advancenumber
 | 
|---|
 | 1214 |         \edef\lst@firstnumber{\the\@tempcnta\relax}%
 | 
|---|
 | 1215 |     \fi}
 | 
|---|
 | 1216 | \gdef\lst@SaveFirstNumber{%
 | 
|---|
 | 1217 |     \expandafter\xdef
 | 
|---|
 | 1218 |         \csname\@lst no\ifx\lst@intname\@empty @ \else @\lst@intname\fi
 | 
|---|
 | 1219 |         \endcsname{\the\c@lstnumber}}
 | 
|---|
 | 1220 | \newcounter{lstnumber}% \global
 | 
|---|
 | 1221 | \global\c@lstnumber\@ne % init
 | 
|---|
 | 1222 | \renewcommand*\thelstnumber{\@arabic\c@lstnumber}
 | 
|---|
 | 1223 | \lst@AddToHook{EveryPar}
 | 
|---|
 | 1224 |     {\global\advance\c@lstnumber\lst@advancelstnum
 | 
|---|
 | 1225 |      \global\advance\c@lstnumber\m@ne \refstepcounter{lstnumber}%
 | 
|---|
 | 1226 |      \lst@SkipOrPrintLabel}%
 | 
|---|
 | 1227 | \global\let\lst@advancelstnum\@ne
 | 
|---|
 | 1228 | \lst@AddToHook{Init}{\def\@currentlabel{\thelstnumber}}
 | 
|---|
 | 1229 | \lst@AddToHook{InitVars}
 | 
|---|
 | 1230 |     {\global\c@lstnumber\lst@firstnumber
 | 
|---|
 | 1231 |      \global\advance\c@lstnumber\lst@advancenumber
 | 
|---|
 | 1232 |      \global\advance\c@lstnumber-\lst@advancelstnum}
 | 
|---|
 | 1233 | \lst@AddToHook{ExitVars}
 | 
|---|
 | 1234 |     {\global\advance\c@lstnumber\lst@advancelstnum}
 | 
|---|
 | 1235 | \AtBeginDocument{%
 | 
|---|
 | 1236 |     \def\theHlstnumber{\ifx\lst@@caption\@empty \lst@neglisting
 | 
|---|
 | 1237 |                                           \else \thelstlisting \fi
 | 
|---|
 | 1238 |                        .\thelstnumber}}
 | 
|---|
 | 1239 | \newcount\lst@skipnumbers % \global
 | 
|---|
 | 1240 | \lst@AddToHook{Init}
 | 
|---|
 | 1241 |     {\ifnum \z@>\lst@stepnumber
 | 
|---|
 | 1242 |          \let\lst@advancelstnum\m@ne
 | 
|---|
 | 1243 |          \edef\lst@stepnumber{-\lst@stepnumber}%
 | 
|---|
 | 1244 |      \fi
 | 
|---|
 | 1245 |      \ifnum \z@<\lst@stepnumber
 | 
|---|
 | 1246 |          \global\lst@skipnumbers\lst@firstnumber
 | 
|---|
 | 1247 |          \global\divide\lst@skipnumbers\lst@stepnumber
 | 
|---|
 | 1248 |          \global\multiply\lst@skipnumbers-\lst@stepnumber
 | 
|---|
 | 1249 |          \global\advance\lst@skipnumbers\lst@firstnumber
 | 
|---|
 | 1250 |          \ifnum\lst@skipnumbers>\z@
 | 
|---|
 | 1251 |              \global\advance\lst@skipnumbers -\lst@stepnumber
 | 
|---|
 | 1252 |          \fi
 | 
|---|
 | 1253 |      \else
 | 
|---|
 | 1254 |          \let\lst@SkipOrPrintLabel\relax
 | 
|---|
 | 1255 |      \fi}
 | 
|---|
 | 1256 | \gdef\lst@SkipOrPrintLabel{%
 | 
|---|
 | 1257 |     \ifnum\lst@skipnumbers=\z@
 | 
|---|
 | 1258 |         \global\advance\lst@skipnumbers-\lst@stepnumber\relax
 | 
|---|
 | 1259 |         \lst@PlaceNumber
 | 
|---|
 | 1260 |         \lst@numberfirstlinefalse
 | 
|---|
 | 1261 |     \else
 | 
|---|
 | 1262 |         \lst@ifnumberfirstline
 | 
|---|
 | 1263 |             \lst@PlaceNumber
 | 
|---|
 | 1264 |             \lst@numberfirstlinefalse
 | 
|---|
 | 1265 |         \fi
 | 
|---|
 | 1266 |     \fi
 | 
|---|
 | 1267 |     \global\advance\lst@skipnumbers\@ne}%
 | 
|---|
 | 1268 | \lst@AddToHook{OnEmptyLine}{%
 | 
|---|
 | 1269 |     \lst@ifnumberblanklines\else \ifnum\lst@skipnumbers=\z@
 | 
|---|
 | 1270 |         \global\advance\lst@skipnumbers-\lst@stepnumber\relax
 | 
|---|
 | 1271 |     \fi\fi}
 | 
|---|
 | 1272 | \lst@EndAspect
 | 
|---|
 | 1273 | \lst@BeginAspect{lineshape}
 | 
|---|
 | 1274 | \lst@Key{xleftmargin}{\z@}{\def\lst@xleftmargin{#1}}
 | 
|---|
 | 1275 | \lst@Key{xrightmargin}{\z@}{\def\lst@xrightmargin{#1}}
 | 
|---|
 | 1276 | \lst@Key{resetmargins}{false}[t]{\lstKV@SetIf{#1}\lst@ifresetmargins}
 | 
|---|
 | 1277 | \lst@AddToHook{BoxUnsafe}{\let\lst@xleftmargin\z@
 | 
|---|
 | 1278 |                           \let\lst@xrightmargin\z@}
 | 
|---|
 | 1279 | \lst@AddToHook{TextStyle}{%
 | 
|---|
 | 1280 |     \let\lst@xleftmargin\z@ \let\lst@xrightmargin\z@
 | 
|---|
 | 1281 |     \let\lst@ifresetmargins\iftrue}
 | 
|---|
 | 1282 | \lst@Key{linewidth}\linewidth{\def\lst@linewidth{#1}}
 | 
|---|
 | 1283 | \lst@AddToHook{PreInit}{\linewidth\lst@linewidth\relax}
 | 
|---|
 | 1284 | \gdef\lst@parshape{%
 | 
|---|
 | 1285 |     \parshape\@ne \@totalleftmargin \linewidth}
 | 
|---|
 | 1286 | \lst@AddToHook{Init}
 | 
|---|
 | 1287 |     {\lst@ifresetmargins
 | 
|---|
 | 1288 |          \advance\linewidth\@totalleftmargin
 | 
|---|
 | 1289 |          \advance\linewidth\rightmargin
 | 
|---|
 | 1290 |          \@totalleftmargin\z@
 | 
|---|
 | 1291 |      \fi
 | 
|---|
 | 1292 |      \advance\linewidth-\lst@xleftmargin
 | 
|---|
 | 1293 |      \advance\linewidth-\lst@xrightmargin
 | 
|---|
 | 1294 |      \advance\@totalleftmargin\lst@xleftmargin\relax}
 | 
|---|
 | 1295 | \lst@Key{lineskip}{\z@}{\def\lst@lineskip{#1\relax}}
 | 
|---|
 | 1296 | \lst@AddToHook{Init}
 | 
|---|
 | 1297 |     {\parskip\z@
 | 
|---|
 | 1298 |      \ifdim\z@=\lst@lineskip\else
 | 
|---|
 | 1299 |          \@tempdima\baselineskip
 | 
|---|
 | 1300 |          \advance\@tempdima\lst@lineskip
 | 
|---|
 | 1301 |          \multiply\@tempdima\@cclvi
 | 
|---|
 | 1302 |          \divide\@tempdima\baselineskip\relax
 | 
|---|
 | 1303 |          \multiply\@tempdima\@cclvi
 | 
|---|
 | 1304 |          \edef\baselinestretch{\strip@pt\@tempdima}%
 | 
|---|
 | 1305 |          \selectfont
 | 
|---|
 | 1306 |      \fi}
 | 
|---|
 | 1307 | \lst@Key{breaklines}{false}[t]{\lstKV@SetIf{#1}\lst@ifbreaklines}
 | 
|---|
 | 1308 | \lst@Key{breakindent}{20pt}{\def\lst@breakindent{#1}}
 | 
|---|
 | 1309 | \lst@Key{breakautoindent}{t}[t]{\lstKV@SetIf{#1}\lst@ifbreakautoindent}
 | 
|---|
 | 1310 | \lst@Key{breakatwhitespace}{false}[t]%
 | 
|---|
 | 1311 |     {\lstKV@SetIf{#1}\lst@ifbreakatwhitespace}
 | 
|---|
 | 1312 | \lst@Key{prebreak}{}{\def\lst@prebreak{#1}}
 | 
|---|
 | 1313 | \lst@Key{postbreak}{}{\def\lst@postbreak{#1}}
 | 
|---|
 | 1314 | \lst@AddToHook{Init}
 | 
|---|
 | 1315 |     {\lst@ifbreaklines
 | 
|---|
 | 1316 |          \hbadness\@M \pretolerance\@M
 | 
|---|
 | 1317 |          \@rightskip\@flushglue \rightskip\@rightskip % \raggedright
 | 
|---|
 | 1318 |          \leftskip\z@skip \parindent\z@
 | 
|---|
 | 1319 |          \def\lst@parshape{\parshape\tw@ \@totalleftmargin\linewidth
 | 
|---|
 | 1320 |                            \lst@breakshape}%
 | 
|---|
 | 1321 |      \else
 | 
|---|
 | 1322 |          \let\lst@discretionary\@empty
 | 
|---|
 | 1323 |      \fi}
 | 
|---|
 | 1324 | \lst@AddToHook{OnNewLine}
 | 
|---|
 | 1325 |     {\lst@ifbreaklines \lst@breakNewLine \fi}
 | 
|---|
 | 1326 | \gdef\lst@discretionary{%
 | 
|---|
 | 1327 |     \lst@ifbreakatwhitespace
 | 
|---|
 | 1328 |         \lst@ifwhitespace \lst@@discretionary \fi
 | 
|---|
 | 1329 |     \else
 | 
|---|
 | 1330 |         \lst@@discretionary
 | 
|---|
 | 1331 |     \fi}%
 | 
|---|
 | 1332 | \gdef\lst@@discretionary{%
 | 
|---|
 | 1333 |     \discretionary{\let\space\lst@spacekern\lst@prebreak}%
 | 
|---|
 | 1334 |                   {\llap{\lsthk@EveryLine
 | 
|---|
 | 1335 |                    \kern\lst@breakcurrindent \kern-\@totalleftmargin}%
 | 
|---|
 | 1336 |                    \let\space\lst@spacekern\lst@postbreak}{}}
 | 
|---|
 | 1337 | \lst@AddToHook{PostOutput}{\lst@discretionary}
 | 
|---|
 | 1338 | \gdef\lst@spacekern{\kern\lst@width}
 | 
|---|
 | 1339 | \gdef\lst@breakNewLine{%
 | 
|---|
 | 1340 |     \@tempdima\lst@breakindent\relax
 | 
|---|
 | 1341 |     \lst@ifbreakautoindent \advance\@tempdima\lst@lostspace \fi
 | 
|---|
 | 1342 |     \@tempdimc-\@tempdima \advance\@tempdimc\linewidth
 | 
|---|
 | 1343 |                           \advance\@tempdima\@totalleftmargin
 | 
|---|
 | 1344 |     \xdef\lst@breakshape{\noexpand\lst@breakcurrindent \the\@tempdimc}%
 | 
|---|
 | 1345 |     \xdef\lst@breakcurrindent{\the\@tempdima}}
 | 
|---|
 | 1346 | \global\let\lst@breakcurrindent\z@ % init
 | 
|---|
 | 1347 | \gdef\lst@breakshape{\@totalleftmargin \linewidth}
 | 
|---|
 | 1348 | \gdef\lst@breakProcessOther#1{\lst@ProcessOther#1\lst@OutputOther}
 | 
|---|
 | 1349 | \lst@AddToHook{SelectCharTable}
 | 
|---|
 | 1350 |     {\lst@ifbreaklines \lst@Def{`)}{\lst@breakProcessOther)}\fi}
 | 
|---|
 | 1351 | \lst@EndAspect
 | 
|---|
 | 1352 | \lst@BeginAspect[lineshape]{frames}
 | 
|---|
 | 1353 | \lst@Key{framexleftmargin}{\z@}{\def\lst@framexleftmargin{#1}}
 | 
|---|
 | 1354 | \lst@Key{framexrightmargin}{\z@}{\def\lst@framexrightmargin{#1}}
 | 
|---|
 | 1355 | \lst@Key{framextopmargin}{\z@}{\def\lst@framextopmargin{#1}}
 | 
|---|
 | 1356 | \lst@Key{framexbottommargin}{\z@}{\def\lst@framexbottommargin{#1}}
 | 
|---|
 | 1357 | \lst@Key{backgroundcolor}{}{\def\lst@bkgcolor{#1}}
 | 
|---|
 | 1358 | \lst@Key{fillcolor}{}{\def\lst@fillcolor{#1}}
 | 
|---|
 | 1359 | \lst@Key{rulecolor}{}{\def\lst@rulecolor{#1}}
 | 
|---|
 | 1360 | \lst@Key{rulesepcolor}{}{\def\lst@rulesepcolor{#1}}
 | 
|---|
 | 1361 | \lst@AddToHook{Init}{%
 | 
|---|
 | 1362 |     \ifx\lst@fillcolor\@empty
 | 
|---|
 | 1363 |         \let\lst@fillcolor\lst@bkgcolor
 | 
|---|
 | 1364 |     \fi
 | 
|---|
 | 1365 |     \ifx\lst@rulesepcolor\@empty
 | 
|---|
 | 1366 |         \let\lst@rulesepcolor\lst@fillcolor
 | 
|---|
 | 1367 |     \fi}
 | 
|---|
 | 1368 | \lst@Key{rulesep}{2pt}{\def\lst@rulesep{#1}}
 | 
|---|
 | 1369 | \lst@Key{framerule}{.4pt}{\def\lst@framerulewidth{#1}}
 | 
|---|
 | 1370 | \lst@Key{framesep}{3pt}{\def\lst@frametextsep{#1}}
 | 
|---|
 | 1371 | \lst@Key{frameshape}{}{%
 | 
|---|
 | 1372 |     \let\lst@xrulecolor\@empty
 | 
|---|
 | 1373 |     \lstKV@FourArg{#1}%
 | 
|---|
 | 1374 |     {\uppercase{\def\lst@frametshape{##1}}%
 | 
|---|
 | 1375 |      \uppercase{\def\lst@framelshape{##2}}%
 | 
|---|
 | 1376 |      \uppercase{\def\lst@framershape{##3}}%
 | 
|---|
 | 1377 |      \uppercase{\def\lst@framebshape{##4}}%
 | 
|---|
 | 1378 |      \let\lst@ifframeround\iffalse
 | 
|---|
 | 1379 |      \lst@IfSubstring R\lst@frametshape{\let\lst@ifframeround\iftrue}{}%
 | 
|---|
 | 1380 |      \lst@IfSubstring R\lst@framebshape{\let\lst@ifframeround\iftrue}{}%
 | 
|---|
 | 1381 |      \def\lst@frame{##1##2##3##4}}}
 | 
|---|
 | 1382 | \lst@Key{frameround}\relax
 | 
|---|
 | 1383 |     {\uppercase{\def\lst@frameround{#1}}%
 | 
|---|
 | 1384 |      \expandafter\lstframe@\lst@frameround ffff\relax}
 | 
|---|
 | 1385 | \global\let\lst@frameround\@empty
 | 
|---|
 | 1386 | \lst@Key{frame}\relax{%
 | 
|---|
 | 1387 |     \let\lst@xrulecolor\@empty
 | 
|---|
 | 1388 |     \lstKV@SwitchCases{#1}%
 | 
|---|
 | 1389 |     {none&\let\lst@frame\@empty\\%
 | 
|---|
 | 1390 |      leftline&\def\lst@frame{l}\\%
 | 
|---|
 | 1391 |      topline&\def\lst@frame{t}\\%
 | 
|---|
 | 1392 |      bottomline&\def\lst@frame{b}\\%
 | 
|---|
 | 1393 |      lines&\def\lst@frame{tb}\\%
 | 
|---|
 | 1394 |      single&\def\lst@frame{trbl}\\%
 | 
|---|
 | 1395 |      shadowbox&\def\lst@frame{tRBl}%
 | 
|---|
 | 1396 |             \def\lst@xrulecolor{\lst@rulesepcolor}%
 | 
|---|
 | 1397 |             \def\lst@rulesep{\lst@frametextsep}%
 | 
|---|
 | 1398 |     }{\def\lst@frame{#1}}%
 | 
|---|
 | 1399 |     \expandafter\lstframe@\lst@frameround ffff\relax}
 | 
|---|
 | 1400 | \gdef\lstframe@#1#2#3#4#5\relax{%
 | 
|---|
 | 1401 |     \lst@IfSubstring T\lst@frame{\edef\lst@frame{t\lst@frame}}{}%
 | 
|---|
 | 1402 |     \lst@IfSubstring R\lst@frame{\edef\lst@frame{r\lst@frame}}{}%
 | 
|---|
 | 1403 |     \lst@IfSubstring B\lst@frame{\edef\lst@frame{b\lst@frame}}{}%
 | 
|---|
 | 1404 |     \lst@IfSubstring L\lst@frame{\edef\lst@frame{l\lst@frame}}{}%
 | 
|---|
 | 1405 |     \let\lst@frametshape\@empty \let\lst@framebshape\@empty
 | 
|---|
 | 1406 |     \lst@frameCheck
 | 
|---|
 | 1407 |         ltr\lst@framelshape\lst@frametshape\lst@framershape #4#1%
 | 
|---|
 | 1408 |     \lst@frameCheck
 | 
|---|
 | 1409 |         LTR\lst@framelshape\lst@frametshape\lst@framershape #4#1%
 | 
|---|
 | 1410 |     \lst@frameCheck
 | 
|---|
 | 1411 |         lbr\lst@framelshape\lst@framebshape\lst@framershape #3#2%
 | 
|---|
 | 1412 |     \lst@frameCheck
 | 
|---|
 | 1413 |         LBR\lst@framelshape\lst@framebshape\lst@framershape #3#2%
 | 
|---|
 | 1414 |     \let\lst@ifframeround\iffalse
 | 
|---|
 | 1415 |     \lst@IfSubstring R\lst@frametshape{\let\lst@ifframeround\iftrue}{}%
 | 
|---|
 | 1416 |     \lst@IfSubstring R\lst@framebshape{\let\lst@ifframeround\iftrue}{}%
 | 
|---|
 | 1417 |     \let\lst@framelshape\@empty \let\lst@framershape\@empty
 | 
|---|
 | 1418 |     \lst@IfSubstring L\lst@frame
 | 
|---|
 | 1419 |         {\def\lst@framelshape{YY}}%
 | 
|---|
 | 1420 |         {\lst@IfSubstring l\lst@frame{\def\lst@framelshape{Y}}{}}%
 | 
|---|
 | 1421 |     \lst@IfSubstring R\lst@frame
 | 
|---|
 | 1422 |         {\def\lst@framershape{YY}}%
 | 
|---|
 | 1423 |         {\lst@IfSubstring r\lst@frame{\def\lst@framershape{Y}}{}}}
 | 
|---|
 | 1424 | \gdef\lst@frameCheck#1#2#3#4#5#6#7#8{%
 | 
|---|
 | 1425 |     \lst@IfSubstring #1\lst@frame
 | 
|---|
 | 1426 |         {\if #7T\def#4{R}\else \def#4{Y}\fi}%
 | 
|---|
 | 1427 |         {\def#4{N}}%
 | 
|---|
 | 1428 |     \lst@IfSubstring #3\lst@frame
 | 
|---|
 | 1429 |         {\if #8T\def#6{R}\else \def#6{Y}\fi}%
 | 
|---|
 | 1430 |         {\def#6{N}}%
 | 
|---|
 | 1431 |     \lst@IfSubstring #2\lst@frame{\edef#5{#5#4Y#6}}{}}
 | 
|---|
 | 1432 | \lst@AddToHook{TextStyle}
 | 
|---|
 | 1433 |    {\let\lst@frame\@empty
 | 
|---|
 | 1434 |     \let\lst@frametshape\@empty
 | 
|---|
 | 1435 |     \let\lst@framershape\@empty
 | 
|---|
 | 1436 |     \let\lst@framebshape\@empty
 | 
|---|
 | 1437 |     \let\lst@framelshape\@empty
 | 
|---|
 | 1438 |     \let\lst@bkgcolor\@empty}
 | 
|---|
 | 1439 | \gdef\lst@frameMakeBoxV#1#2#3{%
 | 
|---|
 | 1440 |     \setbox#1\hbox{%
 | 
|---|
 | 1441 |       \color@begingroup \lst@rulecolor
 | 
|---|
 | 1442 |       \ifx\lst@framelshape\@empty
 | 
|---|
 | 1443 |       \else
 | 
|---|
 | 1444 |             \llap{%
 | 
|---|
 | 1445 |                 \lst@frameBlock\lst@fillcolor\lst@frametextsep{#2}{#3}%
 | 
|---|
 | 1446 |                 \kern\lst@framexleftmargin}%
 | 
|---|
 | 1447 |       \fi
 | 
|---|
 | 1448 |       \llap{\setbox\z@\hbox{\vrule\@width\z@\@height#2\@depth#3%
 | 
|---|
 | 1449 |                             \lst@frameL}%
 | 
|---|
 | 1450 |             \rlap{\lst@frameBlock\lst@rulesepcolor{\wd\z@}%
 | 
|---|
 | 1451 |                                                   {\ht\z@}{\dp\z@}}%
 | 
|---|
 | 1452 |             \box\z@
 | 
|---|
 | 1453 |             \kern\lst@frametextsep\relax
 | 
|---|
 | 1454 |             \kern\lst@framexleftmargin}%
 | 
|---|
 | 1455 |       \rlap{\kern-\lst@framexleftmargin
 | 
|---|
 | 1456 |                     \@tempdima\linewidth
 | 
|---|
 | 1457 |             \advance\@tempdima\lst@framexleftmargin
 | 
|---|
 | 1458 |             \advance\@tempdima\lst@framexrightmargin
 | 
|---|
 | 1459 |             \lst@frameBlock\lst@bkgcolor\@tempdima{#2}{#3}%
 | 
|---|
 | 1460 |             \ifx\lst@framershape\@empty
 | 
|---|
 | 1461 |                 \kern\lst@frametextsep\relax
 | 
|---|
 | 1462 |             \else
 | 
|---|
 | 1463 |                 \lst@frameBlock\lst@fillcolor\lst@frametextsep{#2}{#3}%
 | 
|---|
 | 1464 |             \fi
 | 
|---|
 | 1465 |             \setbox\z@\hbox{\vrule\@width\z@\@height#2\@depth#3%
 | 
|---|
 | 1466 |                             \lst@frameR}%
 | 
|---|
 | 1467 |             \rlap{\lst@frameBlock\lst@rulesepcolor{\wd\z@}%
 | 
|---|
 | 1468 |                                                   {\ht\z@}{\dp\z@}}%
 | 
|---|
 | 1469 |             \box\z@}%
 | 
|---|
 | 1470 |       \color@endgroup}}
 | 
|---|
 | 1471 | \gdef\lst@frameBlock#1#2#3#4{%
 | 
|---|
 | 1472 |     \color@begingroup
 | 
|---|
 | 1473 |       #1%
 | 
|---|
 | 1474 |       \setbox\z@\hbox{\vrule\@height#3\@depth#4%
 | 
|---|
 | 1475 |                       \ifx#1\@empty \@width\z@ \kern#2\relax
 | 
|---|
 | 1476 |                               \else \@width#2\relax \fi}%
 | 
|---|
 | 1477 |       \box\z@
 | 
|---|
 | 1478 |     \color@endgroup}
 | 
|---|
 | 1479 | \gdef\lst@frameR{%
 | 
|---|
 | 1480 |     \expandafter\lst@frameR@\lst@framershape\relax
 | 
|---|
 | 1481 |     \kern-\lst@rulesep}
 | 
|---|
 | 1482 | \gdef\lst@frameR@#1{%
 | 
|---|
 | 1483 |     \ifx\relax#1\@empty\else
 | 
|---|
 | 1484 |         \if #1Y\lst@framevrule \else \kern\lst@framerulewidth \fi
 | 
|---|
 | 1485 |         \kern\lst@rulesep
 | 
|---|
 | 1486 |         \expandafter\lst@frameR@b
 | 
|---|
 | 1487 |     \fi}
 | 
|---|
 | 1488 | \gdef\lst@frameR@b#1{%
 | 
|---|
 | 1489 |     \ifx\relax#1\@empty
 | 
|---|
 | 1490 |     \else
 | 
|---|
 | 1491 |         \if #1Y\color@begingroup
 | 
|---|
 | 1492 |                \lst@xrulecolor
 | 
|---|
 | 1493 |                \lst@framevrule
 | 
|---|
 | 1494 |                \color@endgroup
 | 
|---|
 | 1495 |         \else
 | 
|---|
 | 1496 |                \kern\lst@framerulewidth
 | 
|---|
 | 1497 |         \fi
 | 
|---|
 | 1498 |         \kern\lst@rulesep
 | 
|---|
 | 1499 |         \expandafter\lst@frameR@
 | 
|---|
 | 1500 |     \fi}
 | 
|---|
 | 1501 | \gdef\lst@frameL{%
 | 
|---|
 | 1502 |     \kern-\lst@rulesep
 | 
|---|
 | 1503 |     \expandafter\lst@frameL@\lst@framelshape\relax}
 | 
|---|
 | 1504 | \gdef\lst@frameL@#1{%
 | 
|---|
 | 1505 |     \ifx\relax#1\@empty\else
 | 
|---|
 | 1506 |         \kern\lst@rulesep
 | 
|---|
 | 1507 |         \if#1Y\lst@framevrule \else \kern\lst@framerulewidth \fi
 | 
|---|
 | 1508 |         \expandafter\lst@frameL@
 | 
|---|
 | 1509 |     \fi}
 | 
|---|
 | 1510 | \gdef\lst@frameH#1#2{%
 | 
|---|
 | 1511 |     \global\let\lst@framediml\z@ \global\let\lst@framedimr\z@
 | 
|---|
 | 1512 |     \setbox\z@\hbox{}\@tempcntb\z@
 | 
|---|
 | 1513 |     \expandafter\lst@frameH@\expandafter#1#2\relax\relax\relax
 | 
|---|
 | 1514 |             \@tempdimb\lst@frametextsep\relax
 | 
|---|
 | 1515 |     \advance\@tempdimb\lst@framerulewidth\relax
 | 
|---|
 | 1516 |             \@tempdimc-\@tempdimb
 | 
|---|
 | 1517 |     \advance\@tempdimc\ht\z@
 | 
|---|
 | 1518 |     \advance\@tempdimc\dp\z@
 | 
|---|
 | 1519 |     \setbox\z@=\hbox{%
 | 
|---|
 | 1520 |       \lst@frameHBkg\lst@fillcolor\@tempdimb\@firstoftwo
 | 
|---|
 | 1521 |       \if#1T\rlap{\raise\dp\@tempboxa\box\@tempboxa}%
 | 
|---|
 | 1522 |        \else\rlap{\lower\ht\@tempboxa\box\@tempboxa}\fi
 | 
|---|
 | 1523 |       \lst@frameHBkg\lst@rulesepcolor\@tempdimc\@secondoftwo
 | 
|---|
 | 1524 |       \advance\@tempdimb\ht\@tempboxa
 | 
|---|
 | 1525 |       \if#1T\rlap{\raise\lst@frametextsep\box\@tempboxa}%
 | 
|---|
 | 1526 |        \else\rlap{\lower\@tempdimb\box\@tempboxa}\fi
 | 
|---|
 | 1527 |       \rlap{\box\z@}%
 | 
|---|
 | 1528 |     }}
 | 
|---|
 | 1529 | \gdef\lst@frameH@#1#2#3#4{%
 | 
|---|
 | 1530 |     \ifx\relax#4\@empty\else
 | 
|---|
 | 1531 |         \lst@frameh \@tempcntb#1#2#3#4%
 | 
|---|
 | 1532 |         \advance\@tempcntb\@ne
 | 
|---|
 | 1533 |         \expandafter\lst@frameH@\expandafter#1%
 | 
|---|
 | 1534 |     \fi}
 | 
|---|
 | 1535 | \gdef\lst@frameHBkg#1#2#3{%
 | 
|---|
 | 1536 |     \setbox\@tempboxa\hbox{%
 | 
|---|
 | 1537 |         \kern-\lst@framexleftmargin
 | 
|---|
 | 1538 |         #3{\kern-\lst@framediml\relax}{\@tempdima\z@}%
 | 
|---|
 | 1539 |         \ifdim\lst@framediml>\@tempdimb
 | 
|---|
 | 1540 |             #3{\@tempdima\lst@framediml \advance\@tempdima-\@tempdimb
 | 
|---|
 | 1541 |                \lst@frameBlock\lst@rulesepcolor\@tempdima\@tempdimb\z@}%
 | 
|---|
 | 1542 |               {\kern-\lst@framediml
 | 
|---|
 | 1543 |                \advance\@tempdima\lst@framediml\relax}%
 | 
|---|
 | 1544 |         \fi
 | 
|---|
 | 1545 |         #3{\@tempdima\z@
 | 
|---|
 | 1546 |            \ifx\lst@framelshape\@empty\else
 | 
|---|
 | 1547 |                \advance\@tempdima\@tempdimb
 | 
|---|
 | 1548 |            \fi
 | 
|---|
 | 1549 |            \ifx\lst@framershape\@empty\else
 | 
|---|
 | 1550 |                \advance\@tempdima\@tempdimb
 | 
|---|
 | 1551 |            \fi}%
 | 
|---|
 | 1552 |           {\ifdim\lst@framedimr>\@tempdimb
 | 
|---|
 | 1553 |               \advance\@tempdima\lst@framedimr\relax
 | 
|---|
 | 1554 |            \fi}%
 | 
|---|
 | 1555 |         \advance\@tempdima\linewidth
 | 
|---|
 | 1556 |         \advance\@tempdima\lst@framexleftmargin
 | 
|---|
 | 1557 |         \advance\@tempdima\lst@framexrightmargin
 | 
|---|
 | 1558 |         \lst@frameBlock#1\@tempdima#2\z@
 | 
|---|
 | 1559 |         #3{\ifdim\lst@framedimr>\@tempdimb
 | 
|---|
 | 1560 |                \@tempdima-\@tempdimb
 | 
|---|
 | 1561 |                \advance\@tempdima\lst@framedimr\relax
 | 
|---|
 | 1562 |                \lst@frameBlock\lst@rulesepcolor\@tempdima\@tempdimb\z@
 | 
|---|
 | 1563 |            \fi}{}%
 | 
|---|
 | 1564 |         }}
 | 
|---|
 | 1565 | \gdef\lst@frameh#1#2#3#4#5{%
 | 
|---|
 | 1566 |     \lst@frameCalcDimA#1%
 | 
|---|
 | 1567 |     \lst@ifframeround \@getcirc\@tempdima \fi
 | 
|---|
 | 1568 |     \setbox\z@\hbox{%
 | 
|---|
 | 1569 |       \begingroup
 | 
|---|
 | 1570 |       \setbox\z@\hbox{%
 | 
|---|
 | 1571 |         \kern-\lst@framexleftmargin
 | 
|---|
 | 1572 |         \color@begingroup
 | 
|---|
 | 1573 |         \ifnum#1=\z@ \lst@rulecolor \else \lst@xrulecolor \fi
 | 
|---|
 | 1574 |         \lst@frameCornerX\llap{#2L}#3#1%
 | 
|---|
 | 1575 |         \ifdim\lst@framediml<\@tempdimb
 | 
|---|
 | 1576 |             \xdef\lst@framediml{\the\@tempdimb}%
 | 
|---|
 | 1577 |         \fi
 | 
|---|
 | 1578 |         \begingroup
 | 
|---|
 | 1579 |         \if#4Y\else \let\lst@framerulewidth\z@ \fi
 | 
|---|
 | 1580 |                 \@tempdima\lst@framexleftmargin
 | 
|---|
 | 1581 |         \advance\@tempdima\lst@framexrightmargin
 | 
|---|
 | 1582 |         \advance\@tempdima\linewidth
 | 
|---|
 | 1583 |         \vrule\@width\@tempdima\@height\lst@framerulewidth \@depth\z@
 | 
|---|
 | 1584 |         \endgroup
 | 
|---|
 | 1585 |         \lst@frameCornerX\rlap{#2R}#5#1%
 | 
|---|
 | 1586 |         \ifdim\lst@framedimr<\@tempdimb
 | 
|---|
 | 1587 |             \xdef\lst@framedimr{\the\@tempdimb}%
 | 
|---|
 | 1588 |         \fi
 | 
|---|
 | 1589 |         \color@endgroup}%
 | 
|---|
 | 1590 |       \if#2T\rlap{\raise\dp\z@\box\z@}%
 | 
|---|
 | 1591 |        \else\rlap{\lower\ht\z@\box\z@}\fi
 | 
|---|
 | 1592 |       \endgroup
 | 
|---|
 | 1593 |       \box\z@}}
 | 
|---|
 | 1594 | \gdef\lst@frameCornerX#1#2#3#4{%
 | 
|---|
 | 1595 |     \setbox\@tempboxa\hbox{\csname\@lst @frame\if#3RR\fi #2\endcsname}%
 | 
|---|
 | 1596 |     \@tempdimb\wd\@tempboxa
 | 
|---|
 | 1597 |     \if #3R%
 | 
|---|
 | 1598 |         #1{\box\@tempboxa}%
 | 
|---|
 | 1599 |     \else
 | 
|---|
 | 1600 |         \if #3Y\expandafter#1\else
 | 
|---|
 | 1601 |                \@tempdimb\z@ \expandafter\vphantom \fi
 | 
|---|
 | 1602 |         {\box\@tempboxa}%
 | 
|---|
 | 1603 |     \fi}
 | 
|---|
 | 1604 | \gdef\lst@frameCalcDimA#1{%
 | 
|---|
 | 1605 |             \@tempdima\lst@rulesep
 | 
|---|
 | 1606 |     \advance\@tempdima\lst@framerulewidth
 | 
|---|
 | 1607 |     \multiply\@tempdima#1\relax
 | 
|---|
 | 1608 |     \advance\@tempdima\lst@frametextsep
 | 
|---|
 | 1609 |     \advance\@tempdima\lst@framerulewidth
 | 
|---|
 | 1610 |     \multiply\@tempdima\tw@}
 | 
|---|
 | 1611 | \lst@AddToHook{Init}{\lst@frameInit}
 | 
|---|
 | 1612 | \newbox\lst@framebox
 | 
|---|
 | 1613 | \gdef\lst@frameInit{%
 | 
|---|
 | 1614 |     \ifx\lst@framelshape\@empty \let\lst@frameL\@empty \fi
 | 
|---|
 | 1615 |     \ifx\lst@framershape\@empty \let\lst@frameR\@empty \fi
 | 
|---|
 | 1616 |     \def\lst@framevrule{\vrule\@width\lst@framerulewidth\relax}%
 | 
|---|
 | 1617 |     \lst@ifframeround
 | 
|---|
 | 1618 |         \lst@frameCalcDimA\z@ \@getcirc\@tempdima
 | 
|---|
 | 1619 |         \@tempdimb\@tempdima \divide\@tempdimb\tw@
 | 
|---|
 | 1620 |         \advance\@tempdimb -\@wholewidth
 | 
|---|
 | 1621 |         \edef\lst@frametextsep{\the\@tempdimb}%
 | 
|---|
 | 1622 |         \edef\lst@framerulewidth{\the\@wholewidth}%
 | 
|---|
 | 1623 |         \lst@frameCalcDimA\@ne \@getcirc\@tempdima
 | 
|---|
 | 1624 |         \@tempdimb\@tempdima \divide\@tempdimb\tw@
 | 
|---|
 | 1625 |         \advance\@tempdimb -\tw@\@wholewidth
 | 
|---|
 | 1626 |         \advance\@tempdimb -\lst@frametextsep
 | 
|---|
 | 1627 |         \edef\lst@rulesep{\the\@tempdimb}%
 | 
|---|
 | 1628 |     \fi
 | 
|---|
 | 1629 |     \lst@frameMakeBoxV\lst@framebox{\ht\strutbox}{\dp\strutbox}%
 | 
|---|
 | 1630 |     \def\lst@framelr{\copy\lst@framebox}%
 | 
|---|
 | 1631 |     \ifx\lst@frametshape\@empty\else
 | 
|---|
 | 1632 |         \lst@frameH T\lst@frametshape
 | 
|---|
 | 1633 |         \ifvoid\z@\else
 | 
|---|
 | 1634 |             \par\lst@parshape
 | 
|---|
 | 1635 |             \@tempdima-\baselineskip \advance\@tempdima\ht\z@
 | 
|---|
 | 1636 |             \ifdim\prevdepth<\@cclvi\p@\else
 | 
|---|
 | 1637 |                 \advance\@tempdima\prevdepth
 | 
|---|
 | 1638 |             \fi
 | 
|---|
 | 1639 |             \ifdim\@tempdima<\z@
 | 
|---|
 | 1640 |                 \vskip\@tempdima\vskip\lineskip
 | 
|---|
 | 1641 |             \fi
 | 
|---|
 | 1642 |             \noindent\box\z@\par
 | 
|---|
 | 1643 |             \lineskiplimit\maxdimen \lineskip\z@
 | 
|---|
 | 1644 |         \fi
 | 
|---|
 | 1645 |         \lst@frameSpreadV\lst@framextopmargin
 | 
|---|
 | 1646 |     \fi}
 | 
|---|
 | 1647 | \lst@AddToHook{EveryLine}{\lst@framelr}
 | 
|---|
 | 1648 | \global\let\lst@framelr\@empty
 | 
|---|
 | 1649 | \lst@AddToHook{DeInit}
 | 
|---|
 | 1650 |     {\ifx\lst@framebshape\@empty\else \lst@frameExit \fi}
 | 
|---|
 | 1651 | \gdef\lst@frameExit{%
 | 
|---|
 | 1652 |     \lst@frameSpreadV\lst@framexbottommargin
 | 
|---|
 | 1653 |     \lst@frameH B\lst@framebshape
 | 
|---|
 | 1654 |     \ifvoid\z@\else
 | 
|---|
 | 1655 |         \everypar{}\par\lst@parshape\nointerlineskip\noindent\box\z@
 | 
|---|
 | 1656 |     \fi}
 | 
|---|
 | 1657 | \gdef\lst@frameSpreadV#1{%
 | 
|---|
 | 1658 |     \ifdim\z@=#1\else
 | 
|---|
 | 1659 |         \everypar{}\par\lst@parshape\nointerlineskip\noindent
 | 
|---|
 | 1660 |         \lst@frameMakeBoxV\z@{#1}{\z@}%
 | 
|---|
 | 1661 |         \box\z@
 | 
|---|
 | 1662 |     \fi}
 | 
|---|
 | 1663 | \gdef\lst@frameTR{%
 | 
|---|
 | 1664 |     \vrule\@width.5\@tempdima\@height\lst@framerulewidth\@depth\z@
 | 
|---|
 | 1665 |     \kern-\lst@framerulewidth
 | 
|---|
 | 1666 |     \raise\lst@framerulewidth\hbox{%
 | 
|---|
 | 1667 |         \vrule\@width\lst@framerulewidth\@height\z@\@depth.5\@tempdima}}
 | 
|---|
 | 1668 | \gdef\lst@frameBR{%
 | 
|---|
 | 1669 |     \vrule\@width.5\@tempdima\@height\lst@framerulewidth\@depth\z@
 | 
|---|
 | 1670 |     \kern-\lst@framerulewidth
 | 
|---|
 | 1671 |     \vrule\@width\lst@framerulewidth\@height.5\@tempdima\@depth\z@}
 | 
|---|
 | 1672 | \gdef\lst@frameBL{%
 | 
|---|
 | 1673 |     \vrule\@width\lst@framerulewidth\@height.5\@tempdima\@depth\z@
 | 
|---|
 | 1674 |     \kern-\lst@framerulewidth
 | 
|---|
 | 1675 |     \vrule\@width.5\@tempdima\@height\lst@framerulewidth\@depth\z@}
 | 
|---|
 | 1676 | \gdef\lst@frameTL{%
 | 
|---|
 | 1677 |     \raise\lst@framerulewidth\hbox{%
 | 
|---|
 | 1678 |         \vrule\@width\lst@framerulewidth\@height\z@\@depth.5\@tempdima}%
 | 
|---|
 | 1679 |     \kern-\lst@framerulewidth
 | 
|---|
 | 1680 |     \vrule\@width.5\@tempdima\@height\lst@framerulewidth\@depth\z@}
 | 
|---|
 | 1681 | \gdef\lst@frameRoundT{%
 | 
|---|
 | 1682 |     \setbox\@tempboxa\hbox{\@circlefnt\char\@tempcnta}%
 | 
|---|
 | 1683 |     \ht\@tempboxa\lst@framerulewidth
 | 
|---|
 | 1684 |     \box\@tempboxa}
 | 
|---|
 | 1685 | \gdef\lst@frameRoundB{%
 | 
|---|
 | 1686 |     \setbox\@tempboxa\hbox{\@circlefnt\char\@tempcnta}%
 | 
|---|
 | 1687 |     \dp\@tempboxa\z@
 | 
|---|
 | 1688 |     \box\@tempboxa}
 | 
|---|
 | 1689 | \gdef\lst@frameRTR{%
 | 
|---|
 | 1690 |     \hb@xt@.5\@tempdima{\kern-\lst@framerulewidth
 | 
|---|
 | 1691 |                            \kern.5\@tempdima \lst@frameRoundT \hss}}
 | 
|---|
 | 1692 | \gdef\lst@frameRBR{%
 | 
|---|
 | 1693 |     \hb@xt@.5\@tempdima{\kern-\lst@framerulewidth
 | 
|---|
 | 1694 |     \advance\@tempcnta\@ne \kern.5\@tempdima \lst@frameRoundB \hss}}
 | 
|---|
 | 1695 | \gdef\lst@frameRBL{%
 | 
|---|
 | 1696 |     \advance\@tempcnta\tw@ \lst@frameRoundB
 | 
|---|
 | 1697 |     \kern-.5\@tempdima}
 | 
|---|
 | 1698 | \gdef\lst@frameRTL{%
 | 
|---|
 | 1699 |     \advance\@tempcnta\thr@@\lst@frameRoundT
 | 
|---|
 | 1700 |     \kern-.5\@tempdima}
 | 
|---|
 | 1701 | \lst@EndAspect
 | 
|---|
 | 1702 | \lst@BeginAspect[keywords]{make}
 | 
|---|
 | 1703 | \lst@NewMode\lst@makemode
 | 
|---|
 | 1704 | \lst@AddToHook{Output}{%
 | 
|---|
 | 1705 |     \ifnum\lst@mode=\lst@makemode
 | 
|---|
 | 1706 |         \ifx\lst@thestyle\lst@gkeywords@sty
 | 
|---|
 | 1707 |             \lst@makekeytrue
 | 
|---|
 | 1708 |         \fi
 | 
|---|
 | 1709 |     \fi}
 | 
|---|
 | 1710 | \gdef\lst@makekeytrue{\let\lst@ifmakekey\iftrue}
 | 
|---|
 | 1711 | \gdef\lst@makekeyfalse{\let\lst@ifmakekey\iffalse}
 | 
|---|
 | 1712 | \global\lst@makekeyfalse % init
 | 
|---|
 | 1713 | \lst@Key{makemacrouse}f[t]{\lstKV@SetIf{#1}\lst@ifmakemacrouse}
 | 
|---|
 | 1714 | \gdef\lst@MakeSCT{%
 | 
|---|
 | 1715 |     \lst@ifmakemacrouse
 | 
|---|
 | 1716 |         \lst@ReplaceInput{$(}{%
 | 
|---|
 | 1717 |             \lst@PrintToken
 | 
|---|
 | 1718 |             \lst@EnterMode\lst@makemode{\lst@makekeyfalse}%
 | 
|---|
 | 1719 |             \lst@Merge{\lst@ProcessOther\$\lst@ProcessOther(}}%
 | 
|---|
 | 1720 |         \lst@ReplaceInput{)}{%
 | 
|---|
 | 1721 |             \ifnum\lst@mode=\lst@makemode
 | 
|---|
 | 1722 |                 \lst@PrintToken
 | 
|---|
 | 1723 |                 \begingroup
 | 
|---|
 | 1724 |                     \lst@ProcessOther)%
 | 
|---|
 | 1725 |                     \lst@ifmakekey
 | 
|---|
 | 1726 |                         \let\lst@currstyle\lst@gkeywords@sty
 | 
|---|
 | 1727 |                     \fi
 | 
|---|
 | 1728 |                     \lst@OutputOther
 | 
|---|
 | 1729 |                 \endgroup
 | 
|---|
 | 1730 |                 \lst@LeaveMode
 | 
|---|
 | 1731 |             \else
 | 
|---|
 | 1732 |                 \expandafter\lst@ProcessOther\expandafter)%
 | 
|---|
 | 1733 |             \fi}%
 | 
|---|
 | 1734 |     \else
 | 
|---|
 | 1735 |         \lst@ReplaceInput{$(}{\lst@ProcessOther\$\lst@ProcessOther(}%
 | 
|---|
 | 1736 |     \fi}
 | 
|---|
 | 1737 | \lst@EndAspect
 | 
|---|
 | 1738 | \lst@BeginAspect{0.21}
 | 
|---|
 | 1739 | \lst@Key{labelstyle}{}{\def\lst@numberstyle{#1}}
 | 
|---|
 | 1740 | \lst@Key{labelsep}{10pt}{\def\lst@numbersep{#1}}
 | 
|---|
 | 1741 | \lst@Key{labelstep}{0}{%
 | 
|---|
 | 1742 |     \ifnum #1=\z@ \KV@lst@numbers{none}%
 | 
|---|
 | 1743 |             \else \KV@lst@numbers{left}\fi
 | 
|---|
 | 1744 |     \def\lst@stepnumber{#1\relax}}
 | 
|---|
 | 1745 | \lst@Key{firstlabel}\relax{\def\lst@firstnumber{#1\relax}}
 | 
|---|
 | 1746 | \lst@Key{advancelabel}\relax{\def\lst@advancenumber{#1\relax}}
 | 
|---|
 | 1747 | \let\c@lstlabel\c@lstnumber
 | 
|---|
 | 1748 | \lst@AddToHook{Init}{\def\thelstnumber{\thelstlabel}}
 | 
|---|
 | 1749 | \newcommand*\thelstlabel{\@arabic\c@lstlabel}
 | 
|---|
 | 1750 | \lst@Key{first}\relax{\def\lst@firstline{#1\relax}}
 | 
|---|
 | 1751 | \lst@Key{last}\relax{\def\lst@lastline{#1\relax}}
 | 
|---|
 | 1752 | \lst@Key{framerulewidth}{.4pt}{\def\lst@framerulewidth{#1}}
 | 
|---|
 | 1753 | \lst@Key{framerulesep}{2pt}{\def\lst@rulesep{#1}}
 | 
|---|
 | 1754 | \lst@Key{frametextsep}{3pt}{\def\lst@frametextsep{#1}}
 | 
|---|
 | 1755 | \lst@Key{framerulecolor}{}{\lstKV@OptArg[]{#1}%
 | 
|---|
 | 1756 |     {\ifx\@empty##2\@empty
 | 
|---|
 | 1757 |          \let\lst@rulecolor\@empty
 | 
|---|
 | 1758 |      \else
 | 
|---|
 | 1759 |          \ifx\@empty##1\@empty
 | 
|---|
 | 1760 |              \def\lst@rulecolor{\color{##2}}%
 | 
|---|
 | 1761 |          \else
 | 
|---|
 | 1762 |              \def\lst@rulecolor{\color[##1]{##2}}%
 | 
|---|
 | 1763 |          \fi
 | 
|---|
 | 1764 |      \fi}}
 | 
|---|
 | 1765 | \lst@Key{backgroundcolor}{}{\lstKV@OptArg[]{#1}%
 | 
|---|
 | 1766 |     {\ifx\@empty##2\@empty
 | 
|---|
 | 1767 |          \let\lst@bkgcolor\@empty
 | 
|---|
 | 1768 |      \else
 | 
|---|
 | 1769 |          \ifx\@empty##1\@empty
 | 
|---|
 | 1770 |              \def\lst@bkgcolor{\color{##2}}%
 | 
|---|
 | 1771 |          \else
 | 
|---|
 | 1772 |              \def\lst@bkgcolor{\color[##1]{##2}}%
 | 
|---|
 | 1773 |          \fi
 | 
|---|
 | 1774 |      \fi}}
 | 
|---|
 | 1775 | \lst@Key{framespread}{\z@}{\def\lst@framespread{#1}}
 | 
|---|
 | 1776 | \lst@AddToHook{PreInit}
 | 
|---|
 | 1777 |     {\@tempdima\lst@framespread\relax \divide\@tempdima\tw@
 | 
|---|
 | 1778 |      \edef\lst@framextopmargin{\the\@tempdima}%
 | 
|---|
 | 1779 |      \let\lst@framexrightmargin\lst@framextopmargin
 | 
|---|
 | 1780 |      \let\lst@framexbottommargin\lst@framextopmargin
 | 
|---|
 | 1781 |      \advance\@tempdima\lst@xleftmargin\relax
 | 
|---|
 | 1782 |      \edef\lst@framexleftmargin{\the\@tempdima}}
 | 
|---|
 | 1783 | \newdimen\lst@innerspread \newdimen\lst@outerspread
 | 
|---|
 | 1784 | \lst@Key{spread}{\z@,\z@}{\lstKV@CSTwoArg{#1}%
 | 
|---|
 | 1785 |     {\lst@innerspread##1\relax
 | 
|---|
 | 1786 |      \ifx\@empty##2\@empty
 | 
|---|
 | 1787 |          \divide\lst@innerspread\tw@\relax
 | 
|---|
 | 1788 |          \lst@outerspread\lst@innerspread
 | 
|---|
 | 1789 |      \else
 | 
|---|
 | 1790 |          \lst@outerspread##2\relax
 | 
|---|
 | 1791 |      \fi}}
 | 
|---|
 | 1792 | \lst@AddToHook{BoxUnsafe}{\lst@outerspread\z@ \lst@innerspread\z@}
 | 
|---|
 | 1793 | \lst@Key{wholeline}{false}[t]{\lstKV@SetIf{#1}\lst@ifresetmargins}
 | 
|---|
 | 1794 | \lst@Key{indent}{\z@}{\def\lst@xleftmargin{#1}}
 | 
|---|
 | 1795 | \lst@AddToHook{PreInit}
 | 
|---|
 | 1796 |     {\lst@innerspread=-\lst@innerspread
 | 
|---|
 | 1797 |      \lst@outerspread=-\lst@outerspread
 | 
|---|
 | 1798 |      \ifodd\c@page \advance\lst@innerspread\lst@xleftmargin
 | 
|---|
 | 1799 |              \else \advance\lst@outerspread\lst@xleftmargin \fi
 | 
|---|
 | 1800 |      \ifodd\c@page
 | 
|---|
 | 1801 |          \edef\lst@xleftmargin{\the\lst@innerspread}%
 | 
|---|
 | 1802 |          \edef\lst@xrightmargin{\the\lst@outerspread}%
 | 
|---|
 | 1803 |      \else
 | 
|---|
 | 1804 |          \edef\lst@xleftmargin{\the\lst@outerspread}%
 | 
|---|
 | 1805 |          \edef\lst@xrightmargin{\the\lst@innerspread}%
 | 
|---|
 | 1806 |      \fi}
 | 
|---|
 | 1807 | \lst@Key{defaultclass}\relax{\def\lst@classoffset{#1}}
 | 
|---|
 | 1808 | \lst@Key{stringtest}\relax{}% dummy
 | 
|---|
 | 1809 | \lst@Key{outputpos}\relax{\lst@outputpos#1\relax\relax}
 | 
|---|
 | 1810 | \lst@Key{stringspaces}\relax[t]{\lstKV@SetIf{#1}\lst@ifshowstringspaces}
 | 
|---|
 | 1811 | \lst@Key{visiblespaces}\relax[t]{\lstKV@SetIf{#1}\lst@ifshowspaces}
 | 
|---|
 | 1812 | \lst@Key{visibletabs}\relax[t]{\lstKV@SetIf{#1}\lst@ifshowtabs}
 | 
|---|
 | 1813 | \lst@EndAspect
 | 
|---|
 | 1814 | \lst@BeginAspect{fancyvrb}
 | 
|---|
 | 1815 | \@ifundefined{FancyVerbFormatLine}
 | 
|---|
 | 1816 |     {\typeout{^^J%
 | 
|---|
 | 1817 |      ***^^J%
 | 
|---|
 | 1818 |      *** `listings.sty' needs `fancyvrb.sty' right now.^^J%
 | 
|---|
 | 1819 |      *** Please ensure its availability and try again.^^J%
 | 
|---|
 | 1820 |      ***^^J}%
 | 
|---|
 | 1821 |      \batchmode \@@end}{}
 | 
|---|
 | 1822 | \gdef\lstFV@fancyvrb{%
 | 
|---|
 | 1823 |     \lst@iffancyvrb
 | 
|---|
 | 1824 |         \ifx\FancyVerbFormatLine\lstFV@FancyVerbFormatLine\else
 | 
|---|
 | 1825 |             \let\lstFV@FVFL\FancyVerbFormatLine
 | 
|---|
 | 1826 |             \let\FancyVerbFormatLine\lstFV@FancyVerbFormatLine
 | 
|---|
 | 1827 |         \fi
 | 
|---|
 | 1828 |     \else
 | 
|---|
 | 1829 |         \ifx\lstFV@FVFL\@undefined\else
 | 
|---|
 | 1830 |             \let\FancyVerbFormatLine\lstFV@FVFL
 | 
|---|
 | 1831 |             \let\lstFV@FVFL\@undefined
 | 
|---|
 | 1832 |         \fi
 | 
|---|
 | 1833 |     \fi}
 | 
|---|
 | 1834 | \gdef\lstFV@VerbatimBegin{%
 | 
|---|
 | 1835 |     \ifx\FancyVerbFormatLine\lstFV@FancyVerbFormatLine
 | 
|---|
 | 1836 |         \lsthk@TextStyle \lsthk@BoxUnsafe
 | 
|---|
 | 1837 |         \lsthk@PreSet
 | 
|---|
 | 1838 |         \lst@activecharsfalse
 | 
|---|
 | 1839 |         \let\normalbaselines\relax
 | 
|---|
 | 1840 | \xdef\lstFV@RestoreData{\noexpand\linewidth\the\linewidth\relax}%
 | 
|---|
 | 1841 |         \lst@Init\relax
 | 
|---|
 | 1842 |         \lst@ifresetmargins \advance\linewidth-\@totalleftmargin \fi
 | 
|---|
 | 1843 | \lstFV@RestoreData
 | 
|---|
 | 1844 |         \everypar{}\global\lst@newlines\z@
 | 
|---|
 | 1845 |         \lst@mode\lst@nomode \let\lst@entermodes\@empty
 | 
|---|
 | 1846 |         \lst@InterruptModes
 | 
|---|
 | 1847 | %% D.G. modification begin - Nov. 25, 1998
 | 
|---|
 | 1848 |         \let\@noligs\relax
 | 
|---|
 | 1849 | %% D.G. modification end
 | 
|---|
 | 1850 |     \fi}
 | 
|---|
 | 1851 | \gdef\lstFV@VerbatimEnd{%
 | 
|---|
 | 1852 |     \ifx\FancyVerbFormatLine\lstFV@FancyVerbFormatLine
 | 
|---|
 | 1853 |         \global\setbox\lstFV@gtempboxa\box\@tempboxa
 | 
|---|
 | 1854 |         \global\let\@gtempa\FV@ProcessLine
 | 
|---|
 | 1855 |         \lst@mode\lst@Pmode
 | 
|---|
 | 1856 |         \lst@DeInit
 | 
|---|
 | 1857 |         \let\FV@ProcessLine\@gtempa
 | 
|---|
 | 1858 |         \setbox\@tempboxa\box\lstFV@gtempboxa
 | 
|---|
 | 1859 |         \par
 | 
|---|
 | 1860 |     \fi}
 | 
|---|
 | 1861 | \newbox\lstFV@gtempboxa
 | 
|---|
 | 1862 | \lst@AddTo\FV@VerbatimBegin\lstFV@VerbatimBegin
 | 
|---|
 | 1863 | \lst@AddToAtTop\FV@VerbatimEnd\lstFV@VerbatimEnd
 | 
|---|
 | 1864 | \lst@AddTo\FV@LVerbatimBegin\lstFV@VerbatimBegin
 | 
|---|
 | 1865 | \lst@AddToAtTop\FV@LVerbatimEnd\lstFV@VerbatimEnd
 | 
|---|
 | 1866 | \lst@AddTo\FV@BVerbatimBegin\lstFV@VerbatimBegin
 | 
|---|
 | 1867 | \lst@AddToAtTop\FV@BVerbatimEnd\lstFV@VerbatimEnd
 | 
|---|
 | 1868 | \gdef\lstFV@FancyVerbFormatLine#1{%
 | 
|---|
 | 1869 |     \let\lst@arg\@empty \lst@FVConvert#1\@nil
 | 
|---|
 | 1870 |     \global\lst@newlines\z@
 | 
|---|
 | 1871 |     \vtop{\noindent\lst@parshape
 | 
|---|
 | 1872 |           \lst@ReenterModes
 | 
|---|
 | 1873 |           \lst@arg \lst@PrintToken\lst@EOLUpdate\lsthk@InitVarsBOL
 | 
|---|
 | 1874 |           \lst@InterruptModes}}
 | 
|---|
 | 1875 | \lst@Key{fvcmdparams}%
 | 
|---|
 | 1876 |     {\overlay\@ne}%
 | 
|---|
 | 1877 |     {\def\lst@FVcmdparams{,#1}}
 | 
|---|
 | 1878 | \lst@Key{morefvcmdparams}\relax{\lst@lAddTo\lst@FVcmdparams{,#1}}
 | 
|---|
 | 1879 | \gdef\lst@FVConvert{\@tempcnta\z@ \lst@FVConvertO@}%
 | 
|---|
 | 1880 | \gdef\lst@FVConvertO@{%
 | 
|---|
 | 1881 |     \ifcase\@tempcnta
 | 
|---|
 | 1882 |         \expandafter\futurelet\expandafter\@let@token
 | 
|---|
 | 1883 |         \expandafter\lst@FVConvert@@
 | 
|---|
 | 1884 |     \else
 | 
|---|
 | 1885 |         \expandafter\lst@FVConvertO@a
 | 
|---|
 | 1886 |     \fi}
 | 
|---|
 | 1887 | \gdef\lst@FVConvertO@a#1{%
 | 
|---|
 | 1888 |     \lst@lAddTo\lst@arg{{#1}}\advance\@tempcnta\m@ne
 | 
|---|
 | 1889 |     \lst@FVConvertO@}%
 | 
|---|
 | 1890 | \gdef\lst@FVConvert@@{%
 | 
|---|
 | 1891 |     \ifcat\noexpand\@let@token\bgroup \expandafter\lst@FVConvertArg
 | 
|---|
 | 1892 |                                 \else \expandafter\lst@FVConvert@ \fi}
 | 
|---|
 | 1893 | \gdef\lst@FVConvertArg#1{%
 | 
|---|
 | 1894 |     {\let\lst@arg\@empty
 | 
|---|
 | 1895 |      \lst@FVConvert#1\@nil
 | 
|---|
 | 1896 |      \global\let\@gtempa\lst@arg}%
 | 
|---|
 | 1897 |      \lst@lExtend\lst@arg{\expandafter{\@gtempa\lst@PrintToken}}%
 | 
|---|
 | 1898 |      \lst@FVConvert}
 | 
|---|
 | 1899 | \gdef\lst@FVConvert@#1{%
 | 
|---|
 | 1900 |     \ifx \@nil#1\else
 | 
|---|
 | 1901 |        \if\relax\noexpand#1%
 | 
|---|
 | 1902 |           \lst@lAddTo\lst@arg{\lst@OutputLostSpace\lst@PrintToken#1}%
 | 
|---|
 | 1903 |        \else
 | 
|---|
 | 1904 |           \lccode`\~=`#1\lowercase{\lst@lAddTo\lst@arg~}%
 | 
|---|
 | 1905 |        \fi
 | 
|---|
 | 1906 |        \expandafter\lst@FVConvert
 | 
|---|
 | 1907 |     \fi}
 | 
|---|
 | 1908 | \gdef\lst@FVConvert@#1{%
 | 
|---|
 | 1909 |     \ifx \@nil#1\else
 | 
|---|
 | 1910 |        \if\relax\noexpand#1%
 | 
|---|
 | 1911 |           \lst@lAddTo\lst@arg{\lst@OutputLostSpace\lst@PrintToken#1}%
 | 
|---|
 | 1912 |           \def\lst@temp##1,#1##2,##3##4\relax{%
 | 
|---|
 | 1913 |               \ifx##3\@empty \else \@tempcnta##2\relax \fi}%
 | 
|---|
 | 1914 |           \expandafter\lst@temp\lst@FVcmdparams,#1\z@,\@empty\relax
 | 
|---|
 | 1915 |        \else
 | 
|---|
 | 1916 |           \lccode`\~=`#1\lowercase{\lst@lAddTo\lst@arg~}%
 | 
|---|
 | 1917 |        \fi
 | 
|---|
 | 1918 |        \expandafter\lst@FVConvertO@
 | 
|---|
 | 1919 |     \fi}
 | 
|---|
 | 1920 | \lst@EndAspect
 | 
|---|
 | 1921 | \lst@BeginAspect[keywords,comments,strings,language]{lgrind}
 | 
|---|
 | 1922 | \gdef\lst@LGGetNames#1:#2\relax{%
 | 
|---|
 | 1923 |     \lst@NormedDef\lstlang@{#1}\lst@ReplaceInArg\lstlang@{|,}%
 | 
|---|
 | 1924 |     \def\lst@arg{:#2}}
 | 
|---|
 | 1925 | \gdef\lst@LGGetValue#1{%
 | 
|---|
 | 1926 |     \lst@false
 | 
|---|
 | 1927 |     \def\lst@temp##1:#1##2##3\relax{%
 | 
|---|
 | 1928 |         \ifx\@empty##2\else \lst@LGGetValue@{#1}\fi}
 | 
|---|
 | 1929 |     \expandafter\lst@temp\lst@arg:#1\@empty\relax}
 | 
|---|
 | 1930 | \gdef\lst@LGGetValue@#1{%
 | 
|---|
 | 1931 |     \lst@true
 | 
|---|
 | 1932 |     \def\lst@temp##1:#1##2:##3\relax{%
 | 
|---|
 | 1933 |         \@ifnextchar=\lst@LGGetValue@@{\lst@LGGetValue@@=}##2\relax
 | 
|---|
 | 1934 |         \def\lst@arg{##1:##3}}%
 | 
|---|
 | 1935 |     \expandafter\lst@temp\lst@arg\relax}
 | 
|---|
 | 1936 | \gdef\lst@LGGetValue@@=#1\relax{\def\lst@LGvalue{#1}}
 | 
|---|
 | 1937 | \gdef\lst@LGGetComment#1#2{%
 | 
|---|
 | 1938 |     \let#2\@empty
 | 
|---|
 | 1939 |     \lst@LGGetValue{#1b}%
 | 
|---|
 | 1940 |     \lst@if
 | 
|---|
 | 1941 |         \let#2\lst@LGvalue
 | 
|---|
 | 1942 |         \lst@LGGetValue{#1e}%
 | 
|---|
 | 1943 |         \ifx\lst@LGvalue\lst@LGEOL
 | 
|---|
 | 1944 |             \edef\lstlang@{\lstlang@,commentline={#2}}%
 | 
|---|
 | 1945 |             \let#2\@empty
 | 
|---|
 | 1946 |         \else
 | 
|---|
 | 1947 |             \edef#2{{#2}{\lst@LGvalue}}%
 | 
|---|
 | 1948 |         \fi
 | 
|---|
 | 1949 |     \fi}
 | 
|---|
 | 1950 | \gdef\lst@LGGetString#1#2{%
 | 
|---|
 | 1951 |     \lst@LGGetValue{#1b}%
 | 
|---|
 | 1952 |     \lst@if
 | 
|---|
 | 1953 |         \let#2\lst@LGvalue
 | 
|---|
 | 1954 |         \lst@LGGetValue{#1e}%
 | 
|---|
 | 1955 |         \ifx\lst@LGvalue\lst@LGEOL
 | 
|---|
 | 1956 |             \edef\lstlang@{\lstlang@,morestringizer=[l]{#2}}%
 | 
|---|
 | 1957 |         \else
 | 
|---|
 | 1958 |             \ifx #2\lst@LGvalue
 | 
|---|
 | 1959 |                 \edef\lstlang@{\lstlang@,morestringizer=[d]{#2}}%
 | 
|---|
 | 1960 |             \else
 | 
|---|
 | 1961 |                 \edef\lst@temp{\lst@LGe#2}%
 | 
|---|
 | 1962 |                 \ifx \lst@temp\lst@LGvalue
 | 
|---|
 | 1963 |                     \edef\lstlang@{\lstlang@,morestringizer=[b]{#2}}%
 | 
|---|
 | 1964 |                 \else
 | 
|---|
 | 1965 |                     \PackageWarning{Listings}%
 | 
|---|
 | 1966 |                     {String #2...\lst@LGvalue\space not supported}%
 | 
|---|
 | 1967 |                 \fi
 | 
|---|
 | 1968 |             \fi
 | 
|---|
 | 1969 |         \fi
 | 
|---|
 | 1970 |     \fi}
 | 
|---|
 | 1971 | \gdef\lst@LGDefLang{%
 | 
|---|
 | 1972 |     \lst@LGReplace
 | 
|---|
 | 1973 |     \let\lstlang@\empty
 | 
|---|
 | 1974 |     \lst@LGGetValue{kw}%
 | 
|---|
 | 1975 |     \lst@if
 | 
|---|
 | 1976 |         \lst@ReplaceInArg\lst@LGvalue{{ },}%
 | 
|---|
 | 1977 |         \edef\lstlang@{\lstlang@,keywords={\lst@LGvalue}}%
 | 
|---|
 | 1978 |     \fi
 | 
|---|
 | 1979 |     \lst@LGGetValue{oc}%
 | 
|---|
 | 1980 |     \lst@if
 | 
|---|
 | 1981 |         \edef\lstlang@{\lstlang@,sensitive=f}%
 | 
|---|
 | 1982 |     \fi
 | 
|---|
 | 1983 |     \lst@LGGetValue{id}%
 | 
|---|
 | 1984 |     \lst@if
 | 
|---|
 | 1985 |         \edef\lstlang@{\lstlang@,alsoletter=\lst@LGvalue}%
 | 
|---|
 | 1986 |     \fi
 | 
|---|
 | 1987 |     \lst@LGGetComment a\lst@LGa
 | 
|---|
 | 1988 |     \lst@LGGetComment c\lst@LGc
 | 
|---|
 | 1989 |     \ifx\lst@LGa\@empty
 | 
|---|
 | 1990 |         \ifx\lst@LGc\@empty\else
 | 
|---|
 | 1991 |             \edef\lstlang@{\lstlang@,singlecomment=\lst@LGc}%
 | 
|---|
 | 1992 |         \fi
 | 
|---|
 | 1993 |     \else
 | 
|---|
 | 1994 |         \ifx\lst@LGc\@empty
 | 
|---|
 | 1995 |             \edef\lstlang@{\lstlang@,singlecomment=\lst@LGa}%
 | 
|---|
 | 1996 |         \else
 | 
|---|
 | 1997 |             \edef\lstlang@{\lstlang@,doublecomment=\lst@LGc\lst@LGa}%
 | 
|---|
 | 1998 |         \fi
 | 
|---|
 | 1999 |     \fi
 | 
|---|
 | 2000 |     \lst@LGGetString s\lst@LGa
 | 
|---|
 | 2001 |     \lst@LGGetString l\lst@LGa
 | 
|---|
 | 2002 |     \lst@LGGetValue{tc}%
 | 
|---|
 | 2003 |     \lst@if
 | 
|---|
 | 2004 |         \edef\lstlang@{\lstlang@,lgrindef=\lst@LGvalue}%
 | 
|---|
 | 2005 |     \fi
 | 
|---|
 | 2006 |     \expandafter\xdef\csname\@lst LGlang@\lst@language@\endcsname
 | 
|---|
 | 2007 |         {\noexpand\lstset{\lstlang@}}%
 | 
|---|
 | 2008 |     \lst@ReplaceInArg\lst@arg{{: :}:}\let\lst@LGvalue\@empty
 | 
|---|
 | 2009 |     \expandafter\lst@LGDroppedCaps\lst@arg\relax\relax
 | 
|---|
 | 2010 |     \ifx\lst@LGvalue\@empty\else
 | 
|---|
 | 2011 |         \PackageWarningNoLine{Listings}{Ignored capabilities for
 | 
|---|
 | 2012 |             \space `\lst@language@' are\MessageBreak\lst@LGvalue}%
 | 
|---|
 | 2013 |     \fi}
 | 
|---|
 | 2014 | \gdef\lst@LGDroppedCaps#1:#2#3{%
 | 
|---|
 | 2015 |     \ifx#2\relax
 | 
|---|
 | 2016 |         \lst@RemoveCommas\lst@LGvalue
 | 
|---|
 | 2017 |     \else
 | 
|---|
 | 2018 |         \edef\lst@LGvalue{\lst@LGvalue,#2#3}%
 | 
|---|
 | 2019 |         \expandafter\lst@LGDroppedCaps
 | 
|---|
 | 2020 |     \fi}
 | 
|---|
 | 2021 | \begingroup
 | 
|---|
 | 2022 | \catcode`\/=0
 | 
|---|
 | 2023 | \lccode`\z=`\:\lccode`\y=`\^\lccode`\x=`\$\lccode`\v=`\|
 | 
|---|
 | 2024 | \catcode`\\=12\relax
 | 
|---|
 | 2025 | /lowercase{%
 | 
|---|
 | 2026 | /gdef/lst@LGReplace{/lst@ReplaceInArg/lst@arg
 | 
|---|
 | 2027 |     {{\:}{z }{\^}{y}{\$}{x}{\|}{v}{ \ }{ }{:\ :}{:}{\ }{ }{\(}({\)})}}
 | 
|---|
 | 2028 | /gdef/lst@LGe{\e}
 | 
|---|
 | 2029 | }
 | 
|---|
 | 2030 | /endgroup
 | 
|---|
 | 2031 | \gdef\lst@LGRead#1\par{%
 | 
|---|
 | 2032 |     \lst@LGGetNames#1:\relax
 | 
|---|
 | 2033 |     \def\lst@temp{endoflanguagedefinitions}%
 | 
|---|
 | 2034 |     \ifx\lstlang@\lst@temp
 | 
|---|
 | 2035 |         \let\lst@next\endinput
 | 
|---|
 | 2036 |     \else
 | 
|---|
 | 2037 |         \expandafter\lst@IfOneOf\lst@language@\relax\lstlang@
 | 
|---|
 | 2038 |             {\lst@LGDefLang \let\lst@next\endinput}%
 | 
|---|
 | 2039 |             {\let\lst@next\lst@LGRead}%
 | 
|---|
 | 2040 |     \fi
 | 
|---|
 | 2041 |     \lst@next}
 | 
|---|
 | 2042 | \lst@Key{lgrindef}\relax{%
 | 
|---|
 | 2043 |     \lst@NormedDef\lst@language@{#1}%
 | 
|---|
 | 2044 |     \begingroup
 | 
|---|
 | 2045 |     \@ifundefined{lstLGlang@\lst@language@}%
 | 
|---|
 | 2046 |         {\everypar{\lst@LGRead}%
 | 
|---|
 | 2047 |          \catcode`\\=12\catcode`\{=12\catcode`\}=12\catcode`\%=12%
 | 
|---|
 | 2048 |          \catcode`\#=14\catcode`\$=12\catcode`\^=12\catcode`\_=12\relax
 | 
|---|
 | 2049 |          \input{\lstlgrindeffile}%
 | 
|---|
 | 2050 |         }{}%
 | 
|---|
 | 2051 |     \endgroup
 | 
|---|
 | 2052 |     \@ifundefined{lstLGlang@\lst@language@}%
 | 
|---|
 | 2053 |         {\PackageError{Listings}%
 | 
|---|
 | 2054 |          {LGrind language \lst@language@\space undefined}%
 | 
|---|
 | 2055 |          {The language is not loadable. \@ehc}}%
 | 
|---|
 | 2056 |         {\lsthk@SetLanguage
 | 
|---|
 | 2057 |          \csname\@lst LGlang@\lst@language@\endcsname}}
 | 
|---|
 | 2058 | \@ifundefined{lstlgrindeffile}
 | 
|---|
 | 2059 |     {\lst@UserCommand\lstlgrindeffile{lgrindef.}}{}
 | 
|---|
 | 2060 | \lst@EndAspect
 | 
|---|
 | 2061 | \lst@BeginAspect[keywords]{hyper}
 | 
|---|
 | 2062 | \lst@Key{hyperanchor}\hyper@@anchor{\let\lst@hyperanchor#1}
 | 
|---|
 | 2063 | \lst@Key{hyperlink}\hyperlink{\let\lst@hyperlink#1}
 | 
|---|
 | 2064 | \lst@InstallKeywords{h}{hyperref}{}\relax{}
 | 
|---|
 | 2065 |     {\begingroup
 | 
|---|
 | 2066 |          \let\lst@UM\@empty \xdef\@gtempa{\the\lst@token}%
 | 
|---|
 | 2067 |      \endgroup
 | 
|---|
 | 2068 |      \lst@GetFreeMacro{lstHR@\@gtempa}%
 | 
|---|
 | 2069 |      \global\expandafter\let\lst@freemacro\@empty
 | 
|---|
 | 2070 |      \@tempcntb\@tempcnta \advance\@tempcntb\m@ne
 | 
|---|
 | 2071 |      \edef\lst@alloverstyle##1{%
 | 
|---|
 | 2072 |          \let\noexpand\lst@alloverstyle\noexpand\@empty
 | 
|---|
 | 2073 |          \noexpand\smash{\raise\baselineskip\hbox
 | 
|---|
 | 2074 |              {\noexpand\lst@hyperanchor{lst.\@gtempa\the\@tempcnta}%
 | 
|---|
 | 2075 |                                        {\relax}}}%
 | 
|---|
 | 2076 |          \ifnum\@tempcnta=\z@ ##1\else
 | 
|---|
 | 2077 |              \noexpand\lst@hyperlink{lst.\@gtempa\the\@tempcntb}{##1}%
 | 
|---|
 | 2078 |          \fi}%
 | 
|---|
 | 2079 |     }
 | 
|---|
 | 2080 |     od
 | 
|---|
 | 2081 | \lst@EndAspect
 | 
|---|
 | 2082 | \endinput
 | 
|---|
 | 2083 | %%
 | 
|---|
 | 2084 | %% End of file `lstmisc.sty'.
 | 
|---|