├── .gitignore ├── .gitmodules ├── Makefile ├── README.md ├── format.py ├── gen.py ├── scl.yaml └── tex ├── format.tex ├── listings.cfg ├── listings.sty ├── lstdoc.sty ├── lstlang1.sty ├── lstlang2.sty ├── lstlang3.sty ├── lstmisc.sty ├── main.tex └── njulogo.pdf /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | .* 3 | *.aux 4 | *.log 5 | *.toc 6 | *.out 7 | /build/ 8 | /src/ 9 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "ACM-Code-Library"] 2 | path = ACM-Code-Library 3 | url = https://github.com/4thcalabash/ACM-Code-Library 4 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | SRCS=$(shell find tex/) 2 | 3 | build/main.pdf: $(SRCS) Makefile scl.yaml clean update 4 | mkdir -p src/ 5 | mkdir -p build/ 6 | python gen.py > build/code.tex 7 | cp tex/* build/ 8 | cd build && xelatex main.tex 9 | cd build && xelatex main.tex 10 | 11 | 12 | .PHONY: clean check 13 | check: 14 | true # code valid check 15 | 16 | clean: 17 | rm -rf src/ 18 | rm -rf build/ 19 | 20 | update: 21 | mkdir -p src/ 22 | cd src/ && rm * -rf 23 | git submodule init && git submodule update && git submodule update --remote 24 | cp ACM-Code-Library src/ -rf 25 | cd src/ACM-Code-Library/ && rm -rf .idea/ cmake-build-debug/ .git/ && rm -f .gitignore README.md CMakeLists.txt 26 | cd src/ && mv ACM-Code-Library/* ./ && rm -rf ACM-Code-Library 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 南京大学ACM-ICPC calabash\_boy 个人代码库 2 | 3 | 从JYY那里fork来的代码仓库latex项目并加以魔改。 4 | 5 | 代码库链接:[calabash\_boy's Code Library](https://github.com/4thcalabash/ACM-Code-Library) 6 | 7 | 打印版pdf:[Latest Release](https://github.com/4thcalabash/code_library/releases)。 8 | -------------------------------------------------------------------------------- /format.py: -------------------------------------------------------------------------------- 1 | import os 2 | dirs = os.listdir('./src') 3 | print (dirs) 4 | -------------------------------------------------------------------------------- /gen.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2 2 | import re, os, hashlib, yaml 3 | 4 | line_count = 1 5 | 6 | scl = yaml.load(open("scl.yaml").read()) 7 | 8 | LANGS = {"c": "C", "cpp": "C++", "py": "Python", "pl": "Perl", 9 | "sh": "sh", "java": "Java"} 10 | 11 | def lang(ext): 12 | if not ext: return "{}" 13 | ext = ext.lower() 14 | return LANGS[ext] if ext in LANGS else "{}" 15 | 16 | def gen_section(sect_yaml): 17 | global line_count 18 | 19 | name = sect_yaml['name'] 20 | dirname = sect_yaml['dir'] 21 | files = sect_yaml['files'] 22 | 23 | sect = [] 24 | sect.append("\\section{%s}" % name) 25 | 26 | subsects = [] 27 | for (idx, f) in enumerate(files): 28 | title = f['title'] 29 | fname = f['fname'] 30 | desc = f.get('desc', None) 31 | 32 | with open("src/%s/%s" % (dirname, fname), "r") as fp: 33 | code = fp.read() 34 | 35 | extension = fname.split('.')[-1] 36 | 37 | sect.append("\\subsection{%s}" % title) 38 | 39 | def digest_line(s): 40 | return hashlib.md5(re.sub(r'\s|//.*', '', s)).hexdigest()[-4:] 41 | 42 | for line in code.split("\n"): 43 | sect.append("\\createlinenumber{%d}{%s}" % (line_count, digest_line(line))) 44 | line_count += 1 45 | 46 | if desc: 47 | sect.append('\\begin{mdframed}[hidealllines=true,backgroundcolor=blue!5]') 48 | sect.append(desc.strip()) 49 | sect.append('\\end{mdframed}\\vspace{-10pt}') 50 | sect.append("\\begin{lstlisting}[language=%s]" % lang(extension)) 51 | sect.append(code.decode('utf-8')) 52 | sect.append("\\end{lstlisting}") 53 | 54 | return "\n".join(sect).encode('utf-8') 55 | 56 | for section in scl: 57 | print gen_section(section) 58 | -------------------------------------------------------------------------------- /scl.yaml: -------------------------------------------------------------------------------- 1 | - name: String 2 | dir: String/ 3 | files: 4 | - title: Hash 5 | fname: Hash.cpp 6 | - title: KMP 7 | fname: KMP.cpp 8 | - title: EX KMP 9 | fname: EX_KMP.cpp 10 | - title: Manacher 11 | fname: Manacher.cpp 12 | - title: Palindrome Series 13 | fname: Palindrome_Series.cpp 14 | - title: Suffix Array 15 | fname: Suffix_Array.cpp 16 | - title: Trie Graph 17 | fname: Trie-Graph.cpp 18 | - title: Trie Graph (Segment Tree) 19 | fname: Trie-Graph(SegmentTree).cpp 20 | - title: Dictionary of Basic Factors 21 | fname: Dictionary_of_Basic_Factors.cpp 22 | - name: String Automaton 23 | dir: String/Automaton/ 24 | files: 25 | - title: ACAM 26 | fname: Aho-Corasick_Automaton.cpp 27 | - title: SAM 28 | fname: Suffix_Automaton.cpp 29 | - title: Generlized SAM 30 | fname: Generalized_Suffix_Automaton.cpp 31 | - title: C-SAM(CDAWG) 32 | fname: C-SAM(CDAWG).cpp 33 | - title: PAM 34 | fname: Palindromic_Automaton.cpp 35 | - title: 区间本质不同子串 36 | fname: Count_Substrings_In_Segment.cpp 37 | 38 | - name: Algorithm 39 | dir: Algorithm/ 40 | files: 41 | - title: Geometry 42 | fname: Geometry.cpp 43 | - title: Max Flow 44 | fname: Max_Flow.cpp 45 | - title: Min Cost Max Flow(Min Cost Flow) 46 | fname: MCMF.cpp 47 | - title: LCA 48 | fname: Multiply_LCA.cpp 49 | - title: DSU On Tree 50 | fname: DSU_On_Tree(General).cpp 51 | 52 | - name: Data Structure 53 | dir: Data_Structure/ 54 | files: 55 | - title: 01 Trie 56 | fname: 01Trie.cpp 57 | - title: Cartesian Tree 58 | fname: Cartesian_Tree.cpp 59 | - title: Chairman Tree 60 | fname: Chairman_Tree.cpp 61 | - title: KD Tree 62 | fname: KD_Tree.cpp 63 | - title: Segment Tree 64 | fname: Segment_Tree.cpp 65 | - title: AFL(Cactus) 66 | fname: AFL(Cactus).cpp 67 | - title: Segment Tree(Dynamic Memory).cpp 68 | fname: Segment_Tree(Dynamic_Memory).cpp 69 | - title: Rollback UFS 70 | fname: Rollback_UFS.cpp 71 | - title: Persistent LiChao SegmentTree 72 | fname: Persistent_LiChao_SegmentTree.cpp 73 | - name: Graph 74 | dir: Graph/ 75 | files: 76 | - title: Tarjan(BCC of Edge) 77 | fname: Tarjan(BCC_Edge).cpp 78 | - title: Tarjan(BCC of Point) 79 | fname: Tarjan(BCC_Point).cpp 80 | - title: Tarjan(SCC) 81 | fname: Tarjan(SCC).cpp 82 | - title: Dijkstra 83 | fname: Dijkstra.cpp 84 | - title: Dijkstra interval graph 85 | fname: Dijkstra_interval_graph.cpp 86 | - title: Eulor Tour 87 | fname: EulorTour.cpp 88 | - name: Graph/Tree 89 | dir: Graph/Tree/ 90 | files: 91 | - title: Divide \& Conquer of Point 92 | fname: Point-Divide&Conquer.cpp 93 | - title: Divide \& Conquer of Edge 94 | fname: Edge-Divide&Conquer.cpp 95 | - title: Heavy Light Decomposition 96 | fname: Heavy_Light_Decomposition.cpp 97 | - title: Virtual Tree 98 | fname: Virtual_Tree.cpp 99 | 100 | - name: Math 101 | dir: Math/ 102 | files: 103 | - title: FFT 104 | fname: FFT.cpp 105 | - title: FWT 106 | fname: FWT.cpp 107 | - title: BerlekampMassey 108 | fname: BerlekampMassey.cpp 109 | - title: CRT 110 | fname: CRT.cpp 111 | - title: Linear Sieve 112 | fname: linear_sieve.cpp 113 | - title: Linear Basis 114 | fname: Linear_Basis.cpp 115 | - title: Mobius 116 | fname: Mobius.cpp 117 | - name: Others 118 | dir: Others/ 119 | files: 120 | - title: Header 121 | fname: Header.cpp 122 | - title: FORMULA 123 | fname: formula.txt 124 | -------------------------------------------------------------------------------- /tex/format.tex: -------------------------------------------------------------------------------- 1 | \usepackage{amssymb} 2 | \usepackage{amsthm} 3 | \usepackage{fontspec,xunicode,xltxtra} 4 | \usepackage{titlesec} 5 | \usepackage{indentfirst} 6 | \usepackage{xeCJK} 7 | \usepackage{fancyhdr} 8 | \usepackage{graphicx} 9 | \usepackage{listings} 10 | \usepackage{printlen} 11 | \usepackage{ifthen} 12 | \usepackage[savepos]{zref} 13 | \usepackage{multicol} 14 | \usepackage{sectsty} 15 | \usepackage{xcolor} 16 | \usepackage[framemethod=tikz]{mdframed} 17 | \usepackage{hyperref} 18 | 19 | \usepackage[paper=a4paper]{geometry} 20 | \geometry{headheight=2.6cm,headsep=3mm,footskip=13mm} 21 | \geometry{top=2cm,bottom=2cm,left=2cm,right=2cm} 22 | 23 | 24 | \setCJKmainfont[BoldFont={SimHei}]{SimSun} 25 | \newfontfamily{\monotype}{Courier New} 26 | %\newcommand{\monotype}{\tt} 27 | 28 | \pagestyle{fancy} 29 | \rhead{{\sf\thepage}} 30 | \lhead{ACM/ICPC Code Library} 31 | 32 | \fancyhead[L]{\sf\leftmark} 33 | \fancyhead[R]{\sf\rightmark} 34 | 35 | \setlength{\parindent}{0em} 36 | 37 | \renewcommand{\contentsname}{目录} 38 | 39 | 40 | % settings for listings 41 | \lstset { 42 | basicstyle = \small\monotype, 43 | language = C++, 44 | tabsize = 2, 45 | breaklines = true, 46 | breakindent = 1.1em, 47 | numbers=right, 48 | stringstyle=\monotype, 49 | numberstyle=\footnotesize\ttfamily, 50 | firstnumber=last, 51 | basewidth={0.5em, 0.4em}, 52 | frame=single 53 | } 54 | 55 | % an amazing script 56 | % converts an line-number to arbitrary string 57 | \let\othelstnumber=\thelstnumber 58 | \def\createlinenumber#1#2{ 59 | \edef\thelstnumber{% 60 | \unexpanded{% 61 | \ifnum#1=\value{lstnumber}\relax 62 | \tt #2% 63 | \else}% 64 | \expandafter\unexpanded\expandafter{\thelstnumber\othelstnumber\fi}% 65 | } 66 | \ifx\othelstnumber=\relax\else 67 | \let\othelstnumber\relax 68 | \fi 69 | } 70 | 71 | -------------------------------------------------------------------------------- /tex/listings.cfg: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `listings.cfg', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% lstdrvrs.dtx (with options: `config') 8 | %% 9 | %% The listings package is copyright 1996--2004 Carsten Heinz, and 10 | %% continued maintenance on the package is copyright 2006--2007 Brooks Moses. 11 | %% The drivers are copyright 1997/1998/1999/2000/2001/2002/2003/2004/2006/ 12 | %% 2007 any individual author listed in this file. 13 | %% 14 | %% This file is distributed under the terms of the LaTeX Project Public 15 | %% License from CTAN archives in directory macros/latex/base/lppl.txt. 16 | %% Either version 1.3 or, at your option, any later version. 17 | %% 18 | %% This file is completely free and comes without any warranty. 19 | %% 20 | %% Send comments and ideas on the package, error reports and additional 21 | %% programming languages to Brooks Moses at . 22 | %% 23 | \ProvidesFile{listings.cfg}[2007/02/22 1.4 listings configuration] 24 | \def\lstlanguagefiles 25 | {lstlang0.sty,lstlang1.sty,lstlang2.sty,lstlang3.sty} 26 | \lstset{defaultdialect=[R/3 6.10]ABAP, 27 | defaultdialect=[2005]Ada, 28 | defaultdialect=[68]Algol, 29 | defaultdialect=[gnu]Awk, 30 | defaultdialect=[ANSI]C, 31 | defaultdialect=[light]Caml, 32 | defaultdialect=[1985]Cobol, 33 | defaultdialect=[WinXP]command.com, 34 | defaultdialect=[ISO]C++, 35 | defaultdialect=[95]Fortran, 36 | defaultdialect=[5.2]Mathematica, 37 | defaultdialect=[OMG]OCL, 38 | defaultdialect=[Standard]Pascal, 39 | defaultdialect=[67]Simula, 40 | defaultdialect=[plain]TeX, 41 | defaultdialect=[97]VRML} 42 | \lstalias[]{TclTk}[tk]{tcl} 43 | \lstalias[6.1]{ABAP}[R/3 6.10]{ABAP} 44 | \lstalias[3.1]{ABAP}[R/3 3.1C]{ABAP} 45 | \lstalias[4.6]{ABAP}[R/3 4.6C]{ABAP} 46 | \endinput 47 | %% 48 | %% End of file `listings.cfg'. 49 | -------------------------------------------------------------------------------- /tex/lstdoc.sty: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `lstdoc.sty', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% listings.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 | %% (c) 2006 Brooks Moses 14 | %% 15 | %% Send comments and ideas on the package, error reports and additional 16 | %% programming languages to . 17 | %% 18 | \def\filedate{2007/02/22} 19 | \def\fileversion{1.4} 20 | \ProvidesPackage{lstdoc} 21 | [\filedate\space\fileversion\space(Carsten Heinz)] 22 | \let\lstdoc@currversion\fileversion 23 | \RequirePackage[writefile]{listings}[2004/09/07] 24 | \newif\iffancyvrb \IfFileExists{fancyvrb.sty}{\fancyvrbtrue}{} 25 | \newif\ifcolor \IfFileExists{color.sty}{\colortrue}{} 26 | \lst@false 27 | \newif\ifhyper 28 | \@ifundefined{pdfoutput} 29 | {} 30 | {\ifnum\pdfoutput>\z@ \lst@true \fi} 31 | \@ifundefined{VTeXversion} 32 | {} 33 | {\ifnum\OpMode>\z@ \lst@true \fi} 34 | \lst@if \IfFileExists{hyperref.sty}{\hypertrue}{}\fi 35 | \newif\ifalgorithmicpkg \IfFileExists{algorithmic.sty}{\algorithmicpkgtrue}{} 36 | \newif\iflgrind \IfFileExists{lgrind.sty}{\lgrindtrue}{} 37 | \iffancyvrb \RequirePackage{fancyvrb}\fi 38 | \ifhyper \RequirePackage[colorlinks]{hyperref}\else 39 | \def\href#1{\texttt}\fi 40 | \ifcolor \RequirePackage{color}\fi 41 | \ifalgorithmicpkg \RequirePackage{algorithmic}\fi 42 | \iflgrind \RequirePackage{lgrind}\fi 43 | \RequirePackage{nameref} 44 | \RequirePackage{url} 45 | \renewcommand\ref{\protect\T@ref} 46 | \renewcommand\pageref{\protect\T@pageref} 47 | \def\lst@BeginRemark#1{% 48 | \begin{quote}\topsep0pt\let\small\footnotesize\small#1:} 49 | \def\lst@EndRemark{\end{quote}} 50 | \newenvironment{TODO} 51 | {\lst@BeginRemark{To do}}{\lst@EndRemark} 52 | \newenvironment{ALTERNATIVE} 53 | {\lst@BeginRemark{Alternative}}{\lst@EndRemark} 54 | \newenvironment{REMOVED} 55 | {\lst@BeginRemark{Removed}}{\lst@EndRemark} 56 | \newenvironment{OLDDEF} 57 | {\lst@BeginRemark{Old definition}}{\lst@EndRemark} 58 | \def\advise{\par\list\labeladvise 59 | {\advance\linewidth\@totalleftmargin 60 | \@totalleftmargin\z@ 61 | \@listi 62 | \let\small\footnotesize \small\sffamily 63 | \parsep \z@ \@plus\z@ \@minus\z@ 64 | \topsep6\p@ \@plus1\p@\@minus2\p@ 65 | \def\makelabel##1{\hss\llap{##1}}}} 66 | \let\endadvise\endlist 67 | \def\advisespace{\hbox{}\qquad} 68 | \def\labeladvise{$\to$} 69 | \newenvironment{syntax} 70 | {\list{}{\itemindent-\leftmargin 71 | \def\makelabel##1{\hss\lst@syntaxlabel##1,,,,\relax}}} 72 | {\endlist} 73 | \def\lst@syntaxlabel#1,#2,#3,#4\relax{% 74 | \llap{\scriptsize\itshape#3}% 75 | \def\lst@temp{#2}% 76 | \expandafter\lst@syntaxlabel@\meaning\lst@temp\relax 77 | \rlap{\hskip-\itemindent\hskip\itemsep\hskip\linewidth 78 | \llap{\ttfamily\lst@temp}\hskip\labelwidth 79 | \def\lst@temp{#1}% 80 | \ifx\lst@temp\lstdoc@currversion#1\fi}} 81 | \def\lst@syntaxlabel@#1>#2\relax 82 | {\edef\lst@temp{\zap@space#2 \@empty}} 83 | \newcommand*\syntaxnewline{\newline\hbox{}\kern\labelwidth} 84 | \newcommand*\syntaxor{\qquad or\qquad} 85 | \newcommand*\syntaxbreak 86 | {\hfill\kern0pt\discretionary{}{\kern\labelwidth}{}} 87 | \let\syntaxfill\hfill 88 | \def\alternative#1{\lst@true \alternative@#1,\relax,} 89 | \def\alternative@#1,{% 90 | \ifx\relax#1\@empty 91 | \expandafter\@gobble 92 | \else 93 | \ifx\@empty#1\@empty\else 94 | \lst@if \lst@false \else $\vert$\fi 95 | \textup{\texttt{#1}}% 96 | \fi 97 | \fi 98 | \alternative@} 99 | \long\def\m@cro@#1#2#3{\endgroup \topsep\MacroTopsep \trivlist 100 | \edef\saved@macroname{\string#3}% 101 | \def\makelabel##1{\llap{##1}}% 102 | \if@inlabel 103 | \let\@tempa\@empty \count@\macro@cnt 104 | \loop \ifnum\count@>\z@ 105 | \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat 106 | \edef\makelabel##1{\llap{\vtop to\baselineskip 107 | {\@tempa\hbox{##1}\vss}}}% 108 | \advance \macro@cnt \@ne 109 | \else \macro@cnt\@ne \fi 110 | \edef\@tempa{\noexpand\item[% 111 | #1% 112 | \noexpand\PrintMacroName 113 | \else 114 | \expandafter\noexpand\csname Print#2Name\endcsname % MODIFIED 115 | \fi 116 | {\string#3}]}% 117 | \@tempa 118 | \global\advance\c@CodelineNo\@ne 119 | #1% 120 | \SpecialMainIndex{#3}\nobreak 121 | \DoNotIndex{#3}% 122 | \else 123 | \csname SpecialMain#2Index\endcsname{#3}\nobreak % MODIFIED 124 | \fi 125 | \global\advance\c@CodelineNo\m@ne 126 | \ignorespaces} 127 | \def\macro{\begingroup 128 | \catcode`\\12 129 | \MakePrivateLetters \m@cro@ \iftrue {Macro}}% MODIFIED 130 | \def\environment{\begingroup 131 | \catcode`\\12 132 | \MakePrivateLetters \m@cro@ \iffalse {Env}}% MODIFIED 133 | \def\newdocenvironment#1#2#3#4{% 134 | \@namedef{#1}{#3\begingroup \catcode`\\12\relax 135 | \MakePrivateLetters \m@cro@ \iffalse {#2}}% 136 | \@namedef{end#1}{#4\endmacro}% 137 | \@ifundefined{Print#2Name}{\expandafter 138 | \let\csname Print#2Name\endcsname\PrintMacroName}{}% 139 | \@ifundefined{SpecialMain#2Index}{\expandafter 140 | \let\csname SpecialMain#2Index\endcsname\SpecialMainIndex}{}} 141 | \newdocenvironment{aspect}{Aspect}{}{} 142 | \def\PrintAspectName#1{} 143 | \def\SpecialMainAspectIndex#1{% 144 | \@bsphack 145 | \index{aspects:\levelchar\protect\aspectname{#1}}% 146 | \@esphack} 147 | \newdocenvironment{lstkey}{Key}{}{} 148 | \def\PrintKeyName#1{\strut\keyname{#1}\ } 149 | \def\SpecialMainKeyIndex#1{% 150 | \@bsphack 151 | \index{keys\levelchar\protect\keyname{#1}}% 152 | \@esphack} 153 | \newcounter{argcount} 154 | \def\labelargcount{\texttt{\#\arabic{argcount}}\hskip\labelsep$=$} 155 | \def\macroargs{\list\labelargcount 156 | {\usecounter{argcount}\leftmargin=2\leftmargin 157 | \parsep \z@ \@plus\z@ \@minus\z@ 158 | \topsep4\p@ \@plus\p@ \@minus2\p@ 159 | \itemsep\z@ \@plus\z@ \@minus\z@ 160 | \def\makelabel##1{\hss\llap{##1}}}} 161 | \def\endmacroargs{\endlist\@endparenv} 162 | \lst@RequireAspects{writefile} 163 | \newbox\lst@samplebox 164 | \lstnewenvironment{lstsample}[3][] 165 | {\global\let\lst@intname\@empty 166 | \gdef\lst@sample{#2}% 167 | \setbox\lst@samplebox=\hbox\bgroup 168 | \setkeys{lst}{language={},style={},tabsize=4,gobble=5,% 169 | basicstyle=\small\ttfamily,basewidth=0.51em,point={#1}} 170 | #3% 171 | \lst@BeginAlsoWriteFile{\jobname.tmp}} 172 | {\lst@EndWriteFile\egroup 173 | \ifdim \wd\lst@samplebox>.5\linewidth 174 | \begin{center}% 175 | \hbox to\linewidth{\box\lst@samplebox\hss}% 176 | \end{center}% 177 | \lst@sampleInput 178 | \else 179 | \begin{center}% 180 | \begin{minipage}{0.45\linewidth}\lst@sampleInput\end{minipage}% 181 | \qquad 182 | \begin{minipage}{0.45\linewidth}% 183 | \hbox to\linewidth{\box\lst@samplebox\hss}% 184 | \end{minipage}% 185 | \end{center}% 186 | \fi} 187 | \lst@InstallKeywords{p}{point}{pointstyle}\relax{keywordstyle}{}ld 188 | \lstnewenvironment{lstxsample}[1][] 189 | {\begingroup 190 | \setkeys{lst}{belowskip=-\medskipamount,language={},style={},% 191 | tabsize=4,gobble=5,basicstyle=\small\ttfamily,% 192 | basewidth=0.51em,point={#1}} 193 | \lst@BeginAlsoWriteFile{\jobname.tmp}} 194 | {\endgroup 195 | \endgroup} 196 | \def\lst@sampleInput{% 197 | \MakePercentComment\catcode`\^^M=10\relax 198 | \small\lst@sample 199 | {\setkeys{lst}{SelectCharTable=\lst@ReplaceInput{\^\^I}% 200 | {\lst@ProcessTabulator}}% 201 | \leavevmode \input{\jobname.tmp}}\MakePercentIgnore} 202 | \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% 203 | {1.25ex \@plus1ex \@minus.2ex}% 204 | {-1em}% 205 | {\normalfont\normalsize\bfseries}} 206 | \def\lstref#1{\emph{\ref{#1} \nameref{#1}}} 207 | \def\@part[#1]#2{\ifhyper\phantomsection\fi 208 | \addcontentsline{toc}{part}{#1}% 209 | {\parindent\z@ \raggedright \interlinepenalty\@M 210 | \normalfont \huge \bfseries #2\markboth{}{}\par}% 211 | \nobreak\vskip 3ex\@afterheading} 212 | \renewcommand*\l@section[2]{% 213 | \addpenalty\@secpenalty 214 | \addvspace{.25em \@plus\p@}% 215 | \setlength\@tempdima{1.5em}% 216 | \begingroup 217 | \parindent \z@ \rightskip \@pnumwidth 218 | \parfillskip -\@pnumwidth 219 | \leavevmode 220 | \advance\leftskip\@tempdima 221 | \hskip -\leftskip 222 | #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par 223 | \endgroup} 224 | \renewcommand*\l@subsection{\@dottedtocline{2}{0pt}{2.3em}} 225 | \renewcommand*\l@subsubsection{\@dottedtocline{3}{0pt}{3.2em}} 226 | \newcommand\ikeyname[1]{% 227 | \lstkeyindex{#1}{}% 228 | \lstaspectindex{#1}{}% 229 | \keyname{#1}} 230 | \newcommand\ekeyname[1]{% 231 | \@bsphack 232 | \lstkeyindex{#1}{}% 233 | \lstaspectindex{#1}{}% 234 | \@esphack} 235 | \newcommand\rkeyname[1]{% 236 | \@bsphack 237 | \lstkeyindex{#1}{}% 238 | \lstaspectindex{#1}{}% 239 | \@esphack{\rstyle\keyname{#1}}} 240 | \newcommand\icmdname[1]{% 241 | \@bsphack 242 | \lstaspectindex{#1}{}% 243 | \@esphack\texttt{\string#1}} 244 | \newcommand\rcmdname[1]{% 245 | \@bsphack 246 | \lstaspectindex{#1}{}% 247 | \@esphack\texttt{\rstyle\string#1}} 248 | \def\lstaspectindex#1#2{% 249 | \global\@namedef{lstkandc@\string#1}{}% 250 | \@ifundefined{lstisaspect@\string#1} 251 | {\index{unknown\levelchar 252 | \protect\texttt{\protect\string\string#1}#2}}% 253 | {\index{\@nameuse{lstisaspect@\string#1}\levelchar 254 | \protect\texttt{\protect\string\string#1}#2}}% 255 | } 256 | \def\lstkeyindex#1#2{% 257 | } 258 | \def\lstisaspect[#1]#2{% 259 | \global\@namedef{lstaspect@#1}{#2}% 260 | \lst@AddTo\lst@allkeysandcmds{,#2}% 261 | \@for\lst@temp:=#2\do 262 | {\ifx\@empty\lst@temp\else 263 | \global\@namedef{lstisaspect@\lst@temp}{#1}% 264 | \fi}} 265 | \gdef\lst@allkeysandcmds{} 266 | \def\lstprintaspectkeysandcmds#1{% 267 | \lst@true 268 | \expandafter\@for\expandafter\lst@temp 269 | \expandafter:\expandafter=\csname lstaspect@#1\endcsname\do 270 | {\lst@if\lst@false\else, \fi \texttt{\lst@temp}}} 271 | \def\lstcheckreference{% 272 | \@for\lst@temp:=\lst@allkeysandcmds\do 273 | {\ifx\lst@temp\@empty\else 274 | \@ifundefined{lstkandc@\lst@temp} 275 | {\typeout{\lst@temp\space not in reference guide?}}{}% 276 | \fi}} 277 | \newcommand*\lst{\texttt{lst}} 278 | \newcommand*\Cpp{C\texttt{++}} 279 | \let\keyname\texttt 280 | \let\keyvalue\texttt 281 | \let\hookname\texttt 282 | \newcommand*\aspectname[1]{{\normalfont\sffamily#1}} 283 | \DeclareRobustCommand\packagename[1]{% 284 | {\leavevmode\text@command{#1}% 285 | \switchfontfamily\sfdefault\rmdefault 286 | \check@icl #1\check@icr 287 | \expandafter}}% 288 | \renewcommand\packagename[1]{{\normalfont\sffamily#1}} 289 | \def\switchfontfamily#1#2{% 290 | \begingroup\xdef\@gtempa{#1}\endgroup 291 | \ifx\f@family\@gtempa\fontfamily#2% 292 | \else\fontfamily#1\fi 293 | \selectfont} 294 | \ifcolor 295 | \definecolor{darkgreen}{rgb}{0,0.5,0} 296 | \def\rstyle{\color{darkgreen}} 297 | \else 298 | \let\rstyle\empty 299 | \fi 300 | \gdef\lst@emails{} 301 | \newcommand*\lstthanks[2] 302 | {#1\lst@AddTo\lst@emails{,#1,<#2>}% 303 | \ifx\@empty#2\@empty\typeout{Missing email for #1}\fi} 304 | \newcommand*\lsthelper[3] 305 | {{\let~\ #1}% 306 | \lst@IfOneOf#1\relax\lst@emails 307 | {}{\typeout{^^JWarning: Unknown helper #1.^^J}}} 308 | \lstdefinelanguage[doc]{Pascal}{% 309 | morekeywords={alfa,and,array,begin,boolean,byte,case,char,const,div,% 310 | do,downto,else,end,false,file,for,function,get,goto,if,in,% 311 | integer,label,maxint,mod,new,not,of,or,pack,packed,page,program,% 312 | procedure,put,read,readln,real,record,repeat,reset,rewrite,set,% 313 | text,then,to,true,type,unpack,until,var,while,with,write,writeln},% 314 | sensitive=false,% 315 | morecomment=[s]{(*}{*)},% 316 | morecomment=[s]{\{}{\}},% 317 | morestring=[d]{'}} 318 | \lstdefinestyle{} 319 | {basicstyle={},% 320 | keywordstyle=\bfseries,identifierstyle={},% 321 | commentstyle=\itshape,stringstyle={},% 322 | numberstyle={},stepnumber=1,% 323 | pointstyle=\pointstyle} 324 | \def\pointstyle{% 325 | {\let\lst@um\@empty \xdef\@gtempa{\the\lst@token}}% 326 | \expandafter\lstkeyindex\expandafter{\@gtempa}{}% 327 | \expandafter\lstaspectindex\expandafter{\@gtempa}{}% 328 | \rstyle} 329 | \lstset{defaultdialect=[doc]Pascal,language=Pascal,style={}} 330 | \def\lstscanlanguages#1#2#3{% 331 | \begingroup 332 | \def\lst@DefDriver@##1##2##3##4[##5]##6{% 333 | \lst@false 334 | \lst@lAddTo\lst@scan{##6(##5),}% 335 | \begingroup 336 | \@ifnextchar[{\lst@XDefDriver{##1}##3}{\lst@DefDriver@@##3}}% 337 | \def\lst@XXDefDriver[##1]{}% 338 | \lst@InputCatcodes 339 | \def\lst@dontinput{#3}% 340 | \let\lst@scan\@empty 341 | \lst@for{#2}\do{% 342 | \lst@IfOneOf##1\relax\lst@dontinput 343 | {}% 344 | {\InputIfFileExists{##1}{}{}}}% 345 | \global\let\@gtempa\lst@scan 346 | \endgroup 347 | \let#1\@gtempa} 348 | \def\lstprintlanguages#1{% 349 | \def\do##1{\setbox\@tempboxa\hbox{##1\space\space}% 350 | \ifdim\wd\@tempboxa<.5\linewidth \wd\@tempboxa.5\linewidth 351 | \else \wd\@tempboxa\linewidth \fi 352 | \box\@tempboxa\allowbreak}% 353 | \begin{quote} 354 | \par\noindent 355 | \hyphenpenalty=\@M \rightskip=\z@\@plus\linewidth\relax 356 | \lst@BubbleSort#1% 357 | \expandafter\lst@NextLanguage#1\relax(\relax),% 358 | \end{quote}} 359 | \def\lst@NextLanguage#1(#2),{% 360 | \ifx\relax#1\else 361 | \def\lst@language{#1}\def\lst@dialects{(#2),}% 362 | \expandafter\lst@NextLanguage@ 363 | \fi} 364 | \def\lst@NextLanguage@#1(#2),{% 365 | \def\lst@temp{#1}% 366 | \ifx\lst@temp\lst@language 367 | \lst@lAddTo\lst@dialects{(#2),}% 368 | \expandafter\lst@NextLanguage@ 369 | \else 370 | \do{\lst@language 371 | \ifx\lst@dialects\lst@emptydialect\else 372 | \expandafter\lst@NormedDef\expandafter\lst@language 373 | \expandafter{\lst@language}% 374 | \space(% 375 | \lst@BubbleSort\lst@dialects 376 | \expandafter\lst@PrintDialects\lst@dialects(\relax),% 377 | )% 378 | \fi}% 379 | \def\lst@next{\lst@NextLanguage#1(#2),}% 380 | \expandafter\lst@next 381 | \fi} 382 | \def\lst@emptydialect{(),} 383 | \def\lst@PrintDialects(#1),{% 384 | \ifx\@empty#1\@empty empty\else 385 | \lst@PrintDialect{#1}% 386 | \fi 387 | \lst@PrintDialects@} 388 | \def\lst@PrintDialects@(#1),{% 389 | \ifx\relax#1\else 390 | , \lst@PrintDialect{#1}% 391 | \expandafter\lst@PrintDialects@ 392 | \fi} 393 | \def\lst@PrintDialect#1{% 394 | \lst@NormedDef\lst@temp{#1}% 395 | \expandafter\ifx\csname\@lst dd@\lst@language\endcsname\lst@temp 396 | \texttt{\underbar{#1}}% 397 | \else 398 | \texttt{#1}% 399 | \fi} 400 | \def\lst@IfLE#1#2\@empty#3#4\@empty{% 401 | \ifx #1\relax 402 | \let\lst@next\@firstoftwo 403 | \else \ifx #3\relax 404 | \let\lst@next\@secondoftwo 405 | \else 406 | \lowercase{\ifx#1#3}% 407 | \def\lst@next{\lst@IfLE#2\@empty#4\@empty}% 408 | \else 409 | \lowercase{\ifnum`#1<`#3}\relax 410 | \let\lst@next\@firstoftwo 411 | \else 412 | \let\lst@next\@secondoftwo 413 | \fi 414 | \fi 415 | \fi \fi 416 | \lst@next} 417 | \def\lst@BubbleSort#1{% 418 | \ifx\@empty#1\else 419 | \lst@false 420 | \expandafter\lst@BubbleSort@#1\relax,\relax,% 421 | \expandafter\lst@BubbleSort@\expandafter,\lst@sorted 422 | \relax,\relax,% 423 | \let#1\lst@sorted 424 | \lst@if 425 | \def\lst@next{\lst@BubbleSort#1}% 426 | \expandafter\expandafter\expandafter\lst@next 427 | \fi 428 | \fi} 429 | \def\lst@BubbleSort@#1,#2,{% 430 | \ifx\@empty#1\@empty 431 | \def\lst@sorted{#2,}% 432 | \def\lst@next{\lst@BubbleSort@@}% 433 | \else 434 | \let\lst@sorted\@empty 435 | \def\lst@next{\lst@BubbleSort@@#1,#2,}% 436 | \fi 437 | \lst@next} 438 | \def\lst@BubbleSort@@#1,#2,{% 439 | \ifx\relax#1\else 440 | \ifx\relax#2% 441 | \lst@lAddTo\lst@sorted{#1,}% 442 | \expandafter\expandafter\expandafter\lst@BubbleSort@@@ 443 | \else 444 | \lst@IfLE #1\relax\@empty #2\relax\@empty 445 | {\lst@lAddTo\lst@sorted{#1,#2,}}% 446 | {\lst@true \lst@lAddTo\lst@sorted{#2,#1,}}% 447 | \expandafter\expandafter\expandafter\lst@BubbleSort@@ 448 | \fi 449 | \fi} 450 | \def\lst@BubbleSort@@@#1\relax,{} 451 | \endinput 452 | %% 453 | %% End of file `lstdoc.sty'. 454 | -------------------------------------------------------------------------------- /tex/lstlang2.sty: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `lstlang2.sty', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% lstdrvrs.dtx (with options: `lang2') 8 | %% 9 | %% The listings package is copyright 1996--2004 Carsten Heinz, and 10 | %% continued maintenance on the package is copyright 2006--2007 Brooks Moses. 11 | %% The drivers are copyright 1997/1998/1999/2000/2001/2002/2003/2004/2006/ 12 | %% 2007 any individual author listed in this file. 13 | %% 14 | %% This file is distributed under the terms of the LaTeX Project Public 15 | %% License from CTAN archives in directory macros/latex/base/lppl.txt. 16 | %% Either version 1.3 or, at your option, any later version. 17 | %% 18 | %% This file is completely free and comes without any warranty. 19 | %% 20 | %% Send comments and ideas on the package, error reports and additional 21 | %% programming languages to Brooks Moses at . 22 | %% 23 | \ProvidesFile{lstlang2.sty} 24 | [2004/09/05 1.3 listings language file] 25 | %% 26 | %% Abap definition by Knut Lickert 27 | %% 28 | \lst@definelanguage[R/3 6.10]{ABAP}[R/3 4.6C]{ABAP}% 29 | {morekeywords={try,endtry},% 30 | }[keywords,comments,strings] 31 | \lst@definelanguage[R/3 4.6C]{ABAP}[R/3 3.1]{ABAP}% 32 | {morekeywords={method,ref,class,create,object,% 33 | methods,endmethod,private,protected,public,section,% 34 | catch,system-exceptions,endcatch,% 35 | },% 36 | moreprocnamekeys={class},% 37 | literate={->}{{$\rightarrow$}}1{=>}{{$\Rightarrow$}}1,% 38 | }[keywords,comments,strings,procnames] 39 | \lst@definelanguage[R/3 3.1]{ABAP}[R/2 5.0]{ABAP}{}% 40 | \lst@definelanguage[R/2 5.0]{ABAP}% 41 | {sensitive=f,% 42 | procnamekeys={report,program,form,function,module},% 43 | morekeywords={*,add,after,alias,analyzer,and,append,appending,area,assign,at,% 44 | authority-check,before,binary,blank,break-point,calendar,call,% 45 | case,change,changing,check,clear,cnt,co,collect,commit,common,% 46 | component,compute,condense,corresponding,cos,cp,cs,currency-conversion,% 47 | cursor,data,database,dataset,decimals,define,delete,deleting,dequeue,% 48 | describe,detail,dialog,directory,div,divide,do,documentation,% 49 | during,dynpro,else,end-of-page,end-of-selection,endat,endcase,% 50 | enddo,endfor,endform,endif,endloop,endmodule,endselect,% 51 | endwhile,enqueue,exceptions,exit,exp,export,exporting,extract,% 52 | field,fields,field-groups,field-symbols,find,for,form,format,free,% 53 | from,function,generating,get,giving,hide,id,if,import,% 54 | importing,in,incl,include,initial,initialization,input,insert,% 55 | interrupt,into,is,language,leave,leading,left-justified,like,line,lines,line-count, 56 | line-selection,list-processing,load,local,log,logfile,loop,% 57 | margin,mark,mask,memory,menue,message,mod,modify,module,move,% 58 | move-text,multiply,na,new,new-line,new-page,no-gaps,np,ns,% 59 | number,obligatory,occurs,of,on,or,others,output,parameter,% 60 | parameters,parts,perform,pf-status,places,position,process,% 61 | raise,raising,ranges,read,refresh,refresh-dynpro,reject,remote,% 62 | replace,report,reserve,reset,restart,right-justified,run,screen,scroll,search,% 63 | segments,select,select-options,selection-screen,set,shift,sin,% 64 | single,sqrt,start-of-selection,statement,structure,submit,% 65 | subtract,summary,summing,suppress,system,table,tables,task,% 66 | text,time,to,top-of-page,trace,transaction,transfer,% 67 | transfer-dynpro,translate,type,unpack,update,user-command,% 68 | using,value,when,where,while,window,with,workfile,write,},% 69 | morecomment=[l]",% 70 | morecomment=[f][commentstyle][0]*,% 71 | morestring=[d]'% 72 | }[keywords,comments,strings,procnames] 73 | \lst@definelanguage[R/2 4.3]{ABAP}[R/2 5.0]{ABAP}% 74 | {deletekeywords={function,importing,exporting,changing,exceptions,% 75 | raise,raising}% 76 | }[keywords,comments,strings] 77 | %% 78 | %% Corba IDL definition (c) 1999 Jens T. Berger Thielemann 79 | %% 80 | \lst@definelanguage[CORBA]{IDL}% 81 | {morekeywords={any,attribute,boolean,case,char,const,context,default,% 82 | double,enum,exception,fixed,float,in,inout,interface,long,module,% 83 | native,Object,octet,oneway,out,raises,readonly,sequence,short,% 84 | string,struct,switch,typedef,union,unsigned,void,wchar,wstring,% 85 | FALSE,TRUE},% 86 | sensitive,% 87 | moredirectives={define,elif,else,endif,error,if,ifdef,ifndef,line,% 88 | include,pragma,undef,warning},% 89 | moredelim=*[directive]\#,% 90 | morecomment=[l]//,% 91 | morecomment=[s]{/*}{*/},% 92 | morestring=[b]"% 93 | }[keywords,comments,strings,directives]% 94 | %% 95 | %% (Objective) Caml definition (c) 1999 Patrick Cousot 96 | %% 97 | %% Objective CAML and Caml light are freely available, together with a 98 | %% reference manual, at URL ftp.inria.fr/lang/caml-light for the Unix, 99 | %% Windows and Macintosh OS operating systems. 100 | %% 101 | \lst@definelanguage[Objective]{Caml}[light]{Caml} 102 | {deletekeywords={not,prefix,value,where},% 103 | morekeywords={assert,asr,class,closed,constraint,external,false,% 104 | functor,include,inherit,land,lazy,lor,lsl,lsr,lxor,method,mod,% 105 | module,new,open,parser,private,sig,struct,true,val,virtual,when,% 106 | object,ref},% TH 107 | }% 108 | \lst@definelanguage[light]{Caml} 109 | {morekeywords={and,as,begin,do,done,downto,else,end,exception,for,% 110 | fun,function,if,in,let,match,mutable,not,of,or,prefix,rec,then,% 111 | to,try,type,value,where,while,with},% 112 | sensitive,% 113 | morecomment=[n]{(*}{*)},% 114 | morestring=[b]",% 115 | moredelim=*[directive]\#,% 116 | moredirectives={open,close,include}% 117 | }[keywords,comments,strings,directives]% 118 | \lst@definelanguage[ibm]{Cobol}[1985]{Cobol}% 119 | {morekeywords={ADDRESS,BEGINNING,COMP-3,COMP-4,COMPUTATIONAL,% 120 | COMPUTATIONAL-3,COMPUTATIONAL-4,DISPLAY-1,EGCS,EJECT,ENDING,% 121 | ENTRY,GOBACK,ID,MORE-LABELS,NULL,NULLS,PASSWORD,RECORDING,% 122 | RETURN-CODE,SERVICE,SKIP1,SKIP2,SKIP3,SORT-CONTROL,SORT-RETURN,% 123 | SUPPRESS,TITLE,WHEN-COMPILED},% 124 | }% 125 | \lst@definelanguage[1985]{Cobol}[1974]{Cobol}% 126 | {morekeywords={ALPHABET,ALPHABETIC-LOWER,ALPHABETIC-UPPER,% 127 | ALPHANUMERIC,ALPHANUMERIC-EDITED,ANY,CLASS,COMMON,CONTENT,% 128 | CONTINUE,DAY-OF-WEEK,END-ADD,END-CALL,END-COMPUTE,END-DELETE,% 129 | END-DIVIDE,END-EVALUATE,END-IF,END-MULTIPLY,END-PERFORM,END-READ,% 130 | END-RECEIVE,END-RETURN,END-REWRITE,END-SEARCH,END-START,% 131 | END-STRING,END-SUBTRACT,END-UNSTRING,END-WRITE,EVALUATE,EXTERNAL,% 132 | FALSE,GLOBAL,INITIALIZE,NUMERIC-EDITED,ORDER,OTHER,% 133 | PACKED-DECIMAL,PADDING,PURGE,REFERENCE,RELOAD,REPLACE,STANDARD-1,% 134 | STANDARD-2,TEST,THEN,TRUE},% 135 | }% 136 | \lst@definelanguage[1974]{Cobol}% 137 | {morekeywords={ACCEPT,ACCESS,ADD,ADVANCING,AFTER,ALL,ALPHABETIC,ALSO,% 138 | ALTER,ALTERNATE,AND,ARE,AREA,AREAS,ASCENDING,ASSIGN,AT,AUTHOR,% 139 | BEFORE,BINARY,BLANK,BLOCK,BOTTOM,BY,CALL,CANCEL,CD,CF,CH,% 140 | CHARACTER,CHARACTERS,CLOCK-UNITS,CLOSE,COBOL,CODE,CODE-SET,% 141 | COLLATING,COLUMN,COMMA,COMMUNICATION,COMP,COMPUTE,CONFIGURATION,% 142 | CONTAINS,CONTROL,CONTROLS,CONVERTING,COPY,CORR,CORRESPONDING,% 143 | COUNT,CURRENCY,DATA,DATE,DATE-COMPILED,DATE-WRITTEN,DAY,DE,% 144 | DEBUG-CONTENTS,DEGUB-ITEM,DEBUG-LINE,DEBUG-NAME,DEBUG-SUB1,% 145 | DEBUG-SUB2,DEBUG-SUB3,DEBUGGING,DECIMAL-POINT,DECLARATIVES,% 146 | DELETE,DELIMITED,DELIMITER,DEPENDING,DESCENDING,DESTINATION,% 147 | DETAIL,DISABLE,DISPLAY,DIVIDE,DIVISION,DOWN,DUPLICATES,DYNAMIC,% 148 | EGI,ELSE,EMI,ENABLE,END,END-OF-PAGE,ENTER,ENVIRONMENT,EOP,EQUAL,% 149 | ERROR,ESI,EVERY,EXCEPTION,EXIT,EXTEND,FD,FILE,FILE-CONTROL,% 150 | FILLER,FINAL,FIRST,FOOTING,FOR,FROM,GENERATE,GIVING,GO,GREATER,% 151 | GROUP,HEADING,HIGH-VALUE,HIGH-VALUES,I-O,I-O-CONTROL,% 152 | IDENTIFICATION,IF,IN,INDEX,INDEXED,INDICATE,INITIAL,INITIATE,% 153 | INPUT,INPUT-OUTPUT,INSPECT,INSTALLATION,INTO,INVALID,IS,JUST,% 154 | JUSTIFIED,KEY,LABEL,LAST,LEADING,LEFT,LENGTH,LESS,LIMIT,LIMITS,% 155 | LINAGE,LINAGE-COUNTER,LINE,LINE-COUNTER,LINES,LINKAGE,LOCK,% 156 | LOW-VALUE,LOW-VALUES,MEMORY,MERGE,MESSAGE,MODE,MODULES,MOVE,% 157 | MULTIPLE,MULTIPLY,NATIVE,NEGATIVE,NEXT,NO,NOT,NUMBER,NUMERIC,% 158 | OBJECT-COMPUTER,OCCURS,OF,OFF,OMITTED,ON,OPEN,OPTIONAL,OR,% 159 | ORGANIZATION,OUTPUT,OVERFLOW,PAGE,PAGE-COUNTER,PERFORM,PF,PH,PIC,% 160 | PICTURE,PLUS,POINTER,POSITION,PRINTING,POSITIVE,PRINTING,% 161 | PROCEDURE,PROCEDURES,PROCEED,PROGRAM,PROGRAM-ID,QUEUE,QUOTE,% 162 | QUOTES,RANDOM,RD,READ,RECEIVE,RECORD,RECORDING,RECORDS,REDEFINES,% 163 | REEL,REFERENCES,RELATIVE,RELEASE,REMAINDER,REMOVAL,RENAMES,% 164 | REPLACING,REPORT,REPORTING,REPORTS,RERUN,RESERVE,RESET,RETURN,% 165 | REVERSED,REWIND,REWRITE,RF,RH,RIGHT,ROUNDED,RUN,SAME,SD,SEARCH,% 166 | SECTION,SECURITY,SEGMENT,SEGMENT-LIMIT,SELECT,SEND,SENTENCE,% 167 | SEPARATE,SEQUENCE,SEQUENTIAL,SET,SIGN,SIZE,SORT,SORT-MERGE,% 168 | SOURCE,SOURCE-COMPUTER,SPACE,SPACES,SPECIAL-NAMES,STANDARD,START,% 169 | STATUS,STOP,STRING,SUB-QUEUE-1,SUB-QUEUE-2,SUB-QUEUE-3,SUBTRACT,% 170 | SUM,SYMBOLIC,SYNC,SYNCHRONIZED,TABLE,TALLYING,TAPE,TERMINAL,% 171 | TERMINATE,TEXT,THAN,THROUGH,THRU,TIME,TIMES,TO,TOP,TRAILING,TYPE,% 172 | UNIT,UNSTRING,UNTIL,UP,UPON,USAGE,USE,USING,VALUE,VALUES,VARYING,% 173 | WHEN,WITH,WORDS,WORKING-STORAGE,WRITE,ZERO,ZEROES,ZEROS},% 174 | alsodigit=-,% 175 | sensitive=f,% ??? 176 | morecomment=[f][commentstyle][6]*,% 177 | morestring=[d]"% ??? doubled 178 | }[keywords,comments,strings]% 179 | \lst@definelanguage{Delphi}% 180 | {morekeywords={and,as,asm,array,begin,case,class,const,constructor,% 181 | destructor,div,do,downto,else,end,except,exports,file,finally,% 182 | for,function,goto,if,implementation,in,inherited,inline,% 183 | initialization,interface,is,label,library,mod,nil,not,object,of,% 184 | or,packed,procedure,program,property,raise,record,repeat,set,% 185 | shl,shr,string,then,to,try,type,unit,until,uses,var,while,with,% 186 | xor,% 187 | absolute,abstract,assembler,at,cdecl,default,dynamic,export,% 188 | external,far,forward,index,name,near,nodefault,on,override,% 189 | private,protected,public,published,read,resident,storedDir,% 190 | virtual,write},% 191 | morendkeywords={Abs,AddExitProc,Addr,AllocMem,AnsiCompareStr,% 192 | AnsiCompareText,AnsiLowerCase,AnsiUpperCase,Append,AppendStr,% 193 | ArcTan,AssignCrt,Assigned,AssignFile,BlockRead,BlockWrite,Break,% 194 | ChangeFileExt,ChDir,Chr,CloseFile,ClrEol,ClrScr,Concat,Continue,% 195 | Copy,Cos,CSeg,CursorTo,Date,DateTimeToFileDate,DateTimeToStr,% 196 | DateTimeToString,DateToStr,DayOfWeek,Dec,DecodeDate,DecodeTime,% 197 | Delete,DeleteFile,DiskFree,DiskSize,Dispose,DisposeStr,% 198 | DoneWinCrt,DSeg,EncodeDate,EncodeTime,Eof,Eoln,Erase,Exclude,% 199 | Exit,Exp,ExpandFileName,ExtractFileExt,ExtractFileName,% 200 | ExtractFilePath,FileAge,FileClose,FileDateToDateTime,FileExists,% 201 | FileGetAttr,FileGetDate,FileOpen,FilePos,FileRead,FileSearch,% 202 | FileSeek,FileSetAttr,FileSetDate,FileSize,FillChar,FindClose,% 203 | FindFirst,FindNext,FloatToDecimal,FloatToStrF,FloatToStr,% 204 | FloatToText,FloatToTextFmt,Flush,FmtLoadStr,FmtStr,Format,% 205 | FormatBuf,FormatDateTime,FormatFloat,Frac,Free,FreeMem,GetDir,% 206 | GetMem,GotoXY,Halt,Hi,High,Inc,Include,InitWinCrt,Insert,Int,% 207 | IntToHex,IntToStr,IOResult,IsValidIdent,KeyPressed,Length,Ln,Lo,% 208 | LoadStr,Low,LowerCase,MaxAvail,MemAvail,MkDir,Move,New,NewStr,% 209 | Now,Odd,Ofs,Ord,ParamCount,ParamStr,Pi,Pos,Pred,Ptr,Random,% 210 | Randomize,Read,ReadBuf,ReadKey,Readln,ReAllocMem,Rename,% 211 | RenameFile,Reset,Rewrite,RmDir,Round,RunError,ScrollTo,Seek,% 212 | SeekEof,SeekEoln,Seg,SetTextBuf,Sin,SizeOf,SPtr,Sqr,Sqrt,SSeg,% 213 | Str,StrCat,StrComp,StrCopy,StrDispose,StrECopy,StrEnd,StrFmt,% 214 | StrLCat,StrIComp,StrLComp,StrLCopy,StrLen,StrLFmt,StrLIComp,% 215 | StrLower,StrMove,StrNew,StrPas,StrPCopy,StrPos,StrScan,StrRScan,% 216 | StrToDate,StrToDateTime,StrToFloat,StrToInt,StrToIntDef,% 217 | StrToTime,StrUpper,Succ,Swap,TextToFloat,Time,TimeToStr,% 218 | TrackCursor,Trunc,Truncate,TypeOf,UpCase,UpperCase,Val,WhereX,% 219 | WhereY,Write,WriteBuf,WriteChar,Writeln},% 220 | sensitive=f,% 221 | morecomment=[s]{(*}{*)},% 222 | morecomment=[s]{\{}{\}},% 223 | morecomment=[l]{//},% 2001 Christian Gudrian 224 | morestring=[d]'% 225 | }[keywords,comments,strings]% 226 | \lst@definelanguage{Eiffel}% 227 | {morekeywords={alias,all,and,as,BIT,BOOLEAN,CHARACTER,check,class,% 228 | creation,Current,debug,deferred,do,DOUBLE,else,elseif,end,% 229 | ensure,expanded,export,external,false,feature,from,frozen,if,% 230 | implies,indexing,infix,inherit,inspect,INTEGER,invariant,is,% 231 | like,local,loop,NONE,not,obsolete,old,once,or,POINTER,prefix,% 232 | REAL,redefine,rename,require,rescue,Result,retry,select,% 233 | separate,STRING,strip,then,true,undefine,unique,until,variant,% 234 | when,xor},% 235 | sensitive,% 236 | morecomment=[l]--,% 237 | morestring=[d]",% 238 | }[keywords,comments,strings]% 239 | %% 240 | %% Euphoria definition (c) 1998 Detlef Reimers 241 | %% 242 | \lst@definelanguage{Euphoria}% 243 | {morekeywords={abort,and,and_bits,append,arctan,atom,by,call,% 244 | call_proc,call_func,c_proc,c_func,clear_screen,close,% 245 | command_line,compare,constant,cos,do,date,else,elsif,end,exit,% 246 | find,floor,for,function,getc,getenv,get_key,gets,global,% 247 | get_pixel,if,include,integer,length,log,match,machine_func,% 248 | machine_proc,mem_copy,mem_set,not,not_bits,or,object,open,% 249 | or_bits,procedure,puts,position,prepend,print,printf,power,peek,% 250 | poke,pixel,poke4,peek4s,peek4u,return,rand,repeat,remainder,% 251 | routine_id,sequence,sqrt,sin,system,sprintf,then,type,to,time,% 252 | trace,tan,while,with,without,xor,xor_bits},% 253 | sensitive,% 254 | morecomment=[l]--,% 255 | morestring=[d]',% 256 | morestring=[d]"% 257 | }[keywords,comments,strings]% 258 | %% 259 | %% Guarded Command Language (GCL) definition 260 | %% (c) 2002 Mark van Eijk 261 | %% 262 | \lst@definelanguage{GCL}% 263 | {morekeywords={const,con,var,array,of,skip,if,fi,do,od,div,mod},% 264 | literate={|[}{\ensuremath{|\hskip -0.1em[}}2% 265 | {]|}{\ensuremath{]\hskip -0.1em|}}2% 266 | {[]}{\ensuremath{[\hskip -0.1em]}}2% 267 | {->}{\ensuremath{\rightarrow}~}2% 268 | {==}{\ensuremath{\equiv}~}2% 269 | {>=}{\ensuremath{\geq}~}2% 270 | {<=}{\ensuremath{\leq}~}2% 271 | {/\\}{\ensuremath{\land}~}2% 272 | {\\/}{\ensuremath{\lor}~}2% 273 | {!}{\ensuremath{\lnot}}1% 274 | {!=}{\ensuremath{\neq}~}2% 275 | {max}{\ensuremath{\uparrow}}1% 276 | {min}{\ensuremath{\downarrow}}1,% 277 | sensitive=f,% 278 | morecomment=[s]{\{}{\}},% 279 | morestring=[d]'% 280 | }[keywords,comments,strings]% 281 | %% 282 | %% gnuplot definition (c) Christoph Giess 283 | %% 284 | \lst@definelanguage{Gnuplot}% 285 | {keywords={abs,acos,acosh,arg,asin,asinh,atan,atan2,atanh,besj0,% 286 | besj1,besy0,besy1,ceil,cos,cosh,erf,erfc,exp,floor,gamma,ibeta,% 287 | inverf,igamma,imag,invnorm,int,lgamma,log,log10,norm,rand,real,% 288 | sgn,sin,sinh,sqrt,tan,tanh,column,tm_hour,tm_mday,tm_min,tm_mon,% 289 | tm_sec,tm_wday,tm_yday,tm_year,valid,cd,call,clear,exit,fit,% 290 | help,if,load,pause,plot,print,pwd,quit,replot,reread,reset,save,% 291 | set,show,shell,splot,test,update,angles,arrow,autoscale,border,% 292 | boxwidth,clabel,clip,cntrparam,contour,data,dgrid3d,dummy,% 293 | format,function,functions,grid,hidden3d,isosamples,key,keytitle,% 294 | label,logscale,mapping,offsets,output,parametric,pointsize,% 295 | polar,rrange,samples,size,style,surface,terminal,tics,time,% 296 | timefmt,title,trange,urange,variables,view,vrange,xdata,xlabel,% 297 | xmargin,xrange,xtics,mxtics,mytics,xdtics,xmtics,xzeroaxis,% 298 | ydata,ylabel,yrange,ytics,ydtics,ymtics,yzeroaxis,zdata,zero,% 299 | zeroaxis,zlabel,zrange,ztics,zdtics,zmtics,timefm,using,title,% 300 | with,index,every,thru,smooth},% 301 | sensitive,% 302 | comment=[l]\#,% 303 | morestring=[b]",% 304 | morestring=[b]',% 305 | }[keywords,comments,strings]% 306 | %% 307 | %% Haskell98 as implemented in Hugs98. See http://www.haskell.org 308 | %% All keywords from Prelude and Standard Libraries 309 | %% (c) 1999 Peter Bartke 310 | %% 311 | \lst@definelanguage{Haskell}% 312 | {otherkeywords={=>},% 313 | morekeywords={abstype,if,then,else,case,class,data,default,deriving,% 314 | hiding,if,in,infix,infixl,infixr,import,instance,let,module,% 315 | newtype,of,qualified,type,where,do,AbsoluteSeek,AppendMode,% 316 | Array,BlockBuffering,Bool,BufferMode,Char,Complex,Double,Either,% 317 | FilePath,Float,Int,Integer,IO,IOError,Ix,LineBuffering,Maybe,% 318 | Ordering,NoBuffering,ReadMode,ReadWriteMode,ReadS,RelativeSeek,% 319 | SeekFromEnd,SeekMode,ShowS,StdGen,String,Void,Bounded,Enum,Eq,% 320 | Eval,ExitCode,exitFailure,exitSuccess,Floating,Fractional,% 321 | Functor,Handle,HandlePosn,IOMode,Integral,List,Monad,MonadPlus,% 322 | MonadZero,Num,Numeric,Ord,Random,RandomGen,Ratio,Rational,Read,% 323 | Real,RealFloat,RealFrac,Show,System,Prelude,EQ,False,GT,Just,% 324 | Left,LT,Nothing,Right,WriteMode,True,abs,accum,accumArray,% 325 | accumulate,acos,acosh,all,and,any,ap,appendFile,applyM,% 326 | approxRational,array,asTypeOf,asin,asinh,assocs,atan,atan2,atanh,% 327 | bounds,bracket,bracket_,break,catch,catMaybes,ceiling,chr,cis,% 328 | compare,concat,concatMap,conjugate,const,cos,cosh,curry,cycle,% 329 | decodeFloat,delete,deleteBy,deleteFirstsBy,denominator,% 330 | digitToInt,div,divMod,drop,dropWhile,either,elem,elems,elemIndex,% 331 | elemIndices,encodeFloat,enumFrom,enumFromThen,enumFromThenTo,% 332 | enumFromTo,error,even,exitFailure,exitWith,exp,exponent,fail,% 333 | filter,filterM,find,findIndex,findIndices,flip,floatDigits,% 334 | floatRadix,floatRange,floatToDigits,floor,foldl,foldM,foldl1,% 335 | foldr,foldr1,fromDouble,fromEnum,fromInt,fromInteger,% 336 | fromIntegral,fromJust,fromMaybe,fromRat,fromRational,% 337 | fromRealFrac,fst,gcd,genericLength,genericTake,genericDrop,% 338 | genericSplitAt,genericIndex,genericReplicate,getArgs,getChar,% 339 | getContents,getEnv,getLine,getProgName,getStdGen,getStdRandom,% 340 | group,groupBy,guard,hClose,hFileSize,hFlush,hGetBuffering,% 341 | hGetChar,hGetContents,hGetLine,hGetPosn,hIsClosed,hIsEOF,hIsOpen,% 342 | hIsReadable,hIsSeekable,hIsWritable,hLookAhead,hPutChar,hPutStr,% 343 | hPutStrLn,hPrint,hReady,hSeek,hSetBuffering,hSetPosn,head,% 344 | hugsIsEOF,hugsHIsEOF,hugsIsSearchErr,hugsIsNameErr,% 345 | hugsIsWriteErr,id,ioError,imagPart,index,indices,init,inits,% 346 | inRange,insert,insertBy,interact,intersect,intersectBy,% 347 | intersperse,intToDigit,ioeGetErrorString,ioeGetFileName,% 348 | ioeGetHandle,isAlreadyExistsError,isAlreadyInUseError,isAlpha,% 349 | isAlphaNum,isAscii,isControl,isDenormalized,isDoesNotExistError,% 350 | isDigit,isEOF,isEOFError,isFullError,isHexDigit,isIEEE,% 351 | isIllegalOperation,isInfinite,isJust,isLower,isNaN,% 352 | isNegativeZero,isNothing,isOctDigit,isPermissionError,isPrefixOf,% 353 | isPrint,isSpace,isSuffixOf,isUpper,isUserError,iterate,ixmap,% 354 | join,last,lcm,length,lex,lexDigits,lexLitChar,liftM,liftM2,% 355 | liftM3,liftM4,liftM5,lines,listArray,listToMaybe,log,logBase,% 356 | lookup,magnitude,makePolar,map,mapAccumL,mapAccumR,mapAndUnzipM,% 357 | mapM,mapM_,mapMaybe,max,maxBound,maximum,maximumBy,maybe,% 358 | maybeToList,min,minBound,minimum,minimumBy,mkPolar,mkStdGen,% 359 | mplus,mod,msum,mzero,negate,next,newStdGen,not,notElem,nub,nubBy,% 360 | null,numerator,odd,openFile,or,ord,otherwise,partition,phase,pi,% 361 | polar,pred,print,product,properFraction,putChar,putStr,putStrLn,% 362 | quot,quotRem,random,randomIO,randomR,randomRIO,randomRs,randoms,% 363 | rangeSize,read,readDec,readFile,readFloat,readHex,readInt,readIO,% 364 | readList,readLitChar,readLn,readParen,readOct,readSigned,reads,% 365 | readsPrec,realPart,realToFrac,recip,rem,repeat,replicate,return,% 366 | reverse,round,scaleFloat,scanl,scanl1,scanr,scanr1,seq,sequence,% 367 | sequence_,setStdGen,show,showChar,showEFloat,showFFloat,% 368 | showFloat,showGFloat,showInt,showList,showLitChar,showParen,% 369 | showSigned,showString,shows,showsPrec,significand,signum,sin,% 370 | sinh,snd,sort,sortBy,span,split,splitAt,sqrt,stderr,stdin,stdout,% 371 | strict,subtract,succ,sum,system,tail,tails,take,takeWhile,tan,% 372 | tanh,toEnum,toInt,toInteger,toLower,toRational,toUpper,transpose,% 373 | truncate,try,uncurry,undefined,unfoldr,union,unionBy,unless,% 374 | unlines,until,unwords,unzip,unzip3,unzip4,unzip5,unzip6,unzip7,% 375 | userError,when,words,writeFile,zero,zip,zip3,zip4,zip5,zip6,zip7,% 376 | zipWith,zipWithM,zipWithM_,zipWith3,zipWith4,zipWith5,zipWith6,% 377 | zipWith7},% 378 | sensitive,% 379 | morecomment=[l]--,% 380 | morecomment=[n]{\{-}{-\}},% 381 | morestring=[b]"% 382 | }[keywords,comments,strings]% 383 | %% 384 | %% IDL definition (c) 1998 Juergen Heim 385 | %% 386 | \lst@definelanguage{IDL}% 387 | {morekeywords={and,begin,case,common,do,else,end,endcase,endelse,% 388 | endfor,endif,endrep,endwhile,eq,for,function,ge,goto,gt,if,le,lt,% 389 | mod,ne,not,of,on_ioerror,or,pro,repeat,return,then,until,while,% 390 | xor,on_error,openw,openr,openu,print,printf,printu,plot,read,% 391 | readf,readu,writeu,stop},% 392 | sensitive=f,% 393 | morecomment=[l];,% 394 | morestring=[d]'% 395 | }[keywords,comments,strings]% 396 | %% 397 | %% Inform definition (c) 2003 Jonathan Sauer 398 | %% 399 | \lst@definelanguage{inform}{% 400 | % Language keywords 401 | morekeywords={breakdo,else,false,for,has,hasnt,if,% 402 | in,indirect,jump,notin,nothing,NULL,objectloop,ofclass,% 403 | private,property,provides,return,rfalse,rtrue,self,string,% 404 | switch,to,true,until,while,with,% 405 | creature,held,multiexcept,multiheld,multiinside,noun,number,% 406 | scope,topic},% 407 | % 408 | % Inform functions 409 | morekeywords=[2]{box,child,children,font,give,inversion,metaclass,move,% 410 | new_line,parent,print,print_ret,read,remove,restore,sibling,% 411 | save,spaces,quit,style,bold,underline,reverse,roman remaining,% 412 | create,destroy,recreate,copy},% 413 | % 414 | % Inform definitions 415 | morekeywords=[3]{Attribute,Array,Class,Constant,Default,End,Endif,Extend,% 416 | Global,Ifdef,Iffalse,Ifndef,Ifnot,Iftrue,Include,Object,% 417 | Property,Verb,Release,Serial,Statusline},% 418 | % 419 | % Library attributes 420 | morekeywords=[4]{absent,animate,clothing,concealed,container,door,edible,% 421 | enterable,female,general,light,lockable locked,male,moved,% 422 | neuter,on,open,openable,pluralname,proper,scenery,scored,% 423 | static,supporter,switchable,talkable,transparent,visited,% 424 | workflag,worn},% 425 | % 426 | % Libary properties 427 | morekeywords=[5]{n_to,s_to,e_to,w_to,ne_to,nw_to,se_to,sw_to,in_to,% 428 | out_to,u_to,d_to,add_to_scope,after,article,articles,before,% 429 | cant_go,capacity,daemon,describe,description,door_dir,door_to,% 430 | each_turn,found_in,grammar,initial,inside_description,invent,% 431 | life,list_together,name number,orders,parse_name,plural,% 432 | react_after,react_before,short_name,short_name_indef,time_left,% 433 | time_out,when_closed,when_open,when_on,when_off,% 434 | with_key}, 435 | % 436 | % Library routines 437 | morekeywords=[6]{Achieved,AfterRoutines,AllowPushDir,Banner,ChangePlayer,% 438 | CommonAncestor,DictionaryLookup,GetGNAOfObject,HasLightSource,% 439 | IndirectlyContains,IsSeeThrough,Locale,LoopOverScope,LTI_Insert,% 440 | MoveFloatingObjects,NextWord,NextWordStopped,NounDomain,% 441 | ObjectIsUntouchable OffersLight,ParseToken,PlaceInScope,PlayerTo,% 442 | PronounNotice,PronounValue,ScopeWithin,SetPronoun,SetTime,% 443 | StartDaemon,StartTimer,StopDaemon,StopTimer,TestScope,TryNumber,% 444 | UnsignedCompare,WordAddress,WordInProperty,WordLength,% 445 | WriteListFrom,YesOrNo},% 446 | % 447 | % Library,entry points 448 | morekeywords=[7]{AfterLife,AfterPrompt,Amusing,BeforeParsing,ChooseObjects,% 449 | DarkToDark,DeathMessage,GamePostRoutine GamePreRoutine,% 450 | Initialise,InScope,LookRoutine,NewRoom,ParseNoun,ParseNumber,% 451 | ParserError,PrintRank,PrintTaskName,PrintVerb,TimePasses,% 452 | UnknownVerb},% 453 | % 454 | % Library constants 455 | morekeywords=[8]{NEWLINE_BIT,INDENT_BIT,FULLINV_BIT,ENGLISH_BIT,RECURSE_BIT,% 456 | ALWAYS_BIT,TERSE_BIT,PARTINV_BIT,DEFART_BIT,WORKFLAG_BIT,% 457 | ISARE_BIT,CONCEAL_BIT},% 458 | % 459 | % Library,meta actions 460 | morekeywords=[9]{Pronouns,Quit,Restart,Restore,Save,Verify,ScriptOn,ScriptOff,% 461 | NotifyOn,NotifyOff,Places,Objects,Score,FullScore,Version,LMode1,% 462 | LMode2,Lmode3},% 463 | % 464 | % Library,main actions 465 | morekeywords=[10]{Close,Disrobe,Drop,Eat,Empty,EmptyT,Enter,Examine,Exit,GetOff,% 466 | Give,Go,GoIn,Insert,Inv,InvTall,InvWide,Lock,Look,Open,PutOn,Remove,% 467 | Search,Show,SwitchOff,SwitchOn,Take,Transfer,Unlock VagueGo,% 468 | Wear},% 469 | % 470 | % Library,stub actions 471 | morekeywords=[11]{Answer,Ask,AskFor,Attack,Blow,Burn,Buy,Climb,Consult,Cut,Dig,% 472 | Drink,Fill,Jump,JumpOver,Kiss,Listen,LookUnder,Mild,No,Pray,Pull,% 473 | Push,PushDir,Rub,Set,SetTo,Sing,Sleep,Smell,,Sleep,Smell,Sorry,% 474 | Squeeze,Strong,Swim,Swing,Taste,Tell,Think,ThrowAt,Tie,Touch,Turn,% 475 | Wait,Wake,WakeOther,Wave,WaveHands,Yes},% 476 | % 477 | otherkeywords={->,-->},% 478 | sensitive=false,% 479 | morestring=[d]{"},% 480 | morecomment=[l]{!}% 481 | }[keywords,comments,strings]% 482 | \lst@definelanguage{Lisp}% 483 | {morekeywords={abort,abs,acons,acos,acosh,adjoin,alphanumericp,alter,% 484 | append,apply,apropos,aref,arrayp,ash,asin,asinh,assoc,atan,atanh,% 485 | atom,bit,boole,boundp,break,butlast,byte,catenate,ceiling,cerror,% 486 | char,character,characterp,choose,chunk,cis,close,clrhash,coerce,% 487 | collect,commonp,compile,complement,complex,complexp,concatenate,% 488 | conjugate,cons,consp,constantp,continue,cos,cosh,cotruncate,% 489 | count,delete,denominator,describe,directory,disassemble,% 490 | documentation,dpb,dribble,ed,eighth,elt,enclose,endp,eq,eql,% 491 | equal,equalp,error,eval,evalhook,evenp,every,exp,expand,export,% 492 | expt,fboundp,fceiling,fdefinition,ffloor,fifth,fill,find,first,% 493 | float,floatp,floor,fmakunbound,format,fourth,fround,ftruncate,% 494 | funcall,functionp,gatherer,gcd,generator,gensym,gentemp,get,getf,% 495 | gethash,identity,imagpart,import,inspect,integerp,intern,% 496 | intersection,tively,isqrt,keywordp,last,latch,lcm,ldb,ldiff,% 497 | length,list,listen,listp,load,log,logand,logbitp,logcount,logeqv,% 498 | logior,lognand,lognor,lognot,logtest,logxor,macroexpand,% 499 | makunbound,map,mapc,mapcan,mapcar,mapcon,maphash,mapl,maplist,% 500 | mask,max,member,merge,min,mingle,minusp,mismatch,mod,namestring,% 501 | nbutlast,nconc,nintersection,ninth,not,notany,notevery,nreconc,% 502 | nreverse,nsublis,nsubst,nth,nthcdr,null,numberp,numerator,nunion,% 503 | oddp,open,packagep,pairlis,pathname,pathnamep,phase,plusp,% 504 | position,positions,pprint,previous,princ,print,proclaim,provide,% 505 | random,rassoc,rational,rationalize,rationalp,read,readtablep,% 506 | realp,realpart,reduce,rem,remhash,remove,remprop,replace,require,% 507 | rest,revappend,reverse,room,round,rplaca,rplacd,sbit,scan,schar,% 508 | search,second,series,set,seventh,shadow,signal,signum,sin,sinh,% 509 | sixth,sleep,some,sort,split,sqrt,streamp,string,stringp,sublis,% 510 | subseq,subseries,subsetp,subst,substitute,subtypep,svref,sxhash,% 511 | symbolp,tailp,tan,tanh,tenth,terpri,third,truename,truncate,% 512 | typep,unexport,unintern,union,until,values,vector,vectorp,warn,% 513 | write,zerop,and,assert,case,ccase,cond,ctypecase,decf,declaim,% 514 | defclass,defconstant,defgeneric,defmacro,defmethod,defpackage,% 515 | defparameter,defsetf,defstruct,deftype,defun,defvar,do,dolist,% 516 | dotimes,ecase,encapsulated,etypecase,flet,formatter,gathering,% 517 | incf,iterate,labels,let,locally,loop,macrolet,mapping,or,pop,% 518 | producing,prog,psetf,psetq,push,pushnew,remf,return,rotatef,% 519 | setf,shiftf,step,time,trace,typecase,unless,untrace,when},% 520 | sensitive,% ??? 521 | alsodigit=-,% 522 | morecomment=[l];,% 523 | morecomment=[s]{\#|}{|\#},% 1997 Aslak Raanes 524 | morestring=[b]"% 525 | }[keywords,comments,strings]% 526 | %% 527 | %% AutoLISP/VisualLISP - Stefan Lagotzki, info@lagotzki.de 528 | %% 529 | \lst@definelanguage[Auto]{Lisp}% 530 | {morekeywords={abs,acad_colordlg,acad_helpdlg,acad_strlsort,% 531 | action_tile,add_list,alert,alloc,and,angle,angtof,angtos,append,% 532 | apply,arx,arxload,arxunload,ascii,assoc,atan,atof,atoi,atom,% 533 | atoms-family,autoarxload,autoload,Boole,boundp,caddr,cadr,car,% 534 | cdr,chr,client_data_tile,close,command,cond,cons,cos,cvunit,% 535 | defun,defun-q,defun-q-list-ref,defun-q-list-set,dictadd,dictnext,% 536 | dictremove,dictrename,dictsearch,dimx_tile,dimy_tile,distance,% 537 | distof,done_dialog,end_image,end_list,entdel,entget,entlast,% 538 | entmake,entmakex,entmod,entnext,entsel,entupd,eq,equal,*error*,% 539 | eval,exit,exp,expand,expt,fill_image,findfile,fix,float,foreach,% 540 | function,gc,gcd,get_attr,get_tile,getangle,getcfg,getcname,% 541 | getcorner,getdist,getenv,getfiled,getint,getkword,getorient,% 542 | getpoint,getreal,getstring,getvar,graphscr,grclear,grdraw,grread,% 543 | grtext,grvecs,handent,help,if,initdia,initget,inters,itoa,lambda,% 544 | last,layoutlist,length,list,listp,load,load_dialog,log,logand,% 545 | logior,lsh,mapcar,max,mem,member,menucmd,menugroup,min,minusp,% 546 | mode_tile,namedobjdict,nentsel,nentselp,new_dialog,not,nth,% 547 | null,numberp,open,or,osnap,polar,prin1,princ,print,progn,prompt,% 548 | quit,quote,read,read-char,read-line,redraw,regapp,rem,repeat,% 549 | reverse,rtos,set,set_tile,setcfg,setenv,setfunhelp,setq,% 550 | setvar,setview,sin,slide_image,snvalid,sqrt,ssadd,ssdel,ssget,% 551 | ssgetfirst,sslength,ssmemb,ssname,ssnamex,sssetfirst,startapp,% 552 | start_dialog,start_image,start_list,strcase,strcat,strlen,subst,% 553 | substr,tablet,tblnext,tblobjname,tblsearch,term_dialog,terpri,% 554 | textbox,textpage,textscr,trace,trans,type,unload_dialog,untrace,% 555 | vector_image,ver,vl-acad-defun,vl-acad-undefun,vl-arx-import,% 556 | vl-bb-ref,vl-bb-set,vl-catch-all-apply,% 557 | vl-catch-all-error-message,vl-catch-all-error-p,vl-cmdf,vl-consp,% 558 | vl-directory-files,vl-doc-export,vl-doc-import,vl-doc-ref,% 559 | vl-doc-set,vl-every,vl-exit-with-error,vl-exit-with-value,% 560 | vl-file-copy,vl-file-delete,vl-file-directory-p,vl-file-rename,% 561 | vl-file-size,vl-file-systime,vl-filename-base,% 562 | vl-filename-directory,vl-filename-extension,vl-filename-mktemp,% 563 | vl-get-resource,vl-list*,vl-list->string,% 564 | vl-list-exported-functions,vl-list-length,vl-list-loaded-vlx,% 565 | vl-load-all,vl-load-com,vl-load-reactors,vl-member-if,% 566 | vl-member-if-not,vl-position,vl-prin1-to-string,% 567 | vl-princ-to-string,vl-propagate,vl-registry-delete,% 568 | vl-registry-descendents,vl-registry-read,vl-registry-write,% 569 | vl-remove,vl-remove-if,vl-remove-if-not,vl-some,vl-sort,% 570 | vl-sort-i,vl-string->list,vl-string-elt,vl-string-left-trim,% 571 | vl-string-mismatch,vl-string-position,vl-string-right-trim,% 572 | vl-string-search,vl-string-subst,vl-string-translate,% 573 | vl-string-trim,vl-symbol-name,vl-symbol-value,vl-symbolp,% 574 | vl-unload-vlx,vl-vbaload,vl-vbarun,vl-vlx-loaded-p,vlax-3D-point,% 575 | vlax-add-cmd,vlax-create-object,vlax-curve-getArea,% 576 | vlax-curve-getDistAtParam,vlax-curve-getDistAtPoint,% 577 | vlax-curve-getEndParam,vlax-curve-getEndPoint,% 578 | vlax-curve-getParamAtDist,vlax-curve-getParamAtPoint,% 579 | vlax-curve-getPointAtDist,vlax-curve-getPointAtParam,% 580 | vlax-curve-getStartParam,vlax-curve-getStartPoint,% 581 | vlax-curve-isClosed,vlax-curve-isPeriodic,vlax-curve-isPlanar,% 582 | vlax-curve-getClosestPointTo,% 583 | vlax-curve-getClosestPointToProjection,vlax-curve-getFirstDeriv,% 584 | vlax-curve-getSecondDeriv,vlax-dump-object,% 585 | vlax-ename->vla-object,vlax-erased-p,vlax-for,% 586 | vlax-get-acad-object,vlax-get-object,vlax-get-or-create-object,% 587 | vlax-get-property,vlax-import-type-library,vlax-invoke-method,% 588 | vlax-ldata-delete,vlax-ldata-get,vlax-ldata-list,vlax-ldata-put,% 589 | vlax-ldata-test,vlax-make-safearray,vlax-make-variant,% 590 | vlax-map-collection,vlax-method-applicable-p,% 591 | vlax-object-released-p,vlax-product-key,% 592 | vlax-property-available-p,vlax-put-property,vlax-read-enabled-p,% 593 | vlax-release-object,vlax-remove-cmd,vlax-safearray-fill,% 594 | vlax-safearray-get-dim,vlax-safearray-get-element,% 595 | vlax-safearray-get-l-bound,vlax-safearray-get-u-bound,% 596 | vlax-safearray-put-element,vlax-safearray-type,% 597 | vlax-safearray->list,vlax-tmatrix,vlax-typeinfo-available-p,% 598 | vlax-variant-change-type,vlax-variant-type,vlax-variant-value,% 599 | vlax-vla-object->ename,vlax-write-enabled-p,vlisp-compile,% 600 | vlr-acdb-reactor,vlr-add,vlr-added-p,vlr-beep-reaction,% 601 | vlr-command-reactor,vlr-current-reaction-name,vlr-data,% 602 | vlr-data-set,vlr-deepclone-reactor,vlr-docmanager-reactor,% 603 | vlr-dwg-reactor,vlr-dxf-reactor,vlr-editor-reactor,% 604 | vlr-insert-reactor,vlr-linker-reactor,vlr-lisp-reactor,% 605 | vlr-miscellaneous-reactor,vlr-mouse-reactor,vlr-notification,% 606 | vlr-object-reactor,vlr-owner-add,vlr-owner-remove,vlr-owners,% 607 | vlr-pers,vlr-pers-list,vlr-pers-p,vlr-pers-release,% 608 | vlr-reaction-names,vlr-reaction-set,vlr-reactions,vlr-reactors,% 609 | vlr-remove,vlr-remove-all,vlr-set-notification,% 610 | vlr-sysvar-reactor,vlr-toolbar-reactor,vlr-trace-reaction,% 611 | vlr-type,vlr-types,vlr-undo-reactor,vlr-wblock-reactor,% 612 | vlr-window-reactor,vlr-xref-reactor,vports,wcmatch,while,% 613 | write-char,write-line,xdroom,xdsize,zerop},% 614 | alsodigit=->,% 615 | otherkeywords={1+,1-},% 616 | sensitive=false,% 617 | morecomment=[l];,% 618 | morecomment=[l];;,% 619 | morestring=[b]"% 620 | }[keywords,comments,strings]% 621 | %% 622 | %% Make definitions (c) 2000 Rolf Niepraschk 623 | %% 624 | \lst@definelanguage[gnu]{make}% 625 | {morekeywords={SHELL,MAKE,MAKEFLAGS,$@,$\%,$<,$?,$^,$+,$*,% 626 | @,^,<,\%,+,?,*,% Markus Pahlow 627 | export,unexport,include,override,define,ifdef,ifneq,ifeq,else,% 628 | endif,vpath,subst,patsubst,strip,findstring,filter,filter-out,% 629 | sort,dir,notdir,suffix,basename,addsuffix,addprefix,join,word,% 630 | words,firstword,wildcard,shell,origin,foreach,% 631 | @D,@F,*D,*F,\%D,\%F,,-->,--->,:-,==,=>,<=,<=>},% 658 | morekeywords={module,include_module,import_module,interface,% 659 | end_module,implementation,mode,is,failure,semidet,nondet,det,% 660 | multi,erroneous,inst,in,out,di,uo,ui,type,typeclass,instance,% 661 | where,with_type,pred,func,lambda,impure,semipure,if,then,else,% 662 | some,all,not,true,fail,pragma,memo,no_inline,inline,loop_check,% 663 | minimal_model,fact_table,type_spec,terminates,does_not_terminate,% 664 | check_termination,promise_only_solution,unsafe_promise_unique,% 665 | source_file,obsolete,import,export,c_header_code,c_code,% 666 | foreign_code,foreign_proc,may_call_mercury,will_not_call_mercury,% 667 | thread_safe,not_thread_safe},% 668 | sensitive=t,% 669 | morecomment=[l]\%,% 670 | morecomment=[s]{/*}{*/},% 671 | morestring=[bd]",% 672 | morestring=[bd]'% 673 | }[keywords,comments,strings]% 674 | %% 675 | %% Miranda definition (c) 1998 Peter Bartke 676 | %% 677 | %% Miranda: pure lazy functional language with polymorphic type system, 678 | %% garbage collection and functions as first class citizens 679 | %% 680 | \lst@definelanguage{Miranda}% 681 | {morekeywords={abstype,div,if,mod,otherwise,readvals,show,type,where,% 682 | with,bool,char,num,sys_message,False,True,Appendfile,Closefile,% 683 | Exit,Stderr,Stdout,System,Tofile,\%include,\%export,\%free,% 684 | \%insert,abs,and,arctan,cjustify,code,concat,const,converse,cos,% 685 | decode,digit,drop,dropwhile,entier,error,exp,filemode,filter,% 686 | foldl,foldl1,foldr,foldr1,force,fst,getenv,hd,hugenum,id,index,% 687 | init,integer,iterate,last,lay,layn,letter,limit,lines,ljustify,% 688 | log,log10,map,map2,max,max2,member,merge,min,min2,mkset,neg,% 689 | numval,or,pi,postfix,product,read,rep,repeat,reverse,rjustify,% 690 | scan,seq,showfloat,shownum,showscaled,sin,snd,sort,spaces,sqrt,% 691 | subtract,sum,system,take,takewhile,tinynum,tl,transpose,undef,% 692 | until,zip2,zip3,zip4,zip5,zip6,zip},% 693 | sensitive,% 694 | morecomment=[l]||,% 695 | morestring=[b]"% 696 | }[keywords,comments,strings]% 697 | %% 698 | %% ML definition (c) 1999 Torben Hoffmann 699 | %% 700 | \lst@definelanguage{ML}% 701 | {morekeywords={abstype,and,andalso,as,case,do,datatype,else,end,% 702 | eqtype,exception,fn,fun,functor,handle,if,in,include,infix,% 703 | infixr,let,local,nonfix,of,op,open,orelse,raise,rec,sharing,sig,% 704 | signature,struct,structure,then,type,val,with,withtype,while},% 705 | sensitive,% 706 | morecomment=[n]{(*}{*)},% 707 | morestring=[d]"% 708 | }[keywords,comments,strings]% 709 | %% 710 | %% Oz definition (c) Andres Becerra Sandoval 711 | %% 712 | \lst@definelanguage{Oz}% 713 | {morekeywords={andthen,at,attr,case,catch,choice,class,% 714 | cond,declare,define,dis,div,else,elsecase,% 715 | elseif,end,export,fail,false,feat,finally,% 716 | from,fun,functor,if,import,in,local,% 717 | lock,meth,mod,not,of,or,orelse,% 718 | prepare,proc,prop,raise,require,self,skip,% 719 | then,thread,true,try,unit},% 720 | sensitive=true,% 721 | morecomment=[l]{\%},% 722 | morecomment=[s]{/*}{*/},% 723 | morestring=[b]",% 724 | morestring=[d]'% 725 | }[keywords,comments,strings]% 726 | %% 727 | %% PHP definition by Luca Balzerani 728 | %% 729 | \lst@definelanguage{PHP}% 730 | {morekeywords={% 731 | %--- core language 732 | ,::,break,case,continue,default,do,else,% 733 | elseif,for,foreach,if,include,require,phpinfo,% 734 | switch,while,false,FALSE,true,TRUE,% 735 | %--- apache functions 736 | apache_lookup_uri,apache_note,ascii2ebcdic,ebcdic2ascii,% 737 | virtual,apache_child_terminate,apache_setenv,% 738 | %--- array functions 739 | array,array_change_key_case,array_chunk,array_count_values,% 740 | array_filter,array_flip,array_fill,array_intersect,% 741 | array_keys,array_map,array_merge,array_merge_recursive,% 742 | array_pad,array_pop,array_push,array_rand,array_reverse,% 743 | array_shift,array_slice,array_splice,array_sum,array_unique,% 744 | array_values,array_walk,arsort,asort,compact,count,current,each,% 745 | extract,in_array,array_search,key,krsort,ksort,list,natsort,% 746 | next,pos,prev,range,reset,rsort,shuffle,sizeof,sort,uasort,% 747 | usort,% 748 | %--- aspell functions 749 | aspell_new,aspell_check,aspell_check_raw,aspell_suggest,% 750 | %--- bc functions 751 | bcadd,bccomp,bcdiv,bcmod,bcmul,bcpow,bcscale,bcsqrt,bcsub,% 752 | %--- bzip2 functions 753 | bzclose,bzcompress,bzdecompress,bzerrno,bzerror,bzerrstr,% 754 | bzopen,bzread,bzwrite,% 755 | %--- calendar functions 756 | JDToGregorian,GregorianToJD,JDToJulian,JulianToJD,JDToJewish,% 757 | JDToFrench,FrenchToJD,JDMonthName,JDDayOfWeek,easter_date,% 758 | unixtojd,jdtounix,cal_days_in_month,cal_to_jd,cal_from_jd,% 759 | %--- ccvs functions 760 | ccvs_init,ccvs_done,ccvs_new,ccvs_add,ccvs_delete,ccvs_auth,% 761 | ccvs_reverse,ccvs_sale,ccvs_void,ccvs_status,ccvs_count,% 762 | ccvs_report,ccvs_command,ccvs_textvalue,% 763 | %--- classobj functions 764 | call_user_method,call_user_method_array,class_exists,get_class,% 765 | get_class_vars,get_declared_classes,get_object_vars,% 766 | is_a,is_subclass_of,method_exists,% 767 | %--- com functions 768 | COM,VARIANT,com_load,com_invoke,com_propget,com_get,com_propput,% 769 | com_set,com_addref,com_release,com_isenum,com_load_typelib,% 770 | %--- cpdf functions 771 | cpdf_add_annotation,cpdf_add_outline,cpdf_arc,cpdf_begin_text,% 772 | cpdf_clip,cpdf_close,cpdf_closepath,cpdf_closepath_fill_stroke,% 773 | cpdf_continue_text,cpdf_curveto,cpdf_end_text,cpdf_fill,% 774 | cpdf_finalize,cpdf_finalize_page,% 775 | cpdf_import_jpeg,cpdf_lineto,cpdf_moveto,cpdf_newpath,cpdf_open,% 776 | cpdf_page_init,cpdf_place_inline_image,cpdf_rect,cpdf_restore,% 777 | cpdf_rmoveto,cpdf_rotate,cpdf_rotate_text,cpdf_save,% 778 | cpdf_scale,cpdf_set_char_spacing,cpdf_set_creator,% 779 | cpdf_set_font,cpdf_set_horiz_scaling,cpdf_set_keywords,% 780 | cpdf_set_page_animation,cpdf_set_subject,cpdf_set_text_matrix,% 781 | cpdf_set_text_rendering,cpdf_set_text_rise,cpdf_set_title,% 782 | cpdf_setdash,cpdf_setflat,cpdf_setgray,cpdf_setgray_fill,% 783 | cpdf_setlinecap,cpdf_setlinejoin,cpdf_setlinewidth,% 784 | cpdf_setrgbcolor,cpdf_setrgbcolor_fill,cpdf_setrgbcolor_stroke,% 785 | cpdf_show_xy,cpdf_stringwidth,cpdf_set_font_directories,% 786 | cpdf_set_viewer_preferences,cpdf_stroke,cpdf_text,% 787 | cpdf_set_action_url,% 788 | %--- crack functions 789 | crack_opendict,crack_closedict,crack_check,crack_getlastmessage,% 790 | %--- ctype functions 791 | ctype_alnum,ctype_alpha,ctype_cntrl,ctype_digit,ctype_lower,% 792 | ctype_print,ctype_punct,ctype_space,ctype_upper,ctype_xdigit,% 793 | %--- curl functions 794 | curl_init,curl_setopt,curl_exec,curl_close,curl_version,% 795 | curl_error,curl_getinfo,% 796 | %--- cybercash functions 797 | cybercash_encr,cybercash_decr,cybercash_base64_encode,% 798 | %--- cybermut functions 799 | cybermut_creerformulairecm,cybermut_testmac,% 800 | %--- cyrus functions 801 | cyrus_connect,cyrus_authenticate,cyrus_bind,cyrus_unbind,% 802 | cyrus_close,% 803 | %--- datetime functions 804 | checkdate,date,getdate,gettimeofday,gmdate,gmmktime,gmstrftime,% 805 | microtime,mktime,strftime,time,strtotime,% 806 | %--- dbase functions 807 | dbase_create,dbase_open,dbase_close,dbase_pack,dbase_add_record,% 808 | dbase_delete_record,dbase_get_record,% 809 | dbase_numfields,dbase_numrecords,% 810 | %--- dba functions 811 | dba_close,dba_delete,dba_exists,dba_fetch,dba_firstkey,% 812 | dba_nextkey,dba_popen,dba_open,dba_optimize,dba_replace,% 813 | %--- dbm functions 814 | dbmopen,dbmclose,dbmexists,dbmfetch,dbminsert,dbmreplace,% 815 | dbmfirstkey,dbmnextkey,dblist,% 816 | %--- dbx functions 817 | dbx_close,dbx_connect,dbx_error,dbx_query,dbx_sort,dbx_compare,% 818 | %--- dio functions 819 | dio_open,dio_read,dio_write,dio_truncate,dio_stat,dio_seek,% 820 | dio_close,% 821 | %--- dir functions 822 | chroot,chdir,dir,closedir,getcwd,opendir,readdir,rewinddir,% 823 | %--- dotnet functions 824 | dotnet_load,% 825 | %--- errorfunc functions 826 | error_log,error_reporting,restore_error_handler,% 827 | trigger_error,user_error,% 828 | %--- exec functions 829 | escapeshellarg,escapeshellcmd,exec,passthru,system,shell_exec,% 830 | %--- fbsql functions 831 | fbsql_affected_rows,fbsql_autocommit,fbsql_change_user,% 832 | fbsql_commit,fbsql_connect,fbsql_create_db,fbsql_create_blob,% 833 | fbsql_database_password,fbsql_data_seek,fbsql_db_query,% 834 | fbsql_drop_db,fbsql_errno,fbsql_error,fbsql_fetch_array,% 835 | fbsql_fetch_field,fbsql_fetch_lengths,fbsql_fetch_object,% 836 | fbsql_field_flags,fbsql_field_name,fbsql_field_len,% 837 | fbsql_field_table,fbsql_field_type,fbsql_free_result,% 838 | fbsql_list_dbs,fbsql_list_fields,fbsql_list_tables,% 839 | fbsql_num_fields,fbsql_num_rows,fbsql_pconnect,fbsql_query,% 840 | fbsql_read_clob,fbsql_result,fbsql_rollback,fbsql_set_lob_mode,% 841 | fbsql_start_db,fbsql_stop_db,fbsql_tablename,fbsql_warnings,% 842 | fbsql_get_autostart_info,fbsql_hostname,fbsql_password,% 843 | fbsql_username,% 844 | %--- fdf functions 845 | fdf_open,fdf_close,fdf_create,fdf_save,fdf_get_value,% 846 | fdf_next_field_name,fdf_set_ap,fdf_set_status,fdf_get_status,% 847 | fdf_get_file,fdf_set_flags,fdf_set_opt,% 848 | fdf_set_javascript_action,fdf_set_encoding,fdf_add_template,% 849 | %--- filepro functions 850 | filepro,filepro_fieldname,filepro_fieldtype,filepro_fieldwidth,% 851 | filepro_fieldcount,filepro_rowcount,% 852 | %--- filesystem functions 853 | basename,chgrp,chmod,chown,clearstatcache,copy,delete,dirname,% 854 | diskfreespace,disk_total_space,fclose,feof,fflush,fgetc,fgetcsv,% 855 | fgetss,file_get_contents,file,file_exists,fileatime,filectime,% 856 | fileinode,filemtime,fileowner,fileperms,filesize,filetype,flock,% 857 | fopen,fpassthru,fputs,fread,fscanf,fseek,fstat,ftell,ftruncate,% 858 | set_file_buffer,is_dir,is_executable,is_file,is_link,% 859 | is_writable,is_writeable,is_uploaded_file,link,linkinfo,mkdir,% 860 | parse_ini_file,pathinfo,pclose,popen,readfile,readlink,rename,% 861 | rmdir,stat,lstat,realpath,symlink,tempnam,tmpfile,touch,umask,% 862 | %--- fribidi functions 863 | fribidi_log2vis,% 864 | %--- ftp functions 865 | ftp_connect,ftp_login,ftp_pwd,ftp_cdup,ftp_chdir,ftp_mkdir,% 866 | ftp_nlist,ftp_rawlist,ftp_systype,ftp_pasv,ftp_get,ftp_fget,% 867 | ftp_fput,ftp_size,ftp_mdtm,ftp_rename,ftp_delete,ftp_site,% 868 | ftp_quit,ftp_exec,ftp_set_option,ftp_get_option,% 869 | %--- funchand functions 870 | call_user_func_array,call_user_func,create_function,% 871 | func_get_args,func_num_args,function_exists,% 872 | register_shutdown_function,register_tick_function,% 873 | %--- gettext functions 874 | bindtextdomain,bind_textdomain_codeset,dcgettext,dcngettext,% 875 | dngettext,gettext,ngettext,textdomain,% 876 | %--- gmp functions 877 | gmp_init,gmp_intval,gmp_strval,gmp_add,gmp_sub,gmp_mul,% 878 | gmp_div_r,gmp_div_qr,gmp_div,gmp_mod,gmp_divexact,gmp_cmp,% 879 | gmp_com,gmp_abs,gmp_sign,gmp_fact,gmp_sqrt,gmp_sqrtrm,% 880 | gmp_pow,gmp_powm,gmp_prob_prime,gmp_gcd,gmp_gcdext,gmp_invert,% 881 | gmp_jacobi,gmp_random,gmp_and,gmp_or,gmp_xor,gmp_setbit,% 882 | gmp_scan0,gmp_scan1,gmp_popcount,gmp_hamdist,% 883 | %--- http functions 884 | header,headers_sent,setcookie,% 885 | %--- hw functions 886 | hw_Array2Objrec,hw_Children,hw_ChildrenObj,hw_Close,hw_Connect,% 887 | hw_Deleteobject,hw_DocByAnchor,hw_DocByAnchorObj,% 888 | hw_Document_BodyTag,hw_Document_Content,hw_Document_SetContent,% 889 | hw_ErrorMsg,hw_EditText,hw_Error,hw_Free_Document,hw_GetParents,% 890 | hw_GetChildColl,hw_GetChildCollObj,hw_GetRemote,% 891 | hw_GetSrcByDestObj,hw_GetObject,hw_GetAndLock,hw_GetText,% 892 | hw_GetObjectByQueryObj,hw_GetObjectByQueryColl,% 893 | hw_GetChildDocColl,hw_GetChildDocCollObj,hw_GetAnchors,% 894 | hw_Mv,hw_Identify,hw_InCollections,hw_Info,hw_InsColl,hw_InsDoc,% 895 | hw_InsertObject,hw_mapid,hw_Modifyobject,hw_New_Document,% 896 | hw_Output_Document,hw_pConnect,hw_PipeDocument,hw_Root,% 897 | hw_Who,hw_getusername,hw_stat,hw_setlinkroot,hw_connection_info,% 898 | hw_insertanchors,hw_getrellink,hw_changeobject,% 899 | %--- ibase functions 900 | ibase_connect,ibase_pconnect,ibase_close,ibase_query,% 901 | ibase_fetch_row,ibase_fetch_object,ibase_field_info,% 902 | ibase_free_result,ibase_prepare,ibase_execute,ibase_trans,% 903 | ibase_rollback,ibase_timefmt,ibase_num_fields,ibase_blob_add,% 904 | ibase_blob_close,ibase_blob_create,ibase_blob_echo,% 905 | ibase_blob_import,ibase_blob_info,ibase_blob_open,% 906 | %--- icap functions 907 | icap_open,icap_close,icap_fetch_event,icap_list_events,% 908 | icap_delete_event,icap_snooze,icap_list_alarms,% 909 | icap_rename_calendar,icap_delete_calendar,icap_reopen,% 910 | %--- iconv functions 911 | iconv,iconv_get_encoding,iconv_set_encoding,ob_iconv_handler,% 912 | %--- ifx functions 913 | ifx_connect,ifx_pconnect,ifx_close,ifx_query,ifx_prepare,ifx_do,% 914 | ifx_errormsg,ifx_affected_rows,ifx_getsqlca,ifx_fetch_row,% 915 | ifx_fieldtypes,ifx_fieldproperties,ifx_num_fields,ifx_num_rows,% 916 | ifx_create_char,ifx_free_char,ifx_update_char,ifx_get_char,% 917 | ifx_copy_blob,ifx_free_blob,ifx_get_blob,ifx_update_blob,% 918 | ifx_textasvarchar,ifx_byteasvarchar,ifx_nullformat,% 919 | ifxus_free_slob,ifxus_close_slob,ifxus_open_slob,% 920 | ifxus_seek_slob,ifxus_read_slob,ifxus_write_slob,% 921 | %--- iisfunc functions 922 | iis_get_server_by_path,iis_get_server_by_comment,iis_add_server,% 923 | iis_set_dir_security,iis_get_dir_security,iis_set_server_rights,% 924 | iis_set_script_map,iis_get_script_map,iis_set_app_settings,% 925 | iis_stop_server,iis_stop_service,iis_start_service,% 926 | %--- image functions 927 | exif_imagetype,exif_read_data,exif_thumbnail,getimagesize,% 928 | imagealphablending,imagearc,imagefilledarc,imageellipse,% 929 | imagechar,imagecharup,imagecolorallocate,imagecolordeallocate,% 930 | imagecolorclosest,imagecolorclosestalpha,imagecolorclosestthwb,% 931 | imagecolorexactalpha,imagecolorresolve,imagecolorresolvealpha,% 932 | imagecolorset,imagecolorsforindex,imagecolorstotal,% 933 | imagecopy,imagecopymerge,imagecopymergegray,imagecopyresized,% 934 | imagecreate,imagecreatetruecolor,imagetruecolortopalette,% 935 | imagecreatefromgd2,imagecreatefromgd2part,imagecreatefromgif,% 936 | imagecreatefrompng,imagecreatefromwbmp,imagecreatefromstring,% 937 | imagecreatefromxpm,imagedashedline,imagedestroy,imagefill,% 938 | imagefilledrectangle,imagefilltoborder,imagefontheight,% 939 | imagegd,imagegd2,imagegif,imagepng,imagejpeg,imagewbmp,% 940 | imageline,imageloadfont,imagepalettecopy,imagepolygon,% 941 | imagepsencodefont,imagepsfreefont,imagepsloadfont,% 942 | imagepsslantfont,imagepstext,imagerectangle,imagesetpixel,% 943 | imagesetstyle,imagesettile,imagesetthickness,imagestring,% 944 | imagesx,imagesy,imagettfbbox,imageftbbox,imagettftext,% 945 | imagetypes,jpeg2wbmp,png2wbmp,iptcembed,read_exif_data,% 946 | %--- imap functions 947 | imap_8bit,imap_alerts,imap_append,imap_base64,imap_binary,% 948 | imap_bodystruct,imap_check,imap_clearflag_full,imap_close,% 949 | imap_delete,imap_deletemailbox,imap_errors,imap_expunge,% 950 | imap_fetchbody,imap_fetchheader,imap_fetchstructure,% 951 | imap_getmailboxes,imap_getsubscribed,imap_header,% 952 | imap_headers,imap_last_error,imap_listmailbox,% 953 | imap_mail,imap_mail_compose,imap_mail_copy,imap_mail_move,% 954 | imap_mime_header_decode,imap_msgno,imap_num_msg,imap_num_recent,% 955 | imap_ping,imap_popen,imap_qprint,imap_renamemailbox,imap_reopen,% 956 | imap_rfc822_parse_headers,imap_rfc822_write_address,% 957 | imap_search,imap_setacl,imap_set_quota,imap_setflag_full,% 958 | imap_status,imap_subscribe,imap_uid,imap_undelete,% 959 | imap_utf7_decode,imap_utf7_encode,imap_utf8,imap_thread,% 960 | %--- info functions 961 | assert,assert_options,extension_loaded,dl,getenv,get_cfg_var,% 962 | get_defined_constants,get_extension_funcs,getmygid,% 963 | get_loaded_extensions,get_magic_quotes_gpc,% 964 | getlastmod,getmyinode,getmypid,getmyuid,get_required_files,% 965 | ini_alter,ini_get,ini_get_all,ini_restore,ini_set,phpcredits,% 966 | phpversion,php_logo_guid,php_sapi_name,php_uname,putenv,% 967 | set_time_limit,version_compare,zend_logo_guid,zend_version,% 968 | %--- ircg functions 969 | ircg_pconnect,ircg_fetch_error_msg,ircg_set_current,ircg_join,% 970 | ircg_msg,ircg_notice,ircg_nick,ircg_topic,ircg_channel_mode,% 971 | ircg_whois,ircg_kick,ircg_ignore_add,ircg_ignore_del,% 972 | ircg_is_conn_alive,ircg_lookup_format_messages,% 973 | ircg_set_on_die,ircg_set_file,ircg_get_username,% 974 | ircg_nickname_unescape,% 975 | %--- java functions 976 | java_last_exception_clear,java_last_exception_get,% 977 | %--- ldap functions 978 | ldap_add,ldap_bind,ldap_close,ldap_compare,ldap_connect,% 979 | ldap_delete,ldap_dn2ufn,ldap_err2str,ldap_errno,ldap_error,% 980 | ldap_first_attribute,ldap_first_entry,ldap_free_result,% 981 | ldap_get_dn,ldap_get_entries,ldap_get_option,ldap_get_values,% 982 | ldap_list,ldap_modify,ldap_mod_add,ldap_mod_del,% 983 | ldap_next_attribute,ldap_next_entry,ldap_read,ldap_rename,% 984 | ldap_set_option,ldap_unbind,ldap_8859_to_t61,% 985 | ldap_next_reference,ldap_parse_reference,ldap_parse_result,% 986 | ldap_sort,ldap_start_tls,ldap_t61_to_8859,% 987 | %--- mail functions 988 | mail,ezmlm_hash,% 989 | %--- math functions 990 | abs,acos,acosh,asin,asinh,atan,atanh,atan2,base_convert,bindec,% 991 | cos,cosh,decbin,dechex,decoct,deg2rad,exp,expm1,floor,% 992 | hexdec,hypot,is_finite,is_infinite,is_nan,lcg_value,log,log10,% 993 | max,min,mt_rand,mt_srand,mt_getrandmax,number_format,octdec,pi,% 994 | rad2deg,rand,round,sin,sinh,sqrt,srand,tan,tanh,% 995 | %--- mbstring functions 996 | mb_language,mb_parse_str,mb_internal_encoding,mb_http_input,% 997 | mb_detect_order,mb_substitute_character,mb_output_handler,% 998 | mb_strlen,mb_strpos,mb_strrpos,mb_substr,mb_strcut,mb_strwidth,% 999 | mb_convert_encoding,mb_detect_encoding,mb_convert_kana,% 1000 | mb_decode_mimeheader,mb_convert_variables,% 1001 | mb_decode_numericentity,mb_send_mail,mb_get_info,% 1002 | mb_ereg,mb_eregi,mb_ereg_replace,mb_eregi_replace,mb_split,% 1003 | mb_ereg_search,mb_ereg_search_pos,mb_ereg_search_regs,% 1004 | mb_ereg_search_getregs,mb_ereg_search_getpos,% 1005 | %--- mcal functions 1006 | mcal_open,mcal_popen,mcal_reopen,mcal_close,% 1007 | mcal_rename_calendar,mcal_delete_calendar,mcal_fetch_event,% 1008 | mcal_append_event,mcal_store_event,mcal_delete_event,% 1009 | mcal_list_alarms,mcal_event_init,mcal_event_set_category,% 1010 | mcal_event_set_description,mcal_event_set_start,% 1011 | mcal_event_set_alarm,mcal_event_set_class,mcal_is_leap_year,% 1012 | mcal_date_valid,mcal_time_valid,mcal_day_of_week,% 1013 | mcal_date_compare,mcal_next_recurrence,% 1014 | mcal_event_set_recur_daily,mcal_event_set_recur_weekly,% 1015 | mcal_event_set_recur_monthly_wday,mcal_event_set_recur_yearly,% 1016 | mcal_event_add_attribute,mcal_expunge,mcal_week_of_year,% 1017 | %--- mcrypt functions 1018 | mcrypt_get_cipher_name,mcrypt_get_block_size,% 1019 | mcrypt_create_iv,mcrypt_cbc,mcrypt_cfb,mcrypt_ecb,mcrypt_ofb,% 1020 | mcrypt_list_modes,mcrypt_get_iv_size,mcrypt_encrypt,% 1021 | mcrypt_module_open,mcrypt_module_close,mcrypt_generic_deinit,% 1022 | mcrypt_generic,mdecrypt_generic,mcrypt_generic_end,% 1023 | mcrypt_enc_is_block_algorithm_mode,% 1024 | mcrypt_enc_is_block_mode,mcrypt_enc_get_block_size,% 1025 | mcrypt_enc_get_supported_key_sizes,mcrypt_enc_get_iv_size,% 1026 | mcrypt_enc_get_modes_name,mcrypt_module_self_test,% 1027 | mcrypt_module_is_block_algorithm,mcrypt_module_is_block_mode,% 1028 | mcrypt_module_get_algo_key_size,% 1029 | %--- mhash functions 1030 | mhash_get_hash_name,mhash_get_block_size,mhash_count,mhash,% 1031 | %--- misc functions 1032 | connection_aborted,connection_status,connection_timeout,% 1033 | define,defined,die,eval,exit,get_browser,highlight_file,% 1034 | ignore_user_abort,iptcparse,leak,pack,show_source,sleep,uniqid,% 1035 | usleep,% 1036 | %--- mnogosearch functions 1037 | udm_add_search_limit,udm_alloc_agent,udm_api_version,% 1038 | udm_cat_list,udm_clear_search_limits,udm_errno,udm_error,% 1039 | udm_free_agent,udm_free_ispell_data,udm_free_res,% 1040 | udm_get_res_field,udm_get_res_param,udm_load_ispell_data,% 1041 | udm_check_charset,udm_check_stored,udm_close_stored,udm_crc32,% 1042 | %--- msession functions 1043 | msession_connect,msession_disconnect,msession_count,% 1044 | msession_destroy,msession_lock,msession_unlock,msession_set,% 1045 | msession_uniq,msession_randstr,msession_find,msession_list,% 1046 | msession_set_array,msession_listvar,msession_timeout,% 1047 | msession_getdata,msession_setdata,msession_plugin,% 1048 | %--- msql functions 1049 | msql,msql_affected_rows,msql_close,msql_connect,msql_create_db,% 1050 | msql_data_seek,msql_dbname,msql_drop_db,msql_dropdb,msql_error,% 1051 | msql_fetch_field,msql_fetch_object,msql_fetch_row,% 1052 | msql_field_seek,msql_fieldtable,msql_fieldtype,msql_fieldflags,% 1053 | msql_free_result,msql_freeresult,msql_list_fields,% 1054 | msql_list_dbs,msql_listdbs,msql_list_tables,msql_listtables,% 1055 | msql_num_rows,msql_numfields,msql_numrows,msql_pconnect,% 1056 | msql_regcase,msql_result,msql_select_db,msql_selectdb,% 1057 | %--- mssql functions 1058 | mssql_close,mssql_connect,mssql_data_seek,mssql_fetch_array,% 1059 | mssql_fetch_object,mssql_fetch_row,mssql_field_length,% 1060 | mssql_field_seek,mssql_field_type,mssql_free_result,% 1061 | mssql_min_error_severity,mssql_min_message_severity,% 1062 | mssql_num_fields,mssql_num_rows,mssql_pconnect,mssql_query,% 1063 | mssql_select_db,mssql_bind,mssql_execute,mssql_fetch_assoc,% 1064 | mssql_guid_string,mssql_init,mssql_rows_affected,% 1065 | %--- muscat functions 1066 | muscat_setup,muscat_setup_net,muscat_give,muscat_get,% 1067 | %--- mysql functions 1068 | mysql_affected_rows,mysql_change_user,mysql_character_set_name,% 1069 | mysql_connect,mysql_create_db,mysql_data_seek,mysql_db_name,% 1070 | mysql_drop_db,mysql_errno,mysql_error,mysql_escape_string,% 1071 | mysql_fetch_assoc,mysql_fetch_field,mysql_fetch_lengths,% 1072 | mysql_fetch_row,mysql_field_flags,mysql_field_name,% 1073 | mysql_field_seek,mysql_field_table,mysql_field_type,% 1074 | mysql_info,mysql_insert_id,mysql_list_dbs,mysql_list_fields,% 1075 | mysql_list_tables,mysql_num_fields,mysql_num_rows,% 1076 | mysql_ping,mysql_query,mysql_unbuffered_query,% 1077 | mysql_result,mysql_select_db,mysql_tablename,mysql_thread_id,% 1078 | mysql_get_host_info,mysql_get_proto_info,mysql_get_server_info,% 1079 | %--- network functions 1080 | checkdnsrr,closelog,debugger_off,debugger_on,% 1081 | fsockopen,gethostbyaddr,gethostbyname,gethostbynamel,getmxrr,% 1082 | getprotobynumber,getservbyname,getservbyport,ip2long,long2ip,% 1083 | pfsockopen,socket_get_status,socket_set_blocking,% 1084 | syslog,% 1085 | %--- nis functions 1086 | yp_get_default_domain,yp_order,yp_master,yp_match,yp_first,% 1087 | yp_errno,yp_err_string,yp_all,yp_cat,% 1088 | %--- oci8 functions 1089 | OCIDefineByName,OCIBindByName,OCILogon,OCIPLogon,OCINLogon,% 1090 | OCIExecute,OCICommit,OCIRollback,OCINewDescriptor,OCIRowCount,% 1091 | OCIResult,OCIFetch,OCIFetchInto,OCIFetchStatement,% 1092 | OCIColumnName,OCIColumnSize,OCIColumnType,OCIServerVersion,% 1093 | OCINewCursor,OCIFreeStatement,OCIFreeCursor,OCIFreeDesc,% 1094 | OCIError,OCIInternalDebug,OCICancel,OCISetPrefetch,% 1095 | OCISaveLobFile,OCISaveLob,OCILoadLob,OCIColumnScale,% 1096 | OCIColumnTypeRaw,OCINewCollection,OCIFreeCollection,% 1097 | OCICollAppend,OCICollAssignElem,OCICollGetElem,OCICollMax,% 1098 | OCICollTrim,% 1099 | %--- oracle functions 1100 | Ora_Bind,Ora_Close,Ora_ColumnName,Ora_ColumnSize,Ora_ColumnType,% 1101 | Ora_CommitOff,Ora_CommitOn,Ora_Do,Ora_Error,Ora_ErrorCode,% 1102 | Ora_Fetch,Ora_Fetch_Into,Ora_GetColumn,Ora_Logoff,Ora_Logon,% 1103 | Ora_Numcols,Ora_Numrows,Ora_Open,Ora_Parse,Ora_Rollback,% 1104 | %--- outcontrol functions 1105 | flush,ob_start,ob_get_contents,ob_get_length,ob_get_level,% 1106 | ob_flush,ob_clean,ob_end_flush,ob_end_clean,ob_implicit_flush,% 1107 | %--- ovrimos functions 1108 | ovrimos_connect,ovrimos_close,ovrimos_longreadlen,% 1109 | ovrimos_execute,ovrimos_cursor,ovrimos_exec,ovrimos_fetch_into,% 1110 | ovrimos_result,ovrimos_result_all,ovrimos_num_rows,% 1111 | ovrimos_field_name,ovrimos_field_type,ovrimos_field_len,% 1112 | ovrimos_free_result,ovrimos_commit,ovrimos_rollback,% 1113 | %--- pcntl functions 1114 | pcntl_fork,pcntl_signal,pcntl_waitpid,pcntl_wexitstatus,% 1115 | pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,% 1116 | pcntl_exec,% 1117 | %--- pcre functions 1118 | preg_match,preg_match_all,preg_replace,preg_replace_callback,% 1119 | preg_quote,preg_grep,Pattern Modifiers,Pattern Syntax,% 1120 | %--- pdf functions 1121 | pdf_add_annotation,pdf_add_bookmark,pdf_add_launchlink,% 1122 | pdf_add_note,pdf_add_outline,pdf_add_pdflink,pdf_add_thumbnail,% 1123 | pdf_arc,pdf_arcn,pdf_attach_file,pdf_begin_page,% 1124 | pdf_begin_template,pdf_circle,pdf_clip,pdf_close,pdf_closepath,% 1125 | pdf_closepath_stroke,pdf_close_image,pdf_close_pdi,% 1126 | pdf_concat,pdf_continue_text,pdf_curveto,pdf_delete,% 1127 | pdf_endpath,pdf_end_pattern,pdf_end_template,pdf_fill,% 1128 | pdf_findfont,pdf_get_buffer,pdf_get_font,pdf_get_fontname,% 1129 | pdf_get_image_height,pdf_get_image_width,pdf_get_parameter,% 1130 | pdf_get_pdi_value,pdf_get_majorversion,pdf_get_minorversion,% 1131 | pdf_initgraphics,pdf_lineto,pdf_makespotcolor,pdf_moveto,% 1132 | pdf_open,pdf_open_CCITT,pdf_open_file,pdf_open_gif,% 1133 | pdf_open_image_file,pdf_open_jpeg,pdf_open_memory_image,% 1134 | pdf_open_pdi_page,pdf_open_png,pdf_open_tiff,pdf_place_image,% 1135 | pdf_rect,pdf_restore,pdf_rotate,pdf_save,pdf_scale,pdf_setcolor,% 1136 | pdf_setflat,pdf_setfont,pdf_setgray,pdf_setgray_fill,% 1137 | pdf_setlinecap,pdf_setlinejoin,pdf_setlinewidth,pdf_setmatrix,% 1138 | pdf_setpolydash,pdf_setrgbcolor,pdf_setrgbcolor_fill,% 1139 | pdf_set_border_color,pdf_set_border_dash,pdf_set_border_style,% 1140 | pdf_set_duration,pdf_set_font,pdf_set_horiz_scaling,% 1141 | pdf_set_info_author,pdf_set_info_creator,pdf_set_info_keywords,% 1142 | pdf_set_info_title,pdf_set_leading,pdf_set_parameter,% 1143 | pdf_set_text_rendering,pdf_set_text_rise,pdf_set_text_matrix,% 1144 | pdf_set_word_spacing,pdf_show,pdf_show_boxed,pdf_show_xy,% 1145 | pdf_stringwidth,pdf_stroke,pdf_translate,% 1146 | %--- pfpro functions 1147 | pfpro_init,pfpro_cleanup,pfpro_process,pfpro_process_raw,% 1148 | %--- pgsql functions 1149 | pg_close,pg_affected_rows,pg_connect,pg_dbname,pg_end_copy,% 1150 | pg_query,pg_fetch_array,pg_fetch_object,pg_fetch_row,% 1151 | pg_field_name,pg_field_num,pg_field_prtlen,pg_field_size,% 1152 | pg_free_result,pg_last_oid,pg_host,pg_last_notice,pg_lo_close,% 1153 | pg_lo_export,pg_lo_import,pg_lo_open,pg_lo_read,pg_lo_seek,% 1154 | pg_lo_read_all,pg_lo_unlink,pg_lo_write,pg_num_fields,% 1155 | pg_options,pg_pconnect,pg_port,pg_put_line,pg_fetch_result,% 1156 | pg_client_encoding,pg_trace,pg_tty,pg_untrace,pg_get_result,% 1157 | pg_send_query,pg_cancel_query,pg_connection_busy,% 1158 | pg_connection_status,pg_copy_from,pg_copy_to,pg_escape_bytea,% 1159 | pg_result_error,% 1160 | %--- posix functions 1161 | posix_kill,posix_getpid,posix_getppid,posix_getuid,% 1162 | posix_getgid,posix_getegid,posix_setuid,posix_seteuid,% 1163 | posix_setegid,posix_getgroups,posix_getlogin,posix_getpgrp,% 1164 | posix_setpgid,posix_getpgid,posix_getsid,posix_uname,% 1165 | posix_ctermid,posix_ttyname,posix_isatty,posix_getcwd,% 1166 | posix_getgrnam,posix_getgrgid,posix_getpwnam,posix_getpwuid,% 1167 | %--- printer functions 1168 | printer_open,printer_abort,printer_close,printer_write,% 1169 | printer_set_option,printer_get_option,printer_create_dc,% 1170 | printer_start_doc,printer_end_doc,printer_start_page,% 1171 | printer_create_pen,printer_delete_pen,printer_select_pen,% 1172 | printer_delete_brush,printer_select_brush,printer_create_font,% 1173 | printer_select_font,printer_logical_fontheight,% 1174 | printer_draw_rectangle,printer_draw_elipse,printer_draw_text,% 1175 | printer_draw_chord,printer_draw_pie,printer_draw_bmp,% 1176 | %--- pspell functions 1177 | pspell_add_to_personal,pspell_add_to_session,pspell_check,% 1178 | pspell_config_create,pspell_config_ignore,pspell_config_mode,% 1179 | pspell_config_repl,pspell_config_runtogether,% 1180 | pspell_new,pspell_new_config,pspell_new_personal,% 1181 | pspell_store_replacement,pspell_suggest,% 1182 | %--- qtdom functions 1183 | qdom_tree,qdom_error,% 1184 | %--- readline functions 1185 | readline,readline_add_history,readline_clear_history,% 1186 | readline_info,readline_list_history,readline_read_history,% 1187 | %--- recode functions 1188 | recode_string,recode,recode_file,% 1189 | %--- regex functions 1190 | ereg,ereg_replace,eregi,eregi_replace,split,spliti,sql_regcase,% 1191 | %--- sem functions 1192 | sem_get,sem_acquire,sem_release,sem_remove,shm_attach,% 1193 | shm_remove,shm_put_var,shm_get_var,shm_remove_var,ftok,% 1194 | %--- sesam functions 1195 | sesam_connect,sesam_disconnect,sesam_settransaction,% 1196 | sesam_rollback,sesam_execimm,sesam_query,sesam_num_fields,% 1197 | sesam_diagnostic,sesam_fetch_result,sesam_affected_rows,% 1198 | sesam_field_array,sesam_fetch_row,sesam_fetch_array,% 1199 | sesam_free_result,% 1200 | %--- session functions 1201 | session_start,session_destroy,session_name,session_module_name,% 1202 | session_id,session_register,session_unregister,session_unset,% 1203 | session_get_cookie_params,session_set_cookie_params,% 1204 | session_encode,session_set_save_handler,session_cache_limiter,% 1205 | session_write_close,% 1206 | %--- shmop functions 1207 | shmop_open,shmop_read,shmop_write,shmop_size,shmop_delete,% 1208 | %--- snmp functions 1209 | snmpget,snmpset,snmpwalk,snmpwalkoid,snmp_get_quick_print,% 1210 | snmprealwalk,% 1211 | %--- strings functions 1212 | addcslashes,addslashes,bin2hex,chop,chr,chunk_split,% 1213 | count_chars,crc32,crypt,echo,explode,get_html_translation_table,% 1214 | hebrev,hebrevc,htmlentities,htmlspecialchars,implode,join,% 1215 | localeconv,ltrim,md5,md5_file,metaphone,nl_langinfo,nl2br,ord,% 1216 | print,printf,quoted_printable_decode,quotemeta,str_rot13,rtrim,% 1217 | setlocale,similar_text,soundex,sprintf,strncasecmp,strcasecmp,% 1218 | strcmp,strcoll,strcspn,strip_tags,stripcslashes,stripslashes,% 1219 | strlen,strnatcmp,strnatcasecmp,strncmp,str_pad,strpos,strrchr,% 1220 | strrev,strrpos,strspn,strstr,strtok,strtolower,strtoupper,% 1221 | strtr,substr,substr_count,substr_replace,trim,ucfirst,ucwords,% 1222 | vsprintf,wordwrap,% 1223 | %--- swf functions 1224 | swf_openfile,swf_closefile,swf_labelframe,swf_showframe,% 1225 | swf_getframe,swf_mulcolor,swf_addcolor,swf_placeobject,% 1226 | swf_removeobject,swf_nextid,swf_startdoaction,% 1227 | swf_actiongeturl,swf_actionnextframe,swf_actionprevframe,% 1228 | swf_actionstop,swf_actiontogglequality,swf_actionwaitforframe,% 1229 | swf_actiongotolabel,swf_enddoaction,swf_defineline,% 1230 | swf_definepoly,swf_startshape,swf_shapelinesolid,% 1231 | swf_shapefillsolid,swf_shapefillbitmapclip,% 1232 | swf_shapemoveto,swf_shapelineto,swf_shapecurveto,% 1233 | swf_shapearc,swf_endshape,swf_definefont,swf_setfont,% 1234 | swf_fontslant,swf_fonttracking,swf_getfontinfo,swf_definetext,% 1235 | swf_definebitmap,swf_getbitmapinfo,swf_startsymbol,% 1236 | swf_startbutton,swf_addbuttonrecord,swf_oncondition,% 1237 | swf_viewport,swf_ortho,swf_ortho2,swf_perspective,swf_polarview,% 1238 | swf_pushmatrix,swf_popmatrix,swf_scale,swf_translate,swf_rotate,% 1239 | %--- sybase functions 1240 | sybase_affected_rows,sybase_close,sybase_connect,% 1241 | sybase_fetch_array,sybase_fetch_field,sybase_fetch_object,% 1242 | sybase_field_seek,sybase_free_result,sybase_get_last_message,% 1243 | sybase_min_error_severity,sybase_min_message_severity,% 1244 | sybase_num_fields,sybase_num_rows,sybase_pconnect,sybase_query,% 1245 | sybase_select_db,% 1246 | %--- uodbc functions 1247 | odbc_autocommit,odbc_binmode,odbc_close,odbc_close_all,% 1248 | odbc_connect,odbc_cursor,odbc_do,odbc_error,odbc_errormsg,% 1249 | odbc_execute,odbc_fetch_into,odbc_fetch_row,odbc_fetch_array,% 1250 | odbc_fetch_object,odbc_field_name,odbc_field_num,% 1251 | odbc_field_len,odbc_field_precision,odbc_field_scale,% 1252 | odbc_longreadlen,odbc_num_fields,odbc_pconnect,odbc_prepare,% 1253 | odbc_result,odbc_result_all,odbc_rollback,odbc_setoption,% 1254 | odbc_tableprivileges,odbc_columns,odbc_columnprivileges,% 1255 | odbc_primarykeys,odbc_foreignkeys,odbc_procedures,% 1256 | odbc_specialcolumns,odbc_statistics,% 1257 | %--- url functions 1258 | base64_decode,base64_encode,parse_url,rawurldecode,rawurlencode,% 1259 | urlencode,% 1260 | %--- var functions 1261 | doubleval,empty,floatval,gettype,get_defined_vars,% 1262 | import_request_variables,intval,is_array,is_bool,is_double,% 1263 | is_int,is_integer,is_long,is_null,is_numeric,is_object,is_real,% 1264 | is_scalar,is_string,isset,print_r,serialize,settype,strval,% 1265 | unset,var_dump,var_export,is_callable,% 1266 | %--- vpopmail functions 1267 | vpopmail_add_domain,vpopmail_del_domain,% 1268 | vpopmail_add_domain_ex,vpopmail_del_domain_ex,% 1269 | vpopmail_add_user,vpopmail_del_user,vpopmail_passwd,% 1270 | vpopmail_auth_user,vpopmail_alias_add,vpopmail_alias_del,% 1271 | vpopmail_alias_get,vpopmail_alias_get_all,vpopmail_error,% 1272 | %--- w32api functions 1273 | w32api_set_call_method,w32api_register_function,% 1274 | w32api_deftype,w32api_init_dtype,% 1275 | %--- wddx functions 1276 | wddx_serialize_value,wddx_serialize_vars,wddx_packet_start,% 1277 | wddx_add_vars,wddx_deserialize,% 1278 | %--- xml functions 1279 | xml_parser_create,xml_set_object,xml_set_element_handler,% 1280 | xml_set_processing_instruction_handler,xml_set_default_handler,% 1281 | xml_set_notation_decl_handler,% 1282 | xml_parse,xml_get_error_code,xml_error_string,% 1283 | xml_get_current_column_number,xml_get_current_byte_index,% 1284 | xml_parser_free,xml_parser_set_option,xml_parser_get_option,% 1285 | utf8_encode,xml_parser_create_ns,% 1286 | xml_set_start_namespace_decl_handler,% 1287 | %--- xslt functions 1288 | xslt_set_log,xslt_create,xslt_errno,xslt_error,xslt_free,% 1289 | xslt_set_sax_handler,xslt_set_scheme_handler,% 1290 | xslt_set_base,xslt_set_encoding,xslt_set_sax_handlers,% 1291 | %--- yaz functions 1292 | yaz_addinfo,yaz_close,yaz_connect,yaz_errno,yaz_error,yaz_hits,% 1293 | yaz_database,yaz_range,yaz_record,yaz_search,yaz_present,% 1294 | yaz_scan,yaz_scan_result,yaz_ccl_conf,yaz_ccl_parse,% 1295 | yaz_wait,yaz_sort,% 1296 | %--- zip functions 1297 | zip_close,zip_entry_close,zip_entry_compressedsize,% 1298 | zip_entry_filesize,zip_entry_name,zip_entry_open,zip_entry_read,% 1299 | zip_read,% 1300 | %--- zlib functions 1301 | gzclose,gzeof,gzfile,gzgetc,gzgets,gzgetss,gzopen,gzpassthru,% 1302 | gzread,gzrewind,gzseek,gztell,gzwrite,readgzfile,gzcompress,% 1303 | gzdeflate,gzinflate,gzencode,},% 1304 | sensitive,% 1305 | morecomment=[l]\#,% 1306 | morecomment=[l]//,% 1307 | morecomment=[s]{/*}{*/},% 1308 | morestring=[b]",% 1309 | morestring=[b]'% 1310 | }[keywords,comments,strings]% 1311 | %% 1312 | %% Prolog definition (c) 1997 Dominique de Waleffe 1313 | %% 1314 | \lst@definelanguage{Prolog}% 1315 | {morekeywords={op,mod,abort,ancestors,arg,ascii,ask,assert,asserta,% 1316 | assertz,atom,atomic,char,clause,close,concat,consult,ed,ef,em,% 1317 | eof,fail,file,findall,write,functor,getc,integer,is,length,% 1318 | listing,load,name,nl,nonvar,not,numbervars,op,or,pp,prin,print,% 1319 | private,prompt,putc,ratom,read,read_from_this_file,rename,repeat,% 1320 | retract,retractall,save,see,seeing,seen,sh,skip,statistics,% 1321 | subgoal_of,system,tab,tell,telling,time,told,trace,true,unload,% 1322 | untrace,var,write},% 1323 | sensitive=f,% 1324 | morecomment=[l]\%,% 1325 | morecomment=[s]{/*}{*/},% 1326 | morestring=[bd]",% 1327 | morestring=[bd]'% 1328 | }[keywords,comments,strings]% 1329 | %% 1330 | %% classic rexx listings definition 1331 | %% by Patrick TJ McPhee 1332 | %% 1333 | \lst@definelanguage{Rexx} 1334 | {morekeywords={address,arg,call,do,drop,else,end,exit,if,iterate,% 1335 | interpret,leave,nop,numeric,options,otherwise,parse,% 1336 | procedure,pull,push,queue,return,say,signal,then,to,% 1337 | trace,when},% 1338 | sensitive=false,% 1339 | morecomment=[n]{/*}{*/},% 1340 | morestring=[d]{'},% 1341 | morestring=[d]{"},% 1342 | }[keywords,comments,strings]% 1343 | \lst@definelanguage{Ruby}% 1344 | {morekeywords={__FILE__,__LINE__,BEGIN,END,alias,and,begin,break,% 1345 | case,class,def,defined?,do,else,elsif,end,ensure,false,for,% 1346 | if,in,module,next,nil,not,or,redo,rescue,retry,return,self,% 1347 | super,then,true,undef,unless,until,when,while,yield},% 1348 | sensitive=true,% 1349 | morecomment=[l]\#,% 1350 | morecomment=[l]\#\#,% 1351 | morecomment=[s]{=BEGIN}{=END},% 1352 | morestring=[b]',% 1353 | morestring=[b]",% 1354 | morestring=[s]{\%q/}{/},% 1355 | morestring=[s]{\%q!}{!},% 1356 | morestring=[s]{\%q\{}{\}},% 1357 | morestring=[s]{\%q(}{)},% 1358 | morestring=[s]{\%q[}{]},% 1359 | morestring=[s]{\%q-}{-},% 1360 | morestring=[s]{\%Q/}{/},% 1361 | morestring=[s]{\%Q!}{!},% 1362 | morestring=[s]{\%Q\{}{\}},% 1363 | morestring=[s]{\%Q(}{)},% 1364 | morestring=[s]{\%Q[}{]},% 1365 | morestring=[s]{\%Q-}{-}% 1366 | }[keywords,comments,strings]% 1367 | %% 1368 | %% SHELXL definition (c) 1999 Aidan Philip Heerdegen 1369 | %% 1370 | \lst@definelanguage{SHELXL}% 1371 | {morekeywords={TITL,CELL,ZERR,LATT,SYMM,SFAC,DISP,UNIT,LAUE,% 1372 | REM,MORE,TIME,END,HKLF,OMIT,SHEL,BASF,TWIN,EXTI,SWAT,% 1373 | MERG,SPEC,RESI,MOVE,ANIS,AFIX,HFIX,FRAG,FEND,EXYZ,EADP,% 1374 | EQIV,OMIT,CONN,PART,BIND,FREE,DFIX,BUMP,SAME,SADI,CHIV,% 1375 | FLAT,DELU,SIMU,DEFS,ISOR,SUMP,L.S.,CGLS,SLIM,BLOC,DAMP,% 1376 | WGHT,FVAR,BOND,CONF,MPLA,RTAB,LIST,ACTA,SIZE,TEMP,WPDB,% 1377 | FMAP,GRID,PLAN,MOLE},% 1378 | sensitive=false,% 1379 | alsoother=_,% Makes the syntax highlighting ignore the underscores 1380 | morecomment=[l]{! },% 1381 | }% 1382 | %% 1383 | %% Tcl/Tk definition (c) Gerd Neugebauer 1384 | %% 1385 | \lst@definelanguage[tk]{tcl}[]{tcl}% 1386 | {morekeywords={activate,add,separator,radiobutton,checkbutton,% 1387 | command,cascade,all,bell,bind,bindtags,button,canvas,canvasx,% 1388 | canvasy,cascade,cget,checkbutton,config,configu,configur,% 1389 | configure,clipboard,create,arc,bitmap,image,line,oval,polygon,% 1390 | rectangle,text,textwindow,curselection,delete,destroy,end,entry,% 1391 | entrycget,event,focus,font,actual,families,measure,metrics,names,% 1392 | frame,get,grab,current,release,status,grid,columnconfigure,% 1393 | rowconfigure,image,image,create,bitmap,photo,delete,height,types,% 1394 | widt,names,index,insert,invoke,itemconfigure,label,listbox,lower,% 1395 | menu,menubutton,message,move,option,add,clear,get,readfile,pack,% 1396 | photo,place,radiobutton,raise,scale,scroll,scrollbar,search,see,% 1397 | selection,send,stdin,stdout,stderr,tag,bind,text,tk,tkerror,% 1398 | tkwait,window,variable,visibility,toplevel,unknown,update,winfo,% 1399 | class,exists,ismapped,parent,reqwidth,reqheight,rootx,rooty,% 1400 | width,height,wm,aspect,client,command,deiconify,focusmodel,frame,% 1401 | geometry,group,iconbitmap,iconify,iconmask,iconname,iconposition,% 1402 | iconwindow,maxsize,minsize,overrideredirect,positionfrom,% 1403 | protocol,sizefrom,state,title,transient,withdraw,xview,yview,% 1404 | yposition,% 1405 | -accelerator,-activebackground,-activeborderwidth,% 1406 | -activeforeground,-after,-anchor,-arrow,-arrowshape,-aspect,% 1407 | -async,-background,-before,-bg,-bigincrement,-bitmap,-bordermode,% 1408 | -borderwidth,-button,-capstyle,-channel,-class,-closeenough,% 1409 | -colormap,-column,-columnspan,-command,-confine,-container,% 1410 | -count,-cursor,-data,-default,-detail,-digits,-direction,% 1411 | -displayof,-disableforeground,-elementborderwidth,-expand,% 1412 | -exportselection,-extend,-family,-fg,-file,-fill,-focus,-font,% 1413 | -fontmap,-foreground,-format,-from,-gamma,-global,-height,% 1414 | -highlightbackground,-highlightcolor,-highlightthickness,-icon,% 1415 | -image,-in,-insertbackground,-insertborderwidth,-insertofftime,% 1416 | -insertontime,-imsertwidth,-ipadx,-ipady,-joinstyle,-jump,% 1417 | -justify,-keycode,-keysym,-label,-lastfor,-length,-maskdata,% 1418 | -maskfile,-menu,-message,-mode,-offvalue,-onvalue,-orient,% 1419 | -outlien,-outlinestipple,-overstrike,-override,-padx,-pady,% 1420 | -pageanchor,-pageheight,-pagewidth,-pagey,-pagey,-palette,% 1421 | -parent,-place,-postcommand,-relheight,-relief,-relwidth,-relx,% 1422 | -rely,-repeatdelay,-repeatinterval,-resolution,-root,-rootx,% 1423 | -rooty,-rotate,-row,-rowspan,-screen,-selectcolor,-selectimage,% 1424 | -sendevent,-serial,-setgrid,-showvalue,-shrink,-side,-size,% 1425 | -slant,-sliderlength,-sliderrelief,-smooth,-splinesteps,-state,% 1426 | -sticky,-stipple,-style,-subsample,-subwindow,-tags,-takefocus,% 1427 | -tearoff,-tearoffcommand,-text,-textvariable,-tickinterval,-time,% 1428 | -title,-to,-troughcolor,-type,-underline,-use,-value,-variable,% 1429 | -visual,-width,-wrap,-wraplength,-x,-xscrollcommand,-y,% 1430 | -bgstipple,-fgstipple,-lmargin1,-lmargin2,-rmargin,-spacing1,% 1431 | -spacing2,-spacing3,-tabs,-yscrollcommand,-zoom,% 1432 | activate,add,addtag,bbox,cget,clone,configure,coords,% 1433 | curselection,debug,delete,delta,deselect,dlineinfo,dtag,dump,% 1434 | entrycget,entryconfigure,find,flash,fraction,get,gettags,handle,% 1435 | icursor,identify,index,insert,invoke,itemcget,itemconfigure,mark,% 1436 | moveto,own,post,postcascade,postscript,put,redither,ranges,% 1437 | scale,select,show,tag,type,unpost,xscrollcommand,xview,% 1438 | yscrollcommand,yview,yposition}% 1439 | }% 1440 | \lst@definelanguage[]{tcl}% 1441 | {alsoletter={.:,*=&-},% 1442 | morekeywords={after,append,array,names,exists,anymore,donesearch,% 1443 | get,nextelement,set,size,startsearch,auto_mkindex,binary,break,% 1444 | case,catch,cd,clock,close,concat,console,continue,default,else,% 1445 | elseif,eof,error,eval,exec,-keepnewline,exit,expr,fblocked,% 1446 | fconfigure,fcopy,file,atime,dirname,executable,exists,extension,% 1447 | isdirectory,isfile,join,lstat,mtime,owned,readable,readlink,% 1448 | rootname,size,stat,tail,type,writable,-permissions,-group,-owner,% 1449 | -archive,-hidden,-readonly,-system,-creator,-type,-force,% 1450 | fileevent,flush,for,foreach,format,gets,glob,global,history,if,% 1451 | incr,info,argsbody,cmdcount,commands,complete,default,exists,% 1452 | globals,level,library,locals,patchlevel,procs,script,tclversion,% 1453 | vars,interp,join,lappend,lindex,linsert,list,llength,lrange,% 1454 | lreplace,lsearch,-exact,-regexp,-glob,lsort,-ascii,-integer,% 1455 | -real,-dictionary,-increasing,-decreasing,-index,-command,load,% 1456 | namespace,open,package,forget,ifneeded,provide,require,unknown,% 1457 | vcompare,versions,vsatisfies,pid,proc,puts,-nonewline,pwd,read,% 1458 | regexp,-indices,regsub,-all,-nocaserename,return,scan,seek,set,% 1459 | socket,source,split,string,compare,first,index,last,length,match,% 1460 | range,tolower,toupper,trim,trimleft,trimright,subst,switch,tell,% 1461 | time,trace,variable,vdelete,vinfo,unknown,unset,uplevel,upvar,% 1462 | vwait,while,acos,asin,atan,atan2,ceil,cos,cosh,exp,floor,fmod,% 1463 | hypot,log,log10,pow,sin,sinh,sqrt,tan,tanh,abs,double,int,round% 1464 | },% 1465 | morestring=[d]",% 1466 | morecomment=[f]\#,% 1467 | morecomment=[l]{;\#},% 1468 | morecomment=[l]{[\#},% 1469 | morecomment=[l]{\{\#}% 1470 | }[keywords,comments,strings]% 1471 | %% 1472 | %% VBScript definition (c) 2000 Sonja Weidmann 1473 | %% 1474 | \lst@definelanguage{VBScript}% 1475 | {morekeywords={Call,Case,Const,Dim,Do,Each,Else,End,Erase,Error,Exit,% 1476 | Explicit,For,Function,If,Loop,Next,On,Option,Private,Public,% 1477 | Randomize,ReDim,Rem,Select,Set,Sub,Then,Wend,While,Abs,Array,Asc,% 1478 | Atn,CBool,CByte,CCur,CDate,CDbl,Chr,CInt,CLng,Cos,CreateObject,% 1479 | CSng,CStr,Date,DateAdd,DateDiff,DatePart,DateSerial,DateValue,% 1480 | Day,Exp,Filter,Fix,FormatCurrency,FormatDateTime,FormatNumber,% 1481 | FormatPercent,GetObject,Hex,Hour,InputBox,InStr,InStrRev,Int,% 1482 | IsArray,IsDate,IsEmpty,IsNull,IsNumeric,IsObject,Join,LBound,% 1483 | LCase,Left,Len,LoadPicture,Log,LTrim,Mid,Minute,Month,MonthName,% 1484 | MsgBox,Now,Oct,Replace,RGB,Right,Rnd,Round,RTrim,ScriptEngine,% 1485 | ScriptEngineBuildVersion,ScriptEngineMajorVersion,% 1486 | ScriptEngineMinorVersion,Second,Sgn,Sin,Space,Split,Sqr,StrComp,% 1487 | StrReverse,String,Tan,Time,TimeSerial,TimeValue,Trim,TypeName,% 1488 | UBound,UCase,VarType,Weekday,WeekdayName,Year, And,Eqv,Imp,Is,% 1489 | Mod,Not,Or,Xor,Add,BuildPath,Clear,Close,Copy,CopyFile,% 1490 | CopyFolder,CreateFolder,CreateTextFile,Delete,DeleteFile,% 1491 | DeleteFolder,Dictionary,Drive,DriveExists,Drives,Err,Exists,File,% 1492 | FileExists,FileSystemObject,Files,Folder,FolderExists,Folders,% 1493 | GetAbsolutePathName,GetBaseName,GetDrive,GetDriveName,% 1494 | GetExtensionName,GetFile,GetFileName,GetFolder,% 1495 | GetParentFolderName,GetSpecialFolder,GetTempName,Items,Keys,Move,% 1496 | MoveFile,MoveFolder,OpenAsTextStream,OpenTextFile,Raise,Read,% 1497 | ReadAll,ReadLine,Remove,RemoveAll,Skip,SkipLine,TextStream,Write,% 1498 | WriteBlankLines,WriteLine,Alias,Archive,CDROM,Compressed,% 1499 | Directory,Fixed,ForAppending,ForReading,ForWriting,Hidden,Normal,% 1500 | RAMDisk,ReadOnly,Remote,Removable,System,SystemFolder,% 1501 | TemporaryFolder,TristateFalse,TristateTrue,TristateUseDefault,% 1502 | Unknown,Volume,WindowsFolder,vbAbortRetryIgnore,% 1503 | vbApplicationModal,vbArray,vbBinaryCompare,vbBlack,vbBlue,% 1504 | vbBoolean,vbByte,vbCr,vbCrLf,vbCritical,vbCurrency,vbCyan,% 1505 | vbDataObject,vbDate,vbDecimal,vbDefaultButton1,vbDefaultButton2,% 1506 | vbDefaultButton3,vbDefaultButton4,vbDouble,vbEmpty,vbError,% 1507 | vbExclamation,vbFirstFourDays,vbFirstFullWeek,vbFirstJan1,% 1508 | vbFormFeed,vbFriday,vbGeneralDate,vbGreen,vbInformation,% 1509 | vbInteger,vbLf,vbLong,vbLongDate,vbLongTime,vbMagenta,vbMonday,% 1510 | vbNewLine,vbNull,vbNullChar,vbNullString,vbOKC,ancel,vbOKOnly,% 1511 | vbObject,vbObjectError,vbQuestion,vbRed,vbRetryCancel,vbSaturday,% 1512 | vbShortDate,vbShortTime,vbSingle,vbString,vbSunday,vbSystemModal,% 1513 | vbTab,vbTextCompare,vbThursday,vbTuesday,vbUseSystem,% 1514 | vbUseSystemDayOfWeek,vbVariant,vbVerticalTab,vbWednesday,vbWhite,% 1515 | vbYellow,vbYesNo,vbYesNoCancel},% 1516 | sensitive=f,% 1517 | morecomment=[l]',% 1518 | morestring=[d]"% 1519 | }[keywords,comments,strings]% 1520 | %% 1521 | %% VRML definition (c) 2001 Oliver Baum 1522 | %% 1523 | \lst@definelanguage[97]{VRML} 1524 | {morekeywords={DEF,EXTERNPROTO,FALSE,IS,NULL,PROTO,ROUTE,TO,TRUE,USE,% 1525 | eventIn,eventOut,exposedField,field,Introduction,Anchor,% 1526 | Appearance,AudioClip,Background,Billboard,Box,Collision,Color,% 1527 | ColorInterpolator,Cone,Coordinate,CoordinateInterpolator,% 1528 | Cylinder,CylinderSensor,DirectionalLight,ElevationGrid,Extrusion,% 1529 | Fog,FontStyle,Group,ImageTexture,IndexedFaceSet,IndexedLineSet,% 1530 | Inline,LOD,Material,MovieTexture,NavigationInfo,Normal,% 1531 | NormalInterpolator,OrientationInterpolator,PixelTexture,% 1532 | PlaneSensor,PointLight,PointSet,PositionInterpolator,% 1533 | ProximitySensor,ScalarInterpolator,Script,Shape,Sound,Sphere,% 1534 | SphereSensor,SpotLight,Switch,Text,TextureCoordinate,% 1535 | TextureTransform,TimeSensor,TouchSensor,Transform,Viewpoint,% 1536 | VisibilitySensor,WorldInfo},% 1537 | morecomment=[l]\#,% bug: starts comment in the first column 1538 | morestring=[b]"% 1539 | }[keywords,comments,strings] 1540 | \endinput 1541 | %% 1542 | %% End of file `lstlang2.sty'. 1543 | -------------------------------------------------------------------------------- /tex/lstmisc.sty: -------------------------------------------------------------------------------- 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 | %% 15 | %% Send comments and ideas on the package, error reports and additional 16 | %% programming languages to . 17 | %% 18 | \def\filedate{2007/02/22} 19 | \def\fileversion{1.4} 20 | \ProvidesFile{lstmisc.sty} 21 | [\filedate\space\fileversion\space(Carsten Heinz)] 22 | \lst@CheckVersion\fileversion 23 | {\typeout{^^J% 24 | ***^^J% 25 | *** This file requires `listings.sty' version \fileversion.^^J% 26 | *** You have a serious problem, so I'm exiting ...^^J% 27 | ***^^J}% 28 | \batchmode \@@end} 29 | \lst@BeginAspect{writefile} 30 | \newtoks\lst@WFtoken % global 31 | \lst@AddToHook{InitVarsBOL}{\global\lst@WFtoken{}} 32 | \newwrite\lst@WF 33 | \global\let\lst@WFifopen\iffalse % init 34 | \gdef\lst@WFWriteToFile{% 35 | \begingroup 36 | \let\lst@UM\@empty 37 | \expandafter\edef\expandafter\lst@temp\expandafter{\the\lst@WFtoken}% 38 | \immediate\write\lst@WF{\lst@temp}% 39 | \endgroup 40 | \global\lst@WFtoken{}} 41 | \gdef\lst@WFAppend#1{% 42 | \global\lst@WFtoken=\expandafter{\the\lst@WFtoken#1}} 43 | \gdef\lst@BeginWriteFile{\lst@WFBegin\@gobble} 44 | \gdef\lst@BeginAlsoWriteFile{\lst@WFBegin\lst@OutputBox} 45 | \begingroup \catcode`\^^I=11 46 | \gdef\lst@WFBegin#1#2{% 47 | \begingroup 48 | \let\lst@OutputBox#1% 49 | \def\lst@Append##1{% 50 | \advance\lst@length\@ne 51 | \expandafter\lst@token\expandafter{\the\lst@token##1}% 52 | \ifx ##1\lst@outputspace \else 53 | \lst@WFAppend##1% 54 | \fi}% 55 | \lst@lAddTo\lst@PreGotoTabStop{\lst@WFAppend{^^I}}% 56 | \lst@lAddTo\lst@ProcessSpace{\lst@WFAppend{ }}% 57 | \let\lst@DeInit\lst@WFDeInit 58 | \let\lst@MProcessListing\lst@WFMProcessListing 59 | \lst@WFifopen\else 60 | \immediate\openout\lst@WF=#2\relax 61 | \global\let\lst@WFifopen\iftrue 62 | \@gobbletwo\fi\fi 63 | \fi} 64 | \endgroup 65 | \gdef\lst@EndWriteFile{% 66 | \immediate\closeout\lst@WF \endgroup 67 | \global\let\lst@WFifopen\iffalse} 68 | \global\let\lst@WFMProcessListing\lst@MProcessListing 69 | \global\let\lst@WFDeInit\lst@DeInit 70 | \lst@AddToAtTop\lst@WFMProcessListing{\lst@WFWriteToFile} 71 | \lst@AddToAtTop\lst@WFDeInit{% 72 | \ifnum\lst@length=\z@\else \lst@WFWriteToFile \fi} 73 | \lst@EndAspect 74 | \lst@BeginAspect{strings} 75 | \gdef\lst@stringtypes{d,b,m,bd,db,s} 76 | \gdef\lst@StringKey#1#2{% 77 | \lst@Delim\lst@stringstyle #2\relax 78 | {String}\lst@stringtypes #1% 79 | {\lst@BeginString\lst@EndString}% 80 | \@@end\@empty{}} 81 | \lst@Key{string}\relax{\lst@StringKey\@empty{#1}} 82 | \lst@Key{morestring}\relax{\lst@StringKey\relax{#1}} 83 | \lst@Key{deletestring}\relax{\lst@StringKey\@nil{#1}} 84 | \lst@Key{stringstyle}{}{\def\lst@stringstyle{#1}} 85 | \lst@AddToHook{EmptyStyle}{\let\lst@stringstyle\@empty} 86 | \lst@Key{showstringspaces}t[t]{\lstKV@SetIf{#1}\lst@ifshowstringspaces} 87 | \gdef\lst@BeginString{% 88 | \lst@DelimOpen 89 | \lst@ifexstrings\else 90 | {\lst@ifshowstringspaces 91 | \lst@keepspacestrue 92 | \let\lst@outputspace\lst@visiblespace 93 | \fi}} 94 | \lst@AddToHookExe{ExcludeDelims}{\let\lst@ifexstrings\iffalse} 95 | \gdef\lst@EndString{\lst@DelimClose\lst@ifexstrings\else} 96 | \gdef\lst@StringDM@d#1#2\@empty#3#4#5{% 97 | \lst@CArg #2\relax\lst@DefDelimBE{}{}{}#3{#1}{#5}#4} 98 | \gdef\lst@StringDM@b#1#2\@empty#3#4#5{% 99 | \let\lst@ifbstring\iftrue 100 | \lst@CArg #2\relax\lst@DefDelimBE 101 | {\lst@ifletter \lst@Output \lst@letterfalse \fi}% 102 | {\ifx\lst@lastother\lstum@backslash 103 | \expandafter\@gobblethree 104 | \fi}{}#3{#1}{#5}#4} 105 | \global\let\lst@ifbstring\iffalse % init 106 | \lst@AddToHook{SelectCharTable}{% 107 | \lst@ifbstring 108 | \lst@CArgX \\\\\relax \lst@CDefX{}% 109 | {\lst@ProcessOther\lstum@backslash 110 | \lst@ProcessOther\lstum@backslash 111 | \let\lst@lastother\relax}% 112 | {}% 113 | \fi} 114 | \global\let\lst@StringDM@bd\lst@StringDM@b 115 | \global\let\lst@StringDM@db\lst@StringDM@bd 116 | \gdef\lst@StringDM@m#1#2\@empty#3#4#5{% 117 | \lst@CArg #2\relax\lst@DefDelimBE{}{}% 118 | {\let\lst@next\@gobblethree 119 | \lst@ifletter\else 120 | \lst@IfLastOtherOneOf{)].0123456789\lstum@rbrace'}% 121 | {}% 122 | {\let\lst@next\@empty}% 123 | \fi 124 | \lst@next}#3{#1}{#5}#4} 125 | \gdef\lst@StringDM@s#1#2#3\@empty#4#5#6{% 126 | \lst@CArg #2\relax\lst@DefDelimB{}{}{}#4{#1}{#6}% 127 | \lst@CArg #3\relax\lst@DefDelimE{}{}{}#5{#1}} 128 | \lst@SaveOutputDef{"7D}\lstum@rbrace 129 | \lst@EndAspect 130 | \lst@BeginAspect{mf} 131 | \lst@AddTo\lst@stringtypes{,mf} 132 | \lst@NewMode\lst@mfinputmode 133 | \gdef\lst@String@mf#1\@empty#2#3#4{% 134 | \lst@CArg #1\relax\lst@DefDelimB 135 | {}{}{\lst@ifletter \expandafter\@gobblethree \fi}% 136 | \lst@BeginStringMFinput\lst@mfinputmode{#4\lst@Lmodetrue}% 137 | \@ifundefined{lsts@semicolon}% 138 | {\lst@DefSaveDef{`\;}\lsts@semicolon{% ; and space end the filename 139 | \ifnum\lst@mode=\lst@mfinputmode 140 | \lst@XPrintToken 141 | \expandafter\lst@LeaveMode 142 | \fi 143 | \lsts@semicolon}% 144 | \lst@DefSaveDef{`\ }\lsts@space{% 145 | \ifnum\lst@mode=\lst@mfinputmode 146 | \lst@XPrintToken 147 | \expandafter\lst@LeaveMode 148 | \fi 149 | \lsts@space}% 150 | }{}} 151 | \gdef\lst@BeginStringMFinput#1#2#3\@empty{% 152 | \lst@TrackNewLines \lst@XPrintToken 153 | \begingroup 154 | \lst@mode\lst@nomode 155 | #3\lst@XPrintToken 156 | \endgroup 157 | \lst@ResetToken 158 | \lst@EnterMode{#1}{\def\lst@currstyle#2}% 159 | \lst@ifshowstringspaces 160 | \lst@keepspacestrue 161 | \let\lst@outputspace\lst@visiblespace 162 | \fi} 163 | \lst@EndAspect 164 | \lst@BeginAspect{comments} 165 | \lst@NewMode\lst@commentmode 166 | \gdef\lst@commenttypes{l,f,s,n} 167 | \gdef\lst@CommentKey#1#2{% 168 | \lst@Delim\lst@commentstyle #2\relax 169 | {Comment}\lst@commenttypes #1% 170 | {\lst@BeginComment\lst@EndComment}% 171 | i\@empty{\lst@BeginInvisible\lst@EndInvisible}} 172 | \lst@Key{comment}\relax{\lst@CommentKey\@empty{#1}} 173 | \lst@Key{morecomment}\relax{\lst@CommentKey\relax{#1}} 174 | \lst@Key{deletecomment}\relax{\lst@CommentKey\@nil{#1}} 175 | \lst@Key{commentstyle}{}{\def\lst@commentstyle{#1}} 176 | \lst@AddToHook{EmptyStyle}{\let\lst@commentstyle\itshape} 177 | \gdef\lst@BeginComment{% 178 | \lst@DelimOpen 179 | \lst@ifexcomments\else 180 | \lsthk@AfterBeginComment} 181 | \gdef\lst@EndComment{\lst@DelimClose\lst@ifexcomments\else} 182 | \lst@AddToHook{AfterBeginComment}{} 183 | \lst@AddToHookExe{ExcludeDelims}{\let\lst@ifexcomments\iffalse} 184 | \gdef\lst@BeginInvisible#1#2#3\@empty{% 185 | \lst@TrackNewLines \lst@XPrintToken 186 | \lst@BeginDropOutput{#1}} 187 | \gdef\lst@EndInvisible#1\@empty{\lst@EndDropOutput} 188 | \gdef\lst@CommentDM@l#1#2\@empty#3#4#5{% 189 | \lst@CArg #2\relax\lst@DefDelimB{}{}{}#3{#1}{#5\lst@Lmodetrue}} 190 | \gdef\lst@CommentDM@f#1{% 191 | \@ifnextchar[{\lst@Comment@@f{#1}}% 192 | {\lst@Comment@@f{#1}[0]}} 193 | \gdef\lst@Comment@@f#1[#2]#3\@empty#4#5#6{% 194 | \lst@CArg #3\relax\lst@DefDelimB{}{}% 195 | {\lst@CalcColumn 196 | \ifnum #2=\@tempcnta\else 197 | \expandafter\@gobblethree 198 | \fi}% 199 | #4{#1}{#6\lst@Lmodetrue}} 200 | \gdef\lst@CommentDM@s#1#2#3\@empty#4#5#6{% 201 | \lst@CArg #2\relax\lst@DefDelimB{}{}{}#4{#1}{#6}% 202 | \lst@CArg #3\relax\lst@DefDelimE{}{}{}#5{#1}} 203 | \gdef\lst@CommentDM@n#1#2#3\@empty#4#5#6{% 204 | \ifx\@empty#3\@empty\else 205 | \def\@tempa{#2}\def\@tempb{#3}% 206 | \ifx\@tempa\@tempb 207 | \PackageError{Listings}{Identical delimiters}% 208 | {These delimiters make no sense with nested comments.}% 209 | \else 210 | \lst@CArg #2\relax\lst@DefDelimB 211 | {}% 212 | {\ifnum\lst@mode=#1\relax \expandafter\@gobble \fi}% 213 | {}#4{#1}{#6}% 214 | \lst@CArg #3\relax\lst@DefDelimE{}{}{}#5{#1}% 215 | \fi 216 | \fi} 217 | \lst@EndAspect 218 | \lst@BeginAspect{pod} 219 | \lst@Key{printpod}{false}[t]{\lstKV@SetIf{#1}\lst@ifprintpod} 220 | \lst@Key{podcomment}{false}[t]{\lstKV@SetIf{#1}\lst@ifpodcomment} 221 | \lst@AddToHookExe{SetLanguage}{\let\lst@ifpodcomment\iffalse} 222 | \lst@NewMode\lst@PODmode 223 | \lst@AddToHook{SelectCharTable} 224 | {\lst@ifpodcomment 225 | \lst@CArgX =\relax\lst@DefDelimB{}{}% 226 | {\ifnum\@tempcnta=\z@ 227 | \lst@ifprintpod\else 228 | \def\lst@bnext{\lst@BeginDropOutput\lst@PODmode}% 229 | \expandafter\expandafter\expandafter\@gobblethree 230 | \fi 231 | \else 232 | \expandafter\@gobblethree 233 | \fi}% 234 | \lst@BeginComment\lst@PODmode{{\lst@commentstyle}}% 235 | \lst@CArgX =cut\^^M\relax\lst@DefDelimE 236 | {\lst@CalcColumn}% 237 | {\ifnum\@tempcnta=\z@\else 238 | \expandafter\@gobblethree 239 | \fi}% 240 | {}% 241 | \lst@EndComment\lst@PODmode 242 | \fi} 243 | \lst@EndAspect 244 | \lst@BeginAspect[keywords]{html} 245 | \gdef\lst@tagtypes{s} 246 | \gdef\lst@TagKey#1#2{% 247 | \lst@Delim\lst@tagstyle #2\relax 248 | {Tag}\lst@tagtypes #1% 249 | {\lst@BeginTag\lst@EndTag}% 250 | \@@end\@empty{}} 251 | \lst@Key{tag}\relax{\lst@TagKey\@empty{#1}} 252 | \lst@Key{tagstyle}{}{\def\lst@tagstyle{#1}} 253 | \lst@AddToHook{EmptyStyle}{\let\lst@tagstyle\@empty} 254 | \gdef\lst@BeginTag{% 255 | \lst@DelimOpen 256 | \lst@ifextags\else 257 | {\let\lst@ifkeywords\iftrue 258 | \lst@ifmarkfirstintag \lst@firstintagtrue \fi}} 259 | \lst@AddToHookExe{ExcludeDelims}{\let\lst@ifextags\iffalse} 260 | \gdef\lst@EndTag{\lst@DelimClose\lst@ifextags\else} 261 | \lst@Key{usekeywordsintag}t[t]{\lstKV@SetIf{#1}\lst@ifusekeysintag} 262 | \lst@Key{markfirstintag}f[t]{\lstKV@SetIf{#1}\lst@ifmarkfirstintag} 263 | \gdef\lst@firstintagtrue{\global\let\lst@iffirstintag\iftrue} 264 | \global\let\lst@iffirstintag\iffalse 265 | \lst@AddToHook{PostOutput}{\lst@tagresetfirst} 266 | \lst@AddToHook{Output} 267 | {\gdef\lst@tagresetfirst{\global\let\lst@iffirstintag\iffalse}} 268 | \lst@AddToHook{OutputOther}{\gdef\lst@tagresetfirst{}} 269 | \lst@AddToHook{Output} 270 | {\ifnum\lst@mode=\lst@tagmode 271 | \lst@iffirstintag \let\lst@thestyle\lst@gkeywords@sty \fi 272 | \lst@ifusekeysintag\else \let\lst@thestyle\lst@gkeywords@sty\fi 273 | \fi} 274 | \lst@NewMode\lst@tagmode 275 | \lst@AddToHook{Init}{\global\let\lst@ifnotag\iftrue} 276 | \lst@AddToHook{SelectCharTable}{\let\lst@ifkeywords\lst@ifnotag} 277 | \gdef\lst@Tag@s#1#2\@empty#3#4#5{% 278 | \global\let\lst@ifnotag\iffalse 279 | \lst@CArg #1\relax\lst@DefDelimB {}{}% 280 | {\ifnum\lst@mode=\lst@tagmode \expandafter\@gobblethree \fi}% 281 | #3\lst@tagmode{#5}% 282 | \lst@CArg #2\relax\lst@DefDelimE {}{}{}#4\lst@tagmode}% 283 | \gdef\lst@BeginCDATA#1\@empty{% 284 | \lst@TrackNewLines \lst@PrintToken 285 | \lst@EnterMode\lst@GPmode{}\let\lst@ifmode\iffalse 286 | \lst@mode\lst@tagmode #1\lst@mode\lst@GPmode\relax\lst@modetrue} 287 | \lst@EndAspect 288 | \lst@BeginAspect{escape} 289 | \lst@Key{texcl}{false}[t]{\lstKV@SetIf{#1}\lst@iftexcl} 290 | \lst@AddToHook{TextStyle}{\let\lst@iftexcl\iffalse} 291 | \lst@AddToHook{EOL} 292 | {\ifnum\lst@mode=\lst@TeXLmode 293 | \expandafter\lst@escapeend 294 | \expandafter\lst@LeaveAllModes 295 | \expandafter\lst@ReenterModes 296 | \fi} 297 | \lst@AddToHook{AfterBeginComment} 298 | {\lst@iftexcl \lst@ifLmode \lst@ifdropinput\else 299 | \lst@PrintToken 300 | \lst@LeaveMode \lst@InterruptModes 301 | \lst@EnterMode{\lst@TeXLmode}{\lst@modetrue\lst@commentstyle}% 302 | \expandafter\expandafter\expandafter\lst@escapebegin 303 | \fi \fi \fi} 304 | \lst@NewMode\lst@TeXLmode 305 | \gdef\lst@ActiveCDefX#1{\lst@ActiveCDefX@#1} 306 | \gdef\lst@ActiveCDefX@#1#2#3{ 307 | \catcode`#1\active\lccode`\~=`#1% 308 | \lowercase{\lst@CDefIt~}{#2}{#3}{}} 309 | \gdef\lst@Escape#1#2#3#4{% 310 | \lst@CArgX #1\relax\lst@CDefX 311 | {}% 312 | {\lst@ifdropinput\else 313 | \lst@TrackNewLines\lst@OutputLostSpace \lst@XPrintToken 314 | \lst@InterruptModes 315 | \lst@EnterMode{\lst@TeXmode}{\lst@modetrue}% 316 | \ifx\^^M#2% 317 | \lst@CArg #2\relax\lst@ActiveCDefX 318 | {}% 319 | {\lst@escapeend #4\lst@LeaveAllModes\lst@ReenterModes}% 320 | {\lst@MProcessListing}% 321 | \else 322 | \lst@CArg #2\relax\lst@ActiveCDefX 323 | {}% 324 | {\lst@escapeend #4\lst@LeaveAllModes\lst@ReenterModes 325 | \lst@newlines\z@ \lst@whitespacefalse}% 326 | {}% 327 | \fi 328 | #3\lst@escapebegin 329 | \fi}% 330 | {}} 331 | \lst@NewMode\lst@TeXmode 332 | \lst@Key{escapebegin}{}{\def\lst@escapebegin{#1}} 333 | \lst@Key{escapeend}{}{\def\lst@escapeend{#1}} 334 | \lst@Key{escapechar}{} 335 | {\ifx\@empty#1\@empty 336 | \let\lst@DefEsc\relax 337 | \else 338 | \def\lst@DefEsc{\lst@Escape{#1}{#1}{}{}}% 339 | \fi} 340 | \lst@AddToHook{TextStyle}{\let\lst@DefEsc\@empty} 341 | \lst@AddToHook{SelectCharTable}{\lst@DefEsc} 342 | \lst@Key{escapeinside}{}{\lstKV@TwoArg{#1}% 343 | {\let\lst@DefEsc\@empty 344 | \ifx\@empty##1@empty\else \ifx\@empty##2\@empty\else 345 | \def\lst@DefEsc{\lst@Escape{##1}{##2}{}{}}% 346 | \fi\fi}} 347 | \lst@Key{mathescape}{false}[t]{\lstKV@SetIf{#1}\lst@ifmathescape} 348 | \lst@AddToHook{SelectCharTable} 349 | {\lst@ifmathescape \lst@Escape{\$}{\$}% 350 | {\setbox\@tempboxa=\hbox\bgroup$}% 351 | {$\egroup \lst@CalcLostSpaceAndOutput}\fi} 352 | \lst@EndAspect 353 | \lst@BeginAspect{keywords} 354 | \global\let\lst@ifsensitive\iftrue % init 355 | \global\let\lst@ifsensitivedefed\iffalse % init % \global 356 | \lst@ifsavemem\else 357 | \gdef\lst@KeywordTest#1#2#3{% 358 | \begingroup \let\lst@UM\@empty 359 | \global\expandafter\let\expandafter\@gtempa 360 | \csname\@lst#1@\the\lst@token\endcsname 361 | \endgroup 362 | \ifx\@gtempa\relax\else 363 | \let\lst@thestyle\@gtempa 364 | \fi} 365 | \gdef\lst@KEYWORDTEST{% 366 | \uppercase\expandafter{\expandafter 367 | \lst@KEYWORDTEST@\the\lst@token}\relax} 368 | \gdef\lst@KEYWORDTEST@#1\relax#2#3#4{% 369 | \begingroup \let\lst@UM\@empty 370 | \global\expandafter\let\expandafter\@gtempa 371 | \csname\@lst#2@#1\endcsname 372 | \endgroup 373 | \ifx\@gtempa\relax\else 374 | \let\lst@thestyle\@gtempa 375 | \fi} 376 | \gdef\lst@WorkingTest#1#2#3{% 377 | \begingroup \let\lst@UM\@empty 378 | \global\expandafter\let\expandafter\@gtempa 379 | \csname\@lst#1@\the\lst@token\endcsname 380 | \endgroup 381 | \@gtempa} 382 | \gdef\lst@WORKINGTEST{% 383 | \uppercase\expandafter{\expandafter 384 | \lst@WORKINGTEST@\the\lst@token}\relax} 385 | \gdef\lst@WORKINGTEST@#1\relax#2#3#4{% 386 | \begingroup \let\lst@UM\@empty 387 | \global\expandafter\let\expandafter\@gtempa 388 | \csname\@lst#2@#1\endcsname 389 | \endgroup 390 | \@gtempa} 391 | \gdef\lst@DefineKeywords#1#2#3{% 392 | \lst@ifsensitive 393 | \def\lst@next{\lst@for#2}% 394 | \else 395 | \def\lst@next{\uppercase\expandafter{\expandafter\lst@for#2}}% 396 | \fi 397 | \lst@next\do 398 | {\expandafter\ifx\csname\@lst#1@##1\endcsname\relax 399 | \global\expandafter\let\csname\@lst#1@##1\endcsname#3% 400 | \fi}} 401 | \gdef\lst@UndefineKeywords#1#2#3{% 402 | \lst@ifsensitivedefed 403 | \def\lst@next{\lst@for#2}% 404 | \else 405 | \def\lst@next{\uppercase\expandafter{\expandafter\lst@for#2}}% 406 | \fi 407 | \lst@next\do 408 | {\expandafter\ifx\csname\@lst#1@##1\endcsname#3% 409 | \global\expandafter\let\csname\@lst#1@##1\endcsname\relax 410 | \fi}} 411 | \fi 412 | \lst@ifsavemem 413 | \gdef\lst@IfOneOutOf#1\relax#2{% 414 | \def\lst@temp##1,#1,##2##3\relax{% 415 | \ifx\@empty##2\else \expandafter\lst@IOOOfirst \fi}% 416 | \def\lst@next{\lst@IfOneOutOf@#1\relax}% 417 | \expandafter\lst@next#2\relax\relax} 418 | \gdef\lst@IfOneOutOf@#1\relax#2#3{% 419 | \ifx#2\relax 420 | \expandafter\@secondoftwo 421 | \else 422 | \expandafter\lst@temp\expandafter,#2,#1,\@empty\relax 423 | \expandafter\lst@next 424 | \fi} 425 | \ifx\iffalse\else\fi 426 | \gdef\lst@IOOOfirst#1\relax#2#3{\fi#2} 427 | \gdef\lst@IFONEOUTOF#1\relax#2{% 428 | \uppercase{\def\lst@temp##1,#1},##2##3\relax{% 429 | \ifx\@empty##2\else \expandafter\lst@IOOOfirst \fi}% 430 | \def\lst@next{\lst@IFONEOUTOF@#1\relax}% 431 | \expandafter\lst@next#2\relax} 432 | \gdef\lst@IFONEOUTOF@#1\relax#2#3{% 433 | \ifx#2\relax 434 | \expandafter\@secondoftwo 435 | \else 436 | \uppercase 437 | {\expandafter\lst@temp\expandafter,#2,#1,\@empty\relax}% 438 | \expandafter\lst@next 439 | \fi} 440 | \gdef\lst@KWTest{% 441 | \begingroup \let\lst@UM\@empty 442 | \expandafter\xdef\expandafter\@gtempa\expandafter{\the\lst@token}% 443 | \endgroup 444 | \expandafter\lst@IfOneOutOf\@gtempa\relax} 445 | \gdef\lst@KeywordTest#1#2#3{\lst@KWTest #2{\let\lst@thestyle#3}{}} 446 | \global\let\lst@KEYWORDTEST\lst@KeywordTest 447 | \gdef\lst@WorkingTest#1#2#3{\lst@KWTest #2#3{}} 448 | \global\let\lst@WORKINGTEST\lst@WorkingTest 449 | \fi 450 | \lst@Key{sensitive}\relax[t]{\lstKV@SetIf{#1}\lst@ifsensitive} 451 | \lst@AddToHook{SetLanguage}{\let\lst@ifsensitive\iftrue} 452 | \lst@AddToHook{Init} 453 | {\lst@ifsensitive\else 454 | \let\lst@KeywordTest\lst@KEYWORDTEST 455 | \let\lst@WorkingTest\lst@WORKINGTEST 456 | \let\lst@IfOneOutOf\lst@IFONEOUTOF 457 | \fi} 458 | \gdef\lst@MakeMacroUppercase#1{% 459 | \ifx\@undefined#1\else \uppercase\expandafter 460 | {\expandafter\def\expandafter#1\expandafter{#1}}% 461 | \fi} 462 | \gdef\lst@InstallTest#1#2#3#4#5#6#7#8{% 463 | \lst@AddToHook{TrackKeywords}{\lst@TrackKeywords{#1}#2#4#6#7#8}% 464 | \lst@AddToHook{PostTrackKeywords}{\lst@PostTrackKeywords#2#3#4#5}} 465 | \lst@AddToHook{Init}{\lsthk@TrackKeywords\lsthk@PostTrackKeywords} 466 | \lst@AddToHook{TrackKeywords} 467 | {\global\let\lst@DoDefineKeywords\@empty}% init 468 | \lst@AddToHook{PostTrackKeywords} 469 | {\lst@DoDefineKeywords 470 | \global\let\lst@DoDefineKeywords\@empty}% init 471 | \lst@AddToHook{Output}{\lst@ifkeywords \lsthk@DetectKeywords \fi} 472 | \lst@AddToHook{DetectKeywords}{}% init 473 | \lst@AddToHook{ModeTrue}{\let\lst@ifkeywords\iffalse} 474 | \lst@AddToHookExe{Init}{\let\lst@ifkeywords\iftrue} 475 | \gdef\lst@InstallTestNow#1#2#3#4#5{% 476 | \@ifundefined{\string#2#1}% 477 | {\global\@namedef{\string#2#1}{}% 478 | \edef\@tempa{% 479 | \noexpand\lst@AddToHook{\ifx#5dDetectKeywords\else Output\fi}% 480 | {\ifx #4w\noexpand\lst@WorkingTest 481 | \else\noexpand\lst@KeywordTest \fi 482 | {#1}\noexpand#2\noexpand#3}}% 483 | \lst@ifsavemem 484 | \@tempa 485 | \else 486 | \@ifundefined{\@lst#1@if@ins}% 487 | {\@tempa \global\@namedef{\@lst#1@if@ins}{}}% 488 | {}% 489 | \fi} 490 | {}} 491 | \gdef\lst@TrackKeywords#1#2#3#4#5#6{% 492 | \lst@false 493 | \def\lst@arg{{#1}#4}% 494 | \expandafter\expandafter\expandafter\lst@TK@ 495 | \expandafter\lst@arg#2\relax\relax 496 | \lst@ifsavemem\else 497 | \def\lst@arg{{#1}#4#2}% 498 | \expandafter\expandafter\expandafter\lst@TK@@ 499 | \expandafter\lst@arg#3\relax\relax 500 | \fi 501 | \lst@if \lst@InstallTestNow{#1}#2#4#5#6\fi} 502 | \gdef\lst@TK@#1#2#3#4{% 503 | \ifx\lst@ifsensitive\lst@ifsensitivedefed 504 | \ifx#3#4\else 505 | \lst@true 506 | \lst@ifsavemem\else 507 | \lst@UndefineKeywords{#1}#4#2% 508 | \lst@AddTo\lst@DoDefineKeywords{\lst@DefineKeywords{#1}#3#2}% 509 | \fi 510 | \fi 511 | \else 512 | \ifx#3\relax\else 513 | \lst@true 514 | \lst@ifsavemem\else 515 | \lst@UndefineKeywords{#1}#4#2% 516 | \lst@AddTo\lst@DoDefineKeywords{\lst@DefineKeywords{#1}#3#2}% 517 | \fi 518 | \fi 519 | \fi 520 | \lst@ifsavemem \ifx#3\relax\else 521 | \lst@ifsensitive\else \lst@MakeMacroUppercase#3\fi 522 | \fi \fi 523 | \ifx#3\relax 524 | \expandafter\@gobblethree 525 | \fi 526 | \lst@TK@{#1}#2} 527 | \gdef\lst@TK@@#1#2#3#4#5{% 528 | \ifx#4\relax 529 | \expandafter\@gobblefour 530 | \else 531 | \lst@IfSubstring{#4#5}#3{}{\lst@UndefineKeywords{#1}#5#2}% 532 | \fi 533 | \lst@TK@@{#1}#2#3} 534 | \lst@AddToHook{InitVars} 535 | {\global\let\lst@ifsensitivedefed\lst@ifsensitive} 536 | \gdef\lst@PostTrackKeywords#1#2#3#4{% 537 | \lst@ifsavemem\else 538 | \global\let#3#1% 539 | \global\let#4#2% 540 | \fi} 541 | \lst@Key{classoffset}\z@{\def\lst@classoffset{#1}} 542 | \gdef\lst@InstallFamily#1#2#3#4#5{% 543 | \lst@Key{#2}\relax{\lst@UseFamily{#2}##1\relax\lst@MakeKeywords}% 544 | \lst@Key{more#2}\relax 545 | {\lst@UseFamily{#2}##1\relax\lst@MakeMoreKeywords}% 546 | \lst@Key{delete#2}\relax 547 | {\lst@UseFamily{#2}##1\relax\lst@DeleteKeywords}% 548 | \ifx\@empty#3\@empty\else 549 | \lst@Key{#3}{#4}{\lstKV@OptArg[\@ne]{##1}% 550 | {\@tempcnta\lst@classoffset \advance\@tempcnta####1\relax 551 | \@namedef{lst@#3\ifnum\@tempcnta=\@ne\else \the\@tempcnta 552 | \fi}{####2}}}% 553 | \fi 554 | \expandafter\lst@InstallFamily@ 555 | \csname\@lst @#2@data\expandafter\endcsname 556 | \csname\@lst @#5\endcsname {#1}{#2}{#3}} 557 | \gdef\lst@InstallFamily@#1#2#3#4#5#6#7#8{% 558 | \gdef#1{{#3}{#4}{#5}#2#7}% 559 | \long\def\lst@temp##1{#6}% 560 | \ifx\lst@temp\@gobble 561 | \lst@AddTo#1{s#8}% 562 | \else 563 | \lst@AddTo#1{w#8}% 564 | \global\@namedef{lst@g#4@wp}##1{#6}% 565 | \fi} 566 | \gdef\lst@UseFamily#1{% 567 | \def\lst@family{#1}% 568 | \@ifnextchar[\lst@UseFamily@{\lst@UseFamily@[\@ne]}} 569 | \gdef\lst@UseFamily@[#1]{% 570 | \@tempcnta\lst@classoffset \advance\@tempcnta#1\relax 571 | \lst@ProvideFamily\lst@family 572 | \lst@UseFamily@a 573 | {\lst@family\ifnum\@tempcnta=\@ne\else \the\@tempcnta \fi}} 574 | \gdef\lst@UseFamily@a#1{% 575 | \expandafter\lst@UseFamily@b 576 | \csname\@lst @#1@list\expandafter\endcsname 577 | \csname\@lst @#1\expandafter\endcsname 578 | \csname\@lst @#1@also\expandafter\endcsname 579 | \csname\@lst @g#1\endcsname} 580 | \gdef\lst@UseFamily@b#1#2#3#4#5\relax#6{\lstKV@XOptArg[]{#5}#6#1#2#3#4} 581 | \gdef\lst@ProvideFamily#1{% 582 | \@ifundefined{lstfam@#1\ifnum\@tempcnta=\@ne\else\the\@tempcnta\fi}% 583 | {\global\@namedef{lstfam@#1\ifnum\@tempcnta=\@ne\else 584 | \the\@tempcnta\fi}{}% 585 | \expandafter\expandafter\expandafter\lst@ProvideFamily@ 586 | \csname\@lst @#1@data\endcsname 587 | {\ifnum\@tempcnta=\@ne\else \the\@tempcnta \fi}}% 588 | {}}% 589 | \gdef\lst@ProvideFamily@#1#2#3#4#5#6#7#8{% 590 | \expandafter\xdef\csname\@lst @g#2#8@sty\endcsname 591 | {\if #6w% 592 | \expandafter\noexpand\csname\@lst @g#2@wp\endcsname{#8}% 593 | \else 594 | \expandafter\noexpand\csname\@lst @#3#8\endcsname 595 | \fi}% 596 | \ifx\@empty#3\@empty\else 597 | \edef\lst@temp{\noexpand\lst@AddToHook{Init}{% 598 | \noexpand\lst@ProvideStyle\expandafter\noexpand 599 | \csname\@lst @#3#8\endcsname\noexpand#4}}% 600 | \lst@temp 601 | \fi 602 | \expandafter\lst@ProvideFamily@@ 603 | \csname\@lst @#2#8@list\expandafter\endcsname 604 | \csname\@lst @#2#8\expandafter\endcsname 605 | \csname\@lst @#2#8@also\expandafter\endcsname 606 | \csname\@lst @g#2#8@list\expandafter\endcsname 607 | \csname\@lst @g#2#8\expandafter\endcsname 608 | \csname\@lst @g#2#8@sty\expandafter\endcsname 609 | {#1}#5#6#7} 610 | \gdef\lst@ProvideFamily@@#1#2#3#4#5#6#7#8{% 611 | \gdef#1{#2#5}\global\let#2\@empty \global\let#3\@empty % init 612 | \gdef#4{#2#5}\global\let#5\@empty % init 613 | \if #8l\relax 614 | \lst@AddToHook{SetLanguage}{\def#1{#2#5}\let#2\@empty}% 615 | \fi 616 | \lst@InstallTest{#7}#1#2#4#5#6} 617 | \gdef\lst@InstallKeywords#1#2#3#4#5{% 618 | \lst@Key{#2}\relax 619 | {\lst@UseFamily{#2}[\@ne]##1\relax\lst@MakeKeywords}% 620 | \lst@Key{more#2}\relax 621 | {\lst@UseFamily{#2}[\@ne]##1\relax\lst@MakeMoreKeywords}% 622 | \lst@Key{delete#2}\relax 623 | {\lst@UseFamily{#2}[\@ne]##1\relax\lst@DeleteKeywords}% 624 | \ifx\@empty#3\@empty\else 625 | \lst@Key{#3}{#4}{\@namedef{lst@#3}{##1}}% 626 | \fi 627 | \expandafter\lst@InstallFamily@ 628 | \csname\@lst @#2@data\expandafter\endcsname 629 | \csname\@lst @#5\endcsname {#1}{#2}{#3}} 630 | \gdef\lst@ProvideStyle#1#2{% 631 | \ifx#1\@undefined \let#1#2% 632 | \else\ifx#1\relax \let#1#2\fi\fi} 633 | \gdef\lst@BuildClassList#1#2,{% 634 | \ifx\relax#2\@empty\else 635 | \ifx\@empty#2\@empty\else 636 | \lst@lExtend#1{\csname\@lst @#2\expandafter\endcsname 637 | \csname\@lst @g#2\endcsname}% 638 | \fi 639 | \expandafter\lst@BuildClassList\expandafter#1 640 | \fi} 641 | \gdef\lst@DeleteClassesIn#1#2{% 642 | \expandafter\lst@DCI@\expandafter#1#2\relax\relax} 643 | \gdef\lst@DCI@#1#2#3{% 644 | \ifx#2\relax 645 | \expandafter\@gobbletwo 646 | \else 647 | \def\lst@temp##1#2#3##2{% 648 | \lst@lAddTo#1{##1}% 649 | \ifx ##2\relax\else 650 | \expandafter\lst@temp 651 | \fi ##2}% 652 | \let\@tempa#1\let#1\@empty 653 | \expandafter\lst@temp\@tempa#2#3\relax 654 | \fi 655 | \lst@DCI@#1} 656 | \gdef\lst@MakeKeywords[#1]#2#3#4#5#6{% 657 | \def#3{#4#6}\let#4\@empty \let#5\@empty 658 | \lst@MakeMoreKeywords[#1]{#2}#3#4#5#6} 659 | \gdef\lst@MakeMoreKeywords[#1]#2#3#4#5#6{% 660 | \lst@BuildClassList#3#1,\relax,% 661 | \lst@DefOther\lst@temp{,#2}\lst@lExtend#4\lst@temp} 662 | \gdef\lst@DeleteKeywords[#1]#2#3#4#5#6{% 663 | \lst@MakeKeywords[#1]{#2}\@tempa\@tempb#5#6% 664 | \lst@DeleteClassesIn#3\@tempa 665 | \lst@DeleteKeysIn#4\@tempb} 666 | \lst@InstallFamily k{keywords}{keywordstyle}\bfseries{keywordstyle}{}ld 667 | \gdef\lst@DefKeywordstyle#1#2\@nil@{% 668 | \@namedef{lst@keywordstyle\ifnum\@tempcnta=\@ne\else\the\@tempcnta 669 | \fi}{#1#2}}% 670 | \lst@Key{keywordstyle}{\bfseries}{\lstKV@OptArg[\@ne]{#1}% 671 | {\@tempcnta\lst@classoffset \advance\@tempcnta##1\relax 672 | \@ifstar{\lst@DefKeywordstyle{\uppercase\expandafter{% 673 | \expandafter\lst@token 674 | \expandafter{\the\lst@token}}}}% 675 | {\lst@DefKeywordstyle{}}##2\@nil@}} 676 | \lst@Key{ndkeywords}\relax 677 | {\lst@UseFamily{keywords}[\tw@]#1\relax\lst@MakeKeywords}% 678 | \lst@Key{morendkeywords}\relax 679 | {\lst@UseFamily{keywords}[\tw@]#1\relax\lst@MakeMoreKeywords}% 680 | \lst@Key{deletendkeywords}\relax 681 | {\lst@UseFamily{keywords}[\tw@]#1\relax\lst@DeleteKeywords}% 682 | \lst@Key{ndkeywordstyle}\relax{\@namedef{lst@keywordstyle2}{#1}}% 683 | \lst@Key{keywordsprefix}\relax{\lst@DefActive\lst@keywordsprefix{#1}} 684 | \global\let\lst@keywordsprefix\@empty 685 | \lst@AddToHook{SelectCharTable} 686 | {\ifx\lst@keywordsprefix\@empty\else 687 | \expandafter\lst@CArg\lst@keywordsprefix\relax 688 | \lst@CDef{}% 689 | {\lst@ifletter\else 690 | \global\let\lst@prefixkeyword\@empty 691 | \fi}% 692 | {}% 693 | \fi} 694 | \lst@AddToHook{Init}{\global\let\lst@prefixkeyword\relax} 695 | \lst@AddToHook{Output} 696 | {\ifx\lst@prefixkeyword\@empty 697 | \let\lst@thestyle\lst@gkeywords@sty 698 | \global\let\lst@prefixkeyword\relax 699 | \fi}% 700 | \lst@Key{otherkeywords}{}{% 701 | \let\lst@otherkeywords\@empty 702 | \lst@for{#1}\do{% 703 | \lst@MakeActive{##1}% 704 | \lst@lExtend\lst@otherkeywords{% 705 | \expandafter\lst@CArg\lst@temp\relax\lst@CDef 706 | {}\lst@PrintOtherKeyword\@empty}}} 707 | \lst@AddToHook{SelectCharTable}{\lst@otherkeywords} 708 | \gdef\lst@PrintOtherKeyword#1\@empty{% 709 | \lst@XPrintToken 710 | \begingroup 711 | \lst@modetrue \lsthk@TextStyle 712 | \let\lst@ProcessDigit\lst@ProcessLetter 713 | \let\lst@ProcessOther\lst@ProcessLetter 714 | \lst@lettertrue 715 | #1% 716 | \lst@SaveToken 717 | \endgroup 718 | \lst@RestoreToken 719 | \global\let\lst@savedcurrstyle\lst@currstyle 720 | \let\lst@currstyle\lst@gkeywords@sty 721 | \lst@Output 722 | \let\lst@currstyle\lst@savedcurrstyle} 723 | \lst@EndAspect 724 | \lst@BeginAspect[keywords]{emph} 725 | \lst@InstallFamily e{emph}{emphstyle}{}{emphstyle}{}od 726 | \lst@EndAspect 727 | \lst@BeginAspect[keywords]{tex} 728 | \lst@InstallFamily {cs}{texcs}{texcsstyle}\relax{keywordstyle} 729 | {\ifx\lst@lastother\lstum@backslash 730 | \expandafter\let\expandafter\lst@thestyle 731 | \csname lst@texcsstyle#1\endcsname 732 | \fi} 733 | ld 734 | \lst@Key{texcsstyle}\relax 735 | {\@ifstar{\lst@true\lst@DefTexcsstyle}% 736 | {\lst@false\lst@DefTexcsstyle}#1\@nil@} 737 | \gdef\lst@DefTexcsstyle#1\@nil@{% 738 | \let\lst@iftexcsincludebs\lst@if 739 | \lstKV@OptArg[\@ne]{#1}% 740 | {\@tempcnta\lst@classoffset \advance\@tempcnta##1\relax 741 | \@namedef{lst@texcsstyle\ifnum\@tempcnta=\@ne\else 742 | \the\@tempcnta \fi}{##2}}}% 743 | \global\let\lst@iftexcsincludebs\iffalse 744 | \let\lst@iftexcsincludebs\iffalse 745 | \lst@AddToHook{SelectCharTable} 746 | {\lst@iftexcsincludebs \ifx\@empty\lst@texcs\else 747 | \lst@DefSaveDef{`\\}\lsts@texcsbs 748 | {\lst@ifletter 749 | \lst@Output 750 | \else 751 | \lst@OutputOther 752 | \fi 753 | \lst@Merge\lsts@texcsbs}% 754 | \fi \fi} 755 | \lst@EndAspect 756 | \lst@BeginAspect[keywords]{directives} 757 | \lst@NewMode\lst@CDmode 758 | \lst@AddToHook{EOL}{\ifnum\lst@mode=\lst@CDmode \lst@LeaveMode \fi} 759 | \lst@InstallKeywords{d}{directives}{directivestyle}\relax{keywordstyle} 760 | {\ifnum\lst@mode=\lst@CDmode 761 | \let\lst@thestyle\lst@directivestyle 762 | \fi} 763 | ld 764 | \global\let\lst@directives\@empty % init 765 | \lst@AddTo\lst@delimtypes{,directive} 766 | \gdef\lst@Delim@directive#1\@empty#2#3#4{% 767 | \lst@CArg #1\relax\lst@DefDelimB 768 | {\lst@CalcColumn}% 769 | {}% 770 | {\ifnum\@tempcnta=\z@ 771 | \def\lst@bnext{#2\lst@CDmode{#4\lst@Lmodetrue}% 772 | \let\lst@currstyle\lst@directivestyle}% 773 | \fi 774 | \@gobblethree}% 775 | #2\lst@CDmode{#4\lst@Lmodetrue}} 776 | \lst@AddTo\lst@stringtypes{,directive} 777 | \gdef\lst@StringDM@directive#1#2#3\@empty{% 778 | \lst@CArg #2\relax\lst@CDef 779 | {}% 780 | {\let\lst@bnext\lst@CArgEmpty 781 | \ifnum\lst@mode=\lst@CDmode 782 | \def\lst@bnext{\lst@BeginString{#1}}% 783 | \fi 784 | \lst@bnext}% 785 | \@empty 786 | \lst@CArg #3\relax\lst@CDef 787 | {}% 788 | {\let\lst@enext\lst@CArgEmpty 789 | \ifnum #1=\lst@mode 790 | \let\lst@bnext\lst@EndString 791 | \fi 792 | \lst@bnext}% 793 | \@empty} 794 | \lst@EndAspect 795 | \lst@BeginAspect[keywords,comments]{keywordcomments} 796 | \lst@NewMode\lst@KCmode \lst@NewMode\lst@KCSmode 797 | \gdef\lst@BeginKC{\aftergroup\aftergroup\aftergroup\lst@BeginKC@}% 798 | \gdef\lst@BeginKC@{% 799 | \lst@ResetToken 800 | \lst@BeginComment\lst@KCmode{{\lst@commentstyle}\lst@modetrue}% 801 | \@empty}% 802 | \gdef\lst@BeginKCS{\aftergroup\aftergroup\aftergroup\lst@BeginKCS@}% 803 | \gdef\lst@BeginKCS@{% 804 | \lst@ResetToken 805 | \lst@BeginComment\lst@KCSmode{{\lst@commentstyle}\lst@modetrue}% 806 | \@empty}% 807 | \lst@AddToHook{PostOutput}{\lst@KCpost \global\let\lst@KCpost\@empty} 808 | \global\let\lst@KCpost\@empty % init 809 | \gdef\lst@EndKC{\lst@SaveToken \lst@LeaveMode \lst@RestoreToken 810 | \let\lst@thestyle\lst@identifierstyle \lsthk@Output} 811 | \lst@InstallKeywords{kc}{keywordcomment}{}\relax{} 812 | {\ifnum\lst@mode=\lst@KCmode 813 | \edef\lst@temp{\the\lst@token}% 814 | \ifx\lst@temp\lst@KCmatch 815 | \lst@EndKC 816 | \fi 817 | \else 818 | \lst@ifmode\else 819 | \xdef\lst@KCmatch{\the\lst@token}% 820 | \global\let\lst@KCpost\lst@BeginKC 821 | \fi 822 | \fi} 823 | lo 824 | \lst@Key{keywordcommentsemicolon}{}{\lstKV@ThreeArg{#1}% 825 | {\def\lst@KCAkeywordsB{##1}% 826 | \def\lst@KCAkeywordsE{##2}% 827 | \def\lst@KCBkeywordsB{##3}% 828 | \def\lst@KCkeywords{##1##2##3}}} 829 | \lst@AddToHook{SetLanguage}{% 830 | \let\lst@KCAkeywordsB\@empty \let\lst@KCAkeywordsE\@empty 831 | \let\lst@KCBkeywordsB\@empty \let\lst@KCkeywords\@empty} 832 | \lst@AddToHook{SelectCharTable} 833 | {\ifx\lst@KCkeywords\@empty\else 834 | \lst@DefSaveDef{`\;}\lsts@EKC 835 | {\lst@XPrintToken 836 | \ifnum\lst@mode=\lst@KCmode \lst@EndComment\@empty \else 837 | \ifnum\lst@mode=\lst@KCSmode \lst@EndComment\@empty 838 | \fi \fi 839 | \lsts@EKC}% 840 | \fi} 841 | \gdef\lst@KCAWorkB{% 842 | \lst@ifmode\else \global\let\lst@KCpost\lst@BeginKC \fi} 843 | \gdef\lst@KCBWorkB{% 844 | \lst@ifmode\else \global\let\lst@KCpost\lst@BeginKCS \fi} 845 | \gdef\lst@KCAWorkE{\ifnum\lst@mode=\lst@KCmode \lst@EndKC \fi} 846 | \lst@ProvideFamily@@ 847 | \lst@KCAkeywordsB@list\lst@KCAkeywordsB \lst@KC@also 848 | \lst@gKCAkeywordsB@list\lst@gKCAkeywordsB \lst@KCAWorkB 849 | {kcb}owo % prefix, other key, working procedure, Output hook 850 | \lst@ProvideFamily@@ 851 | \lst@KCAkeywordsE@list\lst@KCAkeywordsE \lst@KC@also 852 | \lst@gKCAkeywordsE@list\lst@gKCAkeywordsE \lst@KCAWorkE 853 | {kce}owo 854 | \lst@ProvideFamily@@ 855 | \lst@KCBkeywordsB@list\lst@KCBkeywordsB \lst@KC@also 856 | \lst@gKCBkeywordsB@list\lst@gKCBkeywordsB \lst@KCBWorkB 857 | {kcs}owo 858 | \lst@EndAspect 859 | \lst@BeginAspect[keywords]{index} 860 | \lst@InstallFamily w{index}{indexstyle}\lstindexmacro{indexstyle} 861 | {\csname\@lst @indexstyle#1\expandafter\endcsname 862 | \expandafter{\the\lst@token}} 863 | od 864 | \lst@UserCommand\lstindexmacro#1{\index{{\ttfamily#1}}} 865 | \lst@EndAspect 866 | \lst@BeginAspect[keywords]{procnames} 867 | \gdef\lst@procnametrue{\global\let\lst@ifprocname\iftrue} 868 | \gdef\lst@procnamefalse{\global\let\lst@ifprocname\iffalse} 869 | \lst@AddToHook{Init}{\lst@procnamefalse} 870 | \lst@AddToHook{DetectKeywords} 871 | {\lst@ifprocname 872 | \let\lst@thestyle\lst@procnamestyle 873 | \lst@ifindexproc \csname\@lst @gindex@sty\endcsname \fi 874 | \lst@procnamefalse 875 | \fi} 876 | \lst@Key{procnamestyle}{}{\def\lst@procnamestyle{#1}} 877 | \lst@Key{indexprocnames}{false}[t]{\lstKV@SetIf{#1}\lst@ifindexproc} 878 | \lst@AddToHook{Init}{\lst@ifindexproc \lst@indexproc \fi} 879 | \gdef\lst@indexproc{% 880 | \@ifundefined{lst@indexstyle1}% 881 | {\@namedef{lst@indexstyle1}##1{}}% 882 | {}} 883 | \lst@InstallKeywords w{procnamekeys}{}\relax{} 884 | {\global\let\lst@PNpost\lst@procnametrue} 885 | od 886 | \lst@AddToHook{PostOutput}{\lst@PNpost\global\let\lst@PNpost\@empty} 887 | \global\let\lst@PNpost\@empty % init 888 | \lst@EndAspect 889 | \lst@BeginAspect{style} 890 | \@ifundefined{lststylefiles} 891 | {\lst@UserCommand\lststylefiles{lststy0.sty}}{} 892 | \lst@UserCommand\lstdefinestyle{\lst@DefStyle\iftrue} 893 | \lst@UserCommand\lst@definestyle{\lst@DefStyle\iffalse} 894 | \gdef\lst@DefStyle{\lst@DefDriver{style}{sty}\lstset} 895 | \global\@namedef{lststy@$}{\lsthk@EmptyStyle} 896 | \lst@AddToHook{EmptyStyle}{}% init 897 | \lst@Key{style}\relax{% 898 | \lst@LAS{style}{sty}{[]{#1}}\lst@NoAlias\lststylefiles 899 | \lsthk@SetStyle 900 | {}} 901 | \lst@AddToHook{SetStyle}{}% init 902 | \lst@EndAspect 903 | \lst@BeginAspect{language} 904 | \@ifundefined{lstdriverfiles} 905 | {\lst@UserCommand\lstlanguagefiles{lstlang0.sty}}{} 906 | \lst@UserCommand\lstdefinelanguage{\lst@DefLang\iftrue} 907 | \lst@UserCommand\lst@definelanguage{\lst@DefLang\iffalse} 908 | \gdef\lst@DefLang{\lst@DefDriver{language}{lang}\lstset} 909 | \lstdefinelanguage{}{} 910 | \lst@Key{language}\relax{\lstKV@OptArg[]{#1}% 911 | {\lst@LAS{language}{lang}{[##1]{##2}}\lst@FindAlias\lstlanguagefiles 912 | \lsthk@SetLanguage 913 | {\lst@FindAlias[##1]{##2}% 914 | \let\lst@language\lst@malias 915 | \let\lst@dialect\lst@oalias}}} 916 | \lst@Key{alsolanguage}\relax{\lstKV@OptArg[]{#1}% 917 | {\lst@LAS{language}{lang}{[##1]{##2}}\lst@FindAlias\lstlanguagefiles 918 | {}% 919 | {\lst@FindAlias[##1]{##2}% 920 | \let\lst@language\lst@malias 921 | \let\lst@dialect\lst@oalias}}} 922 | \lst@AddToHook{SetLanguage}{}% init 923 | \lst@UserCommand\lstalias{\@ifnextchar[\lstalias@\lstalias@@} 924 | \gdef\lstalias@[#1]#2{\lstalias@b #2$#1} 925 | \gdef\lstalias@b#1[#2]#3{\lst@NormedNameDef{lsta@#1}{#3$#2}} 926 | \gdef\lstalias@@#1#2{\lst@NormedNameDef{lsta@#1}{#2}} 927 | \lst@Key{defaultdialect}\relax 928 | {\lstKV@OptArg[]{#1}{\lst@NormedNameDef{lstdd@##2}{##1}}} 929 | \gdef\lst@FindAlias[#1]#2{% 930 | \lst@NormedDef\lst@oalias{#1}% 931 | \lst@NormedDef\lst@malias{#2}% 932 | \@ifundefined{lsta@\lst@malias}{}% 933 | {\edef\lst@malias{\csname\@lst a@\lst@malias\endcsname}}% 934 | \ifx\@empty\lst@oalias \@ifundefined{lstdd@\lst@malias}{}% 935 | {\edef\lst@oalias{\csname\@lst dd@\lst@malias\endcsname}}% 936 | \fi 937 | \edef\lst@temp{\lst@malias $\lst@oalias}% 938 | \@ifundefined{lsta@\lst@temp}{}% 939 | {\edef\lst@temp{\csname\@lst a@\lst@temp\endcsname}}% 940 | \expandafter\lst@FindAlias@\lst@temp $} 941 | \gdef\lst@FindAlias@#1$#2${% 942 | \def\lst@malias{#1}\def\lst@oalias{#2}% 943 | \ifx\@empty\lst@oalias \@ifundefined{lstdd@\lst@malias}{}% 944 | {\edef\lst@oalias{\csname\@lst dd@\lst@malias\endcsname}}% 945 | \fi} 946 | \gdef\lst@RequireLanguages#1{% 947 | \lst@Require{language}{lang}{#1}\lst@FindAlias\lstlanguagefiles 948 | \ifx\lst@loadaspects\@empty\else 949 | \lst@RequireAspects\lst@loadaspects 950 | \fi} 951 | \global\let\lstloadlanguages\lst@RequireLanguages 952 | \lst@EndAspect 953 | \lst@BeginAspect{formats} 954 | \@ifundefined{lstformatfiles} 955 | {\lst@UserCommand\lstformatfiles{lstfmt0.sty}}{} 956 | \lst@UserCommand\lstdefineformat{\lst@DefFormat\iftrue} 957 | \lst@UserCommand\lst@defineformat{\lst@DefFormat\iffalse} 958 | \gdef\lst@DefFormat{\lst@DefDriver{format}{fmt}\lst@UseFormat} 959 | \lstdefineformat{}{} 960 | \lst@Key{format}\relax{% 961 | \lst@LAS{format}{fmt}{[]{#1}}\lst@NoAlias\lstformatfiles 962 | \lsthk@SetFormat 963 | {}} 964 | \lst@AddToHook{SetFormat}{\let\lst@fmtformat\@empty}% init 965 | \gdef\lst@fmtSplit#1#2{% 966 | \def\lst@temp##1#2##2\relax##3{% 967 | \ifnum##3=\z@ 968 | \ifx\@empty##2\@empty 969 | \lst@false 970 | \let\lst@fmta#1% 971 | \let\lst@fmtb\@empty 972 | \else 973 | \expandafter\lst@temp#1\relax\@ne 974 | \fi 975 | \else 976 | \def\lst@fmta{##1}\def\lst@fmtb{##2}% 977 | \fi}% 978 | \lst@true 979 | \expandafter\lst@temp#1#2\relax\z@} 980 | \gdef\lst@IfNextCharWhitespace#1#2#3{% 981 | \lst@IfSubstring#3\lst@whitespaces{#1}{#2}#3} 982 | \begingroup 983 | \catcode`\^^I=12\catcode`\^^J=12\catcode`\^^M=12\catcode`\^^L=12\relax% 984 | \lst@DefActive\lst@whitespaces{\ ^^I^^J^^M}% add ^^L 985 | \global\let\lst@whitespaces\lst@whitespaces% 986 | \endgroup 987 | \gdef\lst@fmtIfIdentifier#1{% 988 | \ifx\relax#1\@empty 989 | \expandafter\@secondoftwo 990 | \else 991 | \expandafter\lst@fmtIfIdentifier@\expandafter#1% 992 | \fi} 993 | \gdef\lst@fmtIfIdentifier@#1#2\relax{% 994 | \let\lst@next\@secondoftwo 995 | \ifnum`#1=`_\else 996 | \ifnum`#1<64\else 997 | \ifnum`#1<91\let\lst@next\@firstoftwo\else 998 | \ifnum`#1<97\else 999 | \ifnum`#1<123\let\lst@next\@firstoftwo\else 1000 | \fi \fi \fi \fi \fi 1001 | \lst@next} 1002 | \gdef\lst@fmtIfNextCharIn#1{% 1003 | \ifx\@empty#1\@empty \expandafter\@secondoftwo \else 1004 | \def\lst@next{\lst@fmtIfNextCharIn@{#1}}% 1005 | \expandafter\lst@next\fi} 1006 | \gdef\lst@fmtIfNextCharIn@#1#2#3#4{% 1007 | \def\lst@temp##1#4##2##3\relax{% 1008 | \ifx \@empty##2\expandafter\@secondoftwo 1009 | \else \expandafter\@firstoftwo \fi}% 1010 | \lst@temp#1#4\@empty\relax{#2}{#3}#4} 1011 | \gdef\lst@fmtCDef#1{\lst@fmtCDef@#1} 1012 | \gdef\lst@fmtCDef@#1#2#3#4#5#6#7{% 1013 | \lst@CDefIt#1{#2}{#3}% 1014 | {\lst@fmtIfNextCharIn{#5}{#4#2#3}{#6#4#2#3#7}}% 1015 | #4% 1016 | {}{}{}} 1017 | \gdef\lst@fmtCDefX#1{\lst@fmtCDefX@#1} 1018 | \gdef\lst@fmtCDefX@#1#2#3#4#5#6#7{% 1019 | \let#4#1% 1020 | \ifx\@empty#2\@empty 1021 | \def#1{\lst@fmtIfNextCharIn{#5}{#4}{#6#7}}% 1022 | \else \ifx\@empty#3\@empty 1023 | \def#1##1{% 1024 | \ifx##1#2% 1025 | \def\lst@next{\lst@fmtIfNextCharIn{#5}{#4##1}% 1026 | {#6#7}}% 1027 | \else 1028 | \def\lst@next{#4##1}% 1029 | \fi 1030 | \lst@next}% 1031 | \else 1032 | \def#1{% 1033 | \lst@IfNextCharsArg{#2#3}% 1034 | {\lst@fmtIfNextCharIn{#5}{\expandafter#4\lst@eaten}% 1035 | {#6#7}}% 1036 | {\expandafter#4\lst@eaten}}% 1037 | \fi \fi} 1038 | \gdef\lst@UseFormat#1{% 1039 | \def\lst@fmtwhole{#1}% 1040 | \lst@UseFormat@} 1041 | \gdef\lst@UseFormat@{% 1042 | \lst@fmtSplit\lst@fmtwhole,% 1043 | \let\lst@fmtwhole\lst@fmtb 1044 | \ifx\lst@fmta\@empty\else 1045 | \lst@fmtSplit\lst@fmta=% 1046 | \ifx\@empty\lst@fmta\else 1047 | \expandafter\lstKV@XOptArg\expandafter[\expandafter]% 1048 | \expandafter{\lst@fmtb}\lst@UseFormat@b 1049 | \fi 1050 | \fi 1051 | \ifx\lst@fmtwhole\@empty\else 1052 | \expandafter\lst@UseFormat@ 1053 | \fi} 1054 | \gdef\lst@UseFormat@b[#1]#2{% 1055 | \def\lst@fmtc{{#1}}\lst@lExtend\lst@fmtc{\expandafter{\lst@fmta}}% 1056 | \def\lst@fmtb{#2}% 1057 | \lst@fmtSplit\lst@fmtb\string 1058 | \ifx\@empty\lst@fmta 1059 | \lst@lAddTo\lst@fmtc{{}}% 1060 | \else 1061 | \lst@lExtend\lst@fmtc{\expandafter 1062 | {\expandafter\lst@fmtPre\expandafter{\lst@fmta}}}% 1063 | \fi 1064 | \ifx\@empty\lst@fmtb 1065 | \lst@lAddTo\lst@fmtc{{}}% 1066 | \else 1067 | \lst@lExtend\lst@fmtc{\expandafter 1068 | {\expandafter\lst@fmtPost\expandafter{\lst@fmtb}}}% 1069 | \fi 1070 | \expandafter\lst@UseFormat@c\lst@fmtc} 1071 | \gdef\lst@UseFormat@c#1#2#3#4{% 1072 | \lst@fmtIfIdentifier#2\relax 1073 | {\lst@fmtIdentifier{#2}% 1074 | \lst@if\else \PackageWarning{Listings}% 1075 | {Cannot drop identifier in format definition}% 1076 | \fi}% 1077 | {\lst@if 1078 | \lst@lAddTo\lst@fmtformat{\lst@CArgX#2\relax\lst@fmtCDef}% 1079 | \else 1080 | \lst@lAddTo\lst@fmtformat{\lst@CArgX#2\relax\lst@fmtCDefX}% 1081 | \fi 1082 | \lst@DefActive\lst@fmtc{#1}% 1083 | \lst@lExtend\lst@fmtformat{\expandafter{\lst@fmtc}{#3}{#4}}}} 1084 | \lst@AddToHook{SelectCharTable}{\lst@fmtformat} 1085 | \global\let\lst@fmtformat\@empty 1086 | \gdef\lst@fmtPre#1{% 1087 | \lst@PrintToken 1088 | \begingroup 1089 | \let\newline\lst@fmtEnsureNewLine 1090 | \let\space\lst@fmtEnsureSpace 1091 | \let\indent\lst@fmtIndent 1092 | \let\noindent\lst@fmtNoindent 1093 | #1% 1094 | \endgroup} 1095 | \gdef\lst@fmtPost#1{% 1096 | \global\let\lst@fmtPostOutput\@empty 1097 | \begingroup 1098 | \def\newline{\lst@AddTo\lst@fmtPostOutput\lst@fmtEnsureNewLine}% 1099 | \def\space{\aftergroup\lst@fmtEnsurePostSpace}% 1100 | \def\indent{\lst@AddTo\lst@fmtPostOutput\lst@fmtIndent}% 1101 | \def\noindent{\lst@AddTo\lst@fmtPostOutput\lst@fmtNoindent}% 1102 | \aftergroup\lst@PrintToken 1103 | #1% 1104 | \endgroup} 1105 | \lst@AddToHook{Init}{\global\let\lst@fmtPostOutput\@empty} 1106 | \lst@AddToHook{PostOutput} 1107 | {\lst@fmtPostOutput \global\let\lst@fmtPostOutput\@empty} 1108 | \gdef\lst@fmtEnsureSpace{% 1109 | \lst@ifwhitespace\else \expandafter\lst@ProcessSpace \fi} 1110 | \gdef\lst@fmtEnsurePostSpace{% 1111 | \lst@IfNextCharWhitespace{}{\lst@ProcessSpace}} 1112 | \lst@Key{fmtindent}{20pt}{\def\lst@fmtindent{#1}} 1113 | \newdimen\lst@fmtcurrindent 1114 | \lst@AddToHook{InitVars}{\global\lst@fmtcurrindent\z@} 1115 | \gdef\lst@fmtIndent{\global\advance\lst@fmtcurrindent\lst@fmtindent} 1116 | \gdef\lst@fmtNoindent{\global\advance\lst@fmtcurrindent-\lst@fmtindent} 1117 | \gdef\lst@fmtEnsureNewLine{% 1118 | \global\advance\lst@newlines\@ne 1119 | \global\advance\lst@newlinesensured\@ne 1120 | \lst@fmtignoretrue} 1121 | \lst@AddToAtTop\lst@DoNewLines{% 1122 | \ifnum\lst@newlines>\lst@newlinesensured 1123 | \global\advance\lst@newlines-\lst@newlinesensured 1124 | \fi 1125 | \global\lst@newlinesensured\z@} 1126 | \newcount\lst@newlinesensured % global 1127 | \lst@AddToHook{Init}{\global\lst@newlinesensured\z@} 1128 | \gdef\lst@fmtignoretrue{\let\lst@fmtifignore\iftrue} 1129 | \gdef\lst@fmtignorefalse{\let\lst@fmtifignore\iffalse} 1130 | \lst@AddToHook{InitVars}{\lst@fmtignorefalse} 1131 | \lst@AddToHook{Output}{\lst@fmtignorefalse} 1132 | \gdef\lst@fmtUseLostSpace{% 1133 | \lst@ifnewline \kern\lst@fmtcurrindent \global\lst@lostspace\z@ 1134 | \else 1135 | \lst@OldOLS 1136 | \fi} 1137 | \lst@AddToHook{Init} 1138 | {\lst@true 1139 | \ifx\lst@fmtformat\@empty \ifx\lst@fmt\@empty \lst@false \fi\fi 1140 | \lst@if 1141 | \let\lst@OldOLS\lst@OutputLostSpace 1142 | \let\lst@OutputLostSpace\lst@fmtUseLostSpace 1143 | \let\lst@ProcessSpace\lst@fmtProcessSpace 1144 | \fi} 1145 | \gdef\lst@fmtProcessSpace{% 1146 | \lst@ifletter 1147 | \lst@Output 1148 | \lst@fmtifignore\else 1149 | \lst@AppendOther\lst@outputspace 1150 | \fi 1151 | \else \lst@ifkeepspaces 1152 | \lst@AppendOther\lst@outputspace 1153 | \else \ifnum\lst@newlines=\z@ 1154 | \lst@AppendSpecialSpace 1155 | \else \ifnum\lst@length=\z@ 1156 | \global\advance\lst@lostspace\lst@width 1157 | \global\advance\lst@pos\m@ne 1158 | \else 1159 | \lst@AppendSpecialSpace 1160 | \fi 1161 | \fi \fi \fi 1162 | \lst@whitespacetrue} 1163 | \lst@InstallTest{f} 1164 | \lst@fmt@list\lst@fmt \lst@gfmt@list\lst@gfmt 1165 | \lst@gfmt@wp 1166 | wd 1167 | \gdef\lst@fmt@list{\lst@fmt\lst@gfmt}\global\let\lst@fmt\@empty 1168 | \gdef\lst@gfmt@list{\lst@fmt\lst@gfmt}\global\let\lst@gfmt\@empty 1169 | \gdef\lst@gfmt@wp{% 1170 | \begingroup \let\lst@UM\@empty 1171 | \let\lst@PrintToken\@empty 1172 | \csname\@lst @fmt$\the\lst@token\endcsname 1173 | \endgroup} 1174 | \gdef\lst@fmtIdentifier#1#2#3#4{% 1175 | \lst@DefOther\lst@fmta{#2}\edef\lst@fmt{\lst@fmt,\lst@fmta}% 1176 | \@namedef{\@lst @fmt$\lst@fmta}{#3#4}} 1177 | \lst@EndAspect 1178 | \lst@BeginAspect{labels} 1179 | \lst@Key{numbers}{none}{% 1180 | \let\lst@PlaceNumber\@empty 1181 | \lstKV@SwitchCases{#1}% 1182 | {none&\\% 1183 | left&\def\lst@PlaceNumber{\llap{\normalfont 1184 | \lst@numberstyle{\thelstnumber}\kern\lst@numbersep}}\\% 1185 | right&\def\lst@PlaceNumber{ 1186 | \addtocounter{lineno}{1} 1187 | \zsavepos{tmp\thelineno} 1188 | \llap{\normalfont\lst@numberstyle{ 1189 | \ifthenelse{\zposx{tmp\thelineno}<8000000}{\thelstnumber}{} 1190 | }\kern\lst@numbersep 1191 | } 1192 | \rlap{\normalfont\kern\linewidth \kern\lst@numbersep 1193 | \lst@numberstyle{ 1194 | \ifthenelse{\zposx{tmp\thelineno}<8000000}{}{\thelstnumber} 1195 | } 1196 | }}% 1197 | }{\PackageError{Listings}{Numbers #1 unknown}\@ehc}} 1198 | \lst@Key{numberstyle}{}{\def\lst@numberstyle{#1}} 1199 | \lst@Key{numbersep}{10pt}{\def\lst@numbersep{#1}} 1200 | \lst@Key{stepnumber}{1}{\def\lst@stepnumber{#1\relax}} 1201 | \lst@AddToHook{EmptyStyle}{\let\lst@stepnumber\@ne} 1202 | \lst@Key{numberblanklines}{true}[t] 1203 | {\lstKV@SetIf{#1}\lst@ifnumberblanklines} 1204 | \lst@Key{numberfirstline}{f}[t]{\lstKV@SetIf{#1}\lst@ifnumberfirstline} 1205 | \gdef\lst@numberfirstlinefalse{\let\lst@ifnumberfirstline\iffalse} 1206 | \lst@Key{firstnumber}{auto}{% 1207 | \lstKV@SwitchCases{#1}% 1208 | {auto&\let\lst@firstnumber\@undefined\\% 1209 | last&\let\lst@firstnumber\c@lstnumber 1210 | }{\def\lst@firstnumber{#1\relax}}} 1211 | \lst@AddToHook{PreSet}{\let\lst@advancenumber\z@} 1212 | \lst@AddToHook{PreInit} 1213 | {\ifx\lst@firstnumber\@undefined 1214 | \def\lst@firstnumber{\lst@lineno}% 1215 | \fi} 1216 | \gdef\lst@SetFirstNumber{% 1217 | \ifx\lst@firstnumber\@undefined 1218 | \@tempcnta 0\csname\@lst no@\lst@intname\endcsname\relax 1219 | \ifnum\@tempcnta=\z@ \@tempcnta\lst@firstline 1220 | \else \lst@nololtrue \fi 1221 | \advance\@tempcnta\lst@advancenumber 1222 | \edef\lst@firstnumber{\the\@tempcnta\relax}% 1223 | \fi} 1224 | \gdef\lst@SaveFirstNumber{% 1225 | \expandafter\xdef 1226 | \csname\@lst no\ifx\lst@intname\@empty @ \else @\lst@intname\fi 1227 | \endcsname{\the\c@lstnumber}} 1228 | \newcounter{lstnumber}% \global 1229 | \newcounter{lineno} 1230 | \global\c@lstnumber\@ne % init 1231 | \renewcommand*\thelstnumber{\@arabic\c@lstnumber} 1232 | \lst@AddToHook{EveryPar} 1233 | {\global\advance\c@lstnumber\lst@advancelstnum 1234 | \global\advance\c@lstnumber\m@ne \refstepcounter{lstnumber}% 1235 | \lst@SkipOrPrintLabel}% 1236 | \global\let\lst@advancelstnum\@ne 1237 | \lst@AddToHook{Init}{\def\@currentlabel{\thelstnumber}} 1238 | \lst@AddToHook{InitVars} 1239 | {\global\c@lstnumber\lst@firstnumber 1240 | \global\advance\c@lstnumber\lst@advancenumber 1241 | \global\advance\c@lstnumber-\lst@advancelstnum} 1242 | \lst@AddToHook{ExitVars} 1243 | {\global\advance\c@lstnumber\lst@advancelstnum} 1244 | \AtBeginDocument{% 1245 | \def\theHlstnumber{\ifx\lst@@caption\@empty \lst@neglisting 1246 | \else \thelstlisting \fi 1247 | .\thelstnumber}} 1248 | \newcount\lst@skipnumbers % \global 1249 | \lst@AddToHook{Init} 1250 | {\ifnum \z@>\lst@stepnumber 1251 | \let\lst@advancelstnum\m@ne 1252 | \edef\lst@stepnumber{-\lst@stepnumber}% 1253 | \fi 1254 | \ifnum \z@<\lst@stepnumber 1255 | \global\lst@skipnumbers\lst@firstnumber 1256 | \global\divide\lst@skipnumbers\lst@stepnumber 1257 | \global\multiply\lst@skipnumbers-\lst@stepnumber 1258 | \global\advance\lst@skipnumbers\lst@firstnumber 1259 | \ifnum\lst@skipnumbers>\z@ 1260 | \global\advance\lst@skipnumbers -\lst@stepnumber 1261 | \fi 1262 | \else 1263 | \let\lst@SkipOrPrintLabel\relax 1264 | \fi} 1265 | \gdef\lst@SkipOrPrintLabel{% 1266 | \ifnum\lst@skipnumbers=\z@ 1267 | \global\advance\lst@skipnumbers-\lst@stepnumber\relax 1268 | \lst@PlaceNumber 1269 | \lst@numberfirstlinefalse 1270 | \else 1271 | \lst@ifnumberfirstline 1272 | \lst@PlaceNumber 1273 | \lst@numberfirstlinefalse 1274 | \fi 1275 | \fi 1276 | \global\advance\lst@skipnumbers\@ne}% 1277 | \lst@AddToHook{OnEmptyLine}{% 1278 | \lst@ifnumberblanklines\else \ifnum\lst@skipnumbers=\z@ 1279 | \global\advance\lst@skipnumbers-\lst@stepnumber\relax 1280 | \fi\fi} 1281 | \lst@EndAspect 1282 | \lst@BeginAspect{lineshape} 1283 | \lst@Key{xleftmargin}{\z@}{\def\lst@xleftmargin{#1}} 1284 | \lst@Key{xrightmargin}{\z@}{\def\lst@xrightmargin{#1}} 1285 | \lst@Key{resetmargins}{false}[t]{\lstKV@SetIf{#1}\lst@ifresetmargins} 1286 | \lst@AddToHook{BoxUnsafe}{\let\lst@xleftmargin\z@ 1287 | \let\lst@xrightmargin\z@} 1288 | \lst@AddToHook{TextStyle}{% 1289 | \let\lst@xleftmargin\z@ \let\lst@xrightmargin\z@ 1290 | \let\lst@ifresetmargins\iftrue} 1291 | \lst@Key{linewidth}\linewidth{\def\lst@linewidth{#1}} 1292 | \lst@AddToHook{PreInit}{\linewidth\lst@linewidth\relax} 1293 | \gdef\lst@parshape{% 1294 | \parshape\@ne \@totalleftmargin \linewidth} 1295 | \lst@AddToHook{Init} 1296 | {\lst@ifresetmargins 1297 | \advance\linewidth\@totalleftmargin 1298 | \advance\linewidth\rightmargin 1299 | \@totalleftmargin\z@ 1300 | \fi 1301 | \advance\linewidth-\lst@xleftmargin 1302 | \advance\linewidth-\lst@xrightmargin 1303 | \advance\@totalleftmargin\lst@xleftmargin\relax} 1304 | \lst@Key{lineskip}{\z@}{\def\lst@lineskip{#1\relax}} 1305 | \lst@AddToHook{Init} 1306 | {\parskip\z@ 1307 | \ifdim\z@=\lst@lineskip\else 1308 | \@tempdima\baselineskip 1309 | \advance\@tempdima\lst@lineskip 1310 | \multiply\@tempdima\@cclvi 1311 | \divide\@tempdima\baselineskip\relax 1312 | \multiply\@tempdima\@cclvi 1313 | \edef\baselinestretch{\strip@pt\@tempdima}% 1314 | \selectfont 1315 | \fi} 1316 | \lst@Key{breaklines}{false}[t]{\lstKV@SetIf{#1}\lst@ifbreaklines} 1317 | \lst@Key{breakindent}{20pt}{\def\lst@breakindent{#1}} 1318 | \lst@Key{breakautoindent}{t}[t]{\lstKV@SetIf{#1}\lst@ifbreakautoindent} 1319 | \lst@Key{breakatwhitespace}{false}[t]% 1320 | {\lstKV@SetIf{#1}\lst@ifbreakatwhitespace} 1321 | \lst@Key{prebreak}{}{\def\lst@prebreak{#1}} 1322 | \lst@Key{postbreak}{}{\def\lst@postbreak{#1}} 1323 | \lst@AddToHook{Init} 1324 | {\lst@ifbreaklines 1325 | \hbadness\@M \pretolerance\@M 1326 | \@rightskip\@flushglue \rightskip\@rightskip % \raggedright 1327 | \leftskip\z@skip \parindent\z@ 1328 | \def\lst@parshape{\parshape\tw@ \@totalleftmargin\linewidth 1329 | \lst@breakshape}% 1330 | \else 1331 | \let\lst@discretionary\@empty 1332 | \fi} 1333 | \lst@AddToHook{OnNewLine} 1334 | {\lst@ifbreaklines \lst@breakNewLine \fi} 1335 | \gdef\lst@discretionary{% 1336 | \lst@ifbreakatwhitespace 1337 | \lst@ifwhitespace \lst@@discretionary \fi 1338 | \else 1339 | \lst@@discretionary 1340 | \fi}% 1341 | \gdef\lst@@discretionary{% 1342 | \discretionary{\let\space\lst@spacekern\lst@prebreak}% 1343 | {\llap{\lsthk@EveryLine 1344 | \kern\lst@breakcurrindent \kern-\@totalleftmargin}% 1345 | \let\space\lst@spacekern\lst@postbreak}{}} 1346 | \lst@AddToHook{PostOutput}{\lst@discretionary} 1347 | \gdef\lst@spacekern{\kern\lst@width} 1348 | \gdef\lst@breakNewLine{% 1349 | \@tempdima\lst@breakindent\relax 1350 | \lst@ifbreakautoindent \advance\@tempdima\lst@lostspace \fi 1351 | \@tempdimc-\@tempdima \advance\@tempdimc\linewidth 1352 | \advance\@tempdima\@totalleftmargin 1353 | \xdef\lst@breakshape{\noexpand\lst@breakcurrindent \the\@tempdimc}% 1354 | \xdef\lst@breakcurrindent{\the\@tempdima}} 1355 | \global\let\lst@breakcurrindent\z@ % init 1356 | \gdef\lst@breakshape{\@totalleftmargin \linewidth} 1357 | \gdef\lst@breakProcessOther#1{\lst@ProcessOther#1\lst@OutputOther} 1358 | \lst@AddToHook{SelectCharTable} 1359 | {\lst@ifbreaklines \lst@Def{`)}{\lst@breakProcessOther)}\fi} 1360 | \lst@EndAspect 1361 | \lst@BeginAspect[lineshape]{frames} 1362 | \lst@Key{framexleftmargin}{\z@}{\def\lst@framexleftmargin{#1}} 1363 | \lst@Key{framexrightmargin}{\z@}{\def\lst@framexrightmargin{#1}} 1364 | \lst@Key{framextopmargin}{\z@}{\def\lst@framextopmargin{#1}} 1365 | \lst@Key{framexbottommargin}{\z@}{\def\lst@framexbottommargin{#1}} 1366 | \lst@Key{backgroundcolor}{}{\def\lst@bkgcolor{#1}} 1367 | \lst@Key{fillcolor}{}{\def\lst@fillcolor{#1}} 1368 | \lst@Key{rulecolor}{}{\def\lst@rulecolor{#1}} 1369 | \lst@Key{rulesepcolor}{}{\def\lst@rulesepcolor{#1}} 1370 | \lst@AddToHook{Init}{% 1371 | \ifx\lst@fillcolor\@empty 1372 | \let\lst@fillcolor\lst@bkgcolor 1373 | \fi 1374 | \ifx\lst@rulesepcolor\@empty 1375 | \let\lst@rulesepcolor\lst@fillcolor 1376 | \fi} 1377 | \lst@Key{rulesep}{2pt}{\def\lst@rulesep{#1}} 1378 | \lst@Key{framerule}{.4pt}{\def\lst@framerulewidth{#1}} 1379 | \lst@Key{framesep}{3pt}{\def\lst@frametextsep{#1}} 1380 | \lst@Key{frameshape}{}{% 1381 | \let\lst@xrulecolor\@empty 1382 | \lstKV@FourArg{#1}% 1383 | {\uppercase{\def\lst@frametshape{##1}}% 1384 | \uppercase{\def\lst@framelshape{##2}}% 1385 | \uppercase{\def\lst@framershape{##3}}% 1386 | \uppercase{\def\lst@framebshape{##4}}% 1387 | \let\lst@ifframeround\iffalse 1388 | \lst@IfSubstring R\lst@frametshape{\let\lst@ifframeround\iftrue}{}% 1389 | \lst@IfSubstring R\lst@framebshape{\let\lst@ifframeround\iftrue}{}% 1390 | \def\lst@frame{##1##2##3##4}}} 1391 | \lst@Key{frameround}\relax 1392 | {\uppercase{\def\lst@frameround{#1}}% 1393 | \expandafter\lstframe@\lst@frameround ffff\relax} 1394 | \global\let\lst@frameround\@empty 1395 | \lst@Key{frame}\relax{% 1396 | \let\lst@xrulecolor\@empty 1397 | \lstKV@SwitchCases{#1}% 1398 | {none&\let\lst@frame\@empty\\% 1399 | leftline&\def\lst@frame{l}\\% 1400 | topline&\def\lst@frame{t}\\% 1401 | bottomline&\def\lst@frame{b}\\% 1402 | lines&\def\lst@frame{tb}\\% 1403 | single&\def\lst@frame{trbl}\\% 1404 | shadowbox&\def\lst@frame{tRBl}% 1405 | \def\lst@xrulecolor{\lst@rulesepcolor}% 1406 | \def\lst@rulesep{\lst@frametextsep}% 1407 | }{\def\lst@frame{#1}}% 1408 | \expandafter\lstframe@\lst@frameround ffff\relax} 1409 | \gdef\lstframe@#1#2#3#4#5\relax{% 1410 | \lst@IfSubstring T\lst@frame{\edef\lst@frame{t\lst@frame}}{}% 1411 | \lst@IfSubstring R\lst@frame{\edef\lst@frame{r\lst@frame}}{}% 1412 | \lst@IfSubstring B\lst@frame{\edef\lst@frame{b\lst@frame}}{}% 1413 | \lst@IfSubstring L\lst@frame{\edef\lst@frame{l\lst@frame}}{}% 1414 | \let\lst@frametshape\@empty \let\lst@framebshape\@empty 1415 | \lst@frameCheck 1416 | ltr\lst@framelshape\lst@frametshape\lst@framershape #4#1% 1417 | \lst@frameCheck 1418 | LTR\lst@framelshape\lst@frametshape\lst@framershape #4#1% 1419 | \lst@frameCheck 1420 | lbr\lst@framelshape\lst@framebshape\lst@framershape #3#2% 1421 | \lst@frameCheck 1422 | LBR\lst@framelshape\lst@framebshape\lst@framershape #3#2% 1423 | \let\lst@ifframeround\iffalse 1424 | \lst@IfSubstring R\lst@frametshape{\let\lst@ifframeround\iftrue}{}% 1425 | \lst@IfSubstring R\lst@framebshape{\let\lst@ifframeround\iftrue}{}% 1426 | \let\lst@framelshape\@empty \let\lst@framershape\@empty 1427 | \lst@IfSubstring L\lst@frame 1428 | {\def\lst@framelshape{YY}}% 1429 | {\lst@IfSubstring l\lst@frame{\def\lst@framelshape{Y}}{}}% 1430 | \lst@IfSubstring R\lst@frame 1431 | {\def\lst@framershape{YY}}% 1432 | {\lst@IfSubstring r\lst@frame{\def\lst@framershape{Y}}{}}} 1433 | \gdef\lst@frameCheck#1#2#3#4#5#6#7#8{% 1434 | \lst@IfSubstring #1\lst@frame 1435 | {\if #7T\def#4{R}\else \def#4{Y}\fi}% 1436 | {\def#4{N}}% 1437 | \lst@IfSubstring #3\lst@frame 1438 | {\if #8T\def#6{R}\else \def#6{Y}\fi}% 1439 | {\def#6{N}}% 1440 | \lst@IfSubstring #2\lst@frame{\edef#5{#5#4Y#6}}{}} 1441 | \lst@AddToHook{TextStyle} 1442 | {\let\lst@frame\@empty 1443 | \let\lst@frametshape\@empty 1444 | \let\lst@framershape\@empty 1445 | \let\lst@framebshape\@empty 1446 | \let\lst@framelshape\@empty 1447 | \let\lst@bkgcolor\@empty} 1448 | \gdef\lst@frameMakeBoxV#1#2#3{% 1449 | \setbox#1\hbox{% 1450 | \color@begingroup \lst@rulecolor 1451 | \ifx\lst@framelshape\@empty 1452 | \else 1453 | \llap{% 1454 | \lst@frameBlock\lst@fillcolor\lst@frametextsep{#2}{#3}% 1455 | \kern\lst@framexleftmargin}% 1456 | \fi 1457 | \llap{\setbox\z@\hbox{\vrule\@width\z@\@height#2\@depth#3% 1458 | \lst@frameL}% 1459 | \rlap{\lst@frameBlock\lst@rulesepcolor{\wd\z@}% 1460 | {\ht\z@}{\dp\z@}}% 1461 | \box\z@ 1462 | \kern\lst@frametextsep\relax 1463 | \kern\lst@framexleftmargin}% 1464 | \rlap{\kern-\lst@framexleftmargin 1465 | \@tempdima\linewidth 1466 | \advance\@tempdima\lst@framexleftmargin 1467 | \advance\@tempdima\lst@framexrightmargin 1468 | \lst@frameBlock\lst@bkgcolor\@tempdima{#2}{#3}% 1469 | \ifx\lst@framershape\@empty 1470 | \kern\lst@frametextsep\relax 1471 | \else 1472 | \lst@frameBlock\lst@fillcolor\lst@frametextsep{#2}{#3}% 1473 | \fi 1474 | \setbox\z@\hbox{\vrule\@width\z@\@height#2\@depth#3% 1475 | \lst@frameR}% 1476 | \rlap{\lst@frameBlock\lst@rulesepcolor{\wd\z@}% 1477 | {\ht\z@}{\dp\z@}}% 1478 | \box\z@}% 1479 | \color@endgroup}} 1480 | \gdef\lst@frameBlock#1#2#3#4{% 1481 | \color@begingroup 1482 | #1% 1483 | \setbox\z@\hbox{\vrule\@height#3\@depth#4% 1484 | \ifx#1\@empty \@width\z@ \kern#2\relax 1485 | \else \@width#2\relax \fi}% 1486 | \box\z@ 1487 | \color@endgroup} 1488 | \gdef\lst@frameR{% 1489 | \expandafter\lst@frameR@\lst@framershape\relax 1490 | \kern-\lst@rulesep} 1491 | \gdef\lst@frameR@#1{% 1492 | \ifx\relax#1\@empty\else 1493 | \if #1Y\lst@framevrule \else \kern\lst@framerulewidth \fi 1494 | \kern\lst@rulesep 1495 | \expandafter\lst@frameR@b 1496 | \fi} 1497 | \gdef\lst@frameR@b#1{% 1498 | \ifx\relax#1\@empty 1499 | \else 1500 | \if #1Y\color@begingroup 1501 | \lst@xrulecolor 1502 | \lst@framevrule 1503 | \color@endgroup 1504 | \else 1505 | \kern\lst@framerulewidth 1506 | \fi 1507 | \kern\lst@rulesep 1508 | \expandafter\lst@frameR@ 1509 | \fi} 1510 | \gdef\lst@frameL{% 1511 | \kern-\lst@rulesep 1512 | \expandafter\lst@frameL@\lst@framelshape\relax} 1513 | \gdef\lst@frameL@#1{% 1514 | \ifx\relax#1\@empty\else 1515 | \kern\lst@rulesep 1516 | \if#1Y\lst@framevrule \else \kern\lst@framerulewidth \fi 1517 | \expandafter\lst@frameL@ 1518 | \fi} 1519 | \gdef\lst@frameH#1#2{% 1520 | \global\let\lst@framediml\z@ \global\let\lst@framedimr\z@ 1521 | \setbox\z@\hbox{}\@tempcntb\z@ 1522 | \expandafter\lst@frameH@\expandafter#1#2\relax\relax\relax 1523 | \@tempdimb\lst@frametextsep\relax 1524 | \advance\@tempdimb\lst@framerulewidth\relax 1525 | \@tempdimc-\@tempdimb 1526 | \advance\@tempdimc\ht\z@ 1527 | \advance\@tempdimc\dp\z@ 1528 | \setbox\z@=\hbox{% 1529 | \lst@frameHBkg\lst@fillcolor\@tempdimb\@firstoftwo 1530 | \if#1T\rlap{\raise\dp\@tempboxa\box\@tempboxa}% 1531 | \else\rlap{\lower\ht\@tempboxa\box\@tempboxa}\fi 1532 | \lst@frameHBkg\lst@rulesepcolor\@tempdimc\@secondoftwo 1533 | \advance\@tempdimb\ht\@tempboxa 1534 | \if#1T\rlap{\raise\lst@frametextsep\box\@tempboxa}% 1535 | \else\rlap{\lower\@tempdimb\box\@tempboxa}\fi 1536 | \rlap{\box\z@}% 1537 | }} 1538 | \gdef\lst@frameH@#1#2#3#4{% 1539 | \ifx\relax#4\@empty\else 1540 | \lst@frameh \@tempcntb#1#2#3#4% 1541 | \advance\@tempcntb\@ne 1542 | \expandafter\lst@frameH@\expandafter#1% 1543 | \fi} 1544 | \gdef\lst@frameHBkg#1#2#3{% 1545 | \setbox\@tempboxa\hbox{% 1546 | \kern-\lst@framexleftmargin 1547 | #3{\kern-\lst@framediml\relax}{\@tempdima\z@}% 1548 | \ifdim\lst@framediml>\@tempdimb 1549 | #3{\@tempdima\lst@framediml \advance\@tempdima-\@tempdimb 1550 | \lst@frameBlock\lst@rulesepcolor\@tempdima\@tempdimb\z@}% 1551 | {\kern-\lst@framediml 1552 | \advance\@tempdima\lst@framediml\relax}% 1553 | \fi 1554 | #3{\@tempdima\z@ 1555 | \ifx\lst@framelshape\@empty\else 1556 | \advance\@tempdima\@tempdimb 1557 | \fi 1558 | \ifx\lst@framershape\@empty\else 1559 | \advance\@tempdima\@tempdimb 1560 | \fi}% 1561 | {\ifdim\lst@framedimr>\@tempdimb 1562 | \advance\@tempdima\lst@framedimr\relax 1563 | \fi}% 1564 | \advance\@tempdima\linewidth 1565 | \advance\@tempdima\lst@framexleftmargin 1566 | \advance\@tempdima\lst@framexrightmargin 1567 | \lst@frameBlock#1\@tempdima#2\z@ 1568 | #3{\ifdim\lst@framedimr>\@tempdimb 1569 | \@tempdima-\@tempdimb 1570 | \advance\@tempdima\lst@framedimr\relax 1571 | \lst@frameBlock\lst@rulesepcolor\@tempdima\@tempdimb\z@ 1572 | \fi}{}% 1573 | }} 1574 | \gdef\lst@frameh#1#2#3#4#5{% 1575 | \lst@frameCalcDimA#1% 1576 | \lst@ifframeround \@getcirc\@tempdima \fi 1577 | \setbox\z@\hbox{% 1578 | \begingroup 1579 | \setbox\z@\hbox{% 1580 | \kern-\lst@framexleftmargin 1581 | \color@begingroup 1582 | \ifnum#1=\z@ \lst@rulecolor \else \lst@xrulecolor \fi 1583 | \lst@frameCornerX\llap{#2L}#3#1% 1584 | \ifdim\lst@framediml<\@tempdimb 1585 | \xdef\lst@framediml{\the\@tempdimb}% 1586 | \fi 1587 | \begingroup 1588 | \if#4Y\else \let\lst@framerulewidth\z@ \fi 1589 | \@tempdima\lst@framexleftmargin 1590 | \advance\@tempdima\lst@framexrightmargin 1591 | \advance\@tempdima\linewidth 1592 | \vrule\@width\@tempdima\@height\lst@framerulewidth \@depth\z@ 1593 | \endgroup 1594 | \lst@frameCornerX\rlap{#2R}#5#1% 1595 | \ifdim\lst@framedimr<\@tempdimb 1596 | \xdef\lst@framedimr{\the\@tempdimb}% 1597 | \fi 1598 | \color@endgroup}% 1599 | \if#2T\rlap{\raise\dp\z@\box\z@}% 1600 | \else\rlap{\lower\ht\z@\box\z@}\fi 1601 | \endgroup 1602 | \box\z@}} 1603 | \gdef\lst@frameCornerX#1#2#3#4{% 1604 | \setbox\@tempboxa\hbox{\csname\@lst @frame\if#3RR\fi #2\endcsname}% 1605 | \@tempdimb\wd\@tempboxa 1606 | \if #3R% 1607 | #1{\box\@tempboxa}% 1608 | \else 1609 | \if #3Y\expandafter#1\else 1610 | \@tempdimb\z@ \expandafter\vphantom \fi 1611 | {\box\@tempboxa}% 1612 | \fi} 1613 | \gdef\lst@frameCalcDimA#1{% 1614 | \@tempdima\lst@rulesep 1615 | \advance\@tempdima\lst@framerulewidth 1616 | \multiply\@tempdima#1\relax 1617 | \advance\@tempdima\lst@frametextsep 1618 | \advance\@tempdima\lst@framerulewidth 1619 | \multiply\@tempdima\tw@} 1620 | \lst@AddToHook{Init}{\lst@frameInit} 1621 | \newbox\lst@framebox 1622 | \gdef\lst@frameInit{% 1623 | \ifx\lst@framelshape\@empty \let\lst@frameL\@empty \fi 1624 | \ifx\lst@framershape\@empty \let\lst@frameR\@empty \fi 1625 | \def\lst@framevrule{\vrule\@width\lst@framerulewidth\relax}% 1626 | \lst@ifframeround 1627 | \lst@frameCalcDimA\z@ \@getcirc\@tempdima 1628 | \@tempdimb\@tempdima \divide\@tempdimb\tw@ 1629 | \advance\@tempdimb -\@wholewidth 1630 | \edef\lst@frametextsep{\the\@tempdimb}% 1631 | \edef\lst@framerulewidth{\the\@wholewidth}% 1632 | \lst@frameCalcDimA\@ne \@getcirc\@tempdima 1633 | \@tempdimb\@tempdima \divide\@tempdimb\tw@ 1634 | \advance\@tempdimb -\tw@\@wholewidth 1635 | \advance\@tempdimb -\lst@frametextsep 1636 | \edef\lst@rulesep{\the\@tempdimb}% 1637 | \fi 1638 | \lst@frameMakeBoxV\lst@framebox{\ht\strutbox}{\dp\strutbox}% 1639 | \def\lst@framelr{\copy\lst@framebox}% 1640 | \ifx\lst@frametshape\@empty\else 1641 | \lst@frameH T\lst@frametshape 1642 | \ifvoid\z@\else 1643 | \par\lst@parshape 1644 | \@tempdima-\baselineskip \advance\@tempdima\ht\z@ 1645 | \ifdim\prevdepth<\@cclvi\p@\else 1646 | \advance\@tempdima\prevdepth 1647 | \fi 1648 | \ifdim\@tempdima<\z@ 1649 | \vskip\@tempdima\vskip\lineskip 1650 | \fi 1651 | \noindent\box\z@\par 1652 | \lineskiplimit\maxdimen \lineskip\z@ 1653 | \fi 1654 | \lst@frameSpreadV\lst@framextopmargin 1655 | \fi} 1656 | \lst@AddToHook{EveryLine}{\lst@framelr} 1657 | \global\let\lst@framelr\@empty 1658 | \lst@AddToHook{DeInit} 1659 | {\ifx\lst@framebshape\@empty\else \lst@frameExit \fi} 1660 | \gdef\lst@frameExit{% 1661 | \lst@frameSpreadV\lst@framexbottommargin 1662 | \lst@frameH B\lst@framebshape 1663 | \ifvoid\z@\else 1664 | \everypar{}\par\lst@parshape\nointerlineskip\noindent\box\z@ 1665 | \fi} 1666 | \gdef\lst@frameSpreadV#1{% 1667 | \ifdim\z@=#1\else 1668 | \everypar{}\par\lst@parshape\nointerlineskip\noindent 1669 | \lst@frameMakeBoxV\z@{#1}{\z@}% 1670 | \box\z@ 1671 | \fi} 1672 | \gdef\lst@frameTR{% 1673 | \vrule\@width.5\@tempdima\@height\lst@framerulewidth\@depth\z@ 1674 | \kern-\lst@framerulewidth 1675 | \raise\lst@framerulewidth\hbox{% 1676 | \vrule\@width\lst@framerulewidth\@height\z@\@depth.5\@tempdima}} 1677 | \gdef\lst@frameBR{% 1678 | \vrule\@width.5\@tempdima\@height\lst@framerulewidth\@depth\z@ 1679 | \kern-\lst@framerulewidth 1680 | \vrule\@width\lst@framerulewidth\@height.5\@tempdima\@depth\z@} 1681 | \gdef\lst@frameBL{% 1682 | \vrule\@width\lst@framerulewidth\@height.5\@tempdima\@depth\z@ 1683 | \kern-\lst@framerulewidth 1684 | \vrule\@width.5\@tempdima\@height\lst@framerulewidth\@depth\z@} 1685 | \gdef\lst@frameTL{% 1686 | \raise\lst@framerulewidth\hbox{% 1687 | \vrule\@width\lst@framerulewidth\@height\z@\@depth.5\@tempdima}% 1688 | \kern-\lst@framerulewidth 1689 | \vrule\@width.5\@tempdima\@height\lst@framerulewidth\@depth\z@} 1690 | \gdef\lst@frameRoundT{% 1691 | \setbox\@tempboxa\hbox{\@circlefnt\char\@tempcnta}% 1692 | \ht\@tempboxa\lst@framerulewidth 1693 | \box\@tempboxa} 1694 | \gdef\lst@frameRoundB{% 1695 | \setbox\@tempboxa\hbox{\@circlefnt\char\@tempcnta}% 1696 | \dp\@tempboxa\z@ 1697 | \box\@tempboxa} 1698 | \gdef\lst@frameRTR{% 1699 | \hb@xt@.5\@tempdima{\kern-\lst@framerulewidth 1700 | \kern.5\@tempdima \lst@frameRoundT \hss}} 1701 | \gdef\lst@frameRBR{% 1702 | \hb@xt@.5\@tempdima{\kern-\lst@framerulewidth 1703 | \advance\@tempcnta\@ne \kern.5\@tempdima \lst@frameRoundB \hss}} 1704 | \gdef\lst@frameRBL{% 1705 | \advance\@tempcnta\tw@ \lst@frameRoundB 1706 | \kern-.5\@tempdima} 1707 | \gdef\lst@frameRTL{% 1708 | \advance\@tempcnta\thr@@\lst@frameRoundT 1709 | \kern-.5\@tempdima} 1710 | \lst@EndAspect 1711 | \lst@BeginAspect[keywords]{make} 1712 | \lst@NewMode\lst@makemode 1713 | \lst@AddToHook{Output}{% 1714 | \ifnum\lst@mode=\lst@makemode 1715 | \ifx\lst@thestyle\lst@gkeywords@sty 1716 | \lst@makekeytrue 1717 | \fi 1718 | \fi} 1719 | \gdef\lst@makekeytrue{\let\lst@ifmakekey\iftrue} 1720 | \gdef\lst@makekeyfalse{\let\lst@ifmakekey\iffalse} 1721 | \global\lst@makekeyfalse % init 1722 | \lst@Key{makemacrouse}f[t]{\lstKV@SetIf{#1}\lst@ifmakemacrouse} 1723 | \gdef\lst@MakeSCT{% 1724 | \lst@ifmakemacrouse 1725 | \lst@ReplaceInput{$(}{% 1726 | \lst@PrintToken 1727 | \lst@EnterMode\lst@makemode{\lst@makekeyfalse}% 1728 | \lst@Merge{\lst@ProcessOther\$\lst@ProcessOther(}}% 1729 | \lst@ReplaceInput{)}{% 1730 | \ifnum\lst@mode=\lst@makemode 1731 | \lst@PrintToken 1732 | \begingroup 1733 | \lst@ProcessOther)% 1734 | \lst@ifmakekey 1735 | \let\lst@currstyle\lst@gkeywords@sty 1736 | \fi 1737 | \lst@OutputOther 1738 | \endgroup 1739 | \lst@LeaveMode 1740 | \else 1741 | \expandafter\lst@ProcessOther\expandafter)% 1742 | \fi}% 1743 | \else 1744 | \lst@ReplaceInput{$(}{\lst@ProcessOther\$\lst@ProcessOther(}% 1745 | \fi} 1746 | \lst@EndAspect 1747 | \lst@BeginAspect{0.21} 1748 | \lst@Key{labelstyle}{}{\def\lst@numberstyle{#1}} 1749 | \lst@Key{labelsep}{10pt}{\def\lst@numbersep{#1}} 1750 | \lst@Key{labelstep}{0}{% 1751 | \ifnum #1=\z@ \KV@lst@numbers{none}% 1752 | \else \KV@lst@numbers{left}\fi 1753 | \def\lst@stepnumber{#1\relax}} 1754 | \lst@Key{firstlabel}\relax{\def\lst@firstnumber{#1\relax}} 1755 | \lst@Key{advancelabel}\relax{\def\lst@advancenumber{#1\relax}} 1756 | \let\c@lstlabel\c@lstnumber 1757 | \lst@AddToHook{Init}{\def\thelstnumber{\thelstlabel}} 1758 | \newcommand*\thelstlabel{\@arabic\c@lstlabel} 1759 | \lst@Key{first}\relax{\def\lst@firstline{#1\relax}} 1760 | \lst@Key{last}\relax{\def\lst@lastline{#1\relax}} 1761 | \lst@Key{framerulewidth}{.4pt}{\def\lst@framerulewidth{#1}} 1762 | \lst@Key{framerulesep}{2pt}{\def\lst@rulesep{#1}} 1763 | \lst@Key{frametextsep}{3pt}{\def\lst@frametextsep{#1}} 1764 | \lst@Key{framerulecolor}{}{\lstKV@OptArg[]{#1}% 1765 | {\ifx\@empty##2\@empty 1766 | \let\lst@rulecolor\@empty 1767 | \else 1768 | \ifx\@empty##1\@empty 1769 | \def\lst@rulecolor{\color{##2}}% 1770 | \else 1771 | \def\lst@rulecolor{\color[##1]{##2}}% 1772 | \fi 1773 | \fi}} 1774 | \lst@Key{backgroundcolor}{}{\lstKV@OptArg[]{#1}% 1775 | {\ifx\@empty##2\@empty 1776 | \let\lst@bkgcolor\@empty 1777 | \else 1778 | \ifx\@empty##1\@empty 1779 | \def\lst@bkgcolor{\color{##2}}% 1780 | \else 1781 | \def\lst@bkgcolor{\color[##1]{##2}}% 1782 | \fi 1783 | \fi}} 1784 | \lst@Key{framespread}{\z@}{\def\lst@framespread{#1}} 1785 | \lst@AddToHook{PreInit} 1786 | {\@tempdima\lst@framespread\relax \divide\@tempdima\tw@ 1787 | \edef\lst@framextopmargin{\the\@tempdima}% 1788 | \let\lst@framexrightmargin\lst@framextopmargin 1789 | \let\lst@framexbottommargin\lst@framextopmargin 1790 | \advance\@tempdima\lst@xleftmargin\relax 1791 | \edef\lst@framexleftmargin{\the\@tempdima}} 1792 | \newdimen\lst@innerspread \newdimen\lst@outerspread 1793 | \lst@Key{spread}{\z@,\z@}{\lstKV@CSTwoArg{#1}% 1794 | {\lst@innerspread##1\relax 1795 | \ifx\@empty##2\@empty 1796 | \divide\lst@innerspread\tw@\relax 1797 | \lst@outerspread\lst@innerspread 1798 | \else 1799 | \lst@outerspread##2\relax 1800 | \fi}} 1801 | \lst@AddToHook{BoxUnsafe}{\lst@outerspread\z@ \lst@innerspread\z@} 1802 | \lst@Key{wholeline}{false}[t]{\lstKV@SetIf{#1}\lst@ifresetmargins} 1803 | \lst@Key{indent}{\z@}{\def\lst@xleftmargin{#1}} 1804 | \lst@AddToHook{PreInit} 1805 | {\lst@innerspread=-\lst@innerspread 1806 | \lst@outerspread=-\lst@outerspread 1807 | \ifodd\c@page \advance\lst@innerspread\lst@xleftmargin 1808 | \else \advance\lst@outerspread\lst@xleftmargin \fi 1809 | \ifodd\c@page 1810 | \edef\lst@xleftmargin{\the\lst@innerspread}% 1811 | \edef\lst@xrightmargin{\the\lst@outerspread}% 1812 | \else 1813 | \edef\lst@xleftmargin{\the\lst@outerspread}% 1814 | \edef\lst@xrightmargin{\the\lst@innerspread}% 1815 | \fi} 1816 | \lst@Key{defaultclass}\relax{\def\lst@classoffset{#1}} 1817 | \lst@Key{stringtest}\relax{}% dummy 1818 | \lst@Key{outputpos}\relax{\lst@outputpos#1\relax\relax} 1819 | \lst@Key{stringspaces}\relax[t]{\lstKV@SetIf{#1}\lst@ifshowstringspaces} 1820 | \lst@Key{visiblespaces}\relax[t]{\lstKV@SetIf{#1}\lst@ifshowspaces} 1821 | \lst@Key{visibletabs}\relax[t]{\lstKV@SetIf{#1}\lst@ifshowtabs} 1822 | \lst@EndAspect 1823 | \lst@BeginAspect{fancyvrb} 1824 | \@ifundefined{FancyVerbFormatLine} 1825 | {\typeout{^^J% 1826 | ***^^J% 1827 | *** `listings.sty' needs `fancyvrb.sty' right now.^^J% 1828 | *** Please ensure its availability and try again.^^J% 1829 | ***^^J}% 1830 | \batchmode \@@end}{} 1831 | \gdef\lstFV@fancyvrb{% 1832 | \lst@iffancyvrb 1833 | \ifx\FancyVerbFormatLine\lstFV@FancyVerbFormatLine\else 1834 | \let\lstFV@FVFL\FancyVerbFormatLine 1835 | \let\FancyVerbFormatLine\lstFV@FancyVerbFormatLine 1836 | \fi 1837 | \else 1838 | \ifx\lstFV@FVFL\@undefined\else 1839 | \let\FancyVerbFormatLine\lstFV@FVFL 1840 | \let\lstFV@FVFL\@undefined 1841 | \fi 1842 | \fi} 1843 | \gdef\lstFV@VerbatimBegin{% 1844 | \ifx\FancyVerbFormatLine\lstFV@FancyVerbFormatLine 1845 | \lsthk@TextStyle \lsthk@BoxUnsafe 1846 | \lsthk@PreSet 1847 | \lst@activecharsfalse 1848 | \let\normalbaselines\relax 1849 | \xdef\lstFV@RestoreData{\noexpand\linewidth\the\linewidth\relax}% 1850 | \lst@Init\relax 1851 | \lst@ifresetmargins \advance\linewidth-\@totalleftmargin \fi 1852 | \lstFV@RestoreData 1853 | \everypar{}\global\lst@newlines\z@ 1854 | \lst@mode\lst@nomode \let\lst@entermodes\@empty 1855 | \lst@InterruptModes 1856 | %% D.G. modification begin - Nov. 25, 1998 1857 | \let\@noligs\relax 1858 | %% D.G. modification end 1859 | \fi} 1860 | \gdef\lstFV@VerbatimEnd{% 1861 | \ifx\FancyVerbFormatLine\lstFV@FancyVerbFormatLine 1862 | \global\setbox\lstFV@gtempboxa\box\@tempboxa 1863 | \global\let\@gtempa\FV@ProcessLine 1864 | \lst@mode\lst@Pmode 1865 | \lst@DeInit 1866 | \let\FV@ProcessLine\@gtempa 1867 | \setbox\@tempboxa\box\lstFV@gtempboxa 1868 | \par 1869 | \fi} 1870 | \newbox\lstFV@gtempboxa 1871 | \lst@AddTo\FV@VerbatimBegin\lstFV@VerbatimBegin 1872 | \lst@AddToAtTop\FV@VerbatimEnd\lstFV@VerbatimEnd 1873 | \lst@AddTo\FV@LVerbatimBegin\lstFV@VerbatimBegin 1874 | \lst@AddToAtTop\FV@LVerbatimEnd\lstFV@VerbatimEnd 1875 | \lst@AddTo\FV@BVerbatimBegin\lstFV@VerbatimBegin 1876 | \lst@AddToAtTop\FV@BVerbatimEnd\lstFV@VerbatimEnd 1877 | \gdef\lstFV@FancyVerbFormatLine#1{% 1878 | \let\lst@arg\@empty \lst@FVConvert#1\@nil 1879 | \global\lst@newlines\z@ 1880 | \vtop{\noindent\lst@parshape 1881 | \lst@ReenterModes 1882 | \lst@arg \lst@PrintToken\lst@EOLUpdate\lsthk@InitVarsBOL 1883 | \lst@InterruptModes}} 1884 | \lst@Key{fvcmdparams}% 1885 | {\overlay\@ne}% 1886 | {\def\lst@FVcmdparams{,#1}} 1887 | \lst@Key{morefvcmdparams}\relax{\lst@lAddTo\lst@FVcmdparams{,#1}} 1888 | \gdef\lst@FVConvert{\@tempcnta\z@ \lst@FVConvertO@}% 1889 | \gdef\lst@FVConvertO@{% 1890 | \ifcase\@tempcnta 1891 | \expandafter\futurelet\expandafter\@let@token 1892 | \expandafter\lst@FVConvert@@ 1893 | \else 1894 | \expandafter\lst@FVConvertO@a 1895 | \fi} 1896 | \gdef\lst@FVConvertO@a#1{% 1897 | \lst@lAddTo\lst@arg{{#1}}\advance\@tempcnta\m@ne 1898 | \lst@FVConvertO@}% 1899 | \gdef\lst@FVConvert@@{% 1900 | \ifcat\noexpand\@let@token\bgroup \expandafter\lst@FVConvertArg 1901 | \else \expandafter\lst@FVConvert@ \fi} 1902 | \gdef\lst@FVConvertArg#1{% 1903 | {\let\lst@arg\@empty 1904 | \lst@FVConvert#1\@nil 1905 | \global\let\@gtempa\lst@arg}% 1906 | \lst@lExtend\lst@arg{\expandafter{\@gtempa\lst@PrintToken}}% 1907 | \lst@FVConvert} 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 | \else 1913 | \lccode`\~=`#1\lowercase{\lst@lAddTo\lst@arg~}% 1914 | \fi 1915 | \expandafter\lst@FVConvert 1916 | \fi} 1917 | \gdef\lst@FVConvert@#1{% 1918 | \ifx \@nil#1\else 1919 | \if\relax\noexpand#1% 1920 | \lst@lAddTo\lst@arg{\lst@OutputLostSpace\lst@PrintToken#1}% 1921 | \def\lst@temp##1,#1##2,##3##4\relax{% 1922 | \ifx##3\@empty \else \@tempcnta##2\relax \fi}% 1923 | \expandafter\lst@temp\lst@FVcmdparams,#1\z@,\@empty\relax 1924 | \else 1925 | \lccode`\~=`#1\lowercase{\lst@lAddTo\lst@arg~}% 1926 | \fi 1927 | \expandafter\lst@FVConvertO@ 1928 | \fi} 1929 | \lst@EndAspect 1930 | \lst@BeginAspect[keywords,comments,strings,language]{lgrind} 1931 | \gdef\lst@LGGetNames#1:#2\relax{% 1932 | \lst@NormedDef\lstlang@{#1}\lst@ReplaceInArg\lstlang@{|,}% 1933 | \def\lst@arg{:#2}} 1934 | \gdef\lst@LGGetValue#1{% 1935 | \lst@false 1936 | \def\lst@temp##1:#1##2##3\relax{% 1937 | \ifx\@empty##2\else \lst@LGGetValue@{#1}\fi} 1938 | \expandafter\lst@temp\lst@arg:#1\@empty\relax} 1939 | \gdef\lst@LGGetValue@#1{% 1940 | \lst@true 1941 | \def\lst@temp##1:#1##2:##3\relax{% 1942 | \@ifnextchar=\lst@LGGetValue@@{\lst@LGGetValue@@=}##2\relax 1943 | \def\lst@arg{##1:##3}}% 1944 | \expandafter\lst@temp\lst@arg\relax} 1945 | \gdef\lst@LGGetValue@@=#1\relax{\def\lst@LGvalue{#1}} 1946 | \gdef\lst@LGGetComment#1#2{% 1947 | \let#2\@empty 1948 | \lst@LGGetValue{#1b}% 1949 | \lst@if 1950 | \let#2\lst@LGvalue 1951 | \lst@LGGetValue{#1e}% 1952 | \ifx\lst@LGvalue\lst@LGEOL 1953 | \edef\lstlang@{\lstlang@,commentline={#2}}% 1954 | \let#2\@empty 1955 | \else 1956 | \edef#2{{#2}{\lst@LGvalue}}% 1957 | \fi 1958 | \fi} 1959 | \gdef\lst@LGGetString#1#2{% 1960 | \lst@LGGetValue{#1b}% 1961 | \lst@if 1962 | \let#2\lst@LGvalue 1963 | \lst@LGGetValue{#1e}% 1964 | \ifx\lst@LGvalue\lst@LGEOL 1965 | \edef\lstlang@{\lstlang@,morestringizer=[l]{#2}}% 1966 | \else 1967 | \ifx #2\lst@LGvalue 1968 | \edef\lstlang@{\lstlang@,morestringizer=[d]{#2}}% 1969 | \else 1970 | \edef\lst@temp{\lst@LGe#2}% 1971 | \ifx \lst@temp\lst@LGvalue 1972 | \edef\lstlang@{\lstlang@,morestringizer=[b]{#2}}% 1973 | \else 1974 | \PackageWarning{Listings}% 1975 | {String #2...\lst@LGvalue\space not supported}% 1976 | \fi 1977 | \fi 1978 | \fi 1979 | \fi} 1980 | \gdef\lst@LGDefLang{% 1981 | \lst@LGReplace 1982 | \let\lstlang@\empty 1983 | \lst@LGGetValue{kw}% 1984 | \lst@if 1985 | \lst@ReplaceInArg\lst@LGvalue{{ },}% 1986 | \edef\lstlang@{\lstlang@,keywords={\lst@LGvalue}}% 1987 | \fi 1988 | \lst@LGGetValue{oc}% 1989 | \lst@if 1990 | \edef\lstlang@{\lstlang@,sensitive=f}% 1991 | \fi 1992 | \lst@LGGetValue{id}% 1993 | \lst@if 1994 | \edef\lstlang@{\lstlang@,alsoletter=\lst@LGvalue}% 1995 | \fi 1996 | \lst@LGGetComment a\lst@LGa 1997 | \lst@LGGetComment c\lst@LGc 1998 | \ifx\lst@LGa\@empty 1999 | \ifx\lst@LGc\@empty\else 2000 | \edef\lstlang@{\lstlang@,singlecomment=\lst@LGc}% 2001 | \fi 2002 | \else 2003 | \ifx\lst@LGc\@empty 2004 | \edef\lstlang@{\lstlang@,singlecomment=\lst@LGa}% 2005 | \else 2006 | \edef\lstlang@{\lstlang@,doublecomment=\lst@LGc\lst@LGa}% 2007 | \fi 2008 | \fi 2009 | \lst@LGGetString s\lst@LGa 2010 | \lst@LGGetString l\lst@LGa 2011 | \lst@LGGetValue{tc}% 2012 | \lst@if 2013 | \edef\lstlang@{\lstlang@,lgrindef=\lst@LGvalue}% 2014 | \fi 2015 | \expandafter\xdef\csname\@lst LGlang@\lst@language@\endcsname 2016 | {\noexpand\lstset{\lstlang@}}% 2017 | \lst@ReplaceInArg\lst@arg{{: :}:}\let\lst@LGvalue\@empty 2018 | \expandafter\lst@LGDroppedCaps\lst@arg\relax\relax 2019 | \ifx\lst@LGvalue\@empty\else 2020 | \PackageWarningNoLine{Listings}{Ignored capabilities for 2021 | \space `\lst@language@' are\MessageBreak\lst@LGvalue}% 2022 | \fi} 2023 | \gdef\lst@LGDroppedCaps#1:#2#3{% 2024 | \ifx#2\relax 2025 | \lst@RemoveCommas\lst@LGvalue 2026 | \else 2027 | \edef\lst@LGvalue{\lst@LGvalue,#2#3}% 2028 | \expandafter\lst@LGDroppedCaps 2029 | \fi} 2030 | \begingroup 2031 | \catcode`\/=0 2032 | \lccode`\z=`\:\lccode`\y=`\^\lccode`\x=`\$\lccode`\v=`\| 2033 | \catcode`\\=12\relax 2034 | /lowercase{% 2035 | /gdef/lst@LGReplace{/lst@ReplaceInArg/lst@arg 2036 | {{\:}{z }{\^}{y}{\$}{x}{\|}{v}{ \ }{ }{:\ :}{:}{\ }{ }{\(}({\)})}} 2037 | /gdef/lst@LGe{\e} 2038 | } 2039 | /endgroup 2040 | \gdef\lst@LGRead#1\par{% 2041 | \lst@LGGetNames#1:\relax 2042 | \def\lst@temp{endoflanguagedefinitions}% 2043 | \ifx\lstlang@\lst@temp 2044 | \let\lst@next\endinput 2045 | \else 2046 | \expandafter\lst@IfOneOf\lst@language@\relax\lstlang@ 2047 | {\lst@LGDefLang \let\lst@next\endinput}% 2048 | {\let\lst@next\lst@LGRead}% 2049 | \fi 2050 | \lst@next} 2051 | \lst@Key{lgrindef}\relax{% 2052 | \lst@NormedDef\lst@language@{#1}% 2053 | \begingroup 2054 | \@ifundefined{lstLGlang@\lst@language@}% 2055 | {\everypar{\lst@LGRead}% 2056 | \catcode`\\=12\catcode`\{=12\catcode`\}=12\catcode`\%=12% 2057 | \catcode`\#=14\catcode`\$=12\catcode`\^=12\catcode`\_=12\relax 2058 | \input{\lstlgrindeffile}% 2059 | }{}% 2060 | \endgroup 2061 | \@ifundefined{lstLGlang@\lst@language@}% 2062 | {\PackageError{Listings}% 2063 | {LGrind language \lst@language@\space undefined}% 2064 | {The language is not loadable. \@ehc}}% 2065 | {\lsthk@SetLanguage 2066 | \csname\@lst LGlang@\lst@language@\endcsname}} 2067 | \@ifundefined{lstlgrindeffile} 2068 | {\lst@UserCommand\lstlgrindeffile{lgrindef.}}{} 2069 | \lst@EndAspect 2070 | \lst@BeginAspect[keywords]{hyper} 2071 | \lst@Key{hyperanchor}\hyper@@anchor{\let\lst@hyperanchor#1} 2072 | \lst@Key{hyperlink}\hyperlink{\let\lst@hyperlink#1} 2073 | \lst@InstallKeywords{h}{hyperref}{}\relax{} 2074 | {\begingroup 2075 | \let\lst@UM\@empty \xdef\@gtempa{\the\lst@token}% 2076 | \endgroup 2077 | \lst@GetFreeMacro{lstHR@\@gtempa}% 2078 | \global\expandafter\let\lst@freemacro\@empty 2079 | \@tempcntb\@tempcnta \advance\@tempcntb\m@ne 2080 | \edef\lst@alloverstyle##1{% 2081 | \let\noexpand\lst@alloverstyle\noexpand\@empty 2082 | \noexpand\smash{\raise\baselineskip\hbox 2083 | {\noexpand\lst@hyperanchor{lst.\@gtempa\the\@tempcnta}% 2084 | {\relax}}}% 2085 | \ifnum\@tempcnta=\z@ ##1\else 2086 | \noexpand\lst@hyperlink{lst.\@gtempa\the\@tempcntb}{##1}% 2087 | \fi}% 2088 | } 2089 | od 2090 | \lst@EndAspect 2091 | \endinput 2092 | %% 2093 | %% End of file `lstmisc.sty'. 2094 | -------------------------------------------------------------------------------- /tex/main.tex: -------------------------------------------------------------------------------- 1 | \documentclass[9pt,landscape]{article} 2 | 3 | \input{format.tex} % formatting template 4 | 5 | \begin{document} 6 | 7 | \thispagestyle{empty} 8 | \null\vfill 9 | \begin{center} 10 | \Huge \textbf{南京大学ACM-ICPC集训队 \\calabash\_boy \\代码模版库} 11 | 12 | \vspace{1.5cm} 13 | 14 | \includegraphics[height=3cm]{njulogo.pdf} 15 | \end{center} 16 | \vfill 17 | \clearpage 18 | 19 | \begin{multicols}{2} 20 | \tableofcontents 21 | \end{multicols} 22 | 23 | \newpage 24 | 25 | \columnseprule=0.25pt 26 | 27 | \begin{multicols}{2} 28 | \input{code.tex} 29 | \end{multicols} 30 | 31 | \end{document} 32 | -------------------------------------------------------------------------------- /tex/njulogo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4thcalabash/code_library/249c95e5f3709512926acca3b9ecd4347f03dde3/tex/njulogo.pdf --------------------------------------------------------------------------------