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'.