summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/hagenberg-thesis/latex/hgblistings.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/hagenberg-thesis/latex/hgblistings.sty')
-rw-r--r--macros/latex/contrib/hagenberg-thesis/latex/hgblistings.sty406
1 files changed, 406 insertions, 0 deletions
diff --git a/macros/latex/contrib/hagenberg-thesis/latex/hgblistings.sty b/macros/latex/contrib/hagenberg-thesis/latex/hgblistings.sty
new file mode 100644
index 0000000000..cf4c5cd504
--- /dev/null
+++ b/macros/latex/contrib/hagenberg-thesis/latex/hgblistings.sty
@@ -0,0 +1,406 @@
+%% hgblistings.sty
+%% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses
+%% Author: Wilhelm Burger (wilhelm.burger@fh-hagenberg.at)
+%% GitHub: https://github.com/Digital-Media/HagenbergThesis
+%% File encoding: UTF-8
+
+\ProvidesPackage{hgblistings}[2019/05/11]
+
+\RequirePackage{ifthen}
+\RequirePackage{textcomp} %% required for upquote option
+
+\RequirePackage{xcolor}
+\definecolor{ListingsBackgroundColor}{gray}{0.95}
+
+\RequirePackage{listingsutf8}
+\lstset{
+inputencoding=utf8,
+extendedchars=true,
+basicstyle=\ttfamily\footnotesize,%
+keywordstyle=,%\ttfamily,%\bfseries,
+identifierstyle=,%\sffamily, %\bfseries
+commentstyle=\normalfont\itshape,%
+stringstyle=\ttfamily,%
+showstringspaces=false,%
+columns = flexible,% fixed,
+breaklines=true,%
+tabsize=2, %
+backgroundcolor=\color{ListingsBackgroundColor},
+xleftmargin=6mm,%
+frame=none,
+framexleftmargin=6mm,
+numbers=left,%
+numbersep=5pt,%
+numberstyle=\normalfont\scriptsize,%
+stepnumber=1,%
+numberfirstline=true,%
+numberblanklines=true,%
+texcl=false,% %important: read program comments as Latex content
+mathescape=false, %no mathescape by default
+upquote=true,%
+keepspaces=true,%
+}
+
+\RequirePackage[utf8]{inputenc}
+\lstset{literate=% to allow Umlauts etc. in listed code % utf8-change
+{Ö}{{\"O}}1
+{Ä}{{\"A}}1
+{Ü}{{\"U}}1
+{ü}{{\"u}}1
+{ä}{{\"a}}1
+{ö}{{\"o}}1
+{ß}{{\ss}}2
+}
+
+%% Code Environments ----------------------------------------------------------
+
+% Code Environment for C (ANSI)
+\lstnewenvironment{CCode}[1][]
+{\lstset{%
+ language=[ANSI]C,
+ escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
+ #1}}%
+{}
+
+
+% Code Environment for C++ (ISO)
+\lstnewenvironment{CppCode}[1][]
+{\lstset{%
+ language=[ISO]C++,
+ escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
+ #1}}%
+{}
+
+
+% Code Environment for C#
+\lstnewenvironment{CsCode}[1][]
+{\lstset{%
+ language=[Sharp]C,
+ escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
+ #1}}%
+{}
+
+% Language Definition and Code Environment for CSS
+\lstdefinelanguage{CSS}
+{ morekeywords={color,background,margin,padding,font,weight,display,position,top,%
+ left,right,bottom,list,style,border,size,white,space,min,width},
+ sensitive=false,
+ morecomment=[l]{//},
+ morecomment=[s]{/*}{*/},
+ morestring=[b]"
+}
+
+\lstnewenvironment{CssCode}[1][]
+{\lstset{%
+ language=CSS,
+ escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
+ #1}}%
+{}
+
+
+% Code Enivornmente for Generic Code
+\lstnewenvironment{GenericCode}[1][]
+{\lstset{%
+ language={},
+ keepspaces=true,
+ commentstyle={},
+ texcl=false,
+ escapechar={},
+ escapeinside={},
+ #1}}
+{}
+
+
+% Code Enivornmente for HTML
+\lstnewenvironment{HtmlCode}[1][]
+{\lstset{%
+ language=HTML,
+ escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
+ #1}}%
+{}
+
+
+% Code Enivornmente for Java
+\lstnewenvironment{JavaCode}[1][]
+{\lstset{%
+ language=Java,
+ escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
+ #1}}%
+{}
+
+
+% Language Definition and Code Environment for JavaScript
+\lstdefinelanguage{JavaScript}{
+ alsoletter={.},
+ keywords={arguments, await, break, case, catch, class, const, continue, debugger,%
+ default, delete, do, else, enum, eval, export, extends, false, finally, for,%
+ function, if, implements, import, in, instanceof, interface, let, new, null,%
+ package, private, protected, public, return, static, super, switch, this,%
+ throw, true, try, typeof, var, void, while, with, yield}, % JavaScript ES6 keywords
+ morekeywords={add, apply, args, Array, Array.from, Array.isArray, Array.of,%
+ Array.prototype, ArrayBuffer, bind, Boolean, call, charAt, charCodeAt, clear,%
+ codePointAt, concat, constructor, copyWithin, DataView, Date, Date.now,%
+ Date.parse, Date.prototype, Date.UTC, decodeURI, decodeURIComponent, encodeURI,%
+ encodeURIComponent, endsWith, entries, Error, Error.prototype, EvalError, every,%
+ false, fill, filter, find, findIndex, Float32Array, Float64Array, forEach,%
+ FulfillPromise, Function, Function.length, get, getDate, getDay, getFullYear,%
+ getHours, getMilliseconds, getMinutes, getMonth, getSeconds, getTime,%
+ getTimezoneOffset, getUTCDate, getUTCDay, getUTCFullYear, getUTCHours,%
+ getUTCMilliseconds, getUTCMinutes, getUTCMonth, getUTCSeconds, has,hasInstance,%
+ hasOwnProperty, ignoreCase, includes, indexOf, indexOf, Infinity, Int8Array,%
+ Int16Array, Int32Array, isConcatSpreadable, isFinite, isNaN, IsPromise,%
+ isPrototypeOf, Iterable, iterator, join, JSON, JSON.parse, JSON.stringify, keys,%
+ lastIndexOf, lastIndexOf, length, localeCompare, map, Map, match, match, Math,%
+ Math.abs , Math.acos, Math.acosh, Math.asin, Math.asinh, Math.atan, Math.atan2,%
+ Math.atanh, Math.cbrt, Math.ceil, Math.clz32, Math.cos, Math.cosh, Math.E,%
+ Math.exp, Math.expm1, Math.floor, Math.fround, Math.hypot, Math.imul, Math.LN2,%
+ Math.LN10, Math.log, Math.log1p, Math.log2, Math.LOG2E, Math.log10, Math.LOG10E,%
+ Math.max, Math.min, Math.PI, Math.pow, Math.random, Math.round, Math.sign,%
+ Math.sin, Math.sinh, Math.sqrt, Math.SQRT1_2, Math.SQRT2, Math.tan, Math.tanh,%
+ Math.trunc, message, multiline, name, NaN, NewPromiseCapability, next, normalize,%
+ null, Number, Number.EPSILON, Number.isFinite, Number.isInteger, Number.isNaN,%
+ Number.isSafeInteger, Number.MAX_SAFE_INTEGER, Number.MAX_VALUE,%
+ Number.MIN_SAFE_INTEGER, Number.MIN_VALUE, Number.NaN, Number.NEGATIVE_INFINITY,%
+ Number.parseFloat, Number.parseInt, Number.POSITIVE_INFINITY, Number.prototype,%
+ Object, Object, Object.assign, Object.create, Object.defineProperties,%
+ Object.defineProperty, Object.freeze, Object.getOwnPropertyDescriptor,%
+ Object.getOwnPropertyNames, Object.getOwnPropertySymbols, Object.getPrototypeOf,%
+ Object.is, Object.isExtensible, Object.isFrozen, Object.isSealed, Object.keys,%
+ Object.preventExtensions, Object.prototype, Object.seal, Object.setPrototypeOf,%
+ of, parseFloat, parseInt, pop, Promise, Promise.all , Promise.race,%
+ Promise.reject, Promise.resolve, PromiseReactionJob, propertyIsEnumerable,%
+ prototype, Proxy, Proxy.revocable , push, RangeError, reduce, reduceRight,%
+ ReferenceError, Reflect, Reflect.apply, Reflect.construct,%
+ Reflect.defineProperty, Reflect.deleteProperty, Reflect.enumerate, Reflect.get,%
+ Reflect.getOwnPropertyDescriptor, Reflect.getPrototypeOf, Reflect.has,%
+ Reflect.isExtensible, Reflect.ownKeys, Reflect.preventExtensions, Reflect.set,%
+ Reflect.setPrototypeOf, Reflection, RegExp, RegExp, RegExp.prototype, repeat,%
+ replace, replace, reverse, search, search, Set, set, setDate, setFullYear,%
+ setHours, setMilliseconds, setMinutes, setMonth, setSeconds, setTime, setUTCDate,%
+ setUTCFullYear, setUTCHours, setUTCMilliseconds, setUTCMinutes, setUTCMonth,%
+ setUTCSeconds, shift, slice, slice, some, sort, species, splice, split, split,%
+ startsWith, String, String.fromCharCode, String.fromCodePoint, String.raw,%
+ substring, Symbol, Symbol.for, Symbol.hasInstance, Symbol.isConcatSpreadable,%
+ Symbol.iterator, Symbol.keyFor, Symbol.match, Symbol.prototype, Symbol.replace,%
+ Symbol.replace, Symbol.search, Symbol.species, Symbol.split, Symbol.toPrimitive,%
+ Symbol.toStringTag, Symbol.unscopables, SyntaxError, then, toDateString,%
+ toExponential, toFixed, toISOString, toJSON, toLocaleDateString,%
+ toLocaleLowerCase, toLocaleString, toLocaleString, toLocaleString, toLocaleString,%
+ toLocaleTimeString, toLocaleUpperCase, toLowerCase, toPrecision, toPrimitive,%
+ toString, toStringTag, toTimeString, toUpperCase, toUTCString,%
+ TriggerPromiseReactions, trim, true, TypeError, Uint8Array, Uint8ClampedArray,%
+ Uint16Array, Uint32Array, undefined, unscopables, unshift, URIError, valueOf,%
+ WeakMap, WeakSet}, % JavaScript extended keywords
+ morekeywords={app.all, app.delete, app.disable, app.disabled, app.enable, app.enabled,%
+ app.engine, app.get, app.listen, app.locals, app.METHOD, app.mountpath, app.param,%
+ app.path, app.post, app.put, app.render, app.route, app.set, app.use, express,%
+ express.Router, express.static, req.acceptLanguages, req.accepts,%
+ req.acceptsCharsets, req.acceptsEncodings, req.app, req.baseUrl, req.body,%
+ req.cookies, req.fresh, req.get, req.hostname, req.ip, req.ips, req.is,%
+ req.method, req.originalUrl, req.param, req.params, req.path, req.protocol,%
+ req.query, req.range, req.route, req.secure, req.signedCookies, req.stale,%
+ req.subdomains, req.xhr, res.app, res.append, res.attachment, res.clearCookie,%
+ res.cookies, res.download, res.end, res.format, res.get, res.headersSent,%
+ res.json, res.jsonp, res.links, res.locals, res.location, res.redirect,%
+ res.render, res.sendFile, res.sendStatus, res.set, res.status, res.type, res.vary,%
+ router.all, router.METHOD, router.param, router.route, router.use}, % express keywords
+ morekeywords={agent.createConnection, agent.destroy, agent.freeSockets, agent.getName,%
+ agent.maxFreeSockets, agent.maxSockets, agent.requests, agent.sockets,%
+ certificate.exportChallenge, certificate.exportPublicKey, certificate.verifySpkac,%
+ child.channel, child.connected, child.disconnect, child.kill, child.pid,%
+ child.send, child.stderr, child.stdin, child.stdio, child.stdout,%
+ child_process.exec, child_process.execFile, child_process.execFileSync,%
+ child_process.execSync, child_process.fork, child_process.spawn,%
+ child_process.spawnSync, cipher.final, cipher.getAuthTag, cipher.setAAD,%
+ cipher.setAutoPadding, cipher.update, clearImmediate, clearImmediate,%
+ clearInterval, clearInterval, clearTimeout, clearTimeout, console, console.assert,%
+ console.dir, console.error, console.info, console.log, console.time,%
+ console.timeEnd, console.trace, console.warn, decipher.final, decipher.setAAD,%
+ decipher.setAuthTag, decipher.setAutoPadding, decipher.update, dgram.createSocket,%
+ dgram.createSocket, diffieHellman.computeSecret, diffieHellman.generateKeys,%
+ diffieHellman.getGenerator, diffieHellman.getPrime, diffieHellman.getPrivateKey,%
+ diffieHellman.getPublicKey, diffieHellman.setPrivateKey,%
+ diffieHellman.setPublicKey, diffieHellman.verifyError, dns.getServers,%
+ dns.getServers, dns.lookup, dns.lookup, dns.lookupService, dns.resolve,%
+ dns.resolve4, dns.resolve6, dns.resolveCname, dns.resolveMx, dns.resolveNaptr,%
+ dns.resolveNs, dns.resolvePtr, dns.resolveSoa, dns.resolveSrv, dns.resolveTxt,%
+ dns.reverse, dns.setServers, ecdh.computeSecret, ecdh.generateKeys,%
+ ecdh.getPrivateKey, ecdh.getPublicKey, ecdh.setPrivateKey, ecdh.setPublicKey,%
+ error.address, error.code, error.errno, error.message, error.path, error.port,%
+ error.stack, error.syscall, exports, fs.access, fs.accessSync, fs.appendFile,%
+ fs.appendFileSync, fs.chmod, fs.chmodSync, fs.chown, fs.chownSync, fs.close,%
+ fs.closeSync, fs.constants, fs.createReadStream, fs.createWriteStream,%
+ fs.exists, global, http.createServer, http.get, http.globalAgent,%
+ http.request, https.createServer, https.get, https.globalAgent, https.request,%
+ message.destroy, message.headers, message.httpVersion, message.method,%
+ message.rawHeaders, message.rawTrailers, message.setTimeout, message.socket,%
+ message.statusCode, message.statusMessage, message.trailers, message.url,%
+ module, module.children, module.exports, module.filename, module.id,%
+ module.loaded, module.parent, module.require, os.arch, os.constants,%
+ os.cpus, os.endianness, os.EOL, os.freemem, os.homedir, os.hostname,%
+ os.loadavg, os.networkInterfaces, os.platform, os.release, os.tmpdir,%
+ os.totalmem, os.type, os.uptime, os.userInfo, path.basename, path.delimiter,%
+ path.dirname, path.extname, path.format, path.isAbsolute, path.join,%
+ path.normalize, path.parse, path.posix, path.relative, path.resolve,%
+ path.sep, path.win32, process, process.abort, process.arch, process.argv,%
+ process.argv0, process.channel, process.chdir, process.config,%
+ process.connected, process.cpuUsage, process.cwd, process.disconnect,%
+ process.emitWarning, process.env, process.execArgv, process.execPath,%
+ process.exit, process.exitCode, process.getegid, process.geteuid,%
+ process.getgid, process.getgroups, process.getuid, process.hrtime,%
+ process.initgroups, process.kill, process.mainModule, process.memoryUsage,%
+ process.nextTick, process.pid, process.platform, process.release,%
+ process.send, process.setegid, process.seteuid, process.setgid,%
+ process.setgroups, process.setuid, process.stderr, process.stdin,%
+ process.stdout, process.title, process.umask, process.uptime,%
+ process.version, process.versions, querystring.escape, querystring.parse,%
+ querystring.stringify, querystring.unescape, r.clearLine, readable.pause,%
+ readable.pipe, readable.push, readable.push, readable.read, readable.read,%
+ readable.resume, readable.setEncoding, readable.unpipe, readable.unshift,%
+ readable.wrap, readable._read, readStream.bytesRead, readStream.isRaw,%
+ readStream.path, readStream.setRawMode, repl.start, request.abort,%
+ request.aborted, request.end, request.flushHeaders, request.setNoDelay,%
+ request.setSocketKeepAlive, request.setTimeout, request.write, require,%
+ require.cache, require.extensions, response.addTrailers, response.end,%
+ response.finished, response.getHeader, response.getHeaderNames,%
+ response.getHeaders, response.hasHeader, response.headersSent,%
+ response.removeHeader, response.sendDate, response.setHeader,%
+ response.setTimeout, response.statusCode, response.statusMessage,%
+ response.write, response.writeContinue, response.writeHead,%
+ rl.clearScreenDown, rl.close, rl.createInterface, rl.cursorTo,%
+ rl.emitKeypressEvents, rl.moveCursor, rl.pause, rl.prompt, rl.question,%
+ rl.resume, rl.setPrompt, rl.write, script.runInNewContext,%
+ script.runInThisContext, server.addContext, server.address,%
+ server.address, server.close, server.close, server.connections,%
+ server.getTicketKeys, server.listen, server.listen, server.setTicketKeys,%
+ server.setTimeout, server.setTimeout, server.timeout, server.timeout,%
+ setImmediate, setInterval, setTimeout, socket.addMembership,%
+ socket.address, socket.bind, socket.bind, socket.close,%
+ socket.dropMembership, socket.ref, socket.send, socket.setBroadcast,%
+ socket.setMulticastLoopback, socket.setMulticastTTL, socket.setTTL,%
+ socket.unref, stream.Readable, stringDecoder.end, stringDecoder.write,%
+ timeout.ref, timeout.unref, tls.connect, tls.createSecureContext,%
+ tls.createServer, tls.getCiphers, tlsSocket.address,%
+ tlsSocket.authorizationError, tlsSocket.authorized, tlsSocket.encrypted,%
+ tlsSocket.getCipher, tlsSocket.getEphemeralKeyInfo,%
+ tlsSocket.getPeerCertificate, tlsSocket.getProtocol, tlsSocket.getSession,%
+ tlsSocket.getTLSTicket, tlsSocket.localAddress, tlsSocket.localPort,%
+ tlsSocket.remoteAddress, tlsSocket.remoteFamily, tlsSocket.remotePort,%
+ tlsSocket.renegotiate, tlsSocket.setMaxSendFragment, transform._flush,%
+ transform._transform, util.debuglog, util.deprecate, util.format,%
+ util.inherits, util.inspect, v8.getHeapStatistics, v8.setFlagsFromString,%
+ vm.createContext, vm.isContext, vm.runInContext, vm.runInDebugContext,%
+ vm.runInNewContext, vm.runInThisContext, watcher.close, worker.disconnect,%
+ worker.exitedAfterDisconnect, worker.id, worker.isConnected,%
+ worker.isDead, worker.kill, worker.process, worker.send, worker.suicide,%
+ writable.cork, writable.end, writable.setDefaultEncoding, writable.write,%
+ writeStream.bytesWritten, writeStream.columns, writeStream.path,%
+ writeStream.rows, zlib, zlib.createGunzip, zlib.createGzip, zlib.createInflate,%
+ zlib.createInflateRaw, zlib.createUnzip, zlib.deflate, zlib.deflateRaw,%
+ zlib.deflateRawSync, zlib.deflateSync, zlib.gunzip, zlib.gunzipSync,%
+ zlib.gzip, zlib.gzipSync, zlib.inflate, zlib.inflateRaw, zlib.inflateRawSync,%
+ zlib.inflateSync, zlib.unzip, zlib.unzipSync, __dirname, __filename}, % Node.js keywords
+ morekeywords={assert, assert.deepEqual, assert.deepStrictEqual,%
+ assert.doesNotThrow, assert.equal, assert.fail, assert.ifError,%
+ assert.notDeepEqual, assert.notDeepStrictEqual, assert.notEqual,%
+ assert.notStrictEqual, assert.ok, assert.strictEqual, assert.throws, describe,%
+ toBe, it, xdescribe, beforeEach, afterEach, beforeAll, afterAll, expect, it,%
+ xit, xdiscribe, pending, and.callThrough, and.returnValue, and.returnValues,%
+ and.callFake, and.throwError, and.stub, .not, .calls.any, .calls.count,%
+ .calls.argsFor, .calls.allArgs, .calls.all, .calls.mostRecent, .calls.first,%
+ .calls.reset, jasmine.createSpy, jasmine.createSpyObj, jasmine.any,%
+ jasmine.anything, jasmine.objectContaining, jasmine.arrayContaining,%
+ jasmine.stringMatching, asymmetricMatch, jasmine.clock, .not.toBeTruthy,%
+ .toBeTruthy, .not.toBeFalsy, .toBeFalsy, .not.toBeDefined .toBeDefined,%
+ .not.toBeNull .toBeNull, .not.toEqual .toEqual, .not.toBeCloseTo .toBeCloseTo,%
+ .not.toContain, .toContain, .not.toMatch, .toMatch, .not.toBeGreaterThan,%
+ .toBeGreaterThan, .not.toBeLessThan, .toBeLessThan, .toThrow, .not.toThrow,%
+ .toBeNull, .not.toBeNull, .toBeDefined, .not.toBeDefined}, % Node.js Assert, Jasmine, ... keywords
+ sensitive=true,
+ morestring=[b]",
+ morestring=[d]',
+ morestring=[s]{`}{`},
+ morecomment=[l]{//},
+ morecomment=[s]{/*}{*/},
+ morecomment=[s]{/**}{*/}
+}
+
+\lstnewenvironment{JsCode}[1][]
+{\lstset{%
+ language=JavaScript,
+ escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
+ #1}}%
+{}
+
+
+% Code Environment for LaTeX
+\lstnewenvironment{LaTeXCode}[1][] % code environment for Latex
+{\lstset{%
+ language=[LaTeX]TeX,
+ escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
+ #1}}%
+{}
+
+
+% Code Environment for Objective-C
+\lstnewenvironment{ObjCCode}[1][]
+{\lstset{%
+ language=[Objective]C,
+ escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
+ #1}}%
+{}
+
+
+% Code Environment for PHP
+\lstnewenvironment{PhpCode}[1][]
+{\lstset{%
+ language=PHP,
+ escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
+ #1}}%
+{}
+
+
+% Language Definition and Code Environment for Swift
+\lstdefinelanguage{Swift}
+{ keywords=[1]{typealias,true, false,catch,private,internal,public,func,protocol,%
+ optional,return,nil,catch,switch,let,as,var,if,in,for,while,where,do,else,case,%
+ break,import,class,struct,enum,override,super,required,designated,convenience},
+ keywords=[2]{String,Int,Double,Float},
+ sensitive=true,
+ morecomment=[l]{//},
+ morecomment=[s]{/*}{*/},
+ morestring=[b]',
+ morestring=[b]"
+}
+
+\lstnewenvironment{SwiftCode}[1][]
+{\lstset{%
+ language=Swift,
+ escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
+ #1}}%
+{}
+
+
+% Code Environment for XML
+\lstnewenvironment{XmlCode}[1][]
+{\lstset{%
+ language=XML,
+ escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
+ #1}}%
+{}
+
+
+% Disable the lstlisting environment (due to popular abuse)
+\newcommand{\@WarnLstlisting}{
+\GenericError{}{Package hgblistings Error: The 'lstlisting' environment is disabled}%
+{See the error note inserted in the document output for details.}{}%
+\begin{quote}
+\color{red}\textbf{NOTE:} The \texttt{lstlisting} environment has been deliberately disabled in this setup.
+Use \emph{inline code} (breakable and \emph{without} a caption) or create a \emph{float container} with
+\texttt{{\textbackslash}begin\{program\} \ldots {\textbackslash}end\{program\}} instead!
+See the \texttt{hgbthesis} tutorial for examples.
+\end{quote}%
+}
+\renewenvironment{lstlisting}[0]%
+{\@WarnLstlisting\expandafter\comment}%
+{\expandafter\endcomment}%