123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466 |
- %%
- %% This is file `lstdoc.sty',
- %% generated with the docstrip utility.
- %%
- %% The original source files were:
- %%
- %% listings.dtx (with options: `doc')
- %%
- %% Please read the software license in listings.dtx or listings.dvi.
- %%
- %% (w)(c) 1996 -- 2002 Carsten Heinz and/or any other author
- %% listed elsewhere in this file.
- %%
- %% This file is distributed under the terms of the LaTeX Project Public
- %% License from CTAN archives in directory macros/latex/base/lppl.txt.
- %% Either version 1.0 or, at your option, any later version.
- %%
- %% Permission is granted to modify the listings package as well as
- %% lstdrvrs.dtx. You are not allowed to distribute a modified version
- %% of the package or lstdrvrs.dtx unless you change the file names and
- %% provide the original files. In any case it is better to contact the
- %% address below; other users will welcome removed bugs, new features,
- %% and additional programming languages.
- %%
- %% The listings package is free software.
- %%
- %% However, if you distribute the package as part of a commercial
- %% product or if you use the package to prepare a commercial document
- %% (books, journals, and so on), I'd like to encourage you to make a
- %% donation to the LaTeX3 fund. The size of this `license fee' should
- %% depend on the value of the package for your product. For more
- %% information about LaTeX see http://www.latex-project.org
- %%
- %% No matter whether you use the package for a commercial or
- %% non-commercial document, please send me a copy of the document (.dvi,
- %% .ps, .pdf, hardcopy, etc.) to support further development---it is
- %% easier to introduce new features or simplify things if I see how the
- %% package is used by other people.
- %%
- %% Send comments and ideas on the package, error reports and additional
- %% programming languages to <[email protected]>.
- %%
- \def\filedate{2002/04/01}
- \def\fileversion{1.0}
- \ProvidesPackage{lstdoc}
- [\filedate\space\fileversion\space(Carsten Heinz)]
- \let\lstdoc@currversion\fileversion
- \RequirePackage[writefile]{listings}[2002/04/01]
- \newif\iffancyvrb \IfFileExists{fancyvrb.sty}{\fancyvrbtrue}{}
- \newif\ifcolor \IfFileExists{color.sty}{\colortrue}{}
- \newif\ifhyper \@ifundefined{pdfoutput}{}
- {\IfFileExists{hyperref.sty}{\hypertrue}{}}
- \newif\ifalgorithmic \IfFileExists{algorithmic.sty}{\algorithmictrue}{}
- \iffancyvrb \RequirePackage{fancyvrb}\fi
- \ifhyper \RequirePackage[colorlinks]{hyperref}\else
- \def\href#1{\texttt}\fi
- \ifcolor \RequirePackage{color}\fi
- \ifalgorithmic \RequirePackage{algorithmic}\fi
- \RequirePackage{nameref}
- \renewcommand\ref{\protect\T@ref}
- \renewcommand\pageref{\protect\T@pageref}
- \def\lst@BeginRemark#1{%
- \begin{quote}\topsep0pt\let\small\footnotesize\small#1:}
- \def\lst@EndRemark{\end{quote}}
- \newenvironment{TODO}
- {\lst@BeginRemark{To do}}{\lst@EndRemark}
- \newenvironment{ALTERNATIVE}
- {\lst@BeginRemark{Alternative}}{\lst@EndRemark}
- \newenvironment{REMOVED}
- {\lst@BeginRemark{Removed}}{\lst@EndRemark}
- \newenvironment{OLDDEF}
- {\lst@BeginRemark{Old definition}}{\lst@EndRemark}
- \def\advise{\par\list\labeladvise
- {\advance\linewidth\@totalleftmargin
- \@totalleftmargin\z@
- \@listi
- \let\small\footnotesize \small\sffamily
- \parsep \z@ \@plus\z@ \@minus\z@
- \topsep6\p@ \@plus1\p@\@minus2\p@
- \def\makelabel##1{\hss\llap{##1}}}}
- \let\endadvise\endlist
- \def\advisespace{\hbox{}\qquad}
- \def\labeladvise{$\to$}
- \newenvironment{syntax}
- {\list{}{\itemindent-\leftmargin
- \def\makelabel##1{\hss\lst@syntaxlabel##1,,,,\relax}}}
- {\endlist}
- \def\lst@syntaxlabel#1,#2,#3,#4\relax{%
- \llap{\scriptsize\itshape#3}%
- \def\lst@temp{#2}%
- \expandafter\lst@syntaxlabel@\meaning\lst@temp\relax
- \rlap{\hskip-\itemindent\hskip\itemsep\hskip\linewidth
- \llap{\ttfamily\lst@temp}\hskip\labelwidth
- \def\lst@temp{#1}%
- \ifx\lst@temp\lstdoc@currversion#1\fi}}
- \def\lst@syntaxlabel@#1>#2\relax
- {\edef\lst@temp{\zap@space#2 \@empty}}
- \newcommand*\syntaxnewline{\newline\hbox{}\kern\labelwidth}
- \newcommand*\syntaxor{\qquad or\qquad}
- \newcommand*\syntaxbreak
- {\hfill\kern0pt\discretionary{}{\kern\labelwidth}{}}
- \let\syntaxfill\hfill
- \def\alternative#1{\lst@true \alternative@#1,\relax,}
- \def\alternative@#1,{%
- \ifx\relax#1\@empty
- \expandafter\@gobble
- \else
- \ifx\@empty#1\@empty\else
- \lst@if \lst@false \else $\vert$\fi
- \textup{\texttt{#1}}%
- \fi
- \fi
- \alternative@}
- \long\def\m@cro@#1#2#3{\endgroup \topsep\MacroTopsep \trivlist
- \edef\saved@macroname{\string#3}%
- \def\makelabel##1{\llap{##1}}%
- \if@inlabel
- \let\@tempa\@empty \count@\macro@cnt
- \loop \ifnum\count@>\z@
- \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat
- \edef\makelabel##1{\llap{\vtop to\baselineskip
- {\@tempa\hbox{##1}\vss}}}%
- \advance \macro@cnt \@ne
- \else \macro@cnt\@ne \fi
- \edef\@tempa{\noexpand\item[%
- #1%
- \noexpand\PrintMacroName
- \else
- \expandafter\noexpand\csname Print#2Name\endcsname % MODIFIED
- \fi
- {\string#3}]}%
- \@tempa
- \global\advance\c@CodelineNo\@ne
- #1%
- \SpecialMainIndex{#3}\nobreak
- \DoNotIndex{#3}%
- \else
- \csname SpecialMain#2Index\endcsname{#3}\nobreak % MODIFIED
- \fi
- \global\advance\c@CodelineNo\m@ne
- \ignorespaces}
- \def\macro{\begingroup
- \catcode`\\12
- \MakePrivateLetters \m@cro@ \iftrue {Macro}}% MODIFIED
- \def\environment{\begingroup
- \catcode`\\12
- \MakePrivateLetters \m@cro@ \iffalse {Env}}% MODIFIED
- \def\newdocenvironment#1#2#3#4{%
- \@namedef{#1}{#3\begingroup \catcode`\\12\relax
- \MakePrivateLetters \m@cro@ \iffalse {#2}}%
- \@namedef{end#1}{#4\endmacro}%
- \@ifundefined{Print#2Name}{\expandafter
- \let\csname Print#2Name\endcsname\PrintMacroName}{}%
- \@ifundefined{SpecialMain#2Index}{\expandafter
- \let\csname SpecialMain#2Index\endcsname\SpecialMainIndex}{}}
- \newdocenvironment{aspect}{Aspect}{}{}
- \def\PrintAspectName#1{}
- \def\SpecialMainAspectIndex#1{%
- \@bsphack
- \index{aspects:\levelchar\protect\aspectname{#1}\encapchar main}%
- \@esphack}
- \newdocenvironment{lstkey}{Key}{}{}
- \def\PrintKeyName#1{\strut\keyname{#1}\ }
- \def\SpecialMainKeyIndex#1{%
- \@bsphack
- \index{keys\levelchar\protect\keyname{#1}\encapchar main}%
- \@esphack}
- \newcounter{argcount}
- \def\labelargcount{\texttt{\#\arabic{argcount}}\hskip\labelsep$=$}
- \def\macroargs{\list\labelargcount
- {\usecounter{argcount}\leftmargin=2\leftmargin
- \parsep \z@ \@plus\z@ \@minus\z@
- \topsep4\p@ \@plus\p@ \@minus2\p@
- \itemsep\z@ \@plus\z@ \@minus\z@
- \def\makelabel##1{\hss\llap{##1}}}}
- \def\endmacroargs{\endlist\@endparenv}
- \lst@RequireAspects{writefile}
- \newbox\lst@samplebox
- \lstnewenvironment{lstsample}[3][]
- {\global\let\lst@intname\@empty
- \gdef\lst@sample{#2}%
- \setbox\lst@samplebox=\hbox\bgroup
- \setkeys{lst}{language={},style={},tabsize=4,gobble=5,%
- basicstyle=\small\ttfamily,basewidth=0.51em,point={#1}}
- #3%
- \lst@BeginAlsoWriteFile{\jobname.tmp}}
- {\lst@EndWriteFile\egroup
- \ifdim \wd\lst@samplebox>.5\linewidth
- \begin{center}%
- \hbox to\linewidth{\box\lst@samplebox\hss}%
- \end{center}%
- \lst@sampleInput
- \else
- \begin{center}%
- \begin{minipage}{0.45\linewidth}\lst@sampleInput\end{minipage}%
- \qquad
- \begin{minipage}{0.45\linewidth}%
- \hbox to\linewidth{\box\lst@samplebox\hss}%
- \end{minipage}%
- \end{center}%
- \fi}
- \lst@InstallKeywords{p}{point}{pointstyle}\relax{keywordstyle}{}ld
- \lstnewenvironment{lstxsample}[1][]
- {\begingroup
- \setkeys{lst}{belowskip=-\medskipamount,language={},style={},%
- tabsize=4,gobble=5,basicstyle=\small\ttfamily,%
- basewidth=0.51em,point={#1}}
- \lst@BeginAlsoWriteFile{\jobname.tmp}}
- {\endgroup
- \endgroup}
- \def\lst@sampleInput{%
- \MakePercentComment\catcode`\^^M=10\relax
- \small\lst@sample
- {\setkeys{lst}{SelectCharTable=\lst@ReplaceInput{\^\^I}%
- {\lst@ProcessTabulator}}%
- \leavevmode \input{\jobname.tmp}}\MakePercentIgnore}
- \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
- {1.25ex \@plus1ex \@minus.2ex}%
- {-1em}%
- {\normalfont\normalsize\bfseries}}
- \def\lstref#1{\emph{\ref{#1} \nameref{#1}}}
- \def\@part[#1]#2{\addcontentsline{toc}{part}{#1}%
- {\parindent\z@ \raggedright \interlinepenalty\@M
- \normalfont \huge \bfseries #2\markboth{}{}\par}%
- \nobreak\vskip 3ex\@afterheading}
- \renewcommand*\l@section[2]{%
- \addpenalty\@secpenalty
- \addvspace{.25em \@plus\p@}%
- \setlength\@tempdima{1.5em}%
- \begingroup
- \parindent \z@ \rightskip \@pnumwidth
- \parfillskip -\@pnumwidth
- \leavevmode
- \advance\leftskip\@tempdima
- \hskip -\leftskip
- #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
- \endgroup}
- \renewcommand*\l@subsection{\@dottedtocline{2}{0pt}{2.3em}}
- \renewcommand*\l@subsubsection{\@dottedtocline{3}{0pt}{3.2em}}
- \newcommand\ikeyname[1]{%
- \lstkeyindex{#1}{}%
- \lstaspectindex{#1}{}%
- \keyname{#1}}
- \newcommand\ekeyname[1]{%
- \@bsphack
- \lstkeyindex{#1}{\encapchar usage}%
- \lstaspectindex{#1}{\encapchar usage}%
- \@esphack}
- \newcommand\rkeyname[1]{%
- \@bsphack
- \lstkeyindex{#1}{\encapchar main}%
- \lstaspectindex{#1}{\encapchar main}%
- \@esphack{\rstyle\keyname{#1}}}
- \newcommand\icmdname[1]{%
- \@bsphack
- \lstaspectindex{#1}{}%
- \@esphack\texttt{\string#1}}
- \newcommand\rcmdname[1]{%
- \@bsphack
- \lstaspectindex{#1}{\encapchar main}%
- \@esphack\texttt{\rstyle\string#1}}
- \def\lstaspectindex#1#2{%
- \global\@namedef{lstkandc@\string#1}{}%
- \@ifundefined{lstisaspect@\string#1}
- {\index{unknown\levelchar
- \protect\texttt{\protect\string\string#1}#2}}%
- {\index{\@nameuse{lstisaspect@\string#1}\levelchar
- \protect\texttt{\protect\string\string#1}#2}}%
- }
- \def\lstkeyindex#1#2{%
- }
- \def\lstisaspect[#1]#2{%
- \global\@namedef{lstaspect@#1}{#2}%
- \lst@AddTo\lst@allkeysandcmds{,#2}%
- \@for\lst@temp:=#2\do
- {\ifx\@empty\lst@temp\else
- \global\@namedef{lstisaspect@\lst@temp}{#1}%
- \fi}}
- \gdef\lst@allkeysandcmds{}
- \def\lstprintaspectkeysandcmds#1{%
- \lst@true
- \expandafter\@for\expandafter\lst@temp
- \expandafter:\expandafter=\csname lstaspect@#1\endcsname\do
- {\lst@if\lst@false\else, \fi \texttt{\lst@temp}}}
- \def\lstcheckreference{%
- \@for\lst@temp:=\lst@allkeysandcmds\do
- {\ifx\lst@temp\@empty\else
- \@ifundefined{lstkandc@\lst@temp}
- {\typeout{\lst@temp\space not in reference guide?}}{}%
- \fi}}
- \newcommand*\lst{\texttt{lst}}
- \newcommand*\Cpp{C\texttt{++}}
- \let\keyname\texttt
- \let\keyvalue\texttt
- \let\hookname\texttt
- \newcommand*\aspectname[1]{{\normalfont\sffamily#1}}
- \DeclareRobustCommand\packagename[1]{%
- {\leavevmode\text@command{#1}%
- \switchfontfamily\sfdefault\rmdefault
- \check@icl #1\check@icr
- \expandafter}}%
- \def\switchfontfamily#1#2{%
- \begingroup\xdef\@gtempa{#1}\endgroup
- \ifx\f@family\@gtempa\fontfamily#2%
- \else\fontfamily#1\fi
- \selectfont}
- \ifcolor
- \definecolor{darkgreen}{rgb}{0,0.6,0}
- \def\rstyle{\color{darkgreen}}
- \else
- \let\rstyle\empty
- \fi
- \gdef\lst@emails{}
- \newcommand*\lstthanks[2]
- {#1\lst@AddTo\lst@emails{,#1,<#2>}%
- \ifx\@empty#2\@empty\typeout{Missing email for #1}\fi}
- \newcommand*\lsthelper[3]
- {{\let~\ #1}%
- \lst@IfOneOf#1\relax\lst@emails
- {}{\typeout{^^JWarning: Unknown helper #1.^^J}}}
- \lstdefinelanguage[doc]{Pascal}{%
- morekeywords={alfa,and,array,begin,boolean,byte,case,char,const,div,%
- do,downto,else,end,false,file,for,function,get,goto,if,in,%
- integer,label,maxint,mod,new,not,of,or,pack,packed,page,program,%
- procedure,put,read,readln,real,record,repeat,reset,rewrite,set,%
- text,then,to,true,type,unpack,until,var,while,with,write,writeln},%
- sensitive=false,%
- morecomment=[s]{(*}{*)},%
- morecomment=[s]{\{}{\}},%
- morestring=[d]{'}}
- \lstdefinestyle{}
- {basicstyle={},%
- keywordstyle=\bfseries,identifierstyle={},%
- commentstyle=\itshape,stringstyle={},%
- numberstyle={},stepnumber=1,%
- pointstyle=\pointstyle}
- \def\pointstyle{%
- {\let\lst@um\@empty \xdef\@gtempa{\the\lst@token}}%
- \expandafter\lstkeyindex\expandafter{\@gtempa}{}%
- \expandafter\lstaspectindex\expandafter{\@gtempa}{}%
- \rstyle}
- \lstset{defaultdialect=[doc]Pascal,language=Pascal,style={}}
- \def\lstscanlanguages#1#2#3{%
- \begingroup
- \def\lst@DefDriver@##1##2##3##4[##5]##6{%
- \lst@false
- \lst@lAddTo\lst@scan{##6(##5),}%
- \begingroup
- \@ifnextchar[{\lst@XDefDriver{##1}##3}{\lst@DefDriver@@##3}}%
- \def\lst@XXDefDriver[##1]{}%
- \lst@InputCatcodes
- \def\lst@dontinput{#3}%
- \let\lst@scan\@empty
- \lst@for{#2}\do{%
- \lst@IfOneOf##1\relax\lst@dontinput
- {}%
- {\InputIfFileExists{##1}{}{}}}%
- \global\let\@gtempa\lst@scan
- \endgroup
- \let#1\@gtempa}
- \def\lstprintlanguages#1{%
- \def\do##1{\setbox\@tempboxa\hbox{##1\space\space}%
- \ifdim\wd\@tempboxa<.5\linewidth \wd\@tempboxa.5\linewidth
- \else \wd\@tempboxa\linewidth \fi
- \box\@tempboxa\allowbreak}%
- \begin{quote}
- \par\noindent
- \hyphenpenalty=\@M \rightskip=\z@\@plus\linewidth\relax
- \lst@BubbleSort#1%
- \expandafter\lst@NextLanguage#1\relax(\relax),%
- \end{quote}}
- \def\lst@NextLanguage#1(#2),{%
- \ifx\relax#1\else
- \def\lst@language{#1}\def\lst@dialects{(#2),}%
- \expandafter\lst@NextLanguage@
- \fi}
- \def\lst@NextLanguage@#1(#2),{%
- \def\lst@temp{#1}%
- \ifx\lst@temp\lst@language
- \lst@lAddTo\lst@dialects{(#2),}%
- \expandafter\lst@NextLanguage@
- \else
- \do{\lst@language
- \ifx\lst@dialects\lst@emptydialect\else
- \expandafter\lst@NormedDef\expandafter\lst@language
- \expandafter{\lst@language}%
- \space(%
- \lst@BubbleSort\lst@dialects
- \expandafter\lst@PrintDialects\lst@dialects(\relax),%
- )%
- \fi}%
- \def\lst@next{\lst@NextLanguage#1(#2),}%
- \expandafter\lst@next
- \fi}
- \def\lst@emptydialect{(),}
- \def\lst@PrintDialects(#1),{%
- \ifx\@empty#1\@empty empty\else
- \lst@PrintDialect{#1}%
- \fi
- \lst@PrintDialects@}
- \def\lst@PrintDialects@(#1),{%
- \ifx\relax#1\else
- , \lst@PrintDialect{#1}%
- \expandafter\lst@PrintDialects@
- \fi}
- \def\lst@PrintDialect#1{%
- \lst@NormedDef\lst@temp{#1}%
- \expandafter\ifx\csname\@lst dd@\lst@language\endcsname\lst@temp
- \texttt{\underbar{#1}}%
- \else
- \texttt{#1}%
- \fi}
- \def\lst@IfLE#1#2\@empty#3#4\@empty{%
- \ifx #1\relax
- \let\lst@next\@firstoftwo
- \else \ifx #3\relax
- \let\lst@next\@secondoftwo
- \else
- \lowercase{\ifx#1#3}%
- \def\lst@next{\lst@IfLE#2\@empty#4\@empty}%
- \else
- \lowercase{\ifnum`#1<`#3}\relax
- \let\lst@next\@firstoftwo
- \else
- \let\lst@next\@secondoftwo
- \fi
- \fi
- \fi \fi
- \lst@next}
- \def\lst@BubbleSort#1{%
- \ifx\@empty#1\else
- \lst@false
- \expandafter\lst@BubbleSort@#1\relax,\relax,%
- \expandafter\lst@BubbleSort@\expandafter,\lst@sorted
- \relax,\relax,%
- \let#1\lst@sorted
- \lst@if
- \def\lst@next{\lst@BubbleSort#1}%
- \expandafter\expandafter\expandafter\lst@next
- \fi
- \fi}
- \def\lst@BubbleSort@#1,#2,{%
- \ifx\@empty#1\@empty
- \def\lst@sorted{#2,}%
- \def\lst@next{\lst@BubbleSort@@}%
- \else
- \let\lst@sorted\@empty
- \def\lst@next{\lst@BubbleSort@@#1,#2,}%
- \fi
- \lst@next}
- \def\lst@BubbleSort@@#1,#2,{%
- \ifx\relax#1\else
- \ifx\relax#2%
- \lst@lAddTo\lst@sorted{#1,}%
- \expandafter\expandafter\expandafter\lst@BubbleSort@@@
- \else
- \lst@IfLE #1\relax\@empty #2\relax\@empty
- {\lst@lAddTo\lst@sorted{#1,#2,}}%
- {\lst@true \lst@lAddTo\lst@sorted{#2,#1,}}%
- \expandafter\expandafter\expandafter\lst@BubbleSort@@
- \fi
- \fi}
- \def\lst@BubbleSort@@@#1\relax,{}
- \endinput
- %%
- %% End of file `lstdoc.sty'.
|