Support texlive PDF output

This commit is contained in:
Ludovic Dubost 2019-04-15 17:05:32 +02:00
parent 19d1efc69d
commit 12e32d974e
3204 changed files with 2112206 additions and 3 deletions

View File

@ -43,8 +43,9 @@ define([
'/common/latex/latex.js',
'css!/common/latex/css/katex.css',
'css!/common/latex/css/article.css',
'css!/common/latex/css/base.css'
'css!/common/latex/css/base.css',
'/common/latex/promise.js',
'/common/latex/pdftex.js',
], function (
$,
DiffMd,
@ -77,6 +78,10 @@ define([
'velocity',
'xml',
]);
var PDF_MODES = Object.freeze([
'stex',
]);
var $pdfButton;
var mkPrintButton = function (framework, $content, $print) {
var $printButton = framework._.sfCommon.createButton('print', true);
@ -331,7 +336,7 @@ define([
};
var mkFilePicker = function (framework, editor, evModeChange) {
evModeChange.reg(function (mode) {
evModeChange.reg(function (mode) {
if (MEDIA_TAG_MODES.indexOf(mode) !== -1) {
// Embedding is endabled
framework.setMediaTagEmbedder(function (mt) {
@ -344,6 +349,82 @@ define([
});
};
/*
var pdftex = new PDFTeX();
pdftex.set_TOTAL_MEMORY(80*1024*1024).then(function() {
pdftex.FS_createLazyFile('/', 'snowden.jpg', 'snowden.jpg', true, true);
pdftex.on_stdout = appendOutput;
pdftex.on_stderr = appendOutput;
var start_time = new Date().getTime();
pdftex.compile(source_code).then(function(pdf_dataurl) {
var end_time = new Date().getTime();
console.info("Execution time: " + (end_time-start_time)/1000+' sec');
showLoadingIndicator(false);
if(pdf_dataurl === false)
return;
showOpenButton(true);
window.location.href = "#open_pdf";
document.getElementById("open_pdf_btn").focus();
});
});
}
*/
var pdfOutput = function(msg) {
console.log("PDF compile: " + msg);
}
var mkPDFMaker = function (framework, editor, evModeChange) {
evModeChange.reg(function (mode) {
if (PDF_MODES.indexOf(mode) !== -1) {
if (!$pdfButton) {
$pdfButton = framework._.sfCommon.createButton('pdf', true);
$pdfButton.click(function () {
var source = editor.getValue();
// console.log("PDF " + source);
try {
var pdftex = new PDFTeX();
pdftex.on_stdout = pdfOutput;
pdftex.on_stderr = pdfOutput;
pdftex.set_TOTAL_MEMORY(80*1024*1024).then(function() {
pdftex.FS_createLazyFile('/', 'snowden.jpg', 'snowden.jpg', true, true);
console.log("PDF launch compile");
pdftex.compile(source).then(function(pdf_dataurl) {
console.log("PDF end compile opening window");
console.log(pdf_dataurl);
var link = document.createElement("a");
link.download = "file.pdf";
link.href = pdf_dataurl;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
delete link;
});
console.log("PDF end launch compile");
});
console.log("PDF end prelaunch");
} catch (e) {
console.log("Error outputing pdf: " + e);
}
});
framework._.toolbar.$drawer.append($pdfButton);
} else {
$pdfButton.show();
}
} else {
if ($pdfButton)
$pdfButton.hide();
}
});
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -366,6 +447,9 @@ define([
evModeChange.reg(previewPane.modeChange);
evModeChange.reg(markdownTb.modeChange);
// Add pdf in stex mode
mkPDFMaker(framework, editor, evModeChange);
CodeMirror.mkIndentSettings(framework._.cpNfInner.metadataMgr);
CodeMirror.init(framework.localChange, framework._.title, framework._.toolbar);
mkFilePicker(framework, editor, evModeChange);

View File

@ -785,6 +785,12 @@ define([
'class': "fa fa-print cp-toolbar-icon-print",
}).append($('<span>', {'class': 'cp-toolbar-drawer-element'}).text(Messages.printText));
break;
case 'pdf':
button = $('<button>', {
title: Messages.pdfButtonTitle2,
'class': "fa fa-file-pdf-o cp-toolbar-icon-pdf",
}).append($('<span>', {'class': 'cp-toolbar-drawer-element'}).text(Messages.pdfText));
break;
case 'history':
if (!AppConfig.enableHistory) {
button = $('<span>');

File diff suppressed because one or more lines are too long

174
www/common/latex/pdftex.js Normal file
View File

@ -0,0 +1,174 @@
var PDFTeX = function(opt_workerPath) {
if (!opt_workerPath) {
opt_workerPath = '/common/latex/pdftex-worker.js';
}
var worker = new Worker(opt_workerPath);
var self = this;
var initialized = false;
self.on_stdout = function(msg) {
console.log(msg);
}
self.on_stderr = function(msg) {
console.log(msg);
}
worker.onmessage = function(ev) {
var data = JSON.parse(ev.data);
var msg_id;
if(!('command' in data))
console.log("missing command!", data);
switch(data['command']) {
case 'ready':
onready.done(true);
break;
case 'stdout':
case 'stderr':
self['on_'+data['command']](data['contents']);
break;
default:
//console.debug('< received', data);
msg_id = data['msg_id'];
if(('msg_id' in data) && (msg_id in promises)) {
promises[msg_id].done(data['result']);
}
else
console.warn('Unknown worker message '+msg_id+'!');
}
}
var onready = new promise.Promise();
var promises = [];
var chunkSize = undefined;
var sendCommand = function(cmd) {
var p = new promise.Promise();
var msg_id = promises.push(p)-1;
onready.then(function() {
cmd['msg_id'] = msg_id;
//console.debug('> sending', cmd);
worker.postMessage(JSON.stringify(cmd));
});
return p;
};
var determineChunkSize = function() {
var size = 1024;
var max = undefined;
var min = undefined;
var delta = size;
var success = true;
var buf;
while(Math.abs(delta) > 100) {
if(success) {
min = size;
if(typeof(max) === 'undefined')
delta = size;
else
delta = (max-size)/2;
}
else {
max = size;
if(typeof(min) === 'undefined')
delta = -1*size/2;
else
delta = -1*(size-min)/2;
}
size += delta;
success = true;
try {
buf = String.fromCharCode.apply(null, new Uint8Array(size));
sendCommand({
command: 'test',
data: buf,
});
}
catch(e) {
success = false;
}
}
return size;
};
var createCommand = function(command) {
self[command] = function() {
var args = [].concat.apply([], arguments);
return sendCommand({
'command': command,
'arguments': args,
});
}
}
createCommand('FS_createDataFile'); // parentPath, filename, data, canRead, canWrite
createCommand('FS_readFile'); // filename
createCommand('FS_unlink'); // filename
createCommand('FS_createFolder'); // parent, name, canRead, canWrite
createCommand('FS_createPath'); // parent, name, canRead, canWrite
createCommand('FS_createLazyFile'); // parent, name, canRead, canWrite
createCommand('FS_createLazyFilesFromList'); // parent, list, parent_url, canRead, canWrite
createCommand('set_TOTAL_MEMORY'); // size
var curry = function(obj, fn, args) {
return function() {
return obj[fn].apply(obj, args);
}
}
self.compile = function(source_code) {
var p = new promise.Promise();
self.compileRaw(source_code).then(function(binary_pdf) {
if(binary_pdf === false)
return p.done(false);
pdf_dataurl = 'data:application/pdf;charset=binary;base64,' + window.btoa(binary_pdf);
return p.done(pdf_dataurl);
});
return p;
}
self.compileRaw = function(source_code) {
if(typeof(chunkSize) === "undefined")
chunkSize = determineChunkSize();
var commands;
if(initialized)
commands = [
curry(self, 'FS_unlink', ['/input.tex']),
];
else
commands = [
curry(self, 'FS_createDataFile', ['/', 'input.tex', source_code, true, true]),
curry(self, 'FS_createLazyFilesFromList', ['/', 'texlive.lst', './texlive', true, true]),
];
var sendCompile = function() {
initialized = true;
return sendCommand({
'command': 'run',
'arguments': ['-interaction=nonstopmode', '-output-format', 'pdf', 'input.tex'],
// 'arguments': ['-debug-format', '-output-format', 'pdf', '&latex', 'input.tex'],
});
};
var getPDF = function() {
console.log(arguments);
return self.FS_readFile('/input.pdf');
}
return promise.chain(commands)
.then(sendCompile)
.then(getPDF);
};
};

204
www/common/latex/promise.js Normal file
View File

@ -0,0 +1,204 @@
/*
* Copyright 2012-2013 (c) Pierre Duquesne <stackp@online.fr>
* Licensed under the New BSD License.
* https://github.com/stackp/promisejs
*/
(function(exports) {
function Promise() {
this._callbacks = [];
}
Promise.prototype.then = function(func, context) {
var p;
if (this._isdone) {
p = func.apply(context, this.result);
} else {
p = new Promise();
this._callbacks.push(function () {
var res = func.apply(context, arguments);
if (res && typeof res.then === 'function')
res.then(p.done, p);
});
}
return p;
};
Promise.prototype.done = function() {
this.result = arguments;
this._isdone = true;
for (var i = 0; i < this._callbacks.length; i++) {
this._callbacks[i].apply(null, arguments);
}
this._callbacks = [];
};
function join(promises) {
var p = new Promise();
var total = promises.length;
var numdone = 0;
var results = [];
function notifier(i) {
return function() {
numdone += 1;
results[i] = Array.prototype.slice.call(arguments);
if (numdone === total) {
p.done(results);
}
};
}
for (var i = 0; i < total; i++) {
promises[i].then(notifier(i));
}
return p;
}
function chain(funcs, args) {
var p = new Promise();
if (funcs.length === 0) {
p.done.apply(p, args);
} else {
funcs[0].apply(null, args).then(function() {
funcs.splice(0, 1);
chain(funcs, arguments).then(function() {
p.done.apply(p, arguments);
});
});
}
return p;
}
/*
* AJAX requests
*/
function _encode(data) {
var result = "";
if (typeof data === "string") {
result = data;
} else {
var e = encodeURIComponent;
for (var k in data) {
if (data.hasOwnProperty(k)) {
result += '&' + e(k) + '=' + e(data[k]);
}
}
}
return result;
}
function new_xhr() {
var xhr;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xhr;
}
function ajax(method, url, data, headers) {
var p = new Promise();
var xhr, payload;
data = data || {};
headers = headers || {};
try {
xhr = new_xhr();
} catch (e) {
p.done(promise.ENOXHR, "");
return p;
}
payload = _encode(data);
if (method === 'GET' && payload) {
url += '?' + payload;
payload = null;
}
xhr.open(method, url);
xhr.setRequestHeader('Content-type',
'application/x-www-form-urlencoded');
for (var h in headers) {
if (headers.hasOwnProperty(h)) {
xhr.setRequestHeader(h, headers[h]);
}
}
function onTimeout() {
xhr.abort();
p.done(promise.ETIMEOUT, "", xhr);
}
var timeout = promise.ajaxTimeout;
if (timeout) {
var tid = setTimeout(onTimeout, timeout);
}
xhr.onreadystatechange = function() {
if (timeout) {
clearTimeout(tid);
}
if (xhr.readyState === 4) {
var err = (!xhr.status ||
(xhr.status < 200 || xhr.status >= 300) &&
xhr.status !== 304);
p.done(err, xhr.responseText, xhr);
}
};
xhr.send(payload);
return p;
}
function _ajaxer(method) {
return function(url, data, headers) {
return ajax(method, url, data, headers);
};
}
var promise = {
Promise: Promise,
join: join,
chain: chain,
ajax: ajax,
get: _ajaxer('GET'),
post: _ajaxer('POST'),
put: _ajaxer('PUT'),
del: _ajaxer('DELETE'),
/* Error codes */
ENOXHR: 1,
ETIMEOUT: 2,
/**
* Configuration parameter: time in milliseconds after which a
* pending AJAX request is considered unresponsive and is
* aborted. Useful to deal with bad connectivity (e.g. on a
* mobile network). A 0 value disables AJAX timeouts.
*
* Aborted requests resolve the promise with a ETIMEOUT error
* code.
*/
ajaxTimeout: 0
};
window.promise = promise;
if (typeof define === 'function' && define.amd) {
/* AMD support */
define(function() {
return promise;
});
} else {
exports.promise = promise;
}
})(this);

3493
www/common/latex/texlive.lst Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,45 @@
$Id: LICENSE.CTAN 2212 2006-09-28 16:31:42Z karl $
COPYING CONDITIONS FOR CTAN SNAPSHOT:
A snapshot of the Comprehensive TeX Archive Network (CTAN) holdings is
taken from time to time and distributed on physical media. It may be
bundled with the TeX Live system, or distributed separately.
In any case, the licensing conditions of the packages in the CTAN
snapshot vary widely. In particular (and in contrast to TeX Live), not
all the software meets free software or open source criteria: some are
available only as binaries, others have restrictions on commercial
resale, and so on.
Furthermore, the creators of the CTAN snapshot have explicitly received
permission from some authors of software to include their material; this
software is in the ctan/nonfree/ subdirectory. (The nonfree area on the
CTAN servers, http://www.ctan.org/tex-archive/nonfree, contains much
more software that is not included here.) This permission does not
extend to any redistributors; you yourself must also contact such
authors with regards to your own distribution, or refrain from including
such software.
Thus, when redistributing the CTAN snapshot, you must be very careful
that you are not violating any license conditions. Since each situation
is different, we cannot offer any general advice.
To learn redistribution requirements, of course the licensing
information within the packages themselves is the final authority. For
aggregate information, we suggest checking the TeX Catalogue:
http://www.ctan.org/tex-archive/help/Catalogue/catalogue.html (or any
CTAN mirror). The Catalogue is also included in the CTAN snapshot in
ctan/help/Catalogue, but the online version will have updates.
You may also find the CTAN Search by License page helpful in this
regard: http://tug.ctan.org/cgi-bin/searchByLicense.py
If you believe any files have been included erroneously, please contact
us (references are given below).
If you have any questions or comments, please contact us.
Thanks for your interest in TeX.
CTAN maintainers mailing list: ctan@dante.de
CTAN home page: http://www.ctan.org/

View File

@ -0,0 +1,111 @@
$Id: LICENSE.TL 22793 2011-06-05 15:38:08Z karl $
COPYING CONDITIONS FOR TeX Live:
To the best of our knowledge, all software in the TeX Live distribution
is freely redistributable (libre, that is, not necessarily gratis),
within the Free Software Foundation's definition and the Debian Free
Software Guidelines. Where the two conflict, we generally follow the
FSF. If you find any non-free files included, please contact us
(references given at the end).
That said, TeX Live has neither a single copyright holder nor a single
license covering its entire contents, since it is a collection of many
independent packages. Therefore, you may copy, modify, and/or
redistribute software from TeX Live only if you comply with the
requirements placed thereon by the owners of the respective packages.
To most easily learn these requirements, we suggest checking the TeX
Catalogue at: http://www.ctan.org/tex-archive/help/Catalogue/ (or any
CTAN mirror). Of course the legal statements within the packages
themselves are the final authority.
In some cases, TeX Live is distributed with a snapshot of the CTAN
archive, which is entirely independent of and separable from TeX Live
itself. (The TeX Collection DVD is one example of this.) Please be
aware that the CTAN snapshot contains many files which are *not* freely
redistributable; see LICENSE.CTAN for more information.
GUIDELINES FOR REDISTRIBUTION:
In general, you may redistribute TeX Live, with or without modification,
for profit or not, according to the usual free software tenets. Here
are some general guidelines for doing this:
- If you make any changes to the TeX Live distribution or any
package it contains, besides complying with any licensing requirements,
you must prominently mention such changes in your modified distribution
so that users do not take your work for ours, and know to contact you,
not us, in case of questions or problems. A new top-level file
README.<yourwork> is a good place to describe the general situation.
- Especially (but not necessarily) if changes or additions are made, we
recommend a clearly different title, such as "<your work> DVD, based on
TeX Live YYYY", where YYYY is the year of TeX Live you are using. This
credits both our work and yours.
- You absolutely may *not* place your own copyright on the entire
distribution, since it is not your work. Statements such as "all rights
reserved" and "may not be reproduced" are especially reprehensible,
since they are antithetical to the free software principles under which
TeX Live is produced.
- You may use any cover or media label designs that you wish. Such
packaging and marketing details are not covered by any TeX Live license.
- Finally, we make the following requests (not legal requirements):
a) Acknowledging that TeX Live is developed as a joint effort by all TeX
user groups, and encouraging the user/reader to join their user group
of choice, as listed on the web page http://tug.org/usergroups.html.
b) Referencing the TeX Live home page: http://tug.org/texlive/
Such information may be placed on the label of your media, your cover,
and/or in accompanying text (for instance, in the acknowledgements
section of a book).
Finally, although it is again not a requirement, we'd like to invite any
redistributors to make a donation to the project, whether cash or
in-kind, for example via https://www.tug.org/donate/dev.html. Thanks.
If you have any questions or comments, *please* contact us. In general,
we appreciate being given the chance to review any TeX Live-related
material in advance of publication, simply to avoid mistakes. It is
much better to correct text on a CD label or in a book before thousands
of copies are made!
We are also happy to keep anyone planning a publication informed as to
our deadlines and progress. Just let us know. However, be aware that
TeX Live is produced entirely by volunteers, and no dates can be
guaranteed.
LICENSING FOR NEW PACKAGES:
Finally, we are often asked what license to use for new work. To be
considered for inclusion on TeX Live, a package must use a free software
license, such as the LaTeX Project Public License, the GNU General
Public License, the modified BSD license, etc. (Please use an existing
license instead of making up your own.) Furthermore, all sources must
be available, including for documentation files. Please see
http://tug.org/texlive/pkgcontrib.html for more information, and other
considerations.
Thanks for your interest in TeX.
- Karl Berry, for the TeX Live project
------------------------------------------------------------
TeX Live mailing list: http://lists.tug.org/tex-live
TeX Live home page: http://tug.org/tex-live/
The FSF's free software definition: http://www.gnu.org/philosophy/free-sw.html
Debian Free Software Guidelines: http://www.debian.org/intro/free
FSF commentary on existing licenses:
http://www.gnu.org/licenses/license-list.html
LPPL: http://latex-project.org/lppl.html or texmf-dist/doc/latex/base/lppl.txt
LPPL rationale: texmf-dist/doc/latex/base/modguide.pdf

View File

@ -0,0 +1,4 @@
For the introductory information to TeX Live, see the directories
readme-txt.dir (plain text files) or readme-html.dir/ (HTML files).
The material is available in several languages.

View File

@ -0,0 +1,5 @@
$Id: README.usergroups 10206 2008-08-09 13:39:09Z karl $
See http://tug.org/usergroups.html for a list of TeX user groups.
Many user groups are active, all over the world.
To support TeX Live and TeX in general, please join the user group near you!

View File

@ -0,0 +1,6 @@
selected_scheme scheme-basic
TEXDIR /home/thunder/emsdk_portable/texlive.js/texlive
TEXMFLOCAL /home/thunder/emsdk_portable/texlive.js/texlive/texmf-local
TEXMFSYSVAR /home/thunder/emsdk_portable/texlive.js/texlive/texmf-var
TEXMFSYSCONFIG /home/thunder/emsdk_portable/texlive.js/texlive/texmf-config
TEXMFVAR /home/thunder/emsdk_portable/texlive.js/home/texmf-var

View File

@ -0,0 +1,9 @@
TeX Live (http://tug.org/texlive) version 2015
This file is public domain. It is read by install-tl --version,
tlmgr --version, and texconfig conf, and a final line appended with
the precise version number by tl-update-images during a build.
The following blank line helps avoid confusing output when
used directly from svn, so don't delete it.

View File

@ -0,0 +1,5 @@
% ls-R -- filename database for kpathsea; do not change this line.
./:
.:
ls-R

View File

@ -0,0 +1,361 @@
% Copyright (C) 1988, 2010 Oren Patashnik.
% Unlimited copying and redistribution of this file are permitted if it
% is unmodified. Modifications (and their redistribution) are also
% permitted, as long as the resulting file is renamed.
@preamble{ "\newcommand{\noopsort}[1]{} "
# "\newcommand{\printfirst}[2]{#1} "
# "\newcommand{\singleletter}[1]{#1} "
# "\newcommand{\switchargs}[2]{#2#1} " }
@ARTICLE{article-minimal,
author = {L[eslie] A. Aamport},
title = {The Gnats and Gnus Document Preparation System},
journal = {\mbox{G-Animal's} Journal},
year = 1986,
}
@ARTICLE{article-full,
author = {L[eslie] A. Aamport},
title = {The Gnats and Gnus Document Preparation System},
journal = {\mbox{G-Animal's} Journal},
year = 1986,
volume = 41,
number = 7,
pages = "73+",
month = jul,
note = "This is a full ARTICLE entry",
}
The KEY field is here to override the KEY field in the journal being
cross referenced (so is the NOTE field, in addition to its imparting
information).
@ARTICLE{article-crossref,
crossref = {WHOLE-JOURNAL},
key = "",
author = {L[eslie] A. Aamport},
title = {The Gnats and Gnus Document Preparation System},
pages = "73+",
note = "This is a cross-referencing ARTICLE entry",
}
@ARTICLE{whole-journal,
key = "GAJ",
journal = {\mbox{G-Animal's} Journal},
year = 1986,
volume = 41,
number = 7,
month = jul,
note = {The entire issue is devoted to gnats and gnus
(this entry is a cross-referenced ARTICLE (journal))},
}
@INBOOK{inbook-minimal,
author = "Donald E. Knuth",
title = "Fundamental Algorithms",
publisher = "Addison-Wesley",
year = "{\noopsort{1973b}}1973",
chapter = "1.2",
}
@INBOOK{inbook-full,
author = "Donald E. Knuth",
title = "Fundamental Algorithms",
volume = 1,
series = "The Art of Computer Programming",
publisher = "Addison-Wesley",
address = "Reading, Massachusetts",
edition = "Second",
month = "10~" # jan,
year = "{\noopsort{1973b}}1973",
type = "Section",
chapter = "1.2",
pages = "10--119",
note = "This is a full INBOOK entry",
}
@INBOOK{inbook-crossref,
crossref = "whole-set",
title = "Fundamental Algorithms",
volume = 1,
series = "The Art of Computer Programming",
edition = "Second",
year = "{\noopsort{1973b}}1973",
type = "Section",
chapter = "1.2",
note = "This is a cross-referencing INBOOK entry",
}
@BOOK{book-minimal,
author = "Donald E. Knuth",
title = "Seminumerical Algorithms",
publisher = "Addison-Wesley",
year = "{\noopsort{1973c}}1981",
}
@BOOK{book-full,
author = "Donald E. Knuth",
title = "Seminumerical Algorithms",
volume = 2,
series = "The Art of Computer Programming",
publisher = "Addison-Wesley",
address = "Reading, Massachusetts",
edition = "Second",
month = "10~" # jan,
year = "{\noopsort{1973c}}1981",
note = "This is a full BOOK entry",
}
@BOOK{book-crossref,
crossref = "whole-set",
title = "Seminumerical Algorithms",
volume = 2,
series = "The Art of Computer Programming",
edition = "Second",
year = "{\noopsort{1973c}}1981",
note = "This is a cross-referencing BOOK entry",
}
@BOOK{whole-set,
author = "Donald E. Knuth",
publisher = "Addison-Wesley",
title = "The Art of Computer Programming",
series = "Four volumes",
year = "{\noopsort{1973a}}{\switchargs{--90}{1968}}",
note = "Seven volumes planned (this is a cross-referenced set of BOOKs)",
}
@BOOKLET{booklet-minimal,
key = "Kn{\printfirst{v}{1987}}",
title = "The Programming of Computer Art",
}
@BOOKLET{booklet-full,
author = "Jill C. Knvth",
title = "The Programming of Computer Art",
howpublished = "Vernier Art Center",
address = "Stanford, California",
month = feb,
year = 1988,
note = "This is a full BOOKLET entry",
}
@INCOLLECTION{incollection-minimal,
author = "Daniel D. Lincoll",
title = "Semigroups of Recurrences",
booktitle = "High Speed Computer and Algorithm Organization",
publisher = "Academic Press",
year = 1977,
}
@INCOLLECTION{incollection-full,
author = "Daniel D. Lincoll",
title = "Semigroups of Recurrences",
editor = "David J. Lipcoll and D. H. Lawrie and A. H. Sameh",
booktitle = "High Speed Computer and Algorithm Organization",
number = 23,
series = "Fast Computers",
chapter = 3,
type = "Part",
pages = "179--183",
publisher = "Academic Press",
address = "New York",
edition = "Third",
month = sep,
year = 1977,
note = "This is a full INCOLLECTION entry",
}
@INCOLLECTION{incollection-crossref,
crossref = "whole-collection",
author = "Daniel D. Lincoll",
title = "Semigroups of Recurrences",
pages = "179--183",
note = "This is a cross-referencing INCOLLECTION entry",
}
@BOOK{whole-collection,
editor = "David J. Lipcoll and D. H. Lawrie and A. H. Sameh",
title = "High Speed Computer and Algorithm Organization",
booktitle = "High Speed Computer and Algorithm Organization",
number = 23,
series = "Fast Computers",
publisher = "Academic Press",
address = "New York",
edition = "Third",
month = sep,
year = 1977,
note = "This is a cross-referenced BOOK (collection) entry",
}
@MANUAL{manual-minimal,
key = "Manmaker",
title = "The Definitive Computer Manual",
}
@MANUAL{manual-full,
author = "Larry Manmaker",
title = "The Definitive Computer Manual",
organization = "Chips-R-Us",
address = "Silicon Valley",
edition = "Silver",
month = apr # "-" # may,
year = 1986,
note = "This is a full MANUAL entry",
}
@MASTERSTHESIS{mastersthesis-minimal,
author = "{\'{E}}douard Masterly",
title = "Mastering Thesis Writing",
school = "Stanford University",
year = 1988,
}
@MASTERSTHESIS{mastersthesis-full,
author = "{\'{E}}douard Masterly",
title = "Mastering Thesis Writing",
school = "Stanford University",
type = "Master's project",
address = "English Department",
month = jun # "-" # aug,
year = 1988,
note = "This is a full MASTERSTHESIS entry",
}
@MISC{misc-minimal,
key = "Missilany",
note = "This is a minimal MISC entry",
}
@MISC{misc-full,
author = "Joe-Bob Missilany",
title = "Handing out random pamphlets in airports",
howpublished = "Handed out at O'Hare",
month = oct,
year = 1984,
note = "This is a full MISC entry",
}
@STRING{STOC-key = "OX{\singleletter{stoc}}"}
@STRING{ACM = "The OX Association for Computing Machinery"}
@STRING{STOC = " Symposium on the Theory of Computing"}
@INPROCEEDINGS{inproceedings-minimal,
author = "Alfred V. Oaho and Jeffrey D. Ullman and Mihalis Yannakakis",
title = "On Notions of Information Transfer in {VLSI} Circuits",
booktitle = "Proc. Fifteenth Annual ACM" # STOC,
year = 1983,
}
@INPROCEEDINGS{inproceedings-full,
author = "Alfred V. Oaho and Jeffrey D. Ullman and Mihalis Yannakakis",
title = "On Notions of Information Transfer in {VLSI} Circuits",
editor = "Wizard V. Oz and Mihalis Yannakakis",
booktitle = "Proc. Fifteenth Annual ACM" # STOC,
number = 17,
series = "All ACM Conferences",
pages = "133--139",
month = mar,
year = 1983,
address = "Boston",
organization = ACM,
publisher = "Academic Press",
note = "This is a full INPROCEDINGS entry",
}
@INPROCEEDINGS{inproceedings-crossref,
crossref = "whole-proceedings",
author = "Alfred V. Oaho and Jeffrey D. Ullman and Mihalis Yannakakis",
title = "On Notions of Information Transfer in {VLSI} Circuits",
organization = "",
pages = "133--139",
note = "This is a cross-referencing INPROCEEDINGS entry",
}
@PROCEEDINGS{proceedings-minimal,
key = STOC-key,
title = "Proc. Fifteenth Annual" # STOC,
year = 1983,
}
@PROCEEDINGS{proceedings-full,
editor = "Wizard V. Oz and Mihalis Yannakakis",
title = "Proc. Fifteenth Annual" # STOC,
number = 17,
series = "All ACM Conferences",
month = mar,
year = 1983,
address = "Boston",
organization = ACM,
publisher = "Academic Press",
note = "This is a full PROCEEDINGS entry",
}
@PROCEEDINGS{whole-proceedings,
key = STOC-key,
organization = ACM,
title = "Proc. Fifteenth Annual" # STOC,
address = "Boston",
year = 1983,
booktitle = "Proc. Fifteenth Annual ACM" # STOC,
note = "This is a cross-referenced PROCEEDINGS",
}
@PHDTHESIS{phdthesis-minimal,
author = "F. Phidias Phony-Baloney",
title = "Fighting Fire with Fire: Festooning {F}rench Phrases",
school = "Fanstord University",
year = 1988,
}
@PHDTHESIS{phdthesis-full,
author = "F. Phidias Phony-Baloney",
title = "Fighting Fire with Fire: Festooning {F}rench Phrases",
school = "Fanstord University",
type = "{PhD} Dissertation",
address = "Department of French",
month = jun # "-" # aug,
year = 1988,
note = "This is a full PHDTHESIS entry",
}
@TECHREPORT{techreport-minimal,
author = "Tom Terrific",
title = "An {$O(n \log n / \! \log\log n)$} Sorting Algorithm",
institution = "Fanstord University",
year = 1988,
}
@TECHREPORT{techreport-full,
author = "Tom T{\'{e}}rrific",
title = "An {$O(n \log n / \! \log\log n)$} Sorting Algorithm",
institution = "Fanstord University",
type = "Wishful Research Result",
number = "7",
address = "Computer Science Department, Fanstord, California",
month = oct,
year = 1988,
note = "This is a full TECHREPORT entry",
}
@UNPUBLISHED{unpublished-minimal,
author = "Ulrich {\"{U}}nderwood and Ned {\~N}et and Paul {\={P}}ot",
title = "Lower Bounds for Wishful Research Results",
note = "Talk at Fanstord University (this is a minimal UNPUBLISHED entry)",
}
@UNPUBLISHED{unpublished-full,
author = "Ulrich {\"{U}}nderwood and Ned {\~N}et and Paul {\={P}}ot",
title = "Lower Bounds for Wishful Research Results",
month = nov # ", " # dec,
year = 1988,
note = "Talk at Fanstord University (this is a full UNPUBLISHED entry)",
}
@MISC{random-note-crossref,
key = {Volume-2},
note = "Volume~2 is listed under Knuth \cite{book-full}"
}

View File

@ -0,0 +1,855 @@
@manual{oberdiek:accsupp,
title={The accsupp package},
author={Heiko Oberdiek},
date={2010-01-16},
version={0.3},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/accsupp.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/accsupp.pdf},
}
@manual{oberdiek:aliascnt,
title={The aliascnt package},
author={Heiko Oberdiek},
date={2009-09-08},
version={1.3},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/aliascnt.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/aliascnt.pdf},
}
@manual{oberdiek:alphalph,
title={The alphalph package},
author={Heiko Oberdiek},
date={2011-05-13},
version={2.4},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/alphalph.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/alphalph.pdf},
}
@manual{oberdiek:askinclude,
title={The askinclude package},
author={Pablo A. Straub and Heiko Oberdiek},
date={2011-12-02},
version={2.2},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/askinclude.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/askinclude.pdf},
}
@manual{oberdiek:atbegshi,
title={The atbegshi package},
author={Heiko Oberdiek},
date={2011-10-05},
version={1.16},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/atbegshi.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/atbegshi.pdf},
}
@manual{oberdiek:atenddvi,
title={The atenddvi package},
author={Heiko Oberdiek},
date={2007-04-17},
version={1.1},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/atenddvi.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/atenddvi.pdf},
}
@manual{oberdiek:attachfile2,
title={The attachfile2 package},
author={Heiko Oberdiek},
date={2012-04-18},
version={2.7},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/attachfile2.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/attachfile2.pdf},
}
@manual{oberdiek:atveryend,
title={The atveryend package},
author={Heiko Oberdiek},
date={2011-06-30},
version={1.8},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/atveryend.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/atveryend.pdf},
}
@manual{oberdiek:auxhook,
title={The auxhook package},
author={Heiko Oberdiek},
date={2011-03-04},
version={1.3},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/auxhook.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/auxhook.pdf},
}
@manual{oberdiek:bigintcalc,
title={The bigintcalc package},
author={Heiko Oberdiek},
date={2012-04-08},
version={1.3},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/bigintcalc.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/bigintcalc.pdf},
}
@manual{oberdiek:bitset,
title={The bitset package},
author={Heiko Oberdiek},
date={2011-01-30},
version={1.1},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/bitset.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/bitset.pdf},
}
@manual{oberdiek:bmpsize,
title={The bmpsize package},
author={Heiko Oberdiek},
date={2009-09-04},
version={1.6},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/bmpsize.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/bmpsize.pdf},
}
@manual{oberdiek:bookmark,
title={The bookmark package},
author={Heiko Oberdiek},
date={2011-12-02},
version={1.24},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/bookmark.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/bookmark.pdf},
}
@manual{oberdiek:catchfile,
title={The catchfile package},
author={Heiko Oberdiek},
date={2011-03-01},
version={1.6},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/catchfile.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/catchfile.pdf},
}
@manual{oberdiek:centernot,
title={The centernot package},
author={Heiko Oberdiek},
date={2011-07-11},
version={1.3},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/centernot.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/centernot.pdf},
}
@manual{oberdiek:chemarr,
title={The chemarr package},
author={Heiko Oberdiek},
date={2006-02-20},
version={1.2},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/chemarr.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/chemarr.pdf},
}
@manual{oberdiek:classlist,
title={The classlist package},
author={Heiko Oberdiek},
date={2011-10-17},
version={1.4},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/classlist.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/classlist.pdf},
}
@manual{oberdiek:colonequals,
title={The colonequals package},
author={Heiko Oberdiek},
date={2006-08-01},
version={1.0},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/colonequals.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/colonequals.pdf},
}
@manual{oberdiek:dvipscol,
title={The dvipscol package},
author={Heiko Oberdiek},
date={2008-08-11},
version={1.2},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/dvipscol.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/dvipscol.pdf},
}
@manual{oberdiek:embedfile,
title={The embedfile package},
author={Heiko Oberdiek},
date={2011-04-13},
version={2.6},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/embedfile.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/embedfile.pdf},
}
@manual{oberdiek:engord,
title={The engord package},
author={Heiko Oberdiek},
date={2010-03-01},
version={1.8},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/engord.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/engord.pdf},
}
@manual{oberdiek:enparen,
title={The enparen package},
author={Heiko Oberdiek},
date={2012-01-07},
version={1.0},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/enparen.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/enparen.pdf},
}
@manual{oberdiek:eolgrab,
title={The eolgrab package},
author={Heiko Oberdiek},
date={2011-01-12},
version={1.0},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/eolgrab.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/eolgrab.pdf},
}
@manual{oberdiek:epstopdf,
title={The epstopdf package},
author={Heiko Oberdiek},
date={2010-02-09},
version={2.5},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/epstopdf.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/epstopdf.pdf},
}
@manual{oberdiek:etexcmds,
title={The etexcmds package},
author={Heiko Oberdiek},
date={2011-02-16},
version={1.5},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/etexcmds.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/etexcmds.pdf},
}
@manual{oberdiek:fibnum,
title={The fibnum package},
author={Heiko Oberdiek},
date={2012-04-08},
version={1.0},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/fibnum.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/fibnum.pdf},
}
@manual{oberdiek:flags,
title={The flags package},
author={Heiko Oberdiek},
date={2007-09-30},
version={0.4},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/flags.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/flags.pdf},
}
@manual{oberdiek:gettitlestring,
title={The gettitlestring package},
author={Heiko Oberdiek},
date={2010-12-03},
version={1.4},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/gettitlestring.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/gettitlestring.pdf},
}
@manual{oberdiek:grfext,
title={The grfext package},
author={Heiko Oberdiek},
date={2010-08-19},
version={1.1},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/grfext.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/grfext.pdf},
}
@manual{oberdiek:grffile,
title={The grffile package},
author={Heiko Oberdiek},
date={2012-04-05},
version={1.16},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/grffile.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/grffile.pdf},
}
@manual{oberdiek:hobsub,
title={The hobsub package},
author={Heiko Oberdiek},
date={2012-05-28},
version={1.13},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/hobsub.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/hobsub.pdf},
}
@manual{oberdiek:hologo,
title={The hologo package},
author={Heiko Oberdiek},
date={2012-04-26},
version={1.10},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/hologo.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/hologo.pdf},
}
@manual{oberdiek:holtxdoc,
title={The holtxdoc package},
author={Heiko Oberdiek},
date={2012-03-21},
version={0.24},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/holtxdoc.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/holtxdoc.pdf},
}
@manual{oberdiek:hopatch,
title={The hopatch package},
author={Heiko Oberdiek},
date={2012-05-28},
version={1.2},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/hopatch.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/hopatch.pdf},
}
@manual{oberdiek:hycolor,
title={The hycolor package},
author={Heiko Oberdiek},
date={2011-01-30},
version={1.7},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/hycolor.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/hycolor.pdf},
}
@manual{oberdiek:hypbmsec,
title={The hypbmsec package},
author={Heiko Oberdiek},
date={2007-04-11},
version={2.4},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/hypbmsec.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/hypbmsec.pdf},
}
@manual{oberdiek:hypcap,
title={The hypcap package},
author={Heiko Oberdiek},
date={2011-02-16},
version={1.11},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/hypcap.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/hypcap.pdf},
}
@manual{oberdiek:hypdestopt,
title={The hypdestopt package},
author={Heiko Oberdiek},
date={2011-05-13},
version={2.3},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/hypdestopt.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/hypdestopt.pdf},
}
@manual{oberdiek:hypdoc,
title={The hypdoc package},
author={Heiko Oberdiek},
date={2011-08-19},
version={1.11},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/hypdoc.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/hypdoc.pdf},
}
@manual{oberdiek:hypgotoe,
title={The hypgotoe package},
author={Heiko Oberdiek},
date={2007-10-30},
version={0.1},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/hypgotoe.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/hypgotoe.pdf},
}
@manual{oberdiek:hyphsubst,
title={The hyphsubst package},
author={Heiko Oberdiek},
date={2008-06-09},
version={0.2},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/hyphsubst.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/hyphsubst.pdf},
}
@manual{oberdiek:ifdraft,
title={The ifdraft package},
author={Heiko Oberdiek},
date={2008-08-11},
version={1.3},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/ifdraft.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/ifdraft.pdf},
}
@manual{oberdiek:iflang,
title={The iflang package},
author={Heiko Oberdiek},
date={2007-11-11},
version={1.5},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/iflang.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/iflang.pdf},
}
@manual{oberdiek:ifluatex,
title={The ifluatex package},
author={Heiko Oberdiek},
date={2010-03-01},
version={1.3},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/ifluatex.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/ifluatex.pdf},
}
@manual{oberdiek:ifpdf,
title={The ifpdf package},
author={Heiko Oberdiek},
date={2011-01-30},
version={2.3},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/ifpdf.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/ifpdf.pdf},
}
@manual{oberdiek:ifvtex,
title={The ifvtex package},
author={Heiko Oberdiek},
date={2010-03-01},
version={1.5},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/ifvtex.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/ifvtex.pdf},
}
@manual{oberdiek:infwarerr,
title={The infwarerr package},
author={Heiko Oberdiek},
date={2010-04-08},
version={1.3},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/infwarerr.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/infwarerr.pdf},
}
@manual{oberdiek:inputenx,
title={The inputenx package},
author={Heiko Oberdiek},
date={2011-05-27},
version={1.10},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/inputenx.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/inputenx.pdf},
}
@manual{oberdiek:intcalc,
title={The intcalc package},
author={Heiko Oberdiek},
date={2007-09-27},
version={1.1},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/intcalc.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/intcalc.pdf},
}
@manual{oberdiek:kvdefinekeys,
title={The kvdefinekeys package},
author={Heiko Oberdiek},
date={2011-04-07},
version={1.3},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/kvdefinekeys.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/kvdefinekeys.pdf},
}
@manual{oberdiek:kvoptions,
title={The kvoptions package},
author={Heiko Oberdiek},
date={2011-06-30},
version={3.11},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/kvoptions.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/kvoptions.pdf},
}
@manual{oberdiek:kvsetkeys,
title={The kvsetkeys package},
author={Heiko Oberdiek},
date={2012-04-25},
version={1.16},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/kvsetkeys.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/kvsetkeys.pdf},
}
@manual{oberdiek:letltxmacro,
title={The letltxmacro package},
author={Heiko Oberdiek},
date={2010-09-02},
version={1.4},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/letltxmacro.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/letltxmacro.pdf},
}
@manual{oberdiek:listingsutf8,
title={The listingsutf8 package},
author={Heiko Oberdiek},
date={2011-11-10},
version={1.2},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/listingsutf8.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/listingsutf8.pdf},
}
@manual{oberdiek:ltxcmds,
title={The ltxcmds package},
author={Heiko Oberdiek},
date={2011-11-09},
version={1.22},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/ltxcmds.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/ltxcmds.pdf},
}
@manual{oberdiek:luacolor,
title={The luacolor package},
author={Heiko Oberdiek},
date={2011-11-01},
version={1.8},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/luacolor.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/luacolor.pdf},
}
@manual{oberdiek:luatex,
title={The luatex package},
author={Heiko Oberdiek},
date={2010-03-09},
version={0.4},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/luatex.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/luatex.pdf},
}
@manual{oberdiek:magicnum,
title={The magicnum package},
author={Heiko Oberdiek},
date={2011-04-10},
version={1.4},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/magicnum.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/magicnum.pdf},
}
@manual{oberdiek:makerobust,
title={The makerobust package},
author={Heiko Oberdiek},
date={2006-03-18},
version={1.0},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/makerobust.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/makerobust.pdf},
}
@manual{oberdiek:mleftright,
title={The mleftright package},
author={Heiko Oberdiek},
date={2010-09-25},
version={1.0},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/mleftright.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/mleftright.pdf},
}
@manual{oberdiek:pagegrid,
title={The pagegrid package},
author={Heiko Oberdiek},
date={2009-12-04},
version={1.4},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/pagegrid.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/pagegrid.pdf},
}
@manual{oberdiek:pagesel,
title={The pagesel package},
author={Heiko Oberdiek},
date={2008-08-11},
version={1.8},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/pagesel.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/pagesel.pdf},
}
@manual{oberdiek:pdfcol,
title={The pdfcol package},
author={Heiko Oberdiek},
date={2007-12-12},
version={1.2},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/pdfcol.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/pdfcol.pdf},
}
@manual{oberdiek:pdfcolfoot,
title={The pdfcolfoot package},
author={Heiko Oberdiek},
date={2012-01-02},
version={1.2},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/pdfcolfoot.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/pdfcolfoot.pdf},
}
@manual{oberdiek:pdfcolmk,
title={The pdfcolmk package},
author={Heiko Oberdiek},
date={2008-08-11},
version={1.2},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/pdfcolmk.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/pdfcolmk.pdf},
}
@manual{oberdiek:pdfcolparallel,
title={The pdfcolparallel package},
author={Heiko Oberdiek},
date={2010-01-11},
version={1.3},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/pdfcolparallel.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/pdfcolparallel.pdf},
}
@manual{oberdiek:pdfcolparcolumns,
title={The pdfcolparcolumns package},
author={Heiko Oberdiek},
date={2010-01-11},
version={1.3},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf},
}
@manual{oberdiek:pdfcrypt,
title={The pdfcrypt package},
author={Heiko Oberdiek},
date={2007-04-26},
version={1.0},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/pdfcrypt.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/pdfcrypt.pdf},
}
@manual{oberdiek:pdfescape,
title={The pdfescape package},
author={Heiko Oberdiek},
date={2011-11-25},
version={1.13},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/pdfescape.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/pdfescape.pdf},
}
@manual{oberdiek:pdflscape,
title={The pdflscape package},
author={Heiko Oberdiek},
date={2008-08-11},
version={0.10},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/pdflscape.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/pdflscape.pdf},
}
@manual{oberdiek:pdfrender,
title={The pdfrender package},
author={Heiko Oberdiek},
date={2010-01-28},
version={1.2},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/pdfrender.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/pdfrender.pdf},
}
@manual{oberdiek:pdftexcmds,
title={The pdftexcmds package},
author={Heiko Oberdiek},
date={2011-11-29},
version={0.20},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/pdftexcmds.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/pdftexcmds.pdf},
}
@manual{oberdiek:picture,
title={The picture package},
author={Heiko Oberdiek},
date={2009-10-11},
version={1.3},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/picture.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/picture.pdf},
}
@manual{oberdiek:pmboxdraw,
title={The pmboxdraw package},
author={Heiko Oberdiek},
date={2011-03-24},
version={1.1},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/pmboxdraw.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/pmboxdraw.pdf},
}
@manual{oberdiek:protecteddef,
title={The protecteddef package},
author={Heiko Oberdiek},
date={2011-01-31},
version={1.0},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/protecteddef.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/protecteddef.pdf},
}
@manual{oberdiek:refcount,
title={The refcount package},
author={Heiko Oberdiek},
date={2011-10-16},
version={3.4},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/refcount.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/refcount.pdf},
}
@manual{oberdiek:rerunfilecheck,
title={The rerunfilecheck package},
author={Heiko Oberdiek},
date={2011-04-15},
version={1.7},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/rerunfilecheck.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/rerunfilecheck.pdf},
}
@manual{oberdiek:resizegather,
title={The resizegather package},
author={Heiko Oberdiek},
date={2010-03-01},
version={1.2},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/resizegather.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/resizegather.pdf},
}
@manual{oberdiek:rotchiffre,
title={The rotchiffre package},
author={Heiko Oberdiek},
date={2010-11-12},
version={1.0},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/rotchiffre.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/rotchiffre.pdf},
}
@manual{oberdiek:scrindex,
title={The scrindex package},
author={Heiko Oberdiek},
date={2008-08-11},
version={1.1},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/scrindex.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/scrindex.pdf},
}
@manual{oberdiek:selinput,
title={The selinput package},
author={Heiko Oberdiek},
date={2007-09-09},
version={1.2},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/selinput.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/selinput.pdf},
}
@manual{oberdiek:setouterhbox,
title={The setouterhbox package},
author={Heiko Oberdiek},
date={2007-09-09},
version={1.7},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/setouterhbox.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/setouterhbox.pdf},
}
@manual{oberdiek:settobox,
title={The settobox package},
author={Heiko Oberdiek},
date={2008-08-11},
version={1.4},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/settobox.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/settobox.pdf},
}
@manual{oberdiek:soulutf8,
title={The soulutf8 package},
author={Heiko Oberdiek},
date={2007-09-09},
version={1.0},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/soulutf8.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/soulutf8.pdf},
}
@manual{oberdiek:stackrel,
title={The stackrel package},
author={Heiko Oberdiek},
date={2007-11-11},
version={1.2},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/stackrel.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/stackrel.pdf},
}
@manual{oberdiek:stampinclude,
title={The stampinclude package},
author={Heiko Oberdiek},
date={2008-07-14},
version={1.0},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/stampinclude.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/stampinclude.pdf},
}
@manual{oberdiek:stringenc,
title={The stringenc package},
author={Heiko Oberdiek},
date={2011-12-02},
version={1.10},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/stringenc.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/stringenc.pdf},
}
@manual{oberdiek:tabularht,
title={The tabularht package},
author={Heiko Oberdiek},
date={2007-04-11},
version={2.5},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/tabularht.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/tabularht.pdf},
}
@manual{oberdiek:tabularkv,
title={The tabularkv package},
author={Heiko Oberdiek},
date={2006-02-20},
version={1.1},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/tabularkv.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/tabularkv.pdf},
}
@manual{oberdiek:telprint,
title={The telprint package},
author={Heiko Oberdiek},
date={2008-08-11},
version={1.10},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/telprint.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/telprint.pdf},
}
@manual{oberdiek:thepdfnumber,
title={The thepdfnumber package},
author={Heiko Oberdiek},
date={2011-11-24},
version={1.0},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/thepdfnumber.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/thepdfnumber.pdf},
}
@manual{oberdiek:transparent,
title={The transparent package},
author={Heiko Oberdiek},
date={2007-01-08},
version={1.0},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/transparent.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/transparent.pdf},
}
@manual{oberdiek:twoopt,
title={The twoopt package},
author={Heiko Oberdiek},
date={2008-08-11},
version={1.5},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/twoopt.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/twoopt.pdf},
}
@manual{oberdiek:uniquecounter,
title={The uniquecounter package},
author={Heiko Oberdiek},
date={2011-01-30},
version={1.2},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/uniquecounter.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/uniquecounter.pdf},
}
@manual{oberdiek:zref,
title={The zref package},
author={Heiko Oberdiek},
date={2012-04-04},
version={2.24},
eprinttype={ctan},
eprint={macros/latex/contrib/oberdiek/zref.pdf},
url={http://mirror.ctan.org/macros/latex/contrib/oberdiek/zref.pdf},
}

View File

@ -0,0 +1,27 @@
@book{pdfspec-iso32000-1,
author={{Adobe Systems Incorporated}},
title={Document management -- Portable document format -- Part 1: PDF 1.7},
date={2008-07-01},
edition=1,
url={http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf},
urldate={2011-11-25},
}
@manual{pdftex-manual,
sortname={Han, The Thanh},
author={{\hologo{HanTheThanh}} and Rahtz, Sebastian and Henkel, Hartmut
and Jackowski, Pawe{\l} and Schr{\"o}der, Martin},
title={The {\hologo{pdfTeX}} user manual},
version={655 (1.40.11)},
date={2010-11-23},
url={http://mirror.ctan.org/systems/pdftex/manual/pdftex-a.pdf},
urldate={2011-11-29},
}
@manual{luatex-manual,
sortname={LuaTeX, development team},
author={{\hologo{LuaTeX}} development team},
title={{\hologo{LuaTeX}} Reference},
version={beta 0.71.0},
date={2011-10-11},
url={http://www.luatex.org/svn/trunk/manual/luatexref-t.pdf},
urldate={2011-11-29},
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,976 @@
% Copyright (C) 1985, 1988, 2010 Howard Trickey and Oren Patashnik.
% Unlimited copying and redistribution of this file are permitted as long as
% it is unmodified. Modifications (and redistribution of modified versions)
% are also permitted, but only if the resulting file is renamed.
%
% IEEE Transactions bibliography style (8-Dec-10 version)
% numeric labels, order-of-reference, IEEE abbreviations,
% quotes around article titles, commas separate all fields
% except after book titles and before "notes". Otherwise,
% much like the "plain" family, from which this is adapted.
%
% History
% 9/30/85 (HWT) Original version, by Howard Trickey.
% 1/29/88 (OP&HWT) Updated for BibTeX version 0.99a, Oren Patashnik;
% THIS `ieeetr' VERSION DOES NOT WORK WITH BIBTEX 0.98i.
% 12/ 8/10 (OP&HWT) Clarify license.
ENTRY
{ address
author
booktitle
chapter
edition
editor
howpublished
institution
journal
key
month
note
number
organization
pages
publisher
school
series
title
type
volume
year
}
{}
{ label }
INTEGERS { output.state before.all mid.sentence after.quote after.sentence
after.quoted.block after.block }
FUNCTION {init.state.consts}
{ #0 'before.all :=
#1 'mid.sentence :=
#2 'after.quote :=
#3 'after.sentence :=
#4 'after.quoted.block :=
#5 'after.block :=
}
STRINGS { s t }
FUNCTION {output.nonnull}
{ 's :=
output.state mid.sentence =
{ ", " * write$ }
{ output.state after.quote =
{ " " * write$ }
{ output.state after.block =
{ add.period$ write$
newline$
"\newblock " write$
}
{ output.state before.all =
'write$
{ output.state after.quoted.block =
{ write$
newline$
"\newblock " write$
}
{ add.period$ " " * write$ }
if$
}
if$
}
if$
}
if$
mid.sentence 'output.state :=
}
if$
s
}
FUNCTION {output}
{ duplicate$ empty$
'pop$
'output.nonnull
if$
}
FUNCTION {output.check}
{ 't :=
duplicate$ empty$
{ pop$ "empty " t * " in " * cite$ * warning$ }
'output.nonnull
if$
}
FUNCTION {output.bibitem}
{ newline$
"\bibitem{" write$
cite$ write$
"}" write$
newline$
""
before.all 'output.state :=
}
FUNCTION {blank.sep}
{ after.quote 'output.state :=
}
FUNCTION {fin.entry}
{ output.state after.quoted.block =
'skip$
'add.period$
if$
write$
newline$
}
FUNCTION {new.block}
{ output.state before.all =
'skip$
{ output.state after.quote =
{ after.quoted.block 'output.state := }
{ after.block 'output.state := }
if$
}
if$
}
FUNCTION {new.sentence}
{ output.state after.block =
'skip$
{ output.state before.all =
'skip$
{ after.sentence 'output.state := }
if$
}
if$
}
FUNCTION {not}
{ { #0 }
{ #1 }
if$
}
FUNCTION {and}
{ 'skip$
{ pop$ #0 }
if$
}
FUNCTION {or}
{ { pop$ #1 }
'skip$
if$
}
FUNCTION {new.block.checka}
{ empty$
'skip$
'new.block
if$
}
FUNCTION {new.block.checkb}
{ empty$
swap$ empty$
and
'skip$
'new.block
if$
}
FUNCTION {new.sentence.checka}
{ empty$
'skip$
'new.sentence
if$
}
FUNCTION {field.or.null}
{ duplicate$ empty$
{ pop$ "" }
'skip$
if$
}
FUNCTION {emphasize}
{ duplicate$ empty$
{ pop$ "" }
{ "{\em " swap$ * "}" * }
if$
}
INTEGERS { nameptr namesleft numnames }
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
nameptr #1 >
{ namesleft #1 >
{ ", " * t * }
{ numnames #2 >
{ "," * }
'skip$
if$
t "others" =
{ " {\em et~al.}" * }
{ " and " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {format.authors}
{ author empty$
{ "" }
{ author format.names }
if$
}
FUNCTION {format.editors}
{ editor empty$
{ "" }
{ editor format.names
editor num.names$ #1 >
{ ", eds." * }
{ ", ed." * }
if$
}
if$
}
FUNCTION {format.title}
{ title empty$
{ "" }
{ "``" title "t" change.case$ * ",''" * }
if$
}
FUNCTION {format.title.p}
{ title empty$
{ "" }
{ "``" title "t" change.case$ * ".''" * }
if$
}
FUNCTION {n.dashify}
{ 't :=
""
{ t empty$ not }
{ t #1 #1 substring$ "-" =
{ t #1 #2 substring$ "--" = not
{ "--" *
t #2 global.max$ substring$ 't :=
}
{ { t #1 #1 substring$ "-" = }
{ "-" *
t #2 global.max$ substring$ 't :=
}
while$
}
if$
}
{ t #1 #1 substring$ *
t #2 global.max$ substring$ 't :=
}
if$
}
while$
}
FUNCTION {format.date}
{ year empty$
{ month empty$
{ "" }
{ "there's a month but no year in " cite$ * warning$
month
}
if$
}
{ month empty$
'year
{ month " " * year * }
if$
}
if$
}
FUNCTION {format.btitle}
{ title emphasize
}
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
{ "~" }
{ " " }
if$
swap$ * *
}
FUNCTION {either.or.check}
{ empty$
'pop$
{ "can't use both " swap$ * " fields in " * cite$ * warning$ }
if$
}
FUNCTION {format.bvolume}
{ volume empty$
{ "" }
{ "vol.~" volume *
series empty$
'skip$
{ " of " * series emphasize * }
if$
"volume and number" number either.or.check
}
if$
}
FUNCTION {format.number.series}
{ volume empty$
{ number empty$
{ series field.or.null }
{ output.state mid.sentence =
{ "no.~" }
{ "No.~" }
if$
number *
series empty$
{ "there's a number but no series in " cite$ * warning$ }
{ " in " * series * }
if$
}
if$
}
{ "" }
if$
}
FUNCTION {format.edition}
{ edition empty$
{ "" }
{ edition "l" change.case$ "~ed." * }
if$
}
INTEGERS { multiresult }
FUNCTION {multi.page.check}
{ 't :=
#0 'multiresult :=
{ multiresult not
t empty$ not
and
}
{ t #1 #1 substring$
duplicate$ "-" =
swap$ duplicate$ "," =
swap$ "+" =
or or
{ #1 'multiresult := }
{ t #2 global.max$ substring$ 't := }
if$
}
while$
multiresult
}
FUNCTION {format.pages}
{ pages empty$
{ "" }
{ pages multi.page.check
{ "pp.~" pages n.dashify * }
{ "p.~" pages * }
if$
}
if$
}
FUNCTION {format.volume}
{ volume empty$
{ "" }
{ "vol.~" volume * }
if$
}
FUNCTION {format.number}
{ number empty$
{ "" }
{ "no.~" number * }
if$
}
FUNCTION {format.chapter.pages}
{ chapter empty$
'format.pages
{ type empty$
{ "ch.~" chapter * }
{ type "l" change.case$ chapter tie.or.space.connect }
if$
pages empty$
'skip$
{ ", " * format.pages * }
if$
}
if$
}
FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
{ "" }
{ "in " booktitle emphasize *
editor empty$
'skip$
{ " (" * format.editors * ")" * }
if$
}
if$
}
FUNCTION {format.thesis.type}
{ type empty$
'skip$
{ pop$
output.state after.block =
{ type "t" change.case$ }
{ type "l" change.case$ }
if$
}
if$
}
FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
month empty$ year empty$ note empty$
and and and and and
{ "all relevant fields are empty in " cite$ * warning$ }
'skip$
if$
}
FUNCTION {format.tr.number}
{ type empty$
{ "Tech. Rep." }
'type
if$
number empty$
{ "l" change.case$ }
{ number tie.or.space.connect }
if$
}
FUNCTION {format.addr.pub}
{ publisher empty$
{ "" }
{ address empty$
{ "" }
{ address ": " * }
if$
publisher *
}
if$
}
FUNCTION {format.paddress}
{ address empty$
{ "" }
{ "(" address * ")" * }
if$
}
FUNCTION {format.article.crossref}
{ key empty$
{ journal empty$
{ "need key or journal for " cite$ * " to crossref " * crossref *
warning$
""
}
{ "in {\em " journal * "\/}" * }
if$
}
{ "in " key * }
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.crossref.editor}
{ editor #1 "{vv~}{ll}" format.name$
editor num.names$ duplicate$
#2 >
{ pop$ " {\em et~al.}" * }
{ #2 <
'skip$
{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{ " {\em et~al.}" * }
{ " and " * editor #2 "{vv~}{ll}" format.name$ * }
if$
}
if$
}
if$
}
FUNCTION {format.book.crossref}
{ volume empty$
{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
"In "
}
{ "Vol.~" volume *
" of " *
}
if$
editor empty$
editor field.or.null author field.or.null =
or
{ key empty$
{ series empty$
{ "need editor, key, or series for " cite$ * " to crossref " *
crossref * warning$
"" *
}
{ "{\em " * series * "\/}" * }
if$
}
{ key * }
if$
}
{ format.crossref.editor * }
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.incoll.inproc.crossref}
{ editor empty$
editor field.or.null author field.or.null =
or
{ key empty$
{ booktitle empty$
{ "need editor, key, or booktitle for " cite$ * " to crossref " *
crossref * warning$
""
}
{ "in {\em " booktitle * "\/}" * }
if$
}
{ "in " key * }
if$
}
{ "in " format.crossref.editor * }
if$
" \cite{" * crossref * "}" *
}
FUNCTION {article}
{ output.bibitem
format.authors "author" output.check
format.title "title" output.check
blank.sep
crossref missing$
{ journal emphasize "journal" output.check
format.volume output
month empty$
{ format.number output }
'skip$
if$
format.pages output
format.date "year" output.check
}
{ format.article.crossref output.nonnull
format.pages output
}
if$
new.block
note output
fin.entry
}
FUNCTION {book}
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check }
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
format.btitle "title" output.check
crossref missing$
{ format.bvolume output
new.block
format.number.series output
format.addr.pub "publisher" output.check
}
{ new.block
format.book.crossref output.nonnull
}
if$
format.edition output
format.date "year" output.check
new.block
note output
fin.entry
}
FUNCTION {booklet}
{ output.bibitem
format.authors output
title empty$
{ "empty title in " cite$ * warning$
howpublished new.sentence.checka
}
{ howpublished empty$ not
address empty$ month empty$ year empty$ and and
or
{ format.title.p output.nonnull }
{ format.title output.nonnull }
if$
blank.sep
}
if$
howpublished output
address output
format.date output
new.block
note output
fin.entry
}
FUNCTION {inbook}
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check }
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
format.btitle "title" output.check
crossref missing$
{ format.bvolume output
format.chapter.pages "chapter and pages" output.check
new.block
format.number.series output
format.addr.pub "publisher" output.check
}
{ format.chapter.pages "chapter and pages" output.check
new.block
format.book.crossref output.nonnull
}
if$
format.edition output
format.date "year" output.check
new.block
note output
fin.entry
}
FUNCTION {incollection}
{ output.bibitem
format.authors "author" output.check
format.title "title" output.check
blank.sep
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
format.bvolume output
format.number.series output
format.chapter.pages output
format.addr.pub "publisher" output.check
format.edition output
format.date "year" output.check
}
{ format.incoll.inproc.crossref output.nonnull
format.chapter.pages output
}
if$
new.block
note output
fin.entry
}
FUNCTION {inproceedings}
{ output.bibitem
format.authors "author" output.check
format.title "title" output.check
blank.sep
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
format.bvolume output
format.number.series output
format.paddress output
format.pages output
organization output
publisher output
format.date "year" output.check
}
{ format.incoll.inproc.crossref output.nonnull
format.pages output
}
if$
new.block
note output
fin.entry
}
FUNCTION {conference} { inproceedings }
FUNCTION {manual}
{ output.bibitem
author empty$
{ organization empty$
'skip$
{ organization output.nonnull
address output
}
if$
}
{ format.authors output.nonnull }
if$
format.btitle "title" output.check
author empty$
{ organization empty$
{ address new.block.checka
address output
}
'skip$
if$
}
{ organization address new.block.checkb
organization output
address output
}
if$
format.edition output
format.date output
new.block
note output
fin.entry
}
FUNCTION {mastersthesis}
{ output.bibitem
format.authors "author" output.check
format.title "title" output.check
blank.sep
"Master's thesis" format.thesis.type output.nonnull
school "school" output.check
address output
format.date "year" output.check
new.block
note output
fin.entry
}
FUNCTION {misc}
{ output.bibitem
format.authors output
title empty$
{ howpublished new.sentence.checka }
{ howpublished empty$ not
month empty$ year empty$ and
or
{ format.title.p output.nonnull }
{ format.title output.nonnull }
if$
blank.sep
}
if$
howpublished output
format.date output
new.block
note output
fin.entry
empty.misc.check
}
FUNCTION {phdthesis}
{ output.bibitem
format.authors "author" output.check
format.btitle "title" output.check
new.block
"PhD thesis" format.thesis.type output.nonnull
school "school" output.check
address output
format.date "year" output.check
new.block
note output
fin.entry
}
FUNCTION {proceedings}
{ output.bibitem
editor empty$
{ organization output }
{ format.editors output.nonnull }
if$
format.btitle "title" output.check
format.bvolume output
format.number.series output
format.paddress output
editor empty$
'skip$
{ organization output }
if$
publisher output
format.date "year" output.check
new.block
note output
fin.entry
}
FUNCTION {techreport}
{ output.bibitem
format.authors "author" output.check
format.title "title" output.check
blank.sep
format.tr.number output.nonnull
institution "institution" output.check
address output
format.date "year" output.check
new.block
note output
fin.entry
}
FUNCTION {unpublished}
{ output.bibitem
format.authors "author" output.check
format.title.p "title" output.check
blank.sep
note "note" output.check
format.date output
fin.entry
}
FUNCTION {default.type} { misc }
MACRO {jan} {"Jan."}
MACRO {feb} {"Feb."}
MACRO {mar} {"Mar."}
MACRO {apr} {"Apr."}
MACRO {may} {"May"}
MACRO {jun} {"June"}
MACRO {jul} {"July"}
MACRO {aug} {"Aug."}
MACRO {sep} {"Sept."}
MACRO {oct} {"Oct."}
MACRO {nov} {"Nov."}
MACRO {dec} {"Dec."}
MACRO {acmcs} {"ACM Computing Surveys"}
MACRO {acta} {"Acta Informatica"}
MACRO {cacm} {"Communications ACM"}
MACRO {ibmjrd} {"IBM J. Research and Development"}
MACRO {ibmsj} {"IBM Systems~J."}
MACRO {ieeese} {"IEEE Trans. Software Engineering"}
MACRO {ieeetc} {"IEEE Trans. Computers"}
MACRO {ieeetcad}
{"IEEE Trans. Computer-Aided Design"}
MACRO {ipl} {"Information Processing Letters"}
MACRO {jacm} {"J.~ACM"}
MACRO {jcss} {"J.~Computer and System Sciences"}
MACRO {scp} {"Science of Computer Programming"}
MACRO {sicomp} {"SIAM J. Computing"}
MACRO {tocs} {"ACM Trans. Computer Systems"}
MACRO {tods} {"ACM Trans. Database Systems"}
MACRO {tog} {"ACM Trans. Graphics"}
MACRO {toms} {"ACM Trans. Mathematical Software"}
MACRO {toois} {"ACM Trans. Office Information Systems"}
MACRO {toplas} {"ACM Trans. Programming Languages and Systems"}
MACRO {tcs} {"Theoretical Computer Science"}
READ
STRINGS { longest.label }
INTEGERS { number.label longest.label.width }
FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
#1 'number.label :=
#0 'longest.label.width :=
}
FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
number.label #1 + 'number.label :=
label width$ longest.label.width >
{ label 'longest.label :=
label width$ 'longest.label.width :=
}
'skip$
if$
}
EXECUTE {initialize.longest.label}
ITERATE {longest.label.pass}
FUNCTION {begin.bib}
{ preamble$ empty$
'skip$
{ preamble$ write$ newline$ }
if$
"\begin{thebibliography}{" longest.label * "}" * write$ newline$
}
EXECUTE {begin.bib}
EXECUTE {init.state.consts}
ITERATE {call.type$}
FUNCTION {end.bib}
{ newline$
"\end{thebibliography}" write$ newline$
}
EXECUTE {end.bib}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,951 @@
% BibTeX standard bibliography style `unsrt'
% Version 0.99b (8-Dec-10 release) for BibTeX versions 0.99a or later.
% Copyright (C) 1984, 1985, 1988, 2010 Howard Trickey and Oren Patashnik.
% Unlimited copying and redistribution of this file are permitted as long as
% it is unmodified. Modifications (and redistribution of modified versions)
% are also permitted, but only if the resulting file is renamed to something
% besides btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
% This restriction helps ensure that all standard styles are identical.
% The file btxbst.doc has the documentation for this style.
ENTRY
{ address
author
booktitle
chapter
edition
editor
howpublished
institution
journal
key
month
note
number
organization
pages
publisher
school
series
title
type
volume
year
}
{}
{ label }
INTEGERS { output.state before.all mid.sentence after.sentence after.block }
FUNCTION {init.state.consts}
{ #0 'before.all :=
#1 'mid.sentence :=
#2 'after.sentence :=
#3 'after.block :=
}
STRINGS { s t }
FUNCTION {output.nonnull}
{ 's :=
output.state mid.sentence =
{ ", " * write$ }
{ output.state after.block =
{ add.period$ write$
newline$
"\newblock " write$
}
{ output.state before.all =
'write$
{ add.period$ " " * write$ }
if$
}
if$
mid.sentence 'output.state :=
}
if$
s
}
FUNCTION {output}
{ duplicate$ empty$
'pop$
'output.nonnull
if$
}
FUNCTION {output.check}
{ 't :=
duplicate$ empty$
{ pop$ "empty " t * " in " * cite$ * warning$ }
'output.nonnull
if$
}
FUNCTION {output.bibitem}
{ newline$
"\bibitem{" write$
cite$ write$
"}" write$
newline$
""
before.all 'output.state :=
}
FUNCTION {fin.entry}
{ add.period$
write$
newline$
}
FUNCTION {new.block}
{ output.state before.all =
'skip$
{ after.block 'output.state := }
if$
}
FUNCTION {new.sentence}
{ output.state after.block =
'skip$
{ output.state before.all =
'skip$
{ after.sentence 'output.state := }
if$
}
if$
}
FUNCTION {not}
{ { #0 }
{ #1 }
if$
}
FUNCTION {and}
{ 'skip$
{ pop$ #0 }
if$
}
FUNCTION {or}
{ { pop$ #1 }
'skip$
if$
}
FUNCTION {new.block.checka}
{ empty$
'skip$
'new.block
if$
}
FUNCTION {new.block.checkb}
{ empty$
swap$ empty$
and
'skip$
'new.block
if$
}
FUNCTION {new.sentence.checka}
{ empty$
'skip$
'new.sentence
if$
}
FUNCTION {new.sentence.checkb}
{ empty$
swap$ empty$
and
'skip$
'new.sentence
if$
}
FUNCTION {field.or.null}
{ duplicate$ empty$
{ pop$ "" }
'skip$
if$
}
FUNCTION {emphasize}
{ duplicate$ empty$
{ pop$ "" }
{ "{\em " swap$ * "}" * }
if$
}
INTEGERS { nameptr namesleft numnames }
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
nameptr #1 >
{ namesleft #1 >
{ ", " * t * }
{ numnames #2 >
{ "," * }
'skip$
if$
t "others" =
{ " et~al." * }
{ " and " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {format.authors}
{ author empty$
{ "" }
{ author format.names }
if$
}
FUNCTION {format.editors}
{ editor empty$
{ "" }
{ editor format.names
editor num.names$ #1 >
{ ", editors" * }
{ ", editor" * }
if$
}
if$
}
FUNCTION {format.title}
{ title empty$
{ "" }
{ title "t" change.case$ }
if$
}
FUNCTION {n.dashify}
{ 't :=
""
{ t empty$ not }
{ t #1 #1 substring$ "-" =
{ t #1 #2 substring$ "--" = not
{ "--" *
t #2 global.max$ substring$ 't :=
}
{ { t #1 #1 substring$ "-" = }
{ "-" *
t #2 global.max$ substring$ 't :=
}
while$
}
if$
}
{ t #1 #1 substring$ *
t #2 global.max$ substring$ 't :=
}
if$
}
while$
}
FUNCTION {format.date}
{ year empty$
{ month empty$
{ "" }
{ "there's a month but no year in " cite$ * warning$
month
}
if$
}
{ month empty$
'year
{ month " " * year * }
if$
}
if$
}
FUNCTION {format.btitle}
{ title emphasize
}
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
{ "~" }
{ " " }
if$
swap$ * *
}
FUNCTION {either.or.check}
{ empty$
'pop$
{ "can't use both " swap$ * " fields in " * cite$ * warning$ }
if$
}
FUNCTION {format.bvolume}
{ volume empty$
{ "" }
{ "volume" volume tie.or.space.connect
series empty$
'skip$
{ " of " * series emphasize * }
if$
"volume and number" number either.or.check
}
if$
}
FUNCTION {format.number.series}
{ volume empty$
{ number empty$
{ series field.or.null }
{ output.state mid.sentence =
{ "number" }
{ "Number" }
if$
number tie.or.space.connect
series empty$
{ "there's a number but no series in " cite$ * warning$ }
{ " in " * series * }
if$
}
if$
}
{ "" }
if$
}
FUNCTION {format.edition}
{ edition empty$
{ "" }
{ output.state mid.sentence =
{ edition "l" change.case$ " edition" * }
{ edition "t" change.case$ " edition" * }
if$
}
if$
}
INTEGERS { multiresult }
FUNCTION {multi.page.check}
{ 't :=
#0 'multiresult :=
{ multiresult not
t empty$ not
and
}
{ t #1 #1 substring$
duplicate$ "-" =
swap$ duplicate$ "," =
swap$ "+" =
or or
{ #1 'multiresult := }
{ t #2 global.max$ substring$ 't := }
if$
}
while$
multiresult
}
FUNCTION {format.pages}
{ pages empty$
{ "" }
{ pages multi.page.check
{ "pages" pages n.dashify tie.or.space.connect }
{ "page" pages tie.or.space.connect }
if$
}
if$
}
FUNCTION {format.vol.num.pages}
{ volume field.or.null
number empty$
'skip$
{ "(" number * ")" * *
volume empty$
{ "there's a number but no volume in " cite$ * warning$ }
'skip$
if$
}
if$
pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{ ":" * pages n.dashify * }
if$
}
if$
}
FUNCTION {format.chapter.pages}
{ chapter empty$
'format.pages
{ type empty$
{ "chapter" }
{ type "l" change.case$ }
if$
chapter tie.or.space.connect
pages empty$
'skip$
{ ", " * format.pages * }
if$
}
if$
}
FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
{ "" }
{ editor empty$
{ "In " booktitle emphasize * }
{ "In " format.editors * ", " * booktitle emphasize * }
if$
}
if$
}
FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
month empty$ year empty$ note empty$
and and and and and
{ "all relevant fields are empty in " cite$ * warning$ }
'skip$
if$
}
FUNCTION {format.thesis.type}
{ type empty$
'skip$
{ pop$
type "t" change.case$
}
if$
}
FUNCTION {format.tr.number}
{ type empty$
{ "Technical Report" }
'type
if$
number empty$
{ "t" change.case$ }
{ number tie.or.space.connect }
if$
}
FUNCTION {format.article.crossref}
{ key empty$
{ journal empty$
{ "need key or journal for " cite$ * " to crossref " * crossref *
warning$
""
}
{ "In {\em " journal * "\/}" * }
if$
}
{ "In " key * }
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.crossref.editor}
{ editor #1 "{vv~}{ll}" format.name$
editor num.names$ duplicate$
#2 >
{ pop$ " et~al." * }
{ #2 <
'skip$
{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{ " et~al." * }
{ " and " * editor #2 "{vv~}{ll}" format.name$ * }
if$
}
if$
}
if$
}
FUNCTION {format.book.crossref}
{ volume empty$
{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
"In "
}
{ "Volume" volume tie.or.space.connect
" of " *
}
if$
editor empty$
editor field.or.null author field.or.null =
or
{ key empty$
{ series empty$
{ "need editor, key, or series for " cite$ * " to crossref " *
crossref * warning$
"" *
}
{ "{\em " * series * "\/}" * }
if$
}
{ key * }
if$
}
{ format.crossref.editor * }
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.incoll.inproc.crossref}
{ editor empty$
editor field.or.null author field.or.null =
or
{ key empty$
{ booktitle empty$
{ "need editor, key, or booktitle for " cite$ * " to crossref " *
crossref * warning$
""
}
{ "In {\em " booktitle * "\/}" * }
if$
}
{ "In " key * }
if$
}
{ "In " format.crossref.editor * }
if$
" \cite{" * crossref * "}" *
}
FUNCTION {article}
{ output.bibitem
format.authors "author" output.check
new.block
format.title "title" output.check
new.block
crossref missing$
{ journal emphasize "journal" output.check
format.vol.num.pages output
format.date "year" output.check
}
{ format.article.crossref output.nonnull
format.pages output
}
if$
new.block
note output
fin.entry
}
FUNCTION {book}
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check }
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.btitle "title" output.check
crossref missing$
{ format.bvolume output
new.block
format.number.series output
new.sentence
publisher "publisher" output.check
address output
}
{ new.block
format.book.crossref output.nonnull
}
if$
format.edition output
format.date "year" output.check
new.block
note output
fin.entry
}
FUNCTION {booklet}
{ output.bibitem
format.authors output
new.block
format.title "title" output.check
howpublished address new.block.checkb
howpublished output
address output
format.date output
new.block
note output
fin.entry
}
FUNCTION {inbook}
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check }
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.btitle "title" output.check
crossref missing$
{ format.bvolume output
format.chapter.pages "chapter and pages" output.check
new.block
format.number.series output
new.sentence
publisher "publisher" output.check
address output
}
{ format.chapter.pages "chapter and pages" output.check
new.block
format.book.crossref output.nonnull
}
if$
format.edition output
format.date "year" output.check
new.block
note output
fin.entry
}
FUNCTION {incollection}
{ output.bibitem
format.authors "author" output.check
new.block
format.title "title" output.check
new.block
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
format.bvolume output
format.number.series output
format.chapter.pages output
new.sentence
publisher "publisher" output.check
address output
format.edition output
format.date "year" output.check
}
{ format.incoll.inproc.crossref output.nonnull
format.chapter.pages output
}
if$
new.block
note output
fin.entry
}
FUNCTION {inproceedings}
{ output.bibitem
format.authors "author" output.check
new.block
format.title "title" output.check
new.block
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
format.bvolume output
format.number.series output
format.pages output
address empty$
{ organization publisher new.sentence.checkb
organization output
publisher output
format.date "year" output.check
}
{ address output.nonnull
format.date "year" output.check
new.sentence
organization output
publisher output
}
if$
}
{ format.incoll.inproc.crossref output.nonnull
format.pages output
}
if$
new.block
note output
fin.entry
}
FUNCTION {conference} { inproceedings }
FUNCTION {manual}
{ output.bibitem
author empty$
{ organization empty$
'skip$
{ organization output.nonnull
address output
}
if$
}
{ format.authors output.nonnull }
if$
new.block
format.btitle "title" output.check
author empty$
{ organization empty$
{ address new.block.checka
address output
}
'skip$
if$
}
{ organization address new.block.checkb
organization output
address output
}
if$
format.edition output
format.date output
new.block
note output
fin.entry
}
FUNCTION {mastersthesis}
{ output.bibitem
format.authors "author" output.check
new.block
format.title "title" output.check
new.block
"Master's thesis" format.thesis.type output.nonnull
school "school" output.check
address output
format.date "year" output.check
new.block
note output
fin.entry
}
FUNCTION {misc}
{ output.bibitem
format.authors output
title howpublished new.block.checkb
format.title output
howpublished new.block.checka
howpublished output
format.date output
new.block
note output
fin.entry
empty.misc.check
}
FUNCTION {phdthesis}
{ output.bibitem
format.authors "author" output.check
new.block
format.btitle "title" output.check
new.block
"PhD thesis" format.thesis.type output.nonnull
school "school" output.check
address output
format.date "year" output.check
new.block
note output
fin.entry
}
FUNCTION {proceedings}
{ output.bibitem
editor empty$
{ organization output }
{ format.editors output.nonnull }
if$
new.block
format.btitle "title" output.check
format.bvolume output
format.number.series output
address empty$
{ editor empty$
{ publisher new.sentence.checka }
{ organization publisher new.sentence.checkb
organization output
}
if$
publisher output
format.date "year" output.check
}
{ address output.nonnull
format.date "year" output.check
new.sentence
editor empty$
'skip$
{ organization output }
if$
publisher output
}
if$
new.block
note output
fin.entry
}
FUNCTION {techreport}
{ output.bibitem
format.authors "author" output.check
new.block
format.title "title" output.check
new.block
format.tr.number output.nonnull
institution "institution" output.check
address output
format.date "year" output.check
new.block
note output
fin.entry
}
FUNCTION {unpublished}
{ output.bibitem
format.authors "author" output.check
new.block
format.title "title" output.check
new.block
note "note" output.check
format.date output
fin.entry
}
FUNCTION {default.type} { misc }
MACRO {jan} {"January"}
MACRO {feb} {"February"}
MACRO {mar} {"March"}
MACRO {apr} {"April"}
MACRO {may} {"May"}
MACRO {jun} {"June"}
MACRO {jul} {"July"}
MACRO {aug} {"August"}
MACRO {sep} {"September"}
MACRO {oct} {"October"}
MACRO {nov} {"November"}
MACRO {dec} {"December"}
MACRO {acmcs} {"ACM Computing Surveys"}
MACRO {acta} {"Acta Informatica"}
MACRO {cacm} {"Communications of the ACM"}
MACRO {ibmjrd} {"IBM Journal of Research and Development"}
MACRO {ibmsj} {"IBM Systems Journal"}
MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
MACRO {ieeetc} {"IEEE Transactions on Computers"}
MACRO {ieeetcad}
{"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
MACRO {ipl} {"Information Processing Letters"}
MACRO {jacm} {"Journal of the ACM"}
MACRO {jcss} {"Journal of Computer and System Sciences"}
MACRO {scp} {"Science of Computer Programming"}
MACRO {sicomp} {"SIAM Journal on Computing"}
MACRO {tocs} {"ACM Transactions on Computer Systems"}
MACRO {tods} {"ACM Transactions on Database Systems"}
MACRO {tog} {"ACM Transactions on Graphics"}
MACRO {toms} {"ACM Transactions on Mathematical Software"}
MACRO {toois} {"ACM Transactions on Office Information Systems"}
MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
MACRO {tcs} {"Theoretical Computer Science"}
READ
STRINGS { longest.label }
INTEGERS { number.label longest.label.width }
FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
#1 'number.label :=
#0 'longest.label.width :=
}
FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
number.label #1 + 'number.label :=
label width$ longest.label.width >
{ label 'longest.label :=
label width$ 'longest.label.width :=
}
'skip$
if$
}
EXECUTE {initialize.longest.label}
ITERATE {longest.label.pass}
FUNCTION {begin.bib}
{ preamble$ empty$
'skip$
{ preamble$ write$ newline$ }
if$
"\begin{thebibliography}{" longest.label * "}" * write$ newline$
}
EXECUTE {begin.bib}
EXECUTE {init.state.consts}
ITERATE {call.type$}
FUNCTION {end.bib}
{ newline$
"\end{thebibliography}" write$ newline$
}
EXECUTE {end.bib}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,226 @@
%% dvipdfmx.cfg for dvipdfmx and xdvipdfmx. (Public domain.)
%%
%% PDF Version Setting
%%
%% PDF (minor) version stamp to use in output file.
%% This also implies maximal version of PDF file allowed to be included.
%% Dvipdfmx does not support 1.0, 1.1, 1.2 since TrueType font embedded
%% as CIDFontType2 requires at least version 1.3. Transparent imaging
%% model requires version 1.4. So if you want soft-masking support for
%% PNG image with alpha channels, you should set version to 4 or higher.
%% PDF 1.5 enables object compression.
V 5
%% Dvipdfmx Compatibility Flags
%%
%% 0x0002 Use semi-transparent filling for tpic shading command,
%% instead of opaque gray color. (requires PDF 1.4)
%% 0x0004 Treat all CIDFont as fixed-pitch font.
%% This is only for backward compatibility. Don't use that.
%% 0x0008 Do not replace duplicate fontmap entries.
%% Dvipdfm's (not 'x') behaviour.
%% 0x0010 Do not optimize PDF destinations. Use this if you want to
%% refer from other files to destinations in the current file.
%C 0x0000
%% PDF Document Settings
%%
%% Papersize Option:
%%
%% p papersize-spec
%%
%% papersize-spec is 'paper-format' or length-pair, e.g., 'a4', 'letter',
%% '20cm,30cm'. Recognized unit is 'cm', 'mm', 'bp', 'pt', 'in'.
p a4
%% Annotation Box Margin:
%%
%% g length
%%
%% Add margin to annotation rectangle created via various \specials. Many
%% TeX macro packages set the annotation bounding box equal to the TeX box
%% that encloses the material. That's not always what you want.
%% Annotations created by pdf:bannot/pdf:eannot is also affected.
%g 0
%% Bookmark Open Level:
%%
%% O integer
%%
%% Mark bookmark (outline) item as initial state 'open' if the depth
%% of that item (from root node) is less than or equal to the integer
%% specified with this option.
O 0
%% PDF Security (Encryption) Setting
%%
%% Those options won't take effects unless you use flag 'S'.
%%
%% Key bits for PDF encryption (40 - 128)
K 40
%% Permission flag for PDF encryption: Revision will be 3 if the key size
%% is greater than 40 bits.
%%
%% 0x0004 (Revision 2) Print the document.
%% (Revision 3) Print the document (possibly not at the highest quality
%% level, depending on whether bit 12[0x0800] is also set).
%% 0x0008 Modify the contents of the document by operations other than those
%% controlled by bits 6[0x0020], 9[0x0100], and 11[0x0400].
%% 0x0010 (Revision 2) Copy or otherwise extract text and graphics from the
%% document, including extracting text and graphics (in support of
%% accessibility to disabled users or for other purposes).
%% (Revision 3) Copy or otherwise extract text and grphics from the
%% document by operations other than that controlled by bit 10[0x0200].
%% 0x0020 Add or modify text annotations, fill in interactive form fields,
%% and, if bit 4[0x0008] is also set, create or modify interactive
%% form fields (including signature fields).
%%
%% (Revision 3 only)
%% 0x0100 Fill in existing interactive form fields (including signature
%% fields), even if bit 6 is clear.
%% 0x0200 Extract text and graphics (in support of accessibility to disabled
%% users or for other purposes).
%% 0x0400 Assemble the document (insert, rotate, or delete pages and create
%% bookmarks or thumbnail images), even if bit 4 is clear.
%% 0x0800 Print the document to a representation from which a faithful digital
%% copy of the PDF content could be generated. When this bit is clear
%% (and bit 3 is set), printing is limited to a low-level representation
%% of the appearance, possibly of degraded quality.
P 0x003C
%% Image Handler
%%
%% With 'D' option dvipdfmx may invoke shell command via system()
%% function call.
%%
%% Command-line template for a-to-b conversion:
%%
%% Supported target format ('b') is currently PDF.
%% Percent sign '%' is special character:
%%
%% %i Input file name (FQPN). Name of file to be converted to PDF.
%% %o Output file name (FQPN). Temporary file to store conversion
%% result. Removed after inclusion is finished. (regardless of
%% success or failure)
%% %b The "base" name of the input file, e.g., "foo" instead of
%% "foo.eps".
%% %v The PDF version to be converted to, e.g. "1.4" for PDF 1.4.
%% %% Replaced with single '%'.
%% Ghostscript (PS-to-PDF and PDF-to-PDF):
%%
%% ps2pdf is a front-end to gs. For a complete list of options, see
%% http://ghostscript.com/doc/current/Ps2pdf.htm#Options
%%
%% In TeX Live, we use the rungs wrapper instead of ps2pdf, becuse we
%% must omit the -dSAFER which ps2pdf specifies: in order for pstricks
%% to work with xetex,
%% /usr/local/texlive/*/texmf-dist/dvips/pstricks/pstricks.pro (for
%% example) needs to be accessed. Also, it is better to use our
%% supplied gs on Windows.
%%
%% Without the -dEPSCROP below, an eps file with negative llx/lly (as
%% created by MetaPost, for example) fails. In 2013, changes were made
%% to the drivers xetex.def, dvipdfmx.def, etc., to handle non-zero
%% llx/lly so we could use it. The file epsf-dvipdfmx.tex is available
%% from CTAN/TL/etc. to support plain's epsf.tex.
%%
%% In 2014, we discovered that -sPAPERSIZE=a0 was needed to support
%% pstricks under xetex; otherwise, images were cropped (see thread at
%% http://tug.org/pipermail/xetex/2014-November/025664.html).
%% Happily, it seems that using both -dEPSCROP and -sPAPERSIZE=a0
%% simultaneously works ok. So that's we do below.
%%
%% By default, gs encodes all images contained in a PS file using
%% the lossy DCT (i.e., JPEG) filter. This often leads to inferior
%% result (see the discussion at http://electron.mit.edu/~gsteele/pdf/).
%% The "-dAutoFilterXXXImages" and "-dXXXImageFilter" options used
%% below force all images to be encoded with the lossless Flate (zlib,
%% same as PNG) filter. Note that if the PS file already contains DCT
%% encoded images (which is possible in PS level 2), then these images
%% will also be re-encoded using Flate. To turn the conversion off,
%% simply remove the options mentioned above.
%%
%% Incidentally, especially in TL, more than one dvipdfmx.cfg may be
%% extant. You can find the one that is active by running:
%% kpsewhich -progname=dvipdfmx -format='other text files' dvipdfmx.cfg
%% and control which one is found by setting DVIPDFMXINPUTS.
%%
D "rungs -q -dNOPAUSE -dBATCH -dEPSCrop -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=%v -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -sOutputFile='%o' '%i' -c quit"
% other random ps converters people have experimented with.
%D "/usr/local/bin/ps2pdf -dEPSCrop '%i' '%o'"
%D "/usr/texbin/epstopdf '%i' -o '%o'"
%D "/usr/bin/pstopdf '%i' -o '%o'"
%
%% Frank Siegert's PStill:
%D "/usr/local/bin/pstill -c -o '%o' '%i'"
%
%% Batik + Fop (SVG-to-PDF):
%% If you want both PS and SVG, you need to write a script or program
%% that selectively invokes converters.
%D "java -classpath classpaths -jar /path/to/batik-rasterizer.jar -m application/pdf -d '%o' '%i'"
%
%% There are no way to directly know suggested size of (raster) images.
%% You may want to use %b here, since you can try reading the ebb file
%% to see what is natural (physical) size of images.
%D "ras2pdf -r 300x300 -b '%b.bb' -o '%o' '%i'"
%
%% ImageMagick:
%% Easiest way to support various file formats.
%D "convert '%i' 'epdf:%o'"
%% Other Options
%%
%% DPI for PK font creation
%r 600
%% Set number of fractional digit kept for various numbers in PDF page
%% content output. By setting this to 2 (default), dvipdfmx rounds
%% real numbers at 2nd fractional (decimal) digit; e.g., "3.14159" is
%% written as "3.14". Increasing this to more than 2 isn't meaningful
%% for old Acrobat due to implementation limit of Acrobat.
%% Length 0.01 in unscaled coordinate system amount to width of 1 pixel
%% in 7200ppi display.
%d 5
%% Image cache life in hours
%% 0 means erase all old images and leave new images
%% -1 means erase all old images and also erase new images
%% -2 means ignore image cache
%I -2
%% Font Map Files
%%
%% teTeX 2.x and TeX Live using updmap (pdfTeX format)
f pdftex.map
%% teTeX 2.x and TeX Live using updmap (DVIPDFM format)
%f dvipdfm.map
%% teTeX 2.x and TeX Live using updmap (DVIPS format)
%% MiKTeX 2.2 and 2.3
%f psfonts.map
%% Put additional fontmap files here (usually for Type0 fonts)
%f cid-x.map
% the following file is generated by updmap(-sys) from the
% KanjiMap entries in the updmap.cfg file.
f kanjix.map
% minimal example for Chinese and Korean users
% improvements please to tex-live@tug.org
f ckx.map
%% Include other config files
%i <filename>

View File

@ -0,0 +1,46 @@
%!
TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def
/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{
setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{
/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch
known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC
/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0
setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0
setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61
0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC
/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0
setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87
0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{
0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{
0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC
/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0
setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0
setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90
0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC
/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0
setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0
0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{
0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{
0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC
/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0
setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC
/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0
0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1
0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11
0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0
setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0
0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC
/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0
setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0
0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0
1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC
/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0
setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{
0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor}
DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70
setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0
setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1
setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end

View File

@ -0,0 +1,6 @@
%!
TeXDict begin/cX 18 def/CM{gsave TR 0 cX neg moveto 0 cX lineto stroke
cX neg 0 moveto cX 0 lineto stroke grestore}def end/bop-hook{cX dup TR
gsave .3 setlinewidth 0 0 CM vsize cX 2 mul sub dup hsize cX 2 mul sub
dup isls{4 2 roll}if 0 CM exch CM 0 exch CM grestore 0 cX -2 mul TR isls
{cX -2 mul 0 TR}if}def

View File

@ -0,0 +1,279 @@
%!PS-Adobe-2.0
% This is based on: ehandler.ps -- Downloaded Error Break-page handler
% Copyright (C) 1984, 1985, 1986 Adobe Systems Incorporated.
% All Rights Reserved.
% Modifications Copyright (C) 1990, 1991 Y&Y.
% print names of dictionaries on dictionary stack
% print first few lines of input stream after error
% print top of execution stack
% make visible offending commands that are control characters
% print jobname if it exists
% catch errors in error handler and print them
% permit overloading (for debugging of error handler)
% ignore timeout errors
% control hardcopy versus softcopy output
% avoid multiple pages with error message
% NOTE: For hardcopy paper/film output: set showflag true
% NOTE: For screen/file output: set printflag true
0 % exitserver password
/$brkpage where
% {pop} if false % UNCOMMENT THIS LINE TO PERMIT OVERLOADING
{ % ifelse
pop pop
(Error Handler in place - not loaded again\n)
print flush stop
}{ % else
dup serverdict begin
statusdict begin checkpassword { % ifelse
(Error Handler downloaded.\n) print flush
exitserver
}{ % else
pop
(Bad Password on loading error handler!!!\n)
print flush stop
} ifelse
} ifelse
/$brkpage where {pop} { % to allow overloading
/$brkpage 64 dict def
} ifelse % to allow overloading
$brkpage begin
/showflag true def % set to true for hardcopy paper/film output
/printflag false def % set to true for sending back to screen/file
/prnt { % def
dup type /stringtype ne {=string cvs} if
dup length 1 eq { dup 0 get 32 lt { dup 0 get % new
64 add exch pop (control-X) dup 8 4 -1 roll put} if} if % new
dup length 6 mul
/tx exch def /ty 10 def
currentpoint /toy exch def /tox exch def
1 setgray newpath
tox toy 2 sub moveto
0 ty rlineto tx 0 rlineto
0 ty neg rlineto
closepath showflag{fill}if
tox toy moveto 0 setgray
showflag{dup show}if printflag{print}{pop}ifelse
} bind def
/nl { % def
currentpoint exch pop lmargin exch moveto
0 -10 rmoveto
printflag{(\n) print flush}if
} def
/== {/cp 0 def typeprint nl} def
/typeprint {
dup type dup currentdict exch known {exec}{unknowntype}ifelse
} readonly def
/lmargin 72 def /rmargin 72 def
/tprint { % def
dup length cp add rmargin gt {nl /cp 0 def} if
dup length cp add /cp exch def
prnt
} readonly def
/cvsprint {=string cvs tprint ( ) tprint} readonly def
/unknowntype { % def
exch pop cvlit (??) tprint cvsprint
} readonly def
/integertype {cvsprint} readonly def
/realtype {cvsprint} readonly def
/booleantype {cvsprint} readonly def
/operatortype {(//) tprint cvsprint} readonly def
/marktype {pop (-mark- ) tprint} readonly def
% /dicttype {pop (-dictionary- ) tprint} readonly def % do more:
/dicttype {namedict cvsprint} readonly def
/nulltype {pop (-null- ) tprint} readonly def
/filetype {pop (-filestream- ) tprint} readonly def
/savetype {pop (-savelevel- ) tprint} readonly def
/fonttype {pop (-fontid- ) tprint} readonly def
/nametype { % def
dup xcheck not {(/) tprint} if cvsprint
}readonly def
/stringtype { % def
dup rcheck { % ifelse
(\() tprint tprint (\)) tprint
}{ % else
pop (-string- ) tprint
} ifelse
} readonly def
/arraytype { % def
dup rcheck { % ifelse
dup xcheck { % ifelse
({) tprint {typeprint} forall (}) tprint
}{ % else
([) tprint {typeprint} forall (]) tprint
} ifelse
}{ % else
pop (-array- ) tprint
} ifelse
} readonly def
/packedarraytype { % def
dup rcheck { % ifelse
dup xcheck { % ifelse
({) tprint {typeprint} forall (}) tprint
}{ % else
([) tprint {typeprint} forall (]) tprint
} ifelse
}{ % else
pop (-packedarray- ) tprint
} ifelse
} readonly def
/courier /Courier findfont 10 scalefont def
/OLDhandleerror where not { % to allow overloading
/OLDhandleerror errordict /handleerror get def
}{pop} ifelse % to allow overloading
end % $brkpage
% read lines terminated by EITHER newline or return
% (to deal with brain-damage of AppleTalk connection)
/readsafeline{ % def
dup length exch 0
{ % loop
3 index read
{ % ifelse
dup 10 eq 1 index 13 eq or
{ % ifelse
pop
0 exch getinterval exch pop exch pop
true exit % normal exit
}{ % ifelse
3 index 2 index le
{ % ifelse
pop pop exch pop exch pop true
stop % rangecheck long line
}{ % ifelse
3 copy put pop 1 add
} ifelse
} ifelse
}{ % ifelse
0 exch getinterval exch pop exch pop
false exit % EOF exit
} ifelse
} loop
} def
% Find name for dictionary in tree of dictionaries - ignore font dictionaries
% Discard intermediate dictionary info - return first match
/lookfordict { % name and dict to search
dup % save for self reference detection
{ % forall
dup type /dicttype eq
{ % is a dictionary
dup 3 index ne
{ % not self reference
1 index /unknowndict ne
{ % not the place we saved
dup unknowndict eq
{ % found it
pop 3 1 roll pop pop true exit % return name and true
}{ % not the unknown dict
dup rcheck
{ % safe to read
1 index /FontDirectory ne
{ % not Font Directory
lookfordict % recurse
{ % found it
3 1 roll pop pop true exit % return name and true
}{
0 0 % replace key and value
} ifelse % lookfordict
} if % FontDirectory
} if % safe to read
} ifelse % equals unknown
} if % place we hid dict
} if % self reference
} if % is a dictionary
pop pop % flush key and value
} forall
dup true ne {pop pop false} if % flush name and dictionary
} readonly def
/namedict{ % get name for dictionary
dup systemdict eq {/systemdict}
{/unknowndict exch def % store unknown dictionary
/systemdict dup load lookfordict not {/-no-name-} if} ifelse
} readonly def
/handleerror { % put
systemdict begin $error begin $brkpage begin
newerror { % ifelse
errorname /timeout ne {
{
/newerror false store
vmstatus % pop pop
3 -1 roll
0 ne {grestoreall} if % free up some VM is possible
initgraphics courier setfont
lmargin 720 moveto
exch sub 4096 lt {stop} if % nearly out of VM ?
statusdict /jobname known { % if
statusdict /jobname get dup type /stringtype eq {
nl (JOBNAME: ) prnt
prnt nl
} {pop} ifelse
} if
nl (ERROR: ) prnt
errorname prnt nl
nl (OFFENDING COMMAND: ) prnt
/command load prnt
$error /ostack known { % if
nl nl (OPERAND STACK:) prnt nl nl
$error /ostack get aload length {==} repeat
} if
$error /estack known { % if
nl nl (TOP OF EXECUTION STACK:) prnt nl nl
$error /estack get aload length
true exch
{dup {1 index == 1 index type cvlit /filetype eq {not} if} if
exch pop} repeat pop % avoid system stuff
} if
$error /dstack known { % if
nl nl (DICTIONARY STACK:) prnt nl nl
$error /dstack get aload length {namedict cvx ==} repeat
} if
systemdict /file known
{ % if
nl nl (FILE STREAM:) prnt nl nl
true 7
{ % repeat
(%stdin) (r) file =string {readsafeline} stopped
{
pop (long line:\n) prnt =string prnt nl
}{
{
prnt nl
}{
prnt nl (EOF) prnt nl nl pop false exit
} ifelse
} ifelse
} repeat
{3 {(.) prnt nl} repeat nl} if
} if
showflag{/#copies 1 def systemdict /showpage get exec}if
/newerror true store
/OLDhandleerror load end end end exec
} stopped {
nl nl (VMError (or error in error handler)) prnt nl
nl (ERROR: ) prnt %
errorname prnt nl %
nl (OFFENDING COMMAND: ) prnt
/command load prnt nl %
showflag{/#copies 1 def systemdict /showpage get exec}if
/newerror true store
/OLDhandleerror load end end end exec
} if %% get some output at least if handler dies
} if % ignore timeout
}{ % else already in error handler ...
end end end
%% systemdict /showpage get exec %% get some output if internal error ?
} ifelse
}
dup 0 systemdict put % replace name by actual dict object
dup 4 $brkpage put % replace name by dict object
bind readonly
errordict 3 1 roll put % put proc in errordict as /handleerror

View File

@ -0,0 +1,4 @@
%!
/fstore{dup dict exch{dup 4 2 roll put}repeat def}bind def/fshow{gsave
72 TeXDict/Resolution get div -72 TeXDict/VResolution get div scale 1
DVImag div dup scale get cvx exec show grestore}bind def

View File

@ -0,0 +1,53 @@
%!
/HPSdict 20 dict dup begin/braindeaddistill 50 def/rfch{dup length 1 sub
1 exch getinterval}bind def/splituri{dup(#)search{exch pop}{()exch}
ifelse dup(file:)anchorsearch{pop exch pop 3 -1 roll pop false}{pop 3 -1
roll exch pop true}ifelse}bind def/lookuptarget{exch rfch dup
/TargetAnchors where{pop TargetAnchors dup 3 -1 roll known{exch get true
}{pop(target unknown:)print == false}ifelse}{pop pop
(target dictionary unknown\012)print false}ifelse}bind def/savecount 0
def/stackstopped{count counttomark sub/savecount exch store stopped
count savecount sub 1 sub dup 0 gt{{exch pop}repeat}{pop}ifelse}bind def
/tempstring 128 string def/targetvalidate{1 index dup length 127 gt exch
tempstring cvs dup(/)search{pop pop pop exch pop true exch}{pop}ifelse
token{pop length 0 ne}{true}ifelse or not}bind def/targetdump-hook where
{pop}{/targetdump-hook{dup mark exch gsave initmat setmatrix{{mark/Dest
4 2 roll targetvalidate{aload pop exch pop/Page 3 1 roll/View exch[exch
/FitH exch]/DEST pdfmark}{cleartomark}ifelse}forall}stackstopped pop
grestore}bind def}ifelse/baseurl{mark exch 1 dict dup 3 -1 roll/Base
exch put/URI exch/DOCVIEW{pdfmark}stackstopped pop}bind def
/externalhack systemdict/PDF known def/oldstyle true def/initmat matrix
currentmatrix def/actiondict 2 dict dup/Subtype/URI put def
/weblinkhandler{dup 3 1 roll mark 4 1 roll/Title 4 1 roll splituri 3 -1
roll dup length 0 gt{cvn/Dest exch 4 2 roll}{pop}ifelse{externalhack{
/HTTPFile exch}{actiondict dup 3 -1 roll/URI exch put/Action exch}
ifelse}{externalhack{/HTTPFile exch}{/File exch/Action/GoToR}ifelse}
ifelse counttomark 2 sub -1 roll aload pop/Rect 4 1 roll/Border 3 1 roll
/Color exch oldstyle{/LNK}{/Subtype/Link/ANN}ifelse gsave initmat
setmatrix{pdfmark}stackstopped grestore}bind def/externalhandler where{
pop}{/externalhandler{2 copy{weblinkhandler}exec{/externalhack
externalhack not store 2 copy{weblinkhandler}exec{/externalhack
externalhack not store/oldstyle false store 2 copy{weblinkhandler}exec{
(WARNING: external refs disabled\012)print/externalhandler{pop pop}bind
store externalhandler}{pop pop}ifelse}{pop pop/externalhack externalhack
not store}ifelse}{pop pop/externalhandler{weblinkhandler pop}bind store}
ifelse}bind def}ifelse/pdfmnew{dup type/stringtype eq{externalhandler}{
exch dup rfch exch 3 -1 roll lookuptarget{mark 4 1 roll/Title 4 1 roll
aload pop exch pop/Page 3 1 roll/View exch[exch/FitH exch]5 -1 roll
aload pop/Rect 4 1 roll/Border 3 1 roll/Color exch/LNK gsave initmat
setmatrix pdfmark grestore}{pop pop}ifelse}ifelse}bind def/pdfmold{dup
type/stringtype eq{externalhandler}{exch dup rfch exch 3 -1 roll
lookuptarget{mark 4 1 roll/Title 4 1 roll aload pop exch pop/Page 3 1
roll/View exch[exch/FitH exch]5 -1 roll aload pop pop 0 3 getinterval
/Rect 3 1 roll/Border exch/LNK gsave initmat setmatrix pdfmark grestore}
{pop pop}ifelse}ifelse}bind def/pdfm where{pop}{/pdfm
/currentdistillerparams where{pop currentdistillerparams dup
/CoreDistVersion known{/CoreDistVersion get}{0}ifelse dup
braindeaddistill le{(WARNING: switching to old pdfm because version =)
print ==/pdfmold}{pop/pdfmnew}ifelse load}{/pdfmark where{pop{dup type
/stringtype eq{externalhandler}{2 copy mark 3 1 roll{pdfmnew}
stackstopped{2 copy mark 3 1 roll{pdfmold}stackstopped{
(WARNING: pdfm disabled\012)print/pdfm{pop pop}store}{
(WARNING: new pdfm failed, switching to old pdfm\012)print/pdfm/pdfmold
load store}ifelse}{/pdfm/pdfmnew load store}ifelse pop pop}ifelse}}{{
pop pop}}ifelse}ifelse bind def}ifelse end def

View File

@ -0,0 +1,19 @@
% (This is the file {\tt resolution400.ps} supplied with NeWSprint.)
% {\tt simpson@math.psu.edu} only got this work by downloading the code
% via an extra header file, i.e., having this in the Dvips config file:
%
% M sparcptr
% D 400
% h resolution400.ps
%
/SetResolution {
/setres where {
/setres get exec
}{
pop
} ifelse
} def
%%BeginFeature *SetResolution 400
400 SetResolution
%%EndFeature
%%EndSetup

View File

@ -0,0 +1,46 @@
%!
TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
{userdict/md get type/dicttype eq{userdict begin md length 10 add md
maxlength ge{/md md dup length 20 add dict copy def}if end md begin
/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
}if 0 setgray}N/@beginspecial{SDict begin/SpecialSave save N gsave
normalscale currentpoint TR @SpecialDefaults count/ocount X/dcount
countdictstack N}N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto
0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale
ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}
ifelse scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale
llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly
lineto urx ury lineto llx ury lineto closepath clip}if/showpage{}N
/erasepage{}N/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{
count ocount sub{pop}repeat countdictstack dcount sub{end}repeat
grestore SpecialSave restore end}N/@defspecial{SDict begin}N
/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX
currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY
moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X
/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0
1 startangle endangle arc savematrix setmatrix}N end

View File

@ -0,0 +1,45 @@
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3
def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90
rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0
N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop
false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A
length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}
forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{
BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat
{BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch
round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0
rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B
/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}
B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p
-3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{
0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end

View File

@ -0,0 +1,57 @@
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3
def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90
rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0
N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop
false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A
length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}
forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{
BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat
{BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch
round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0
rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B
/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}
B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p
-3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{
0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end

View File

@ -0,0 +1,14 @@
%!
TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
end

View File

@ -0,0 +1,17 @@
%!
% Patch by TVZ
% Makes dvips files draw rules with stroke rather than fill.
% Makes narrow rules more predictable at low resolutions
% after distilling to PDF.
% May have unknown consequences for very thick rules.
% Tested only with dvips 5.85(k).
TeXDict begin
/QV {
gsave newpath /ruleY X /ruleX X
Rx Ry gt
{ ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry }
{ ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx }
ifelse
setlinewidth 0 setlinecap stroke grestore
} bind def
end

View File

@ -0,0 +1,2 @@
M canonex
D 600

View File

@ -0,0 +1,3 @@
p +bakomaextra.map
p +psfonts.cmz
p +psfonts.amz

View File

@ -0,0 +1,2 @@
M canonex
D 600

View File

@ -0,0 +1,2 @@
M cx
D 300

View File

@ -0,0 +1,2 @@
M deskjet
D 300

View File

@ -0,0 +1,2 @@
% The printer offsets the output by this much.
O 0pt,0pt

View File

@ -0,0 +1,2 @@
M epson
D 240

View File

@ -0,0 +1,2 @@
M ibmvga
D 110

View File

@ -0,0 +1,2 @@
M ljfour
D 600

View File

@ -0,0 +1,10 @@
p +hlce.map
p +hlcf.map
p +hlcn.map
p +hlct.map
p +hlcw.map
p +hlh.map
p +hls.map
p +hlst.map
p +hlx.map
p +hlcm.map

View File

@ -0,0 +1 @@
p +mbn.map

View File

@ -0,0 +1 @@
p +mga.map

View File

@ -0,0 +1,6 @@
% config.mirrorprint: Thomas Esser, 1998, public domain.
% Usage: dvips -Pmirrorprint ...
% Purpose: print in a mirrored way
h mirr.hd

View File

@ -0,0 +1,2 @@
p +mntz.map
p +lscy.map

View File

@ -0,0 +1,604 @@
% $Id: config.ps 24459 2011-11-02 15:13:04Z preining $
% config.ps - configuration file for dvips.
% Tomas Rokicki, Thomas Esser, Karl Berry, et al., 1986ff, public domain.
% Memory available. Download the three-line PostScript file:
% %! Hey, we're PostScript
% /Times-Roman findfont 30 scalefont setfont 144 432 moveto
% vmstatus exch sub 40 string cvs show pop showpage
% to determine this number. (It will be the only thing printed.)
m 3500000
% Run securely. z2 disables both shell command execution in
% `\special' and config files (via the `E' option) and opening of any
% absolute filenames. z1, the default, forbids shell escapes but
% allows absolute filenames. z0 allows both. The corresponding
% command line options are -R0|-R1|-R2
z1
% How to print, maybe with lp instead lpr, etc. If commented-out, output
% will go into a file by default.
%o |lpr
% Default resolution of this device, in dots per inch.
D 600
X 600
Y 600
% Metafont mode. (This is completely different from the -M
% command-line option, which controls whether mktexpk is invoked.)
% See ../../metafont/misc/modes.mf for a list of mode names. This mode
% and the D number above must agree, or mktexpk will get confused.
M ljfour
% Last resort bitmap sizes.
R 300 600
% Correct printer offset. You can use testpage.tex from the LaTeX
% distribution to find these numbers.
O 0pt,0pt
% Bitmap font compression. Results in more compact output files, but
% sometimes causes trouble. So the default is disabled. Set Z1 to enable
% this feature.
Z0
% Partially download Type 1 fonts by default. Only reason not to do
% this is if you encounter bugs. (Please report them to
% @email{tex-k@tug.org} if you do.)
j
% This shows how to add your own map file.
% Remove the comment and adjust the name:
% p +myfonts.map
% In the past, the a4size and letterSize definitions did not set the
% paper size, but we want to set it if we can so that ps2pdf can work
% properly. So, a4 and a4size, and letter and letterSize, are made
% identical here, and we prefer the a4/letter names -- texconfig uses them.
%
% In the definitions below, if we have setpagedevice, use that.
% Else if we have the a4 resp. letter operator, use that.
% Else do nothing to set the page size.
%
% If you need to have no paper size stuff in the output at all, e.g., if
% you are producing a multi-page document for further processing, use
% -tnopaper (defined at end). (With a single-page document, you can use -E.)
%
% emacs-page
@ a4 210mm 297mm
@+ ! %%DocumentPaperSizes: a4
@+ %%BeginPaperSize: a4
@+ /setpagedevice where
@+ { pop << /PageSize [595 842] >> setpagedevice }
@+ { /a4 where { pop a4 } if }
@+ ifelse
@+ %%EndPaperSize
@ letter 8.5in 11in
@+ ! %%DocumentPaperSizes: Letter
@+ %%BeginPaperSize: Letter
@+ /setpagedevice where
@+ { pop << /PageSize [612 792] >> setpagedevice }
@+ { /letter where { pop letter } if }
@+ ifelse
@+ %%EndPaperSize
@ a4size 210mm 297mm
@+ ! %%DocumentPaperSizes: a4
@+ %%BeginPaperSize: a4
@+ /setpagedevice where
@+ { pop << /PageSize [595 842] >> setpagedevice }
@+ { /a4 where { pop a4 } if }
@+ ifelse
@+ %%EndPaperSize
@ letterSize 8.5in 11in
@+ ! %%DocumentPaperSizes: Letter
@+ %%BeginPaperSize: Letter
@+ /setpagedevice where
@+ { pop << /PageSize [612 792] >> setpagedevice }
@+ { /letter where { pop letter } if }
@+ ifelse
@+ %%EndPaperSize
% The jacow paper size is the smaller of letter and a4 in both
% dimensions, and can therefore hopefully be printed on either paper
% size. As far as we know, Volker Schaa first used it for the JACOW
% conference proceedings that he produced.
@ jacow 210mm 11in
@+ ! %%DocumentPaperSizes: jacow
@+ %%BeginPaperSize: jacow
@+ /setpagedevice where
@+ { pop << /PageSize [595 792] >> setpagedevice }
@+ if
@+ %%EndPaperSize
% The smallbook paper size has been used by the Free Software Foundation
% to print manuals for many years, and is part of Texinfo.
@ smallbook 7in 9.25in
@+ ! %%DocumentPaperSizes: smallbook
@+ %%BeginPaperSize: smallbook
@+ /setpagedevice where
@+ { pop << /PageSize [504 666] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ halfexecutive 133mm 184mm
@+ ! %%DocumentPaperSizes: halfexecutive
@+ %%BeginPaperSize: halfexecutive
@+ /setpagedevice where
@+ { pop << /PageSize [378 522] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ halfletter 140mm 216mm
@+ ! %%DocumentPaperSizes: halfletter
@+ %%BeginPaperSize: halfletter
@+ /setpagedevice where
@+ { pop << /PageSize [396 612] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ statement 140mm 216mm
@+ ! %%DocumentPaperSizes: statement
@+ %%BeginPaperSize: statement
@+ /setpagedevice where
@+ { pop << /PageSize [396 612] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ executive 184mm 267mm
@+ ! %%DocumentPaperSizes: executive
@+ %%BeginPaperSize: executive
@+ /setpagedevice where
@+ { pop << /PageSize [522 756] >> setpagedevice }
@+ if
@+ %%EndPaperSize
% for powerdot
@ screen 8.25in 11in
@+ ! %%DocumentPaperSizes: Screen
@+ %%BeginPaperSize: Screen
@+ /setpagedevice where
@+ { pop << /PageSize [594 792] >> setpagedevice }
@+ if
@+ %%EndPaperSize
% a common size for printers (in north america).
@ sixbynine 6in 9in
@+ ! %%DocumentPaperSizes: SixByNine
@+ %%BeginPaperSize: SixByNine
@+ /setpagedevice where
@+ { pop << /PageSize [432 648] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ quarto 215mm 275mm
@+ ! %%DocumentPaperSizes: quarto
@+ %%BeginPaperSize: quarto
@+ /setpagedevice where
@+ { pop << /PageSize [610 780] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ note 216mm 279mm
@+ ! %%DocumentPaperSizes: note
@+ %%BeginPaperSize: note
@+ /setpagedevice where
@+ { pop << /PageSize [612 792] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ folio 216mm 330mm
@+ ! %%DocumentPaperSizes: folio
@+ %%BeginPaperSize: folio
@+ /setpagedevice where
@+ { pop << /PageSize [612 936] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ legal 8.5in 14in
@+ ! %%DocumentPaperSizes: Legal
@+ %%BeginPaperSize: Legal
@+ /setpagedevice where
@+ { pop << /PageSize [612 1008] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ 10x14 10in 14in
@+ ! %%DocumentPaperSizes: 10x14
@+ %%BeginPaperSize: 10x14
@+ /setpagedevice where
@+ { pop << /PageSize [720 1008] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ ledger 17in 11in
@+ ! %%DocumentPaperSizes: Ledger
@+ %%BeginPaperSize: Ledger
@+ /setpagedevice where
@+ { pop << /PageSize [1224 792] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ tabloid 11in 17in
@+ ! %%DocumentPaperSizes: Tabloid
@+ %%BeginPaperSize: Tabloid
@+ /setpagedevice where
@+ { pop << /PageSize [792 1224] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ 11x17 11in 17in
@+ ! %%DocumentPaperSizes: 11x17
@+ %%BeginPaperSize: 11x17
@+ /setpagedevice where
@+ { pop << /PageSize [792 1224] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ a0 841mm 1189mm
@+ ! %%DocumentPaperSizes: a0
@+ %%BeginPaperSize: a0
@+ /setpagedevice where
@+ { pop << /PageSize [2384 3370] >> setpagedevice }
@+ { /a0 where { pop a0 } if }
@+ ifelse
@+ %%EndPaperSize
@ a1 594mm 841mm
@+ ! %%DocumentPaperSizes: a1
@+ %%BeginPaperSize: a1
@+ /setpagedevice where
@+ { pop << /PageSize [1684 2384] >> setpagedevice }
@+ { /a1 where { pop a1 } if }
@+ ifelse
@+ %%EndPaperSize
@ a2 420mm 594mm
@+ ! %%DocumentPaperSizes: a2
@+ %%BeginPaperSize: a2
@+ /setpagedevice where
@+ { pop << /PageSize [1191 1684] >> setpagedevice }
@+ { /a2 where { pop a2 } if }
@+ ifelse
@+ %%EndPaperSize
@ a3 297mm 420mm
@+ ! %%DocumentPaperSizes: a3
@+ %%BeginPaperSize: a3
@+ /setpagedevice where
@+ { pop << /PageSize [842 1191] >> setpagedevice }
@+ { /a3 where { pop a3 } if }
@+ ifelse
@+ %%EndPaperSize
@ a5 148mm 210mm
@+ ! %%DocumentPaperSizes: a5
@+ %%BeginPaperSize: a5
@+ /setpagedevice where
@+ { pop << /PageSize [420 595] >> setpagedevice }
@+ { /a5 where { pop a5 } if }
@+ ifelse
@+ %%EndPaperSize
@ a6 105mm 148mm
@+ ! %%DocumentPaperSizes: a6
@+ %%BeginPaperSize: a6
@+ /setpagedevice where
@+ { pop << /PageSize [298 420] >> setpagedevice }
@+ { /a6 where { pop a6 } if }
@+ ifelse
@+ %%EndPaperSize
@ a7 74mm 105mm
@+ ! %%DocumentPaperSizes: a7
@+ %%BeginPaperSize: a7
@+ /setpagedevice where
@+ { pop << /PageSize [210 298] >> setpagedevice }
@+ { /a7 where { pop a7 } if }
@+ ifelse
@+ %%EndPaperSize
@ a8 52mm 74mm
@+ ! %%DocumentPaperSizes: a8
@+ %%BeginPaperSize: a8
@+ /setpagedevice where
@+ { pop << /PageSize [147 210] >> setpagedevice }
@+ { /a8 where { pop a8 } if }
@+ ifelse
@+ %%EndPaperSize
@ a9 37mm 52mm
@+ ! %%DocumentPaperSizes: a9
@+ %%BeginPaperSize: a9
@+ /setpagedevice where
@+ { pop << /PageSize [105 147] >> setpagedevice }
@+ { /a9 where { pop a9 } if }
@+ ifelse
@+ %%EndPaperSize
@ a10 26mm 37mm
@+ ! %%DocumentPaperSizes: a10
@+ %%BeginPaperSize: a10
@+ /setpagedevice where
@+ { pop << /PageSize [74 105] >> setpagedevice }
@+ { /a10 where { pop a10 } if }
@+ ifelse
@+ %%EndPaperSize
@ jisb0 1030mm 1456mm
@+ ! %%DocumentPaperSizes: jisb0
@+ %%BeginPaperSize: jisb0
@+ /setpagedevice where
@+ { pop << /PageSize [2920 4127] >> setpagedevice }
@+ { /jisb0 where { pop jisb0 } if }
@+ ifelse
@+ %%EndPaperSize
@ jisb1 728mm 1030mm
@+ ! %%DocumentPaperSizes: jisb1
@+ %%BeginPaperSize: jisb1
@+ /setpagedevice where
@+ { pop << /PageSize [2064 2920] >> setpagedevice }
@+ { /jisb1 where { pop jisb1 } if }
@+ ifelse
@+ %%EndPaperSize
@ jisb2 515mm 728mm
@+ ! %%DocumentPaperSizes: jisb2
@+ %%BeginPaperSize: jisb2
@+ /setpagedevice where
@+ { pop << /PageSize [1460 2064] >> setpagedevice }
@+ { /jisb2 where { pop jisb2 } if }
@+ ifelse
@+ %%EndPaperSize
@ jisb3 364mm 515mm
@+ ! %%DocumentPaperSizes: jisb3
@+ %%BeginPaperSize: jisb3
@+ /setpagedevice where
@+ { pop << /PageSize [1032 1460] >> setpagedevice }
@+ { /jisb3 where { pop jisb3 } if }
@+ ifelse
@+ %%EndPaperSize
@ jisb4 257mm 364mm
@+ ! %%DocumentPaperSizes: jisb4
@+ %%BeginPaperSize: jisb4
@+ /setpagedevice where
@+ { pop << /PageSize [729 1032] >> setpagedevice }
@+ { /jisb4 where { pop jisb4 } if }
@+ ifelse
@+ %%EndPaperSize
@ jisb5 182mm 257mm
@+ ! %%DocumentPaperSizes: jisb5
@+ %%BeginPaperSize: jisb5
@+ /setpagedevice where
@+ { pop << /PageSize [516 729] >> setpagedevice }
@+ { /jisb5 where { pop jisb5 } if }
@+ ifelse
@+ %%EndPaperSize
@ jisb6 128mm 182mm
@+ ! %%DocumentPaperSizes: jisb6
@+ %%BeginPaperSize: jisb6
@+ /setpagedevice where
@+ { pop << /PageSize [363 516] >> setpagedevice }
@+ { /jisb6 where { pop jisb6 } if }
@+ ifelse
@+ %%EndPaperSize
@ jisb7 91mm 128mm
@+ ! %%DocumentPaperSizes: jisb7
@+ %%BeginPaperSize: jisb7
@+ /setpagedevice where
@+ { pop << /PageSize [258 363] >> setpagedevice }
@+ { /jisb7 where { pop jisb7 } if }
@+ ifelse
@+ %%EndPaperSize
@ jisb8 64mm 91mm
@+ ! %%DocumentPaperSizes: jisb8
@+ %%BeginPaperSize: jisb8
@+ /setpagedevice where
@+ { pop << /PageSize [181 258] >> setpagedevice }
@+ { /jisb8 where { pop jisb8 } if }
@+ ifelse
@+ %%EndPaperSize
@ b0 1000mm 1414mm
@+ ! %%DocumentPaperSizes: b0
@+ %%BeginPaperSize: b0
@+ /setpagedevice where
@+ { pop << /PageSize [2835 4008] >> setpagedevice }
@+ { /b0 where { pop b0 } if }
@+ ifelse
@+ %%EndPaperSize
@ b1 707mm 1000mm
@+ ! %%DocumentPaperSizes: b1
@+ %%BeginPaperSize: b1
@+ /setpagedevice where
@+ { pop << /PageSize [2004 2835] >> setpagedevice }
@+ { /b1 where { pop b1 } if }
@+ ifelse
@+ %%EndPaperSize
@ b2 500mm 707mm
@+ ! %%DocumentPaperSizes: b2
@+ %%BeginPaperSize: b2
@+ /setpagedevice where
@+ { pop << /PageSize [1417 2004] >> setpagedevice }
@+ { /b2 where { pop b2 } if }
@+ ifelse
@+ %%EndPaperSize
@ b3 353mm 500mm
@+ ! %%DocumentPaperSizes: b3
@+ %%BeginPaperSize: b3
@+ /setpagedevice where
@+ { pop << /PageSize [1001 1417] >> setpagedevice }
@+ { /b3 where { pop b3 } if }
@+ ifelse
@+ %%EndPaperSize
@ b4 250mm 353mm
@+ ! %%DocumentPaperSizes: b4
@+ %%BeginPaperSize: b4
@+ /setpagedevice where
@+ { pop << /PageSize [709 1001] >> setpagedevice }
@+ { /b4 where { pop b4 } if }
@+ ifelse
@+ %%EndPaperSize
@ b5 176mm 250mm
@+ ! %%DocumentPaperSizes: b5
@+ %%BeginPaperSize: b5
@+ /setpagedevice where
@+ { pop << /PageSize [499 709] >> setpagedevice }
@+ { /b5 where { pop b5 } if }
@+ ifelse
@+ %%EndPaperSize
@ b6 125mm 176mm
@+ ! %%DocumentPaperSizes: b6
@+ %%BeginPaperSize: b6
@+ /setpagedevice where
@+ { pop << /PageSize [354 499] >> setpagedevice }
@+ { /b6 where { pop b6 } if }
@+ ifelse
@+ %%EndPaperSize
@ c5 162mm 229mm
@+ ! %%DocumentPaperSizes: c5
@+ %%BeginPaperSize: c5
@+ /setpagedevice where
@+ { pop << /PageSize [459 649] >> setpagedevice }
@+ { /c5 where { pop c5 } if }
@+ ifelse
@+ %%EndPaperSize
@ DL 110mm 220mm
@+ ! %%DocumentPaperSizes: DL
@+ %%BeginPaperSize: DL
@+ /setpagedevice where
@+ { pop << /PageSize [312 624] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ Comm10 105mm 241mm
@+ ! %%DocumentPaperSizes: Comm10
@+ %%BeginPaperSize: Comm10
@+ /setpagedevice where
@+ { pop << /PageSize [297 684] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ Monarch 98.4mm 190.5mm
@+ ! %%DocumentPaperSizes: Monarch
@+ %%BeginPaperSize: Monarch
@+ /setpagedevice where
@+ { pop << /PageSize [279 540] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ archE 36in 48in
@+ ! %%DocumentPaperSizes: archE
@+ %%BeginPaperSize: archE
@+ /setpagedevice where
@+ { pop << /PageSize [2592 3456] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ archD 24in 36in
@+ ! %%DocumentPaperSizes: archD
@+ %%BeginPaperSize: archD
@+ /setpagedevice where
@+ { pop << /PageSize [1728 2592] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ archC 18in 24in
@+ ! %%DocumentPaperSizes: archC
@+ %%BeginPaperSize: archC
@+ /setpagedevice where
@+ { pop << /PageSize [1296 1728] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ archB 12in 18in
@+ ! %%DocumentPaperSizes: archB
@+ %%BeginPaperSize: archB
@+ /setpagedevice where
@+ { pop << /PageSize [864 1296] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ archA 9in 12in
@+ ! %%DocumentPaperSizes: archA
@+ %%BeginPaperSize: archA
@+ /setpagedevice where
@+ { pop << /PageSize [648 864] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ flsa 216mm 330.2mm
@+ ! %%DocumentPaperSizes: flsa
@+ %%BeginPaperSize: flsa
@+ /setpagedevice where
@+ { pop << /PageSize [612 936] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ flse 216mm 330.2mm
@+ ! %%DocumentPaperSizes: flse
@+ %%BeginPaperSize: flse
@+ /setpagedevice where
@+ { pop << /PageSize [612 936] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ csheet 431.8mm 558.8mm
@+ ! %%DocumentPaperSizes: csheet
@+ %%BeginPaperSize: csheet
@+ /setpagedevice where
@+ { pop << /PageSize [1224 1584] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ dsheet 558.8mm 863.6mm
@+ ! %%DocumentPaperSizes: dsheet
@+ %%BeginPaperSize: dsheet
@+ /setpagedevice where
@+ { pop << /PageSize [1584 2448] >> setpagedevice }
@+ if
@+ %%EndPaperSize
@ esheet 863.6mm 1117.6mm
@+ ! %%DocumentPaperSizes: esheet
@+ %%BeginPaperSize: esheet
@+ /setpagedevice where
@+ { pop << /PageSize [2448 3168] >> setpagedevice }
@+ if
@+ %%EndPaperSize
% use -t unknown with a \special{papersize=...} for a nonstandard page size.
@ unknown 0in 0in
@+ % dvips-unknown
@+ statusdict /setpageparams known { hsize vsize 0 1 statusdict begin {
@+ setpageparams } stopped end } { true } ifelse { statusdict /setpage known
@+ { hsize vsize 1 statusdict begin { setpage } stopped pop end } if } if
% use -t nopaper to get no paper size stuff in the output at all.
% This should remain as the last thing in the file, because the first
% 0in 0in entry is chosen when there is nothing better; ordinarily, we
% want to that to be "unknown", so that the correct nonstandard paper
% size is output, instead of just being omitted.
% http://groups.google.com/group/fr.comp.text.tex/browse_thread/thread/1b08961cf9b8a5ab/6b1d0b32443905e3
% and mactex mailing list thread from 24 Sep 2009 11:36:26.
@ nopaper 0in 0in
@+ % dvips-nopaper

View File

@ -0,0 +1,2 @@
M qms
D 300

View File

@ -0,0 +1,2 @@
M toshiba
D 180

View File

@ -0,0 +1 @@
p +unms.map

View File

@ -0,0 +1 @@
p +xypic.map

View File

@ -0,0 +1,2 @@
M cx
D 300

View File

@ -0,0 +1,2 @@
M deskjet
D 300

View File

@ -0,0 +1,3 @@
M gtfax
X 204
Y 196

View File

@ -0,0 +1,2 @@
% The printer offsets the output by this much.
O 0pt,0pt

View File

@ -0,0 +1,2 @@
M epson
D 240

View File

@ -0,0 +1,2 @@
M ibmvga
D 110

View File

@ -0,0 +1,2 @@
M ljfour
D 600

View File

@ -0,0 +1,2 @@
M qms
D 300

View File

@ -0,0 +1,2 @@
M toshiba
D 180

View File

@ -0,0 +1,346 @@
% render.ps - write font bitmaps and metric information to standard output.
% Version 1.18.
% ========================================================================
%
% Copyright (c) 1993-1998 Paul Vojta
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the "Software"), to
% deal in the Software without restriction, including without limitation the
% rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
% sell copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
%
% The above copyright notice and this permission notice shall be included in
% all copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
% PAUL VOJTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
% IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
% CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
%
% ========================================================================
%%%
% Usage: gs -DNODISPLAY -q -- render.ps fontname dlstring specinfo dpi
% Then, it will read standard input to get:
% pointsize
% charset
% Example:
% % gs -DNODISPLAY -q -- render.ps Helvetica "(phvr.gsf) run" \
% > ".5 ExtendFont" 300
% GS> 10
% GS> 97 98 99
/TeXDict currentdict def % needed by dotlessj.pro
%%
%
% Standard file definitions
/.stdin where { pop } { /.stdin (%stdin) (r) file def } ifelse
/bad-stdout false def
/.stdout where
{ pop }
{ { /.stdout (%stdout) (w) file def } stopped
{ /bad-stdout true def }
if
} ifelse
/bad-stderr false def
/.stderr where
{ pop }
{ { /.stderr (%stderr) (w) file def } stopped
{ /bad-stderr true def }
if
} ifelse
%%
%
% Define some routines first
% (string) fatal -
% Print string to stderr and quit.
/fatal
bad-stderr
{{
(\nrender.ps: ) exch concatstrings
print flush 1 .quit
}}
{{
(\nrender.ps: ) exch concatstrings
.stderr exch writestring .stderr flushfile 1 .quit
}}
ifelse
bind def
% (string) brun -
% Load a font in .pfb format.
/brun
{
(r) file false /PFBDecode filter cvx exec
}
bind def
% (string) ttload font
% Load a TrueType font (and leave it on the stack).
/ttload
{
FontOnStack
{
(Cannot load more than one TrueType font!\n) fatal
} if
(r) file .loadttfont
/FontOnStack true def
}
bind def
/FontOnStack false def
% (exec) getbbox -
% Get bounding box of the executable object and save it in char-urx,
% char-ury, etc.
/getbbox
{
gsave
nulldevice
erasepage
newpath
exec
pathbbox % returns llx lly urx ury
/char-ury exch ceiling cvi def
/char-urx exch ceiling cvi def
/char-lly exch floor cvi def
/char-llx exch floor cvi def
grestore
}
bind def
% - drawfontbbox -
% Draw the font's bbox.
/drawfontbbox
{
currentfont /FontBBox get
dup dup 0 get exch 1 get currentfont /FontMatrix get transform moveto
dup dup 0 get exch 3 get currentfont /FontMatrix get transform lineto
dup dup 2 get exch 1 get currentfont /FontMatrix get transform lineto
dup 2 get exch 3 get currentfont /FontMatrix get transform lineto
}
bind def
% (exec) mkbboxdev -
% Get bounding box of the executable object and make a device a few
% pixels larger on each side. If pathbbox fails for the object,
% then use the font's bbox.
/mkbboxdev
{
getbbox
char-llx char-urx sub round 0 eq char-lly char-ury sub round 0 eq or
{
{drawfontbbox} getbbox
}
if
matrix
char-urx char-llx sub 4 add % width
dup /width exch def
char-ury char-lly sub 4 add % height
dup /height exch def
<ff 00>
makeimagedevice setdevice
2 char-llx sub 2 char-lly sub translate
}
bind def
%%
%
% These may be called by the "specinfo" string.
/usefontbbox false def
% These do things to a transformation array; called by entries in psfonts.map.
%
/ObliqueSlant {dup sin exch cos div neg} bind def
/SlantFont {font-size mul add} def
/ExtendFont {3 -1 roll mul exch} def
/ReEncodeFont {/Encoding exch def} def
% Define writeppmfile, if it's not provided, or if the symbol .stdout is not
% available.
/our-writeppmfile
bad-stdout
systemdict /writeppmfile known not
or
{{
(P4\n) print
width =string cvs print
( ) print
height =string cvs print
(\n) print
width 7 add 8 div cvi string
0 1 height 1 sub
{
currentdevice exch 2 index copyscanlines
print
}
for
pop % discard string
}}
{{
.stdout currentdevice writeppmfile
}}
ifelse
def
%%
%
% Main program begins now. Just interpret it.
% Get arguments.
shellarguments not
{
(You must provide arguments to the shell!\n) fatal
}
if
/dpi exch cvr def
/specinfo exch def
/dlstring exch def
/fontname exch def
% Return the gs version number to the calling program.
(V ) print revision =
% Open the font.
dlstring () ne
{
dlstring cvx exec
}
if
FontOnStack not
{
Fontmap fontname cvn known % Or: fontname cvn /Font resourcestatus?
{
fontname cvlit findfont
}
{
FontDirectory fontname cvn known
{
fontname cvlit findfont
}
{
revision 341 lt
{
/defaultfontname fontname cvlit def
}
if
{ fontname cvlit findfont } stopped
{
(font ) fontname concatstrings
( is not defined.\n) concatstrings
fatal
}
if
}
ifelse
}
ifelse
}
if
% Get arguments from stdin. Just leave the character list on the stack.
/font-size
.stdin 20 string readline pop cvr % get pointsize
72.27 div dpi mul % let's work in (TeX) points
def
[ .stdin 1024 string readline pop cvx exec ] % character list
% Define the font, and make it current.
% Get the font.
exch
% Copy over the font dictionary to make it writable;
% this makes ReEncodeFont easier, and is needed for dotless j processing.
dup length 1 add dict begin
{1 index /FID ne {def}{pop pop} ifelse} forall
% Now do the transformations specified in psfonts.map.
[ font-size 0 specinfo cvx exec 0 exch font-size 0 0 ]
% End the current dictionary, and make it a font.
/TargetFont currentdict end definefont
% Apply the tranformation matrix and make the font current.
exch makefont dup /TargetFont exch def setfont
% If the font's bounding box is zero, then do not use it.
usefontbbox
{ currentfont /FontBBox get
true exch {0 eq and} forall
{/usefontbbox false def}if
}
if
% If we are to use the font's bounding box, then get it and transform it.
usefontbbox
{
{drawfontbbox} mkbboxdev
}
if
% Begin loop over characters.
{
/charno exch def
/charstring 1 string dup 0 charno put def
/charwidth charstring stringwidth pop def
% Get the character's bounding box. This also makes the device.
usefontbbox not
{
{ 0 0 moveto charstring true charpath } mkbboxdev
}
if
% Print the metric info.
(#^ ) print
charno =string cvs print
( ) print
char-llx =string cvs print
( ) print
char-lly =string cvs print
( ) print
char-urx =string cvs print
( ) print
char-ury =string cvs print
( ) print
charwidth =string cvs print
(\n) print
% Now write the bitmap.
erasepage 0 0 moveto
charstring show
our-writeppmfile
}
forall

View File

@ -0,0 +1,138 @@
%!
%%
%% Source File `pspicture.dtx'.
%% Copyright (C) 1992 1999 David Carlisle
%% This file may be distributed under the terms of the LPPL.
%% See 00readme.txt for details.
%%
/!BP{
72 72.27 div dup scale
}def
/!A{
newpath
0 0 moveto
dup neg dup .4 mul rlineto
.8 mul 0 exch rlineto
closepath
fill
} def
/!V{
!BP
/!X exch def
/!y exch def
/!x exch def
newpath
0 0 moveto
!x 0 eq {0 !y 0 lt {!X neg}{!X} ifelse}
{!x 0 lt {!X neg}{!X}ifelse !X !y mul !x abs div} ifelse
lineto
setlinewidth % @wholewidth
currentpoint
stroke
translate
!y !x atan
rotate
!A % @arrowlength
}def
/!L{
!BP
/!X exch def
/!y exch def
/!x exch def
newpath
0 0 moveto
!x 0 eq {0 !y 0 lt {!X neg}{!X} ifelse}
{!x 0 lt {!X neg}{!X}ifelse !X !y mul !x abs div} ifelse
lineto
setlinewidth % @wholewidth
stroke
}def
/!C{
!BP
0 0 3 2 roll
2 div 0 360 arc
setlinewidth % @wholewidth
stroke
}def
/!D{
!BP
0 0 3 2 roll
2 div 0 360 arc fill
}def
/!O{
!BP
/!y exch 2 div def
/!x exch 2 div def
/!r exch !x !y
2 copy gt {exch} if pop
2 copy gt {exch} if pop
def
setlinewidth % @wholewidth
1 eq
{newpath
!x neg 0 moveto
!x neg !y 0 !y !r arcto 4 {pop} repeat
0 !y lineto
stroke}if
1 eq
{newpath
!x 0 moveto
!x !y 0 !y !r arcto 4 {pop} repeat
0 !y lineto
stroke}if
1 eq
{newpath
!x neg 0 moveto
!x neg !y neg 0 !y neg !r arcto 4 {pop} repeat
0 !y neg lineto
stroke}if
1 eq
{newpath
!x 0 moveto
!x !y neg 0 !y neg !r arcto 4 {pop} repeat
0 !y neg lineto
stroke}if
}def
/!V2{
!BP
2 copy exch
atan
/a exch def
2 copy
newpath
0 0 moveto
lineto % <x*unitlength> <y*unitlength>
3 2 roll
setlinewidth % @wholewidth
stroke
translate % <x*unitlength> <y*unitlength>
a rotate
!A % @arrowlength
}def
/!L2{
!BP
newpath
0 0 moveto
lineto % <x*unitlength> <y*unitlength>
setlinewidth % @wholewidth
stroke
}def
/!C2{
!BP
/!s exch def
/!y exch def
/!x exch def
newpath
0 0 moveto
0 0
!x 2 div !y 10 div !s mul add
!y 2 div !x 10 div !s mul sub
!x !y
curveto
setlinewidth % @wholewidth
stroke
}def

View File

@ -0,0 +1,11 @@
% Thomas Esser, 2002, public domain.
% Usage: dvips -Pbuiltin35 ...
%
% Purpose: set up dvips to consider the base 35 PostScript fonts as
% provided by your ps interpreter or printer, that is,
% do not download them.
%
% The default behavior of downloads with dvips is set in updmap.cfg.
p +builtin35.map

View File

@ -0,0 +1,9 @@
% Thomas Esser, 1998, public domain.
% Usage: dvips -Pdfaxhigh ...
% Purpose: set up dvips' resolution to be optimal for a G3 fax at high
% resolution (204x196)
M gtfax
X 204
Y 196

View File

@ -0,0 +1,9 @@
% Thomas Esser, 1998, public domain.
% Usage: dvips -Pdfaxlo ...
% Purpose: set up dvips' resolution to be optimal for a G3 fax at low
% resolution (204x98)
M gtfaxlo
X 204
Y 98

View File

@ -0,0 +1,11 @@
% Thomas Esser, 2002, public domain.
% Usage: dvips -Pdownload35 ...
% Purpose: set up dvips to download the "base 35" laserwriter fonts
% with your document.
% This file can be used to change the behaviour of dvips if the default
% of dvips is to consider the "base 35" as build in of the ps interpreter
% or printer. This default behaviour of dvips can be set by the updmap tool.
p +download35.map

View File

@ -0,0 +1,6 @@
% Thomas Esser, 2002, public domain.
% Usage: this file is implicitly used by gsftopk. We set up all available
% type 1 fonts for gsftopk by using psfonts_t1.map.
p +psfonts_t1.map

View File

@ -0,0 +1,9 @@
% $Id: config.maxmem 29709 2013-04-07 17:28:46Z karl $
% Public domain.
% Set Dvips' idea of available printiner memory to (effectively)
% infinite, to disable Dvips breaking the output into sections. Only
% works with dvips 5.993 (TeX Live 2013) and later. See the `Headers
% and memory usage' node in the manual.
%
m -1

View File

@ -0,0 +1,6 @@
% Thomas Esser, 2002, public domain.
% Usage: dvips -Poutline
% Purpose: set up all available type 1 fonts for use with dvips.
p psfonts_t1.map

View File

@ -0,0 +1,43 @@
% This is a config file for dvips, meant to produce PostScript optimized
% for distilling to PDF. Created 12 Apr 1999 by Timothy van Zandt, later
% modified te (papersize, o line).
% Public domain.
% Memory available: The default for Distiller 3.0x is 8meg.
% Reduce to be on safe side:
m 6000000
% Default is to save output as file.
% If possible, change this so that it pipes output to distiller.
% If not, use command line ``-o file'' option to change name
% of output file.
o
% Default resolution. Attempt to make `resolution independent'.
% Resolution set to 8000dpi (could be as high as 10000).
D 8000
% Use outline fonts, not bitmaps.
p psfonts_t1.map
% Last resort sizes.
% If you accidentally include a bitmapped pk font, it will probably go
% at 600dpi.
R 300 600
% Partial Type1 font downloading. This will happen by default. Uncomment
% this is you want to download entire fonts, which is not recommended.
% j0
% Switching algorithm for drawing rules. texc.pro is loaded by default,
% but the h tex.pro is need so that it comes before the patch. See
% below for more details.
h tex.pro
h alt-rule.pro

View File

@ -0,0 +1,6 @@
% Thomas Esser, 2002, public domain.
% Usage: dvips -Ppk ...
% Purpose: instruct dvips to prefer bitmap fonts over type 1 fonts.
p psfonts_pk.map

View File

@ -0,0 +1,10 @@
% Thomas Esser, 1998, 2002, public domain.
% Usage: dvips -Pwww
% Purpose: create ps files "for the web". Output is send to a file and
% not to any printer. Outline fonts are used whenever available
% since we do not know at which resolution the user will print
% out output file.
o
p psfonts_t1.map

Some files were not shown because too many files have changed in this diff Show More