Mercurial > hg > Papers > 2008 > kent-graduation
comparison nonDefaultPackage/lstdoc.sty @ 5:88409033cd91
non default packages
author | kent |
---|---|
date | Thu, 21 Feb 2008 14:40:57 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
4:74884c038ce7 | 5:88409033cd91 |
---|---|
1 %% | |
2 %% This is file `lstdoc.sty', | |
3 %% generated with the docstrip utility. | |
4 %% | |
5 %% The original source files were: | |
6 %% | |
7 %% listings-1.3.dtx (with options: `doc') | |
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 %% | |
14 %% Send comments and ideas on the package, error reports and additional | |
15 %% programming languages to <cheinz@gmx.de>. | |
16 %% | |
17 \def\filedate{2004/09/07} | |
18 \def\fileversion{1.3} | |
19 \ProvidesPackage{lstdoc} | |
20 [\filedate\space\fileversion\space(Carsten Heinz)] | |
21 \let\lstdoc@currversion\fileversion | |
22 \RequirePackage[writefile]{listings}[2004/09/07] | |
23 \newif\iffancyvrb \IfFileExists{fancyvrb.sty}{\fancyvrbtrue}{} | |
24 \newif\ifcolor \IfFileExists{color.sty}{\colortrue}{} | |
25 \lst@false | |
26 \newif\ifhyper | |
27 \@ifundefined{pdfoutput} | |
28 {} | |
29 {\ifnum\pdfoutput>\z@ \lst@true \fi} | |
30 \@ifundefined{VTeXversion} | |
31 {} | |
32 {\ifnum\OpMode>\z@ \lst@true \fi} | |
33 \lst@if \IfFileExists{hyperref.sty}{\hypertrue}{}\fi | |
34 \newif\ifalgorithmic \IfFileExists{algorithmic.sty}{\algorithmictrue}{} | |
35 \newif\iflgrind \IfFileExists{lgrind.sty}{\lgrindtrue}{} | |
36 \iffancyvrb \RequirePackage{fancyvrb}\fi | |
37 \ifhyper \RequirePackage[colorlinks]{hyperref}\else | |
38 \def\href#1{\texttt}\fi | |
39 \ifcolor \RequirePackage{color}\fi | |
40 \ifalgorithmic \RequirePackage{algorithmic}\fi | |
41 \iflgrind \RequirePackage{lgrind}\fi | |
42 \RequirePackage{nameref} | |
43 \RequirePackage{url} | |
44 \renewcommand\ref{\protect\T@ref} | |
45 \renewcommand\pageref{\protect\T@pageref} | |
46 \def\lst@BeginRemark#1{% | |
47 \begin{quote}\topsep0pt\let\small\footnotesize\small#1:} | |
48 \def\lst@EndRemark{\end{quote}} | |
49 \newenvironment{TODO} | |
50 {\lst@BeginRemark{To do}}{\lst@EndRemark} | |
51 \newenvironment{ALTERNATIVE} | |
52 {\lst@BeginRemark{Alternative}}{\lst@EndRemark} | |
53 \newenvironment{REMOVED} | |
54 {\lst@BeginRemark{Removed}}{\lst@EndRemark} | |
55 \newenvironment{OLDDEF} | |
56 {\lst@BeginRemark{Old definition}}{\lst@EndRemark} | |
57 \def\advise{\par\list\labeladvise | |
58 {\advance\linewidth\@totalleftmargin | |
59 \@totalleftmargin\z@ | |
60 \@listi | |
61 \let\small\footnotesize \small\sffamily | |
62 \parsep \z@ \@plus\z@ \@minus\z@ | |
63 \topsep6\p@ \@plus1\p@\@minus2\p@ | |
64 \def\makelabel##1{\hss\llap{##1}}}} | |
65 \let\endadvise\endlist | |
66 \def\advisespace{\hbox{}\qquad} | |
67 \def\labeladvise{$\to$} | |
68 \newenvironment{syntax} | |
69 {\list{}{\itemindent-\leftmargin | |
70 \def\makelabel##1{\hss\lst@syntaxlabel##1,,,,\relax}}} | |
71 {\endlist} | |
72 \def\lst@syntaxlabel#1,#2,#3,#4\relax{% | |
73 \llap{\scriptsize\itshape#3}% | |
74 \def\lst@temp{#2}% | |
75 \expandafter\lst@syntaxlabel@\meaning\lst@temp\relax | |
76 \rlap{\hskip-\itemindent\hskip\itemsep\hskip\linewidth | |
77 \llap{\ttfamily\lst@temp}\hskip\labelwidth | |
78 \def\lst@temp{#1}% | |
79 \ifx\lst@temp\lstdoc@currversion#1\fi}} | |
80 \def\lst@syntaxlabel@#1>#2\relax | |
81 {\edef\lst@temp{\zap@space#2 \@empty}} | |
82 \newcommand*\syntaxnewline{\newline\hbox{}\kern\labelwidth} | |
83 \newcommand*\syntaxor{\qquad or\qquad} | |
84 \newcommand*\syntaxbreak | |
85 {\hfill\kern0pt\discretionary{}{\kern\labelwidth}{}} | |
86 \let\syntaxfill\hfill | |
87 \def\alternative#1{\lst@true \alternative@#1,\relax,} | |
88 \def\alternative@#1,{% | |
89 \ifx\relax#1\@empty | |
90 \expandafter\@gobble | |
91 \else | |
92 \ifx\@empty#1\@empty\else | |
93 \lst@if \lst@false \else $\vert$\fi | |
94 \textup{\texttt{#1}}% | |
95 \fi | |
96 \fi | |
97 \alternative@} | |
98 \long\def\m@cro@#1#2#3{\endgroup \topsep\MacroTopsep \trivlist | |
99 \edef\saved@macroname{\string#3}% | |
100 \def\makelabel##1{\llap{##1}}% | |
101 \if@inlabel | |
102 \let\@tempa\@empty \count@\macro@cnt | |
103 \loop \ifnum\count@>\z@ | |
104 \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat | |
105 \edef\makelabel##1{\llap{\vtop to\baselineskip | |
106 {\@tempa\hbox{##1}\vss}}}% | |
107 \advance \macro@cnt \@ne | |
108 \else \macro@cnt\@ne \fi | |
109 \edef\@tempa{\noexpand\item[% | |
110 #1% | |
111 \noexpand\PrintMacroName | |
112 \else | |
113 \expandafter\noexpand\csname Print#2Name\endcsname % MODIFIED | |
114 \fi | |
115 {\string#3}]}% | |
116 \@tempa | |
117 \global\advance\c@CodelineNo\@ne | |
118 #1% | |
119 \SpecialMainIndex{#3}\nobreak | |
120 \DoNotIndex{#3}% | |
121 \else | |
122 \csname SpecialMain#2Index\endcsname{#3}\nobreak % MODIFIED | |
123 \fi | |
124 \global\advance\c@CodelineNo\m@ne | |
125 \ignorespaces} | |
126 \def\macro{\begingroup | |
127 \catcode`\\12 | |
128 \MakePrivateLetters \m@cro@ \iftrue {Macro}}% MODIFIED | |
129 \def\environment{\begingroup | |
130 \catcode`\\12 | |
131 \MakePrivateLetters \m@cro@ \iffalse {Env}}% MODIFIED | |
132 \def\newdocenvironment#1#2#3#4{% | |
133 \@namedef{#1}{#3\begingroup \catcode`\\12\relax | |
134 \MakePrivateLetters \m@cro@ \iffalse {#2}}% | |
135 \@namedef{end#1}{#4\endmacro}% | |
136 \@ifundefined{Print#2Name}{\expandafter | |
137 \let\csname Print#2Name\endcsname\PrintMacroName}{}% | |
138 \@ifundefined{SpecialMain#2Index}{\expandafter | |
139 \let\csname SpecialMain#2Index\endcsname\SpecialMainIndex}{}} | |
140 \newdocenvironment{aspect}{Aspect}{}{} | |
141 \def\PrintAspectName#1{} | |
142 \def\SpecialMainAspectIndex#1{% | |
143 \@bsphack | |
144 \index{aspects:\levelchar\protect\aspectname{#1}\encapchar main}% | |
145 \@esphack} | |
146 \newdocenvironment{lstkey}{Key}{}{} | |
147 \def\PrintKeyName#1{\strut\keyname{#1}\ } | |
148 \def\SpecialMainKeyIndex#1{% | |
149 \@bsphack | |
150 \index{keys\levelchar\protect\keyname{#1}\encapchar main}% | |
151 \@esphack} | |
152 \newcounter{argcount} | |
153 \def\labelargcount{\texttt{\#\arabic{argcount}}\hskip\labelsep$=$} | |
154 \def\macroargs{\list\labelargcount | |
155 {\usecounter{argcount}\leftmargin=2\leftmargin | |
156 \parsep \z@ \@plus\z@ \@minus\z@ | |
157 \topsep4\p@ \@plus\p@ \@minus2\p@ | |
158 \itemsep\z@ \@plus\z@ \@minus\z@ | |
159 \def\makelabel##1{\hss\llap{##1}}}} | |
160 \def\endmacroargs{\endlist\@endparenv} | |
161 \lst@RequireAspects{writefile} | |
162 \newbox\lst@samplebox | |
163 \lstnewenvironment{lstsample}[3][] | |
164 {\global\let\lst@intname\@empty | |
165 \gdef\lst@sample{#2}% | |
166 \setbox\lst@samplebox=\hbox\bgroup | |
167 \setkeys{lst}{language={},style={},tabsize=4,gobble=5,% | |
168 basicstyle=\small\ttfamily,basewidth=0.51em,point={#1}} | |
169 #3% | |
170 \lst@BeginAlsoWriteFile{\jobname.tmp}} | |
171 {\lst@EndWriteFile\egroup | |
172 \ifdim \wd\lst@samplebox>.5\linewidth | |
173 \begin{center}% | |
174 \hbox to\linewidth{\box\lst@samplebox\hss}% | |
175 \end{center}% | |
176 \lst@sampleInput | |
177 \else | |
178 \begin{center}% | |
179 \begin{minipage}{0.45\linewidth}\lst@sampleInput\end{minipage}% | |
180 \qquad | |
181 \begin{minipage}{0.45\linewidth}% | |
182 \hbox to\linewidth{\box\lst@samplebox\hss}% | |
183 \end{minipage}% | |
184 \end{center}% | |
185 \fi} | |
186 \lst@InstallKeywords{p}{point}{pointstyle}\relax{keywordstyle}{}ld | |
187 \lstnewenvironment{lstxsample}[1][] | |
188 {\begingroup | |
189 \setkeys{lst}{belowskip=-\medskipamount,language={},style={},% | |
190 tabsize=4,gobble=5,basicstyle=\small\ttfamily,% | |
191 basewidth=0.51em,point={#1}} | |
192 \lst@BeginAlsoWriteFile{\jobname.tmp}} | |
193 {\endgroup | |
194 \endgroup} | |
195 \def\lst@sampleInput{% | |
196 \MakePercentComment\catcode`\^^M=10\relax | |
197 \small\lst@sample | |
198 {\setkeys{lst}{SelectCharTable=\lst@ReplaceInput{\^\^I}% | |
199 {\lst@ProcessTabulator}}% | |
200 \leavevmode \input{\jobname.tmp}}\MakePercentIgnore} | |
201 \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% | |
202 {1.25ex \@plus1ex \@minus.2ex}% | |
203 {-1em}% | |
204 {\normalfont\normalsize\bfseries}} | |
205 \def\lstref#1{\emph{\ref{#1} \nameref{#1}}} | |
206 \def\@part[#1]#2{\addcontentsline{toc}{part}{#1}% | |
207 {\parindent\z@ \raggedright \interlinepenalty\@M | |
208 \normalfont \huge \bfseries #2\markboth{}{}\par}% | |
209 \nobreak\vskip 3ex\@afterheading} | |
210 \renewcommand*\l@section[2]{% | |
211 \addpenalty\@secpenalty | |
212 \addvspace{.25em \@plus\p@}% | |
213 \setlength\@tempdima{1.5em}% | |
214 \begingroup | |
215 \parindent \z@ \rightskip \@pnumwidth | |
216 \parfillskip -\@pnumwidth | |
217 \leavevmode | |
218 \advance\leftskip\@tempdima | |
219 \hskip -\leftskip | |
220 #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par | |
221 \endgroup} | |
222 \renewcommand*\l@subsection{\@dottedtocline{2}{0pt}{2.3em}} | |
223 \renewcommand*\l@subsubsection{\@dottedtocline{3}{0pt}{3.2em}} | |
224 \newcommand\ikeyname[1]{% | |
225 \lstkeyindex{#1}{}% | |
226 \lstaspectindex{#1}{}% | |
227 \keyname{#1}} | |
228 \newcommand\ekeyname[1]{% | |
229 \@bsphack | |
230 \lstkeyindex{#1}{\encapchar usage}% | |
231 \lstaspectindex{#1}{\encapchar usage}% | |
232 \@esphack} | |
233 \newcommand\rkeyname[1]{% | |
234 \@bsphack | |
235 \lstkeyindex{#1}{\encapchar main}% | |
236 \lstaspectindex{#1}{\encapchar main}% | |
237 \@esphack{\rstyle\keyname{#1}}} | |
238 \newcommand\icmdname[1]{% | |
239 \@bsphack | |
240 \lstaspectindex{#1}{}% | |
241 \@esphack\texttt{\string#1}} | |
242 \newcommand\rcmdname[1]{% | |
243 \@bsphack | |
244 \lstaspectindex{#1}{\encapchar main}% | |
245 \@esphack\texttt{\rstyle\string#1}} | |
246 \def\lstaspectindex#1#2{% | |
247 \global\@namedef{lstkandc@\string#1}{}% | |
248 \@ifundefined{lstisaspect@\string#1} | |
249 {\index{unknown\levelchar | |
250 \protect\texttt{\protect\string\string#1}#2}}% | |
251 {\index{\@nameuse{lstisaspect@\string#1}\levelchar | |
252 \protect\texttt{\protect\string\string#1}#2}}% | |
253 } | |
254 \def\lstkeyindex#1#2{% | |
255 } | |
256 \def\lstisaspect[#1]#2{% | |
257 \global\@namedef{lstaspect@#1}{#2}% | |
258 \lst@AddTo\lst@allkeysandcmds{,#2}% | |
259 \@for\lst@temp:=#2\do | |
260 {\ifx\@empty\lst@temp\else | |
261 \global\@namedef{lstisaspect@\lst@temp}{#1}% | |
262 \fi}} | |
263 \gdef\lst@allkeysandcmds{} | |
264 \def\lstprintaspectkeysandcmds#1{% | |
265 \lst@true | |
266 \expandafter\@for\expandafter\lst@temp | |
267 \expandafter:\expandafter=\csname lstaspect@#1\endcsname\do | |
268 {\lst@if\lst@false\else, \fi \texttt{\lst@temp}}} | |
269 \def\lstcheckreference{% | |
270 \@for\lst@temp:=\lst@allkeysandcmds\do | |
271 {\ifx\lst@temp\@empty\else | |
272 \@ifundefined{lstkandc@\lst@temp} | |
273 {\typeout{\lst@temp\space not in reference guide?}}{}% | |
274 \fi}} | |
275 \newcommand*\lst{\texttt{lst}} | |
276 \newcommand*\Cpp{C\texttt{++}} | |
277 \let\keyname\texttt | |
278 \let\keyvalue\texttt | |
279 \let\hookname\texttt | |
280 \newcommand*\aspectname[1]{{\normalfont\sffamily#1}} | |
281 \DeclareRobustCommand\packagename[1]{% | |
282 {\leavevmode\text@command{#1}% | |
283 \switchfontfamily\sfdefault\rmdefault | |
284 \check@icl #1\check@icr | |
285 \expandafter}}% | |
286 \renewcommand\packagename[1]{{\normalfont\sffamily#1}} | |
287 \def\switchfontfamily#1#2{% | |
288 \begingroup\xdef\@gtempa{#1}\endgroup | |
289 \ifx\f@family\@gtempa\fontfamily#2% | |
290 \else\fontfamily#1\fi | |
291 \selectfont} | |
292 \ifcolor | |
293 \definecolor{darkgreen}{rgb}{0,0.5,0} | |
294 \def\rstyle{\color{darkgreen}} | |
295 \else | |
296 \let\rstyle\empty | |
297 \fi | |
298 \gdef\lst@emails{} | |
299 \newcommand*\lstthanks[2] | |
300 {#1\lst@AddTo\lst@emails{,#1,<#2>}% | |
301 \ifx\@empty#2\@empty\typeout{Missing email for #1}\fi} | |
302 \newcommand*\lsthelper[3] | |
303 {{\let~\ #1}% | |
304 \lst@IfOneOf#1\relax\lst@emails | |
305 {}{\typeout{^^JWarning: Unknown helper #1.^^J}}} | |
306 \lstdefinelanguage[doc]{Pascal}{% | |
307 morekeywords={alfa,and,array,begin,boolean,byte,case,char,const,div,% | |
308 do,downto,else,end,false,file,for,function,get,goto,if,in,% | |
309 integer,label,maxint,mod,new,not,of,or,pack,packed,page,program,% | |
310 procedure,put,read,readln,real,record,repeat,reset,rewrite,set,% | |
311 text,then,to,true,type,unpack,until,var,while,with,write,writeln},% | |
312 sensitive=false,% | |
313 morecomment=[s]{(*}{*)},% | |
314 morecomment=[s]{\{}{\}},% | |
315 morestring=[d]{'}} | |
316 \lstdefinestyle{} | |
317 {basicstyle={},% | |
318 keywordstyle=\bfseries,identifierstyle={},% | |
319 commentstyle=\itshape,stringstyle={},% | |
320 numberstyle={},stepnumber=1,% | |
321 pointstyle=\pointstyle} | |
322 \def\pointstyle{% | |
323 {\let\lst@um\@empty \xdef\@gtempa{\the\lst@token}}% | |
324 \expandafter\lstkeyindex\expandafter{\@gtempa}{}% | |
325 \expandafter\lstaspectindex\expandafter{\@gtempa}{}% | |
326 \rstyle} | |
327 \lstset{defaultdialect=[doc]Pascal,language=Pascal,style={}} | |
328 \def\lstscanlanguages#1#2#3{% | |
329 \begingroup | |
330 \def\lst@DefDriver@##1##2##3##4[##5]##6{% | |
331 \lst@false | |
332 \lst@lAddTo\lst@scan{##6(##5),}% | |
333 \begingroup | |
334 \@ifnextchar[{\lst@XDefDriver{##1}##3}{\lst@DefDriver@@##3}}% | |
335 \def\lst@XXDefDriver[##1]{}% | |
336 \lst@InputCatcodes | |
337 \def\lst@dontinput{#3}% | |
338 \let\lst@scan\@empty | |
339 \lst@for{#2}\do{% | |
340 \lst@IfOneOf##1\relax\lst@dontinput | |
341 {}% | |
342 {\InputIfFileExists{##1}{}{}}}% | |
343 \global\let\@gtempa\lst@scan | |
344 \endgroup | |
345 \let#1\@gtempa} | |
346 \def\lstprintlanguages#1{% | |
347 \def\do##1{\setbox\@tempboxa\hbox{##1\space\space}% | |
348 \ifdim\wd\@tempboxa<.5\linewidth \wd\@tempboxa.5\linewidth | |
349 \else \wd\@tempboxa\linewidth \fi | |
350 \box\@tempboxa\allowbreak}% | |
351 \begin{quote} | |
352 \par\noindent | |
353 \hyphenpenalty=\@M \rightskip=\z@\@plus\linewidth\relax | |
354 \lst@BubbleSort#1% | |
355 \expandafter\lst@NextLanguage#1\relax(\relax),% | |
356 \end{quote}} | |
357 \def\lst@NextLanguage#1(#2),{% | |
358 \ifx\relax#1\else | |
359 \def\lst@language{#1}\def\lst@dialects{(#2),}% | |
360 \expandafter\lst@NextLanguage@ | |
361 \fi} | |
362 \def\lst@NextLanguage@#1(#2),{% | |
363 \def\lst@temp{#1}% | |
364 \ifx\lst@temp\lst@language | |
365 \lst@lAddTo\lst@dialects{(#2),}% | |
366 \expandafter\lst@NextLanguage@ | |
367 \else | |
368 \do{\lst@language | |
369 \ifx\lst@dialects\lst@emptydialect\else | |
370 \expandafter\lst@NormedDef\expandafter\lst@language | |
371 \expandafter{\lst@language}% | |
372 \space(% | |
373 \lst@BubbleSort\lst@dialects | |
374 \expandafter\lst@PrintDialects\lst@dialects(\relax),% | |
375 )% | |
376 \fi}% | |
377 \def\lst@next{\lst@NextLanguage#1(#2),}% | |
378 \expandafter\lst@next | |
379 \fi} | |
380 \def\lst@emptydialect{(),} | |
381 \def\lst@PrintDialects(#1),{% | |
382 \ifx\@empty#1\@empty empty\else | |
383 \lst@PrintDialect{#1}% | |
384 \fi | |
385 \lst@PrintDialects@} | |
386 \def\lst@PrintDialects@(#1),{% | |
387 \ifx\relax#1\else | |
388 , \lst@PrintDialect{#1}% | |
389 \expandafter\lst@PrintDialects@ | |
390 \fi} | |
391 \def\lst@PrintDialect#1{% | |
392 \lst@NormedDef\lst@temp{#1}% | |
393 \expandafter\ifx\csname\@lst dd@\lst@language\endcsname\lst@temp | |
394 \texttt{\underbar{#1}}% | |
395 \else | |
396 \texttt{#1}% | |
397 \fi} | |
398 \def\lst@IfLE#1#2\@empty#3#4\@empty{% | |
399 \ifx #1\relax | |
400 \let\lst@next\@firstoftwo | |
401 \else \ifx #3\relax | |
402 \let\lst@next\@secondoftwo | |
403 \else | |
404 \lowercase{\ifx#1#3}% | |
405 \def\lst@next{\lst@IfLE#2\@empty#4\@empty}% | |
406 \else | |
407 \lowercase{\ifnum`#1<`#3}\relax | |
408 \let\lst@next\@firstoftwo | |
409 \else | |
410 \let\lst@next\@secondoftwo | |
411 \fi | |
412 \fi | |
413 \fi \fi | |
414 \lst@next} | |
415 \def\lst@BubbleSort#1{% | |
416 \ifx\@empty#1\else | |
417 \lst@false | |
418 \expandafter\lst@BubbleSort@#1\relax,\relax,% | |
419 \expandafter\lst@BubbleSort@\expandafter,\lst@sorted | |
420 \relax,\relax,% | |
421 \let#1\lst@sorted | |
422 \lst@if | |
423 \def\lst@next{\lst@BubbleSort#1}% | |
424 \expandafter\expandafter\expandafter\lst@next | |
425 \fi | |
426 \fi} | |
427 \def\lst@BubbleSort@#1,#2,{% | |
428 \ifx\@empty#1\@empty | |
429 \def\lst@sorted{#2,}% | |
430 \def\lst@next{\lst@BubbleSort@@}% | |
431 \else | |
432 \let\lst@sorted\@empty | |
433 \def\lst@next{\lst@BubbleSort@@#1,#2,}% | |
434 \fi | |
435 \lst@next} | |
436 \def\lst@BubbleSort@@#1,#2,{% | |
437 \ifx\relax#1\else | |
438 \ifx\relax#2% | |
439 \lst@lAddTo\lst@sorted{#1,}% | |
440 \expandafter\expandafter\expandafter\lst@BubbleSort@@@ | |
441 \else | |
442 \lst@IfLE #1\relax\@empty #2\relax\@empty | |
443 {\lst@lAddTo\lst@sorted{#1,#2,}}% | |
444 {\lst@true \lst@lAddTo\lst@sorted{#2,#1,}}% | |
445 \expandafter\expandafter\expandafter\lst@BubbleSort@@ | |
446 \fi | |
447 \fi} | |
448 \def\lst@BubbleSort@@@#1\relax,{} | |
449 \endinput | |
450 %% | |
451 %% End of file `lstdoc.sty'. |