# HG changeset patch # User Madhusudan.C.S # Date 1278965605 -19800 # Node ID 852015a7eead0de9e444c84f0d5b1ac717818e27 # Parent 7c27e8d9231d943be14eca812a44dabd671eb542# Parent 16a4067667736c1980d3688c59ffc0d5e7d59991 Merged changes. diff -r 7c27e8d9231d -r 852015a7eead .hgignore --- a/.hgignore Fri Jan 15 20:15:00 2010 +0530 +++ b/.hgignore Tue Jul 13 01:43:25 2010 +0530 @@ -37,6 +37,7 @@ project.db project/media/user/* project/static/media +project/static/proceedings/output/* project/kiwipycon/user/*.pyc apache/* diff -r 7c27e8d9231d -r 852015a7eead buildout.cfg diff -r 7c27e8d9231d -r 852015a7eead development.cfg diff -r 7c27e8d9231d -r 852015a7eead project/kiwipycon/proceedings/admin.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project/kiwipycon/proceedings/admin.py Tue Jul 13 01:43:25 2010 +0530 @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import absolute_import + +from django.contrib import admin + +from project.kiwipycon.proceedings.models import Paper + + +class PaperAdmin(admin.ModelAdmin): + list_display = ('title', 'abstract') + list_filter = ('title', 'authors') + search_fields = ('title', 'abstract', 'authors') + fieldsets = ( + ('Details', { + 'fields': ('title', 'abstract', 'body', 'authors') + }), + ) + +admin.site.register(Paper, PaperAdmin) diff -r 7c27e8d9231d -r 852015a7eead project/kiwipycon/proceedings/booklet/__init__.py diff -r 7c27e8d9231d -r 852015a7eead project/kiwipycon/proceedings/booklet/mk_booklet.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project/kiwipycon/proceedings/booklet/mk_booklet.py Tue Jul 13 01:43:25 2010 +0530 @@ -0,0 +1,80 @@ +# encoding: utf-8 + +import os +import sys +import codecs +import re + + +from mk_scipy_paper import tex2pdf, current_dir , copy_files, preamble, \ + render_abstract, addfile, sourcedir, outdir, outfilename + + +def hack_include_graphics(latex_text, attach_dir): + """ Replaces all the \includegraphics call with call that impose the + width to be 0.9\linewidth. + """ + latex_text = re.sub(r'\\includegraphics(\[.*\])?\{', + r'\includegraphics\1{' + attach_dir, + latex_text) + return latex_text + + +class MyStringIO(object): + """ An unicode-friendly stringIO-like object. + """ + + def __init__(self): + self.lines = [] + + def write(self, line): + self.lines.append(line) + + def getvalue(self): + return u''.join(self.lines) + +def mk_booklet_tex(outfilename): + """ Generate the entire booklet latex file. + """ + outfile = codecs.open(outfilename, 'w', 'utf-8') + preamble(outfile) + copy_files() + #addfile(outfile, sourcedir + os.sep + 'title.tex') + addfile(outfile, sourcedir + os.sep + 'introduction.tex') + + #outfile.write(ur'\setcounter{page}{0}' + '\n') + + #from sanum.controllers import Root as Controller +# abstracts = model.Abstract.select() +# for abstract in abstracts: +# if not abstract.approved: +# continue +# print abstract.title +# # Hack: I don't use a stringIO, because it is not unicode-safe. +# tmpout = MyStringIO() +# # Hack: I don't wont to be bound to the controller, to be +# # abstractle to run without cherrypy. +# #attach_dir = Controller._paper_attach_dir(abstract.id) +# attach_dir = os.path.abspath(os.sep.join( +# (os.path.dirname(sanum.__file__), 'static', +# 'papers', '%i' % abstract.id))) + os.sep +# render_abstract(tmpout, abstract) +# outstring = hack_include_graphics(tmpout.getvalue(), +# attach_dir) +# outfile.write(outstring) +# #outfile.write(ur'\fillbreak' + '\n') + + outfile.write(ur'\end{document}' + '\n') + + + + +def mk_booklet(outfilename=outfilename): + """ Generate the entire booklet pdf file. + """ + name, ext = os.path.splitext(outfilename) + mk_booklet_tex(name + '.tex') + return tex2pdf(name, remove_tex=False, timeout=60) + +if __name__ == '__main__': + mk_booklet(outfilename) diff -r 7c27e8d9231d -r 852015a7eead project/kiwipycon/proceedings/booklet/mk_scipy_paper.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project/kiwipycon/proceedings/booklet/mk_scipy_paper.py Tue Jul 13 01:43:25 2010 +0530 @@ -0,0 +1,470 @@ +# encoding: utf-8 + +import os +import re +import sys +import shutil +import codecs +from glob import glob + +from docutils import core as docCore + +conf_name = 'SciPy2009' + +current_dir = '/media/python/workspace/kiwipycon/project/static/proceedings' + +outdir = current_dir + os.sep + 'output' + +sourcedir = current_dir + os.sep + 'sources' +try: + os.mkdir(outdir) +except: + pass + +outfilename = outdir + os.sep + 'booklet.tex' + +############################################################################## +# Routines for supervised execution +############################################################################## + +from threading import Thread +import os +import signal +from subprocess import Popen +from time import sleep + +def delayed_kill(pid, delay=10): + sleep(delay) + try: + os.kill(pid, signal.SIGTERM) + except OSError: + pass + +def supervise_popen(command, timeout=10): + process = Popen(command) + Thread(target=delayed_kill, args=(process.pid,timeout),).start() + + process.wait() + + + +############################################################################## +# LaTeX generation functions. +############################################################################## + +def protect(string): + r''' Protects all the "\" in a string by adding a second one before + + >>> protect(r'\foo \*') + '\\\\foo \\\\*' + ''' + return re.sub(r"\\", r"\\\\", string) + + +def safe_unlink(filename): + """ Remove a file from the disk only if it exists, if not r=fails silently + """ + if os.path.exists(filename): + os.unlink(filename) + +rxcountpages = re.compile(r"$\s*/Type\s*/Page[/\s]", re.MULTILINE|re.DOTALL) + +def count_pages(filename): + data = file(filename,"rb").read() + return len(rxcountpages.findall(data)) + + +def tex2pdf(filename, remove_tex=True, timeout=10, runs=2): + """ Compiles a TeX file with pdfLaTeX (or LaTeX, if or dvi ps requested) + and cleans up the mess afterwards + """ + current_dir = os.getcwd() + os.chdir(os.path.dirname(filename)) + print >> sys.stderr, "Compiling document to pdf" + basename = os.path.splitext(os.path.basename(filename))[0] + if os.path.exists(basename + '.pdf'): + os.unlink(basename + '.pdf') + for _ in range(runs): + supervise_popen(("pdflatex", "--interaction", "scrollmode", + os.path.basename(filename)), timeout=timeout) + error_file = None + errors = file(os.path.abspath(basename + '.log')).readlines()[-1] + if not os.path.exists(basename + '.pdf') or \ + "Fatal error" in errors: + error_file = os.path.abspath(basename + '.log') + if remove_tex: + safe_unlink(filename+".tex") + safe_unlink(filename+".log") + safe_unlink(filename+".aux") + safe_unlink(filename+".out") + os.chdir(current_dir) + return error_file + + +def rst2latex(rst_string, no_preamble=True, allow_latex=True): + """ Calls docutils' engine to convert a rst string to a LaTeX file. + """ + overrides = {'output_encoding': 'utf-8', 'initial_header_level': 3, + 'no_doc_title': True, 'use_latex_citations': True, + 'use_latex_footnotes':True} + if allow_latex: + rst_string = u'''.. role:: math(raw) + :format: latex + \n\n''' + rst_string + tex_string = docCore.publish_string( + source=rst_string, + writer_name='latex2e', + settings_overrides=overrides) + if no_preamble: + extract_document = \ + re.compile(r'.*\\begin\{document\}(.*)\\end\{document\}', + re.DOTALL) + matches = extract_document.match(tex_string) + tex_string = matches.groups()[0] + return tex_string + + +def get_latex_preamble(): + """ Retrieve the required preamble from docutils. + """ + full_document = rst2latex('\n', no_preamble=False) + preamble = re.split(r'\\begin\{document\}', full_document)[0] + ## Remove the documentclass. + preamble = r""" + %s + \makeatletter + \newcommand{\class@name}{gael} + \makeatother + \usepackage{ltxgrid} + %s + """ % ( + preamble.split('\n')[0], + '\n'.join(preamble.split('\n')[1:]), + ) + return preamble + + +############################################################################## +# Functions to generate part of the booklet +############################################################################## +def addfile(outfile, texfilename): + """ Includes the content of a tex file in our outfile. + """ + include = codecs.open(texfilename, 'r') + data = include.readlines() + outfile.write(ur'\thispagestyle{empty}' + u'\n') + outfile.writelines(data) + + +def preamble(outfile): + outfile.write(r''' + %s + \usepackage{abstracts} + \usepackage{ltxgrid} + \usepackage{amssymb,latexsym,amsmath,amsthm} + \usepackage{longtable} + \geometry{left=.8cm, textwidth=17cm, bindingoffset=0.6cm, + textheight=25.3cm, twoside} + \usepackage{hyperref} + \hypersetup{pdftitle={Proceedings of the 8th Annual Python in Science Conference}} + \begin{document} + + '''.encode('utf-8') % get_latex_preamble()) + + # XXX SciPy08 should not be hard coded, but to run out of the webapp + +def hack_include_graphics(latex_text): + """ Replaces all the \includegraphics call with call that impose the + width to be 0.9\linewidth. + """ + latex_text = re.sub(r'\\setlength\{\\rightmargin\}\{\\leftmargin\}', + r'\\setlength{\\leftmargin}{4ex}\\setlength{\\rightmargin}{0ex}', + latex_text) + latex_text = re.sub(r'\\begin\{quote\}\n\\begin\{itemize\}', + r'\\begin{itemize}', + latex_text) + latex_text = re.sub(r'\\end\{itemize\}\n\\end\{quote\}', + r'\\end{itemize}', + latex_text) + latex_text = re.sub(r'\\includegraphics(\[.*\])?\{', + r'\includegraphics[width=\linewidth]{', + latex_text) + latex_text = re.sub(r'\\href\{([^}]+)\}\{http://(([^{}]|(\{[^}]*\}))+)\}', + r'''% +% Break penalties to have URL break easily: +\mathchardef\UrlBreakPenalty=0 +\mathchardef\UrlBigBreakPenalty=0 +%\hskip 0pt plus 2em +\href{\1}{\url{\1}}''', + latex_text) + latex_text = re.sub(r'\\href\{([^}]+)\}\{https://(([^{}]|(\{[^}]*\}))+)\}', + r'''% +% Break penalties to have URL break easily: +\mathchardef\UrlBreakPenalty=0 +\mathchardef\UrlBigBreakPenalty=0 +\linebreak +\href{\1}{\url{\1}}''', + latex_text) + + return latex_text + + +def render_abstract(outfile, abstract, start_page=None): + """ Writes the LaTeX string corresponding to one abstract. + """ + if start_page is not None: + outfile.write(r""" +\setcounter{page}{%i} +""" % start_page) + else: + if hasattr(abstract, 'start_page'): + start_page = abstract.start_page + else: + start_page = 1 + if not abstract.authors: + author_list = abstract.owners + else: + author_list = abstract.authors + authors = [] + + for author in author_list: + # If the author has no surname, he is not an author + if author.surname: + if author.email_address: + email = r'(\email{%s})' % author.email_address + else: + email = '' + authors.append(ur'''\otherauthors{ + %s %s + %s -- + \address{%s, %s} + }''' % (author.first_names, author.surname, + email, + author.institution, + author.city)) + if authors: + authors = u'\n'.join(authors) + authors += r'\addauthorstoc{%s}' % ', '.join( + '%s. %s' % (author.first_names[0], author.surname) + for author in author_list + ) + author_cite_list = ['%s. %s' % (a.first_names[0], a.surname) + for a in author_list] + if len(author_cite_list) > 4: + author_cite_list = author_cite_list[:3] + author_cite_list.append('et al.') + citation = ', '.join(author_cite_list) + \ + 'in Proc. SciPy 2009, G. Varoquaux, S. van der Walt, J. Millman (Eds), ' + copyright = '\\copyright 2009, %s' % ( ', '.join(author_cite_list)) + else: + authors = '' + citation = 'Citation' + copyright = 'Copyright' + if hasattr(abstract, 'num_pages'): + citation += 'pp. %i--%i' % (start_page, start_page + + abstract.num_pages) + else: + citation += 'p. %i'% start_page + if hasattr(abstract, 'number'): + abstract.url = 'http://conference.scipy.org/proceedings/%s/paper_%i' \ + % (conf_name, abstract.number) + url = r'\url{%s}' % abstract.url + else: + url = '' + paper_text = abstract.paper_text + if paper_text == '': + paper_text = abstract.summary + # XXX: It doesn't seem to be right to be doing this, but I get a + # nasty UnicodeDecodeError on some rare abstracts, elsewhere. + paper_text = codecs.utf_8_decode(hack_include_graphics( + rst2latex(paper_text)))[0] + paper_abstract = abstract.paper_abstract + if paper_abstract is None: + paper_abstract = '' + if not paper_abstract=='': + paper_abstract = ur'\begin{abstract}%s\end{abstract}' % \ + paper_abstract#.encode('utf-8') + abstract_dict = { + 'text': paper_text.encode('utf-8'), + 'abstract': paper_abstract.encode('utf-8'), + 'authors': authors.encode('utf-8'), + 'title': abstract.title.encode('utf-8'), + 'citation': citation.encode('utf-8'), + 'copyright': copyright.encode('utf-8'), + 'url': url.encode('utf-8'), + } + outfile.write(codecs.utf_8_decode(ur''' +\phantomsection +\hypertarget{chapter}{} +\vspace*{-2em} + +\resetheadings{%(title)s}{%(citation)s}{%(url)s}{%(copyright)s} +\title{%(title)s} + +\begin{minipage}{\linewidth} +%(authors)s +\end{minipage} + +\noindent\rule{\linewidth}{0.2ex} +\vspace*{-0.5ex} +\twocolumngrid +%(abstract)s + +\sloppy + +%(text)s + +\fussy +\onecolumngrid +\smallskip +\vfill +\filbreak +\clearpage + +'''.encode('utf-8') % abstract_dict )[0]) + +def copy_files(dest=outfilename): + """ Copy the required file from the source dir to the output dir. + """ + dirname = os.path.dirname(dest) + if dirname == '': + dirname = '.' + for filename in glob(sourcedir+os.sep+'*'): + destfile = os.path.abspath(dirname + os.sep + + os.path.basename(filename)) + shutil.copy2(filename, destfile) + + +def mk_abstract_preview(abstract, outfilename, attach_dir, start_page=None): + """ Generate a preview for an given paper. + """ + copy_files() + outdir = os.path.dirname(os.path.abspath(outfilename)) + for f in glob(os.path.join(attach_dir, '*')): + if os.path.isdir(f) and not os.path.exists(f): + os.makedirs(f) + else: + if not outdir == os.path.dirname(os.path.abspath(f)): + shutil.copy2(f, outdir) + for f in glob(os.path.join(sourcedir, '*')): + if os.path.isdir(f): + os.makedirs(f) + else: + destfile = os.path.abspath(os.path.join(outdir, f)) + shutil.copy2(f, outdir) + + outbasename = os.path.splitext(outfilename)[0] + outfilename = outbasename + '.tex' + + outfile = codecs.open(outfilename, 'w', 'utf-8') + preamble(outfile) + render_abstract(outfile, abstract, start_page=start_page) + outfile.write(ur'\end{document}' + u'\n') + outfile.close() + + tex2pdf(outbasename, remove_tex=False) + abstract.num_pages = count_pages(outbasename + '.pdf') + + # Generate the tex file again, now that we know the length. + outfile = codecs.open(outfilename, 'w', 'utf-8') + preamble(outfile) + render_abstract(outfile, abstract, start_page=start_page) + outfile.write(ur'\end{document}' + u'\n') + outfile.close() + + error_file = tex2pdf(os.path.splitext(outfilename)[0], remove_tex=False) + + if not error_file: + # Generate a preview image + command = ('convert', '-thumbnail', 'x400', + '%s[0]' % (outbasename + '.pdf'), outbasename + '.png') + supervise_popen(command, timeout=10) + + return error_file + +############################################################################## +# Code for using outside of the webapp. +############################################################################## + +def mk_zipfile(): + """ Generates a zipfile with the required files to build an + abstract. + """ + from zipfile import ZipFile + zipfilename = os.path.join(os.path.dirname(__file__), + 'mk_scipy_paper.zip') + z = ZipFile(zipfilename, 'w') + for filename in glob(os.path.join(sourcedir, '*')): + if not os.path.isdir(filename): + z.write(filename, arcname='source/' + os.path.basename(filename)) + z.write(__file__, arcname='mk_scipy_paper.py') + return zipfilename + +class Bunch(dict): + def __init__(self, **kwargs): + dict.__init__(self, **kwargs) + self.__dict__ = self + + def __reprt(self): + return repr(self.__dict__) + +author_like = Bunch( + first_names='XX', + surname='XXX', + email_address='xxx@XXX', + institution='XXX', + address='XXX', + country='XXX' +) + + +abstract_like = Bunch( + paper_abstract='An abstract', + authors=[author_like, ], + title='', + ) + +if __name__ == '__main__': + from optparse import OptionParser + parser = OptionParser() + parser.add_option("-o", "--output", dest="outfilename", + default="./paper.pdf", + help="output to FILE", metavar="FILE") + parser.usage = """%prog [options] rst_file [data_file] + Compiles a given rest file and information file to pdf for the SciPy + proceedings. + """ + + (options, args) = parser.parse_args() + if not len(args) in (1, 2): + print "One or two arguments required: the input rest file and " \ + "the input data file" + print '' + parser.print_help() + sys.exit(1) + infile = args[0] + if len(args)==1: + data_file = 'data.py' + if os.path.exists('data.py'): + print "Using data file 'data.py'" + else: + print "Generating the data file and storing it in data.py" + print "You will need to edit this file to add title, author " \ + "information, and abstract." + abstract = abstract_like + file('data.py', 'w').write(repr(abstract)) + elif len(args)==2: + data_file = args[1] + + abstract = Bunch( **eval(file(data_file).read())) + abstract.authors = [Bunch(**a) for a in abstract.authors] + + abstract['summary'] = u'' + abstract['paper_text'] = file(infile).read().decode('utf-8') + + outfilename = options.outfilename + + mk_abstract_preview(abstract, options.outfilename, + os.path.dirname(options.outfilename)) + # Ugly, but I don't want to wait on the thread. + sys.exit() diff -r 7c27e8d9231d -r 852015a7eead project/kiwipycon/proceedings/forms.py diff -r 7c27e8d9231d -r 852015a7eead project/kiwipycon/proceedings/views.py diff -r 7c27e8d9231d -r 852015a7eead project/kiwipycon/user/views.py diff -r 7c27e8d9231d -r 852015a7eead project/static/css/autoSuggest.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project/static/css/autoSuggest.css Tue Jul 13 01:43:25 2010 +0530 @@ -0,0 +1,217 @@ +/* AutoSuggest CSS - Version 1.2 */ + +ul.as-selections { + list-style-type: none; + border-top: 1px solid #888; + border-bottom: 1px solid #b6b6b6; + border-left: 1px solid #aaa; + border-right: 1px solid #aaa; + padding: 4px 0 4px 4px; + margin: 0; + overflow: auto; + background-color: #fff; + box-shadow:inset 0 1px 2px #888; + -webkit-box-shadow:inset 0 1px 2px #888; + -moz-box-shadow:inset 0 1px 2px #888; +} + +ul.as-selections.loading { + background-color: #eee; +} + +ul.as-selections li { + float: left; + margin: 1px 4px 1px 0; +} + +ul.as-selections li.as-selection-item { + color: #2b3840; + font-size: 13px; + font-family: "Lucida Grande", arial, sans-serif; + text-shadow: 0 1px 1px #fff; + background-color: #ddeefe; + background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ddeefe), to(#bfe0f1)); + border: 1px solid #acc3ec; + border-top-color: #c0d9e9; + padding: 2px 7px 2px 10px; + border-radius: 12px; + -webkit-border-radius: 12px; + -moz-border-radius: 12px; + box-shadow: 0 1px 1px #e4edf2; + -webkit-box-shadow: 0 1px 1px #e4edf2; + -moz-box-shadow: 0 1px 1px #e4edf2; +} + +ul.as-selections li.as-selection-item:last-child { + margin-left: 30px; +} + +ul.as-selections li.as-selection-item a.as-close { + float: right; + margin: 1px 0 0 7px; + padding: 0 2px; + cursor: pointer; + color: #5491be; + font-family: "Helvetica", helvetica, arial, sans-serif; + font-size: 14px; + font-weight: bold; + text-shadow: 0 1px 1px #fff; + -webkit-transition: color .1s ease-in; +} + +ul.as-selections li.as-selection-item.blur { + color: #666666; + background-color: #f4f4f4; + background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#f4f4f4), to(#d5d5d5)); + border-color: #bbb; + border-top-color: #ccc; + box-shadow: 0 1px 1px #e9e9e9; + -webkit-box-shadow: 0 1px 1px #e9e9e9; + -moz-box-shadow: 0 1px 1px #e9e9e9; +} + +ul.as-selections li.as-selection-item.blur a.as-close { + color: #999; +} + +ul.as-selections li:hover.as-selection-item { + color: #2b3840; + background-color: #bbd4f1; + background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbd4f1), to(#a3c2e5)); + border-color: #6da0e0; + border-top-color: #8bb7ed; +} + +ul.as-selections li:hover.as-selection-item a.as-close { + color: #4d70b0; +} + +ul.as-selections li.as-selection-item.selected { + border-color: #1f30e4; +} + +ul.as-selections li.as-selection-item a:hover.as-close { + color: #1b3c65; +} + +ul.as-selections li.as-selection-item a:active.as-close { + color: #4d70b0; +} + +ul.as-selections li.as-original { + margin-left: 0; +} + +ul.as-selections li.as-original input { + border: none; + outline: none; + font-size: 13px; + width: 120px; + height: 18px; + padding-top: 3px; +} + +ul.as-list { + position: absolute; + list-style-type: none; + margin: 2px 0 0 0; + padding: 0; + font-size: 14px; + color: #000; + font-family: "Lucida Grande", arial, sans-serif; + background-color: #fff; + background-color: rgba(255,255,255,0.95); + z-index: 2; + box-shadow: 0 2px 12px #222; + -webkit-box-shadow: 0 2px 12px #222; + -moz-box-shadow: 0 2px 12px #222; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; +} + +li.as-result-item, li.as-message { + margin: 0 0 0 0; + padding: 5px 12px; + background-color: transparent; + border: 1px solid #fff; + border-bottom: 1px solid #ddd; + cursor: pointer; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; +} + +li:first-child.as-result-item { + margin: 0; +} + +li.as-message { + margin: 0; + cursor: default; +} + +li.as-result-item.active { + background-color: #3668d9; + background-image: -webkit-gradient(linear, 0% 0%, 0% 64%, from(rgb(110, 129, 245)), to(rgb(62, 82, 242))); + border-color: #3342e8; + color: #fff; + text-shadow: 0 1px 2px #122042; +} + +li.as-result-item em { + font-style: normal; + background: #444; + padding: 0 2px; + color: #fff; +} + +li.as-result-item.active em { + background: #253f7a; + color: #fff; +} + +/* Webkit Hacks */ +@media screen and (-webkit-min-device-pixel-ratio:0) { + ul.as-selections { + border-top-width: 2px; + } + ul.as-selections li.as-selection-item { + padding-top: 3px; + padding-bottom: 3px; + } + ul.as-selections li.as-selection-item a.as-close { + margin-top: -1px; + } + ul.as-selections li.as-original input { + height: 19px; + } +} + +/* Opera Hacks */ +@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) { + ul.as-list { + border: 1px solid #888; + } + ul.as-selections li.as-selection-item a.as-close { + margin-left: 4px; + margin-top: 0; + } +} + +/* IE Hacks */ +ul.as-list { + border: 1px solid #888\9; +} +ul.as-selections li.as-selection-item a.as-close { + margin-left: 4px\9; + margin-top: 0\9; +} + +/* Firefox 3.0 Hacks */ +ul.as-list, x:-moz-any-link, x:default { + border: 1px solid #888; +} +BODY:first-of-type ul.as-list, x:-moz-any-link, x:default { /* Target FF 3.5+ */ + border: none; +} \ No newline at end of file diff -r 7c27e8d9231d -r 852015a7eead project/static/jquery/jquery.autoSuggest.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project/static/jquery/jquery.autoSuggest.js Tue Jul 13 01:43:25 2010 +0530 @@ -0,0 +1,21 @@ + /* + * AutoSuggest + * Copyright 2009-2010 Drew Wilson + * www.drewwilson.com + * code.drewwilson.com/entry/autosuggest-jquery-plugin + * + * Version 1.4 - Updated: Mar. 23, 2010 + * + * This Plug-In will auto-complete or auto-suggest completed search queries + * for you as you type. You can add multiple selections and remove them on + * the fly. It supports keybord navigation (UP + DOWN + RETURN), as well + * as multiple AutoSuggest fields on the same page. + * + * Inspied by the Autocomplete plugin by: Jšrn Zaefferer + * and the Facelist plugin by: Ian Tearle (iantearle.com) + * + * This AutoSuggest jQuery plug-in is dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + */ +eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(6($){$.2O.2P=6(7,2f){4 2g={1R:m,1o:"2Q 2H 31",2i:"1Y 2X 2Y",D:{},2h:"1Y 2G 2I 2J 35",Z:"1a",N:"1a",1y:"1a",2B:"q",15:m,2E:"",1e:m,1V:1,1C:2V,2t:G,2d:m,1I:m,20:G,R:6(){},1B:6(1q){},2w:6(1q){},1P:6(1q){1q.36()},1M:m,18:6(h){K h},2z:6(7){K 7},2u:6(7){},2m:6(){}};4 3=$.2q(2g,2f);4 14="26";4 12=0;5(2b 7=="h"){14="h";4 2C=7}s{4 2F=7;O(k 1E 7)5(7.1F(k))12++}5((14=="26"&&12>0)||14=="h"){K d.2W(6(x){5(!3.1R){x=x+""+29.2U(29.2Z()*30);4 1U="c-l-"+x}s{x=3.1R;4 1U=x}3.R.v(d);4 l=$(d);l.1X("34","33").F("c-l").1X("L",1U).b(3.1o);4 C=m;l.25(\'<1g A="c-1W" L="c-1W-\'+x+\'">\').25(\'\');4 n=$("#c-1W-"+x);4 J=$("#c-1O-"+x);4 j=$(\'<1Z A="c-22" L="c-22-\'+x+\'">\').E();4 I=$(\'<1g A="c-2L">\');4 p=$(\'\');4 u="";5(2b 3.D=="h"){4 1f=3.D.1t(",");O(4 i=0;i<1f.o;i++){4 1L={};1L[3.N]=1f[i];5(1f[i]!=""){17(1L,"27"+i)}}u=3.D}s{u="";4 1d=0;O(k 1E 3.D)5(3.D.1F(k))1d++;5(1d>0){O(4 i=0;i<1d;i++){4 16=3.D[i][3.N];5(16==37){16=""}u=u+16+",";5(16!=""){17(3.D[i],"27"+i)}}}}5(u!=""){l.b("");4 2e=u.3o(u.o-1);5(2e!=","){u=u+","}p.b(","+u);$("f.c-Q-z",n).F("1i").B("M")}l.28(p);n.1b(6(){C=G;l.1p()}).1v(6(){C=m}).28(j);4 P=3t;4 t="";4 3u=0;4 19=m;l.1p(6(){5($(d).b()==3.1o&&p.b()==""){$(d).b("")}s 5(C){$("f.c-Q-z",n).B("1i");5($(d).b()!=""){I.2k("2l",n.2x());j.1H()}}C=G;K G}).1i(6(){5($(d).b()==""&&p.b()==""&&u==""){$(d).b(3.1o)}s 5(C){$("f.c-Q-z",n).F("1i").B("M");j.E()}}).3m(6(e){1k=e.2a;3d=m;3e(e.2a){T 38:e.1m();1A("3n");V;T 3b:e.1m();1A("1T");V;T 8:5(l.b()==""){4 S=p.b().1t(",");S=S[S.o-2];n.2y().39(J.t()).B("M");5(J.t().3a("M")){p.b(p.b().1c(","+S+",",","));3.1P.v(d,J.t())}s{3.1B.v(d,J.t());J.t().F("M")}}5(l.b().o==1){j.E();t=""}5($(":2D",j).o>0){5(P){21(P)}P=23(6(){1D()},3.1C)}V;T 9:T 3f:19=G;4 U=l.b().1c(/(,)/g,"");5(U!=""&&p.b().1x(","+U+",")<0&&U.o>=3.1V){e.1m();4 1n={};1n[3.Z]=U;1n[3.N]=U;4 W=$("f",n).o;17(1n,"3l"+(W+1));l.b("")}T 13:19=m;4 r=$("f.r:24",j);5(r.o>0){r.1b();j.E()}5(3.2d||r.o>0){e.1m()}V;3k:5(3.20){5(3.1I&&$("f.c-Q-z",n).o>=3.1I){I.10(\'\'+3.2h+\'\');j.1H()}s{5(P){21(P)}P=23(6(){1D()},3.1C)}}V}});6 1D(){5(1k==3h||(1k>8&&1k<32)){K j.E()}4 h=l.b().1c(/[\\\\]+|[\\/]+/g,"");5(h==t)K;t=h;5(h.o>=3.1V){n.F("1N");5(14=="h"){4 1j="";5(3.15){1j="&1j="+2A(3.15)}5(3.18){h=3.18.v(d,h)}$.3i(2C+"?"+3.2B+"="+2A(h)+1j+3.2E,6(7){12=0;4 1l=3.2z.v(d,7);O(k 1E 1l)5(1l.1F(k))12++;1J(1l,h)})}s{5(3.18){h=3.18.v(d,h)}1J(2F,h)}}s{n.B("1N");j.E()}}4 1S=0;6 1J(7,Y){5(!3.1e){Y=Y.2o()}4 1r=0;j.10(I.10("")).E();O(4 i=0;i<12;i++){4 w=i;1S++;4 1w=m;5(3.1y=="1a"){4 H=7[w].1a}s{4 H="";4 1u=3.1y.1t(",");O(4 y=0;y<1u.o;y++){4 1z=$.3c(1u[y]);H=H+7[w][1z]+" "}}5(H){5(!3.1e){H=H.2o()}5(H.1x(Y)!=-1&&p.b().1x(","+7[w][3.N]+",")==-1){1w=G}}5(1w){4 11=$(\'\').1b(6(){4 1h=$(d).7("7");4 1G=1h.w;5($("#c-Q-"+1G,n).o<=0&&!19){4 7=1h.2s;l.b("").1p();t="";17(7,1G);3.2u.v(d,1h);j.E()}19=m}).1v(6(){C=m}).3r(6(){$("f",I).B("r");$(d).F("r")}).7("7",{2s:7[w],w:1S});4 X=$.2q({},7[w]);5(!3.1e){4 1Q=2r 2n("(?![^&;]+;)(?!<[^<>]*)("+Y+")(?![^<>]*>)(?![^&;]+;)","3w")}s{4 1Q=2r 2n("(?![^&;]+;)(?!<[^<>]*)("+Y+")(?![^<>]*>)(?![^&;]+;)","g")}5(3.2t){X[3.Z]=X[3.Z].1c(1Q,"<2v>$1")}5(!3.1M){11=11.10(X[3.Z])}s{11=3.1M.v(d,X,11)}I.2K(11);2R X;1r++;5(3.15&&3.15==1r){V}}}n.B("1N");5(1r<=0){I.10(\'\'+3.2i+\'\')}I.2k("2l",n.2x());j.1H();3.2m.v(d)}6 17(7,w){p.b(p.b()+7[3.N]+",");4 z=$(\'\').1b(6(){3.1B.v(d,$(d));n.2y().B("M");$(d).F("M")}).1v(6(){C=m});4 1s=$(\'&2T;\').1b(6(){p.b(p.b().1c(","+7[3.N]+",",","));3.1P.v(d,z);C=G;l.1p();K m});J.3q(z.10(7[3.Z]).3v(1s));3.2w.v(d,J.t())}6 1A(1K){5($(":2D",j).o>0){4 W=$("f",j);5(1K=="1T"){4 R=W.3s(0)}s{4 R=W.3j(":S")}4 r=$("f.r:24",j);5(r.o>0){5(1K=="1T"){R=r.3p()}s{R=r.t()}}W.B("r");R.F("r")}}})}}})(3g);',62,219,'|||opts|var|if|function|data||||val|as|this||li||string||results_holder||input|false|selections_holder|length|values_input||active|else|prev|prefill_value|call|num|||item|class|removeClass|input_focus|preFill|hide|addClass|true|str|results_ul|org_li|return|id|selected|selectedValuesProp|for|timeout|selection|start|last|case|i_input|break|lis|this_data|query|selectedItemProp|html|formatted|d_count||d_type|retrieveLimit|new_v|add_selected_item|beforeRetrieve|tab_press|value|click|replace|prefill_count|matchCase|vals|ul|raw_data|blur|limit|lastKeyPressCode|new_data|preventDefault|n_data|startText|focus|elem|matchCount|close|split|names|mousedown|forward|search|searchObjProps|name|moveSelection|selectionClick|keyDelay|keyChange|in|hasOwnProperty|number|show|selectionLimit|processData|direction|v_data|formatList|loading|original|selectionRemoved|regx|asHtmlID|num_count|down|x_id|minChars|selections|attr|No|div|showResultList|clearTimeout|results|setTimeout|first|wrap|object|000|after|Math|keyCode|typeof|values|neverSubmit|lastChar|options|defaults|limitText|emptyText|message|css|width|resultsComplete|RegExp|toLowerCase|result|extend|new|attributes|resultsHighlight|resultClick|em|selectionAdded|outerWidth|children|retrieveComplete|encodeURIComponent|queryParam|req_string|visible|extraParams|org_data|More|Name|Selections|Are|append|list|hidden|as_values_|fn|autoSuggest|Enter|delete|type|times|floor|400|each|Results|Found|random|100|Here||off|autocomplete|Allowed|remove|undefined||not|hasClass|40|trim|first_focus|switch|188|jQuery|46|getJSON|filter|default|00|keydown|up|substring|next|before|mouseover|eq|null|totalSelections|prepend|gi'.split('|'),0,{})) diff -r 7c27e8d9231d -r 852015a7eead project/static/jquery/jquery.watermarkinput.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project/static/jquery/jquery.watermarkinput.js Tue Jul 13 01:43:25 2010 +0530 @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2007 Josh Bush (digitalbush.com) + * + * 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 THE AUTHORS OR COPYRIGHT + * HOLDERS 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. + */ + +/* + * Version: Beta 1 + * Release: 2007-06-01 + */ +(function($) { + var map=new Array(); + $.Watermark = { + ShowAll:function(){ + for (var i=0;i\pagegoal}{% + \setbox\z@\vbox{\@@mark{}\unvbox\z@}% + \splittopskip\topskip + \splitmaxdepth\maxdepth + \vbadness\@M + \vfuzz\maxdimen + \setbox\tw@\vsplit\z@ to\pagegoal + \outputdebug@sw{{\tracingall\scrollmode\showbox\tw@\showbox\z@}}{}% + \setbox\tw@\vbox{\unvbox\tw@}% + \@ifdim{\ht\tw@=\z@}{% + \ltxgrid@info{Found overly large chunk while preparing to move insertions. Attempting repairs}% + \aftergroup\true@sw + }{% + \aftergroup\false@sw + }% + }{% + \aftergroup\false@sw + }% +\endgroup +}% +%% \item +%% Put down the same interrupts as for the non-trivial case above. +\def\output@moving{% + \set@top@firstmark + \@ifnum{\outputpenalty=\do@newpage@pen}{% + \setbox\@cclv\vbox{% + \unvbox\@cclv + \setbox\z@\lastbox + \@ifdim{\ht\z@=\ht\@protection@box}{\box\lastbox}{\unskip}% + }% + }{}% + \@cclv@nontrivial@sw{% + \csname output@prep@\bot@envir \endcsname + \@makecol\csname output@column@\thepagegrid\endcsname + \protect@penalty\do@startcolumn@pen + \clearpage@sw{% + \protect@penalty\do@endpage@pen + }{}% + \csname output@post@\bot@envir \endcsname + }{% + {\setbox\z@\box\@cclv}% + }% + \set@colroom + \global\@mparbottom\z@ + \global\@textfloatsheight\z@ %FIXME: this legacy LaTeX variable is set, but never queried! +}% +\def\@cclv@nontrivial@sw{% +\@ifx@empty\@toplist{% +\@ifx@empty\@botlist{% +\@ifvoid\footins{% + \@ifvoid\@cclv{% + \false@sw + }{% +\setbox\z@\vbox{\unvcopy\@cclv}% +\@ifdim{\ht\z@=\topskip}{% +\setbox\z@\vbox{% +\unvbox\z@ +\setbox\z@\lastbox\dimen@\lastskip\unskip +\@ifdim{\ht\z@=\ht\@protection@box}{% +\advance\dimen@\ht\z@ +\@ifdim{\dimen@=\topskip}{% +\aftergroup\true@sw +}{% +\aftergroup\false@sw +}% +}{% +\aftergroup\false@sw +}% +}% +{% +\false@sw % Normal for \clearpage +}{% +\true@sw +}% +}{% +\@ifdim{\ht\z@=\z@}{% +\ltxgrid@info{Found trivial column. Discarding it}% +\outputdebug@sw{{\tracingall\scrollmode\showbox\@cclv}}{}% +\false@sw +}{% +\true@sw +}% +}% + }% +}{% +\true@sw +}% +}{% +\true@sw +}% +}{% +\true@sw +}% +}% +\def\protect@penalty#1{\protection@box\penalty-#1\relax}% +\newbox\@protection@box +\setbox\@protection@box\vbox to1986sp{\vfil}% +\def\protection@box{\nointerlineskip\copy\@protection@box}% +\def\dead@cycle@repair#1{% +\expandafter\do@@mark +\expandafter{% +\@@botmark +}% +\unvbox\@cclv +\nointerlineskip +\vbox to#1{\vss}% +\@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}% +}% +\def\dead@cycle@repair@protected#1{% +\expandafter\do@@mark +\expandafter{% +\@@botmark +}% +\begingroup + \unvbox\@cclv + \setbox\z@\lastbox % Remove protection box + \nointerlineskip + \advance#1-\ht\@protection@box + \vbox to#1{\vss}% + \protection@box % Reinsert protection box + \@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}% +\endgroup +}% +\def\dead@cycle{% + \expandafter\do@@mark + \expandafter{% + \@@botmark + }% + \unvbox\@cclv + \@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}% +}% +\def\output@init@document{% + \@ifvoid\footbox{}{% + \global\advance\vsize-\ht\footbox + \global\advance\vsize-\dp\footbox + }% +}% +\def\output@prep@document{% + \@ifvoid\footbox{}{% + \setbox\footins\vbox{\unvbox\footbox\unvbox\footins}% + }% +}% +\def\output@post@document{}% +\let\@opcol\@undefined +\def\@makecol{% + \setbox\@outputbox\vbox{% + \boxmaxdepth\@maxdepth + \@tempdima\dp\@cclv + \unvbox\@cclv + \vskip-\@tempdima + }% + \xdef\@freelist{\@freelist\@midlist}\global\let\@midlist\@empty + \@combinefloats + \@combineinserts\@outputbox\footins + \set@adj@colht\dimen@ + \count@\vbadness + \vbadness\@M + \setbox\@outputbox\vbox to\dimen@{% + \@texttop + \dimen@\dp\@outputbox + \unvbox\@outputbox + \vskip-\dimen@ + \@textbottom + }% + \vbadness\count@ + \global\maxdepth\@maxdepth +}% +\let\@makespecialcolbox\@undefined +\def\@combineinserts#1#2{% + \setbox#1\vbox{% + \unvbox#1% + \vbox{% + \@ifvoid#2{}{% + \vskip\skip\footins + \color@begingroup + \normalcolor + \footnoterule + \nointerlineskip + \box#2% + \color@endgroup + }{}% + }% + }% +}% +\appdef\@floatplacement{% + \global\@fpmin\@fpmin +}% +\mathchardef\pagebreak@pen=\@M +\expandafter\let\csname output@-\the\pagebreak@pen\endcsname\relax +\mathchardef\do@startcolumn@pen=10005 +\@namedef{output@-\the\do@startcolumn@pen}{\do@startcolumn}% +\def\do@startcolumn{% + \setbox\@cclv\vbox{\unvbox\@cclv\setbox\z@\lastbox\unskip}% + \clearpage@sw{\@clearfloatplacement}{\@floatplacement}% + \set@colroom + \@booleanfalse\pfloat@avail@sw + \begingroup + \@colht\@colroom + \@booleanfalse\float@avail@sw + \@tryfcolumn\test@colfloat + \float@avail@sw{\aftergroup\@booleantrue\aftergroup\pfloat@avail@sw}{}% + \endgroup + \fcolmade@sw{% + \setbox\@cclv\vbox{\unvbox\@outputbox\unvbox\@cclv}% + \outputpenalty-\pagebreak@pen % ask for a return visit, this time with insertions and all. + \dead@cycle + }{% + \begingroup + \let\@elt\@scolelt + \let\reserved@b\@deferlist\global\let\@deferlist\@empty\reserved@b + \endgroup + \clearpage@sw{% + \outputpenalty\@M + }{% + \outputpenalty\do@newpage@pen + }% + \dead@cycle + }% + \check@deferlist@stuck\do@startcolumn + \set@vsize +}% +\def\@scolelt#1{\def\@currbox{#1}\@addtonextcol}% +\def\test@colfloat#1{% + \csname @floatselect@sw@\thepagegrid\endcsname#1{}{\@testtrue}% + \@if@sw\if@test\fi{}{\aftergroup\@booleantrue\aftergroup\float@avail@sw}% +}% +\def\@addtonextcol{% + \begingroup + \@insertfalse + \@setfloattypecounts + \csname @floatselect@sw@\thepagegrid\endcsname\@currbox{% + \@ifnum{\@fpstype=8 }{}{% + \@ifnum{\@fpstype=24 }{}{% + \@flsettextmin + \@reqcolroom \ht\@currbox + \advance \@reqcolroom \@textmin + \advance \@reqcolroom \vsize % take into account split insertions + \advance \@reqcolroom -\pagegoal + \@ifdim{\@colroom>\@reqcolroom}{% + \@flsetnum \@colnum + \@ifnum{\@colnum>\z@}{% + \@bitor\@currtype\@deferlist + \@if@sw\if@test\fi{}{% + \@addtotoporbot + }% + }{}% + }{}% + }% + }% + }{}% + \@if@sw\if@insert\fi{}{% + \@cons\@deferlist\@currbox + }% + \endgroup +}% +\mathchardef\do@startpage@pen=10006 +\@namedef{output@-\the\do@startpage@pen}{\do@startpage}% +\def\do@startpage{% + \setbox\@cclv\vbox{\unvbox\@cclv\setbox\z@\lastbox\unskip}% + \clearpage@sw{\@clearfloatplacement}{\@dblfloatplacement}% + \set@colht + \@booleanfalse\pfloat@avail@sw + \begingroup + \@booleanfalse\float@avail@sw + \@tryfcolumn\test@dblfloat + \float@avail@sw{\aftergroup\@booleantrue\aftergroup\pfloat@avail@sw}{}% + \endgroup + \fcolmade@sw{% + \global\setbox\pagesofar\vbox{\unvbox\pagesofar\unvbox\@outputbox}% + \@combinepage + \@combinedblfloats + \@outputpage + \global\pagegrid@cur\@ne + \protect@penalty\do@startpage@pen + }{% + \begingroup + \@booleanfalse\float@avail@sw + \let\@elt\@sdblcolelt + \let\reserved@b\@deferlist\global\let\@deferlist\@empty\reserved@b + \endgroup + \@ifdim{\@colht=\textheight}{% No luck... + \pfloat@avail@sw{% ...but a float *was* available! + \forcefloats@sw{% + \ltxgrid@warn{Forced dequeueing of floats stalled}% + }{% + \ltxgrid@warn{Dequeueing of floats stalled}% + }% + }{}% + }{}% + \outputpenalty\@M + \dead@cycle + }% + \check@deferlist@stuck\do@startpage + \set@colht +}% +\def\@sdblcolelt#1{\def\@currbox{#1}\@addtodblcol}% +\def\test@dblfloat#1{% + \@if@notdblfloat{#1}{\@testtrue}{}% + \@if@sw\if@test\fi{}{\aftergroup\@booleantrue\aftergroup\float@avail@sw}% +}% +\def\@if@notdblfloat#1{\@ifdim{\wd#1<\textwidth}}% +\@booleanfalse\forcefloats@sw +\def\@addtodblcol{% + \begingroup + \@if@notdblfloat{\@currbox}{% + \false@sw + }{% + \@setfloattypecounts + \@getfpsbit \tw@ + \@bitor \@currtype \@deferlist + \@if@sw\if@test\fi{% + \false@sw + }{% + \@ifodd\@tempcnta{% + \aftergroup\@booleantrue\aftergroup\float@avail@sw + \@flsetnum \@dbltopnum + \@ifnum{\@dbltopnum>\z@}{% + \@ifdim{\@dbltoproom>\ht\@currbox}{% + \true@sw + }{% + \@ifnum{\@fpstype<\sixt@@n}{% + \begingroup + \advance \@dbltoproom \@textmin + \@ifdim{\@dbltoproom>\ht\@currbox}{% + \endgroup\true@sw + }{% + \endgroup\false@sw + }% + }{% + \false@sw + }% + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }% + }% + {% + \@tempdima -\ht\@currbox + \advance\@tempdima + -\@ifx{\@dbltoplist\@empty}{\dbltextfloatsep}{\dblfloatsep}% + \global \advance \@dbltoproom \@tempdima + \global \advance \@colht \@tempdima + \global \advance \@dbltopnum \m@ne + \@cons \@dbltoplist \@currbox + }{% + \@cons \@deferlist \@currbox + }% + \endgroup +}% +\def\@tryfcolumn#1{% + \global\@booleanfalse\fcolmade@sw + \@ifx@empty\@deferlist{}{% + \global\let\@trylist\@deferlist + \global\let\@failedlist\@empty + \begingroup + \dimen@\vsize\advance\dimen@-\pagegoal\@ifdim{\dimen@>\z@}{% + \advance\@fpmin-\dimen@ + }{}% + \def\@elt{\@xtryfc#1}\@trylist + \endgroup + \fcolmade@sw{% + \global\setbox\@outputbox\vbox{\vskip \@fptop}% + \let \@elt \@wtryfc \@flsucceed + \global\setbox\@outputbox\vbox{\unvbox\@outputbox + \unskip \vskip \@fpbot + }% + \let \@elt \relax + \xdef\@deferlist{\@failedlist\@flfail}% + \xdef\@freelist{\@freelist\@flsucceed}% + }{}% + }% +}% +\def\@wtryfc #1{% + \global\setbox\@outputbox\vbox{\unvbox\@outputbox + \box #1\vskip\@fpsep + }% +}% +\def\@xtryfc#1#2{% + \@next\reserved@a\@trylist{}{}% trim \@trylist. Ugly! + \@currtype \count #2% + \divide\@currtype\@xxxii\multiply\@currtype\@xxxii + \@bitor \@currtype \@failedlist + \@testfp #2% + #1#2% + \@ifdim{\ht #2>\@colht }{\@testtrue}{}% + \@if@sw\if@test\fi{% + \@cons\@failedlist #2% + }{% + \begingroup + \gdef\@flsucceed{\@elt #2}% + \global\let\@flfail\@empty + \@tempdima\ht #2% + \def \@elt {\@ztryfc#1}\@trylist + \@ifdim{\@tempdima >\@fpmin}{% + \global\@booleantrue\fcolmade@sw + }{% + \@cons\@failedlist #2% + }% + \endgroup + \fcolmade@sw{% + \let \@elt \@gobble + }{}% + }% +}% +\def\@ztryfc #1#2{% + \@tempcnta \count#2% + \divide\@tempcnta\@xxxii\multiply\@tempcnta\@xxxii + \@bitor \@tempcnta {\@failedlist \@flfail}% + \@testfp #2% + #1#2% + \@tempdimb\@tempdima + \advance\@tempdimb \ht#2\advance\@tempdimb\@fpsep + \@ifdim{\@tempdimb >\@colht}{% + \@testtrue + }{}% + \@if@sw\if@test\fi{% + \@cons\@flfail #2% + }{% + \@cons\@flsucceed #2% + \@tempdima\@tempdimb + }% +}% +\def\newpage@prep{% + \if@noskipsec + \ifx \@nodocument\relax + \leavevmode + \global \@noskipsecfalse + \fi + \fi + \if@inlabel + \leavevmode + \global \@inlabelfalse + \fi + \if@nobreak \@nobreakfalse \everypar{}\fi + \par +}% +\def \newpage {% + \newpage@prep + \do@output@MVL{% + \vfil + \penalty-\pagebreak@pen + }% +}% +\def\clearpage{% + \newpage@prep + \do@output@MVL{% + \vfil + \penalty-\pagebreak@pen + \global\@booleantrue\clearpage@sw + \protect@penalty\do@startcolumn@pen + \protect@penalty\do@endpage@pen + }% + \do@output@MVL{% + \global\@booleanfalse\clearpage@sw + }% +}% +\def\cleardoublepage{% + \clearpage + \@if@sw\if@twoside\fi{% + \@ifodd\c@page{}{% + \null\clearpage + }% + }{}% +}% +\@booleanfalse\clearpage@sw +\mathchardef\do@endpage@pen=10007 +\@namedef{output@-\the\do@endpage@pen}{% + \csname end@column@\thepagegrid\endcsname +}% +\mathchardef\do@newpage@pen=10001 +\expandafter\let\csname output@-\the\do@newpage@pen\endcsname\relax +\def\@clearfloatplacement{% + \global\@topnum \maxdimen % \c@topnumber + \global\@toproom \maxdimen % \topfraction\@colht + \global\@botnum \maxdimen % \c@bottomnumber + \global\@botroom \maxdimen % \bottomfraction\@colht + \global\@colnum \maxdimen % \c@totalnumber + \global\@dbltopnum \maxdimen % \c@dbltopnumber + \global\@dbltoproom \maxdimen % \dbltopfraction\@colht + \global\@textmin \z@ % \@colht\advance \@textmin -\@dbltoproom + \global\@fpmin \z@ % \dblfloatpagefraction\textheight + \let\@testfp\@gobble + \appdef\@setfloattypecounts{\@fpstype16\advance\@fpstype\m@ne}% +}% +\let\@doclearpage\@undefined +\let\@makefcolumn\@undefined +\def\clr@top@firstmark{% + \global\let\saved@@topmark\@undefined + \global\let\saved@@firstmark\@empty + \global\let\saved@@botmark\@empty +}% +\clr@top@firstmark +\def\set@top@firstmark{% + \@ifxundefined\saved@@topmark{\expandafter\gdef\expandafter\saved@@topmark\expandafter{\@@topmark}}{}% + \@if@empty\saved@@firstmark{\expandafter\gdef\expandafter\saved@@firstmark\expandafter{\@@firstmark}}{}% + \@if@empty\@@botmark{}{\expandafter\gdef\expandafter\saved@@botmark\expandafter{\@@botmark}}% +}% +\appdef\@outputpage{% + \clr@top@firstmark +}% +\def\@float#1{% + \@ifnextchar[{%}]{%Brace-matching klootch + \@yfloat\width@float{#1}% + }{% + \@ifxundefined@cs{fps@#1}{% + \edef\reserved@a{\noexpand\@yfloat\noexpand\width@float{#1}[\csname fps@\endcsname]}\reserved@a + }{% + \edef\reserved@a{\noexpand\@yfloat\noexpand\width@float{#1}[\csname fps@#1\endcsname]}\reserved@a + }% + }% +}% +\def\@dblfloat#1{% + \@ifnum{\pagegrid@col=\@ne}{% + \@float{#1}% + }{% + \@ifnextchar[{%}]{%Brace-matching klootch + \@yfloat\widthd@float{#1}% + }{% + \@ifxundefined@cs{fpsd@#1}{% + \edef\reserved@a{\noexpand\@yfloat\noexpand\widthd@float{#1}[\csname fpsd@\endcsname]}\reserved@a + }{% + \edef\reserved@a{\noexpand\@yfloat\noexpand\widthd@float{#1}[\csname fpsd@#1\endcsname]}\reserved@a + }% + }% + }% +}% +\def\@yfloat#1#2[#3]{% + \@xfloat{#2}[#3]% + \hsize#1\linewidth\hsize + \minipagefootnote@init +}% +\def\fps@{tbp}% +\def\fpsd@{tp}% +\def\width@float{\columnwidth}% +\def\widthd@float{\textwidth}% +\def\end@float{% + \end@@float{% + \check@currbox@count + }% +}% +\def\end@dblfloat{% + \@ifnum{\pagegrid@col=\@ne}{% + \end@float + }{% + \end@@float{% + \@boxfpsbit\@currbox{1}\@ifodd\@tempcnta{\global\advance\count\@currbox\m@ne}{}% + \@boxfpsbit\@currbox{4}\@ifodd\@tempcnta{\global\advance\count\@currbox-4\relax}{}% + \global\wd\@currbox\textwidth % Klootch + \check@currbox@count + }% + }% +}% +\def\end@@float#1{% + \minipagefootnote@here + \@endfloatbox + #1% + \@ifnum{\@floatpenalty <\z@}{% + \@largefloatcheck + \@cons\@currlist\@currbox + \@ifnum{\@floatpenalty <-\@Mii}{% + \do@output@cclv{\@add@float}% + }{% + \vadjust{\do@output@cclv{\@add@float}}% + \@Esphack + }% + }{}% +}% +\def\check@currbox@count{% + \@ifnum{\count\@currbox>\z@}{% +\count@\count\@currbox\divide\count@\sixt@@n\multiply\count@\sixt@@n +\@tempcnta\count\@currbox\advance\@tempcnta-\count@ +\@ifnum{\@tempcnta=\z@}{% + \ltxgrid@warn{Float cannot be placed}% +}{}% + }{% + % Is a \marginpar + }% +}% +\providecommand\minipagefootnote@init{}% +\providecommand\minipagefootnote@here{}% +\let\@specialoutput\@undefined +\def\@add@float{% + \@pageht\ht\@cclv\@pagedp\dp\@cclv + \unvbox\@cclv + \@next\@currbox\@currlist{% + \csname @floatselect@sw@\thepagegrid\endcsname\@currbox{% + \@ifnum{\count\@currbox>\z@}{% + \advance \@pageht \@pagedp + \advance \@pageht \vsize \advance \@pageht -\pagegoal % do not assume \holdinginserts is cleared! + \@addtocurcol % Commit an h float + }{% + \@addmarginpar + }% + }{% + \@resethfps + \@cons\@deferlist\@currbox + }% + }{\@latexbug}% + \@ifnum{\outputpenalty<\z@}{% + \@if@sw\if@nobreak\fi{% + \nobreak + }{% + \addpenalty \interlinepenalty + }% + }{}% + \set@vsize +}% +\let\@reinserts\@undefined +\def \@addtocurcol {% + \@insertfalse + \@setfloattypecounts + \ifnum \@fpstype=8 + \else + \ifnum \@fpstype=24 + \else + \@flsettextmin + \advance \@textmin \@textfloatsheight + \@reqcolroom \@pageht + \ifdim \@textmin>\@reqcolroom + \@reqcolroom \@textmin + \fi + \advance \@reqcolroom \ht\@currbox + \ifdim \@colroom>\@reqcolroom + \@flsetnum \@colnum + \ifnum \@colnum>\z@ + \@bitor\@currtype\@deferlist + \if@test + \else + \@bitor\@currtype\@botlist + \if@test + \@addtobot + \else + \ifodd \count\@currbox + \advance \@reqcolroom \intextsep + \ifdim \@colroom>\@reqcolroom + \global \advance \@colnum \m@ne + \global \advance \@textfloatsheight \ht\@currbox + \global \advance \@textfloatsheight 2\intextsep + \@cons \@midlist \@currbox + \if@nobreak + \nobreak + \@nobreakfalse + \everypar{}% + \else + \addpenalty \interlinepenalty + \fi + \vskip \intextsep + \unvbox\@currbox %AO + \penalty\interlinepenalty + \vskip\intextsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty \z@ + \@inserttrue + \fi + \fi + \if@insert + \else + \@addtotoporbot + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \if@insert + \else + \@resethfps + \@cons\@deferlist\@currbox + \fi +}% +\@twocolumnfalse +\let\@twocolumntrue\@twocolumnfalse +\def\@addmarginpar{% + \@next\@marbox\@currlist{% + \@cons\@freelist\@marbox\@cons\@freelist\@currbox + }\@latexbug + \setbox\@marbox\hb@xt@\columnwidth{% + \csname @addmarginpar@\thepagegrid\endcsname{% + \hskip-\marginparsep\hskip-\marginparwidth + \box\@currbox + }{% + \hskip\columnwidth\hskip\marginparsep + \box\@marbox + }% + \hss + }% + \setbox\z@\box\@currbox + \@tempdima\@mparbottom + \advance\@tempdima -\@pageht + \advance\@tempdima\ht\@marbox + \@ifdim{\@tempdima >\z@}{% + \@latex@warning@no@line {Marginpar on page \thepage\space moved}% + }{% + \@tempdima\z@ + }% + \global\@mparbottom\@pageht + \global\advance\@mparbottom\@tempdima + \global\advance\@mparbottom\dp\@marbox + \global\advance\@mparbottom\marginparpush + \advance\@tempdima -\ht\@marbox + \global\setbox \@marbox + \vbox {\vskip \@tempdima + \box \@marbox}% + \global \ht\@marbox \z@ + \global \dp\@marbox \z@ + \kern -\@pagedp + \nointerlineskip + \box\@marbox + \nointerlineskip + \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}% +}% +\newenvironment{turnpage}{% + \def\width@float{\textheight}% + \def\widthd@float{\textheight}% + \appdef\@endfloatbox{% + \@ifxundefined\@currbox{% + \ltxgrid@warn{Cannot rotate! Not a float}% + }{% + \setbox\@currbox\vbox to\textwidth{\vfil\unvbox\@currbox\vfil}% + \global\setbox\@currbox\vbox{\rotatebox{90}{\box\@currbox}}% + }% + }% +}{% +}% +\def\rotatebox@dummy#1#2{% + \ltxgrid@warn{You must load the graphics or graphicx package in order to use the turnpage environment}% + #2% +}% +\AtBeginDocument{% + \@ifxundefined\rotatebox{\let\rotatebox\rotatebox@dummy}{}% +}% +\@namedef{output@-1073741824}{%"40000000 + \deadcycles\z@ + \setbox\z@\box\@cclv +}% +\mathchardef\save@column@pen=10016 +\@namedef{output@-\the\save@column@pen}{\save@column}% +\let \@cclv@saved \@holdpg +\let \@holdpg \@undefined +\def\save@column{% + \@ifvoid\@cclv@saved{% +\set@top@firstmark +\global\@topmark@saved\expandafter{\@@topmark}% + }{}% +\global\setbox\@cclv@saved\vbox{% + \@ifvoid\@cclv@saved{}{% + \unvbox\@cclv@saved + \marry@baselines +}% +\unvbox\@cclv +\lose@breaks +\setbox\z@\lastbox +}% +}% +\newtoks\@topmark@saved +\def\prep@cclv{% + \setbox\z@\box\@cclv + \setbox\@cclv\box\@cclv@saved + \vbadness\@M +}% +\mathchardef\save@column@insert@pen=10017 +\@namedef{output@-\the\save@column@insert@pen}{\toggle@insert\savecolumn@holding\savecolumn@moving}% +\def\savecolumn@holding{% +\@if@exceed@pagegoal{\unvcopy\@cclv\setbox\z@\lastbox}{% + \setbox\z@\vbox{\unvcopy\@cclv\setbox\z@\lastbox}% + \outputdebug@sw{{\tracingall\scrollmode\showbox\z@}}{}% +\dimen@\ht\@cclv\advance\dimen@-\ht\z@ +\dead@cycle@repair@protected\dimen@ +}{% +\dead@cycle +}% +}% +\def\savecolumn@moving{% + \@cclv@nontrivial@sw{% + \save@column + }{% + {\setbox\z@\box\@cclv}% + }% +\@ifvoid\footins{}{% +\outputdebug@sw{{\tracingall\scrollmode\showbox\footins}}{}% +\global\setbox\footins@saved\vbox{\unvbox\footins@saved\marry@baselines\unvbox\footins}% +\protect@penalty\save@column@insert@pen +}% +}% +\newbox\footins@saved +\mathchardef\save@message@pen=10018 +\@namedef{output@-\the\save@message@pen}{\save@message}% +\def\save@message{% + \setbox\z@\box\@cclv %FIXME: what if \box\@cclv is not empty? + \toks@\expandafter{\@@firstmark}% + \expandafter\gdef\expandafter\@message@saved\expandafter{\the\toks@}% + \expandafter\do@@mark\expandafter{\the\@topmark@saved}% +}% +\gdef\@message@saved{}% +\mathchardef\execute@message@pen=10019 +\@namedef{output@-\the\execute@message@pen}{\@message@saved}% +\def\execute@message{% + \@execute@message\save@column@pen %Implicit #2 +}% +\def\execute@message@insert#1{% + \@execute@message\save@column@insert@pen{\setbox\footins\box\footins@saved#1}% +}% +\long\def\@execute@message#1#2{% + \begingroup + \dimen@\prevdepth\@ifdim{\dimen@<\z@}{\dimen@\z@}{}% + \setbox\z@\vbox{% + \protect@penalty#1% + \protection@box + \toks@{\prep@cclv#2}% + \@@mark{\the\toks@}% + \penalty-\save@message@pen + \setbox\z@\null\dp\z@\dimen@\ht\z@-\dimen@ + \nointerlineskip\box\z@ + \penalty-\execute@message@pen + }\unvbox\z@ + \endgroup +}% +\def\do@output@cclv{\execute@message}% +\def\do@output@MVL#1{% + \@ifvmode{% + \begingroup\execute@message{\unvbox\@cclv#1}\endgroup + }{% + \@ifhmode{% + \vadjust{\execute@message{\unvbox\@cclv#1}}% + }{% + \@latexerr{\string\do@output@MVL\space cannot be executed in this mode!}\@eha + }% + }% +}% +\def\lose@breaks{% + \loopwhile{% + \count@\lastpenalty + \@ifnum{\count@=\@M}{% 10000 is a TeX magic number! + \unpenalty\true@sw + }{% + \false@sw + }% + }% +}% +\def\removestuff{\do@output@MVL{\unskip\unpenalty}}% +\def\removephantombox{% + \vadjust{% + \execute@message{% + \unvbox\@cclv + \setbox\z@\lastbox + \unskip + \unskip + \unpenalty + \penalty\predisplaypenalty + \vskip\abovedisplayskip + }% + }% +}% +\def\addstuff#1#2{\edef\@tempa{\noexpand\do@output@MVL{\noexpand\@addstuff{#1}{#2}}}\@tempa}% +\def\@addstuff#1#2{% + \skip@\lastskip\unskip + \count@\lastpenalty\unpenalty + \@if@empty{#1}{}{\penalty#1\relax}% + \@ifnum{\count@=\z@}{}{\penalty\count@}% + \vskip\skip@ + \@if@empty{#2}{}{\vskip#2\relax}% +}% +\def\replacestuff#1#2{\edef\@tempa{\noexpand\do@output@MVL{\noexpand\@replacestuff{#1}{#2}}}\@tempa}% +\def\@replacestuff#1#2{% + \skip@\lastskip\unskip + \count@\lastpenalty\unpenalty + \@if@empty{#1}{}{% + \@ifnum{\count@>\@M}{}{% + \@ifnum{\count@=\z@}{\count@=#1\relax}{% + \@ifnum{\count@<#1\relax}{}{% + \count@=#1\relax + }% + }% + }% + }% + \@ifnum{\count@=\z@}{}{\penalty\count@}% + \@if@empty{#2}{}{% + \@tempskipa#2\relax + \@ifdim{\z@>\@tempskipa}{% + \advance\skip@-\@tempskipa + }{% + \@ifdim{\skip@>\@tempskipa}{}{% + \skip@\@tempskipa + }% + }% + }% + \vskip\skip@ +}% +\def\move@insertions{\global\holdinginserts\z@}% +\def\hold@insertions{\global\holdinginserts\@ne}% +\hold@insertions +\def\move@insert@sw{\@ifnum{\holdinginserts=\z@}}% +\def\toggle@insert#1#2{% + \@ifnum{\holdinginserts=\z@}{\hold@insertions#2}{\move@insertions#1}% +}% +\def\do@columngrid#1#2{% + \par + \expandafter\let\expandafter\@tempa\csname open@column@#1\endcsname + \@ifx{\relax\@tempa}{% + \ltxgrid@warn{Unknown page grid #1. No action taken}% + }{% + \do@output@MVL{\start@column{#1}{#2}}% + }% +}% +\def\start@column#1#2{% + \def\@tempa{#1}\@ifx{\@tempa\thepagegrid}{% + \ltxgrid@info{Already in page grid \thepagegrid. No action taken}% + }{% + \expandafter\execute@message@insert + \expandafter{% + \csname shut@column@\thepagegrid\expandafter\endcsname + \csname open@column@#1\endcsname{#2}% + \set@vsize + }% + }% +}% +\def\thepagegrid{one}% +\newbox\pagesofar +\newbox\footbox +\newcommand\onecolumngrid{\do@columngrid{one}{\@ne}}% +\let\onecolumn\@undefined +\def\open@column@one#1{% + \unvbox\pagesofar + \gdef\thepagegrid{one}% + \global\pagegrid@col#1% + \global\pagegrid@cur\@ne + \set@colht + \set@column@hsize\pagegrid@col +}% +\def\shut@column@one{% + \@makecol + \global\setbox\pagesofar\vbox{\unvbox\@outputbox\recover@footins}% + \set@colht +}% +\def\float@column@one{% + \@makecol + \@outputpage +}% +\def\end@column@one{% + \unvbox\@cclv\setbox\z@\lastbox + \protect@penalty\do@newpage@pen +}% +\def\output@column@one{% + \@outputpage +}% +\def\@addmarginpar@one{% + \@if@sw\if@mparswitch\fi{% + \@ifodd\c@page{\false@sw}{\true@sw}% + }{\false@sw}{% + \@if@sw\if@reversemargin\fi{\false@sw}{\true@sw}% + }{% + \@if@sw\if@reversemargin\fi{\true@sw}{\false@sw}% + }% +}% +\def\@floatselect@sw@one#1{\true@sw}% +\def\onecolumngrid@push{% + \do@output@MVL{% + \@ifnum{\pagegrid@col=\@ne}{% + \global\let\restorecolumngrid\@empty + }{% + \xdef\restorecolumngrid{% + \noexpand\start@column{\thepagegrid}{\the\pagegrid@col}% + }% + \start@column{one}{\@ne}% + }% + }% +}% +\def\onecolumngrid@pop{% + \do@output@MVL{\restorecolumngrid}% +}% +\newcommand\twocolumngrid{\do@columngrid{mlt}{\tw@}}% +\let\twocolumn\@undefined +\let\@topnewpage\@undefined +\def\open@column@mlt#1{% + \gdef\thepagegrid{mlt}% + \global\pagegrid@col#1% + \global\pagegrid@cur\@ne + \set@column@hsize\pagegrid@col + \set@colht +}% +\def\shut@column@mlt{% + \@cclv@nontrivial@sw{% +\@makecol +\@ifnum{\pagegrid@cur<\pagegrid@col}{% +\expandafter\global\expandafter\setbox\csname col@\the\pagegrid@cur\endcsname\box\@outputbox +\global\advance\pagegrid@cur\@ne +}{}% + }{% + {\setbox\z@\box\@cclv}% + }% +\@ifnum{\pagegrid@cur>\@ne}{% +\csname balance@\the\pagegrid@col\endcsname +\grid@column{}% +\@combinepage +\@combinedblfloats +\global\setbox\pagesofar\box\@outputbox + }{}% + \set@colht +}% +\def\float@column@mlt{% + \@combinepage + \@combinedblfloats + \@outputpage + \global\pagegrid@cur\@ne + \protect@penalty\do@startpage@pen +}% +\def\end@column@mlt{% + \@ifx@empty\@toplist{% + \@ifx@empty\@botlist{% + \@ifx@empty\@dbltoplist{% + \@ifx@empty\@deferlist{% + \@ifnum{\pagegrid@cur=\@ne}{% + \false@sw + }{% + \true@sw + }% + }{% + \true@sw + }% + }{% + \true@sw + }% + }{% + \true@sw + }% + }{% + \true@sw + }% + % true = kick out a column and try again + {% + \@cclv@nontrivial@sw{% + \unvbox\@cclv\setbox\z@\lastbox + }{% + \unvbox\@cclv\setbox\z@\lastbox\unskip\null + }% + \protect@penalty\do@newpage@pen + \protect@penalty\do@endpage@pen + }{% + \unvbox\@cclv\setbox\z@\lastbox + }% +}% +\def\output@column@mlt{% + \@ifnum{\pagegrid@cur<\pagegrid@col}{% + \expandafter\global\expandafter\setbox\csname col@\the\pagegrid@cur\endcsname\box\@outputbox + \global\advance\pagegrid@cur\@ne + }{% + \set@adj@colht\dimen@ + \grid@column{}%{\dimen@}% + \@combinepage + \@combinedblfloats + \@outputpage + \global\pagegrid@cur\@ne + \protect@penalty\do@startpage@pen + }% +}% +\let\@outputdblcol\@undefined +\def\@floatselect@sw@mlt#1{\@if@notdblfloat{#1}}% +\def\@addmarginpar@mlt{% emits a boolean + \@ifnum{\pagegrid@cur=\@ne}% +}% +\let\pagegrid@cur\col@number +\let\col@number\@undefined +\newcount\pagegrid@col +\pagegrid@cur\@ne +\expandafter\let\csname col@\the\pagegrid@cur\endcsname\@leftcolumn +\let\@leftcolumn\@undefined +\pagegrid@col\tw@ +\def\pagegrid@init{% + \advance\pagegrid@cur\@ne + \@ifnum{\pagegrid@cur<\pagegrid@col}{% + \csname newbox\expandafter\endcsname\csname col@\the\pagegrid@cur\endcsname + \pagegrid@init + }{% + }% +}% +\appdef\class@documenthook{% + \pagegrid@init +}% +\def\grid@column#1{% + \global\setbox\@outputbox\vbox{% + \hb@xt@\textwidth{% + \vrule\@height\z@\@width\z@\@if@empty{#1}{}{\@depth#1}% + \pagegrid@cur\@ne + \append@column + \box@column\@outputbox + }% + \vskip\z@skip % FIXME: page depth! + }% +}% +\def\append@column{% + \@ifnum{\pagegrid@cur<\pagegrid@col}{% + \expandafter\box@column\csname col@\the\pagegrid@cur\endcsname + \hfil + \vrule \@width\columnseprule + \hfil + \advance\pagegrid@cur\@ne + \append@column + }{% + }% +}% +\def\box@column#1{% + \raise\topskip + \hb@xt@\columnwidth{% + \dimen@\ht#1\@ifdim{\dimen@>\@colht}{\dimen@\@colht}{}% + \count@\vbadness\vbadness\@M + \dimen@ii\vfuzz\vfuzz\maxdimen + \outputdebug@sw{\saythe\@colht\saythe\dimen@}{}% + \vtop to\dimen@ + {\hrule\@height\z@ + \unvbox#1% + \raggedcolumn@skip + }% + \vfuzz\dimen@ii + \vbadness\count@ + \hss + }% +}% +\def\marry@baselines{% + \vskip\marry@skip\relax +}% +\gdef\marry@skip{\z@skip}% +\def\set@marry@skip{% +\begingroup + \skip@\baselineskip\advance\skip@-\topskip + \@ifdim{\skip@>\z@}{% + \xdef\marry@skip{\the\skip@}% + }{}% + \endgroup +}% +\AtBeginDocument{% + \@ifxundefined\raggedcolumn@sw{\@booleanfalse\raggedcolumn@sw}{}% +}% +\def\raggedcolumn@skip{% + \vskip\z@\raggedcolumn@sw{\@plus.0001fil\@minus.0001fil}{}\relax +}% +\def\@combinepage{% + \@ifvoid\pagesofar{}{% + \setbox\@outputbox\vbox{% + \unvbox\pagesofar + \marry@baselines + \unvbox\@outputbox + }% + }% + \@ifvoid\footbox{}{% + \setbox\@outputbox\vbox{% + \unvbox\@outputbox + \marry@baselines + \unvbox\footbox + }% + }% +}% +\def\@combinedblfloats{% + \@ifx@empty\@dbltoplist{}{% + \setbox\@tempboxa\vbox{}% + \let\@elt\@comdblflelt\@dbltoplist + \let\@elt\relax\xdef\@freelist{\@freelist\@dbltoplist}% + \global\let\@dbltoplist\@empty + \setbox\@outputbox\vbox{% + %\boxmaxdepth\maxdepth %% probably not needed, CAR + \unvbox\@tempboxa\unskip + \@ifnum{\@dbltopnum>\m@ne}{\dblfigrule}{}%FIXME: how is \@dbltopnum maintained? + \vskip\dbltextfloatsep + \unvbox\@outputbox + }% + }% +}% +\def\set@column@hsize#1{% + \pagegrid@col#1% + \global\columnwidth\textwidth + \global\advance\columnwidth\columnsep + \global\divide\columnwidth\pagegrid@col + \global\advance\columnwidth-\columnsep + \global\hsize\columnwidth + \global\linewidth\columnwidth + \skip@\baselineskip\advance\skip@-\topskip + \@ifnum{\pagegrid@col>\@ne}{\set@marry@skip}{}% +}% +\def\set@colht{% + \set@adj@textheight\@colht + \global\let\enlarge@colroom\@empty + \set@colroom +}% +\def\set@adj@textheight#1{% + #1\textheight + \def\@elt{\adj@page#1}% + \@booleantrue\firsttime@sw\@dbltoplist + \let\@elt\relax + \global#1#1\relax + \outputdebug@sw{\saythe#1}{}% +}% +\def\set@colroom{% + \set@adj@colht\@colroom + \@if@empty\enlarge@colroom{}{% + \global\advance\@colroom\enlarge@colroom\relax + }% + \outputdebug@sw{\saythe\@colroom}{}% + \@ifdim{\@colroom>\topskip}{}{% + \ltxgrid@info{Not enough room: \string\@colroom=\the\@colroom; increasing to \the\topskip}% + \@colroom\topskip + }% + \global\@colroom\@colroom + \set@vsize +}% +\def\set@vsize{% + \global\vsize\@colroom + \outputdebug@sw{\saythe\vsize}{}% +}% +\def\set@adj@colht#1{% + #1\@colht + \@ifvoid\pagesofar{}{% + \advance#1-\ht\pagesofar\advance#1-\dp\pagesofar + }% + \@ifvoid\footbox{}{% + \advance#1-\ht\footbox\advance#1-\dp\footbox + }% + \def\@elt{\adj@column#1}% + \@booleantrue\firsttime@sw\@toplist + \@booleantrue\firsttime@sw\@botlist + \let\@elt\relax + \outputdebug@sw{\saythe#1}{}% +}% +\def\adj@column#1#2{% + \advance#1-\ht#2% + \advance#1-\firsttime@sw{\textfloatsep\@booleanfalse\firsttime@sw}{\floatsep}% +}% +\def\adj@page#1#2{% + \advance#1-\ht#2% + \advance#1-\firsttime@sw{\dbltextfloatsep\@booleanfalse\firsttime@sw}{\dblfloatsep}% +}% +\appdef\@outputpage{% + \set@colht % FIXME: needed? + \@floatplacement % FIXME: needed? + \@dblfloatplacement % FIXME: needed? +}% +\@namedef{balance@2}{% + \expandafter\balance@two\csname col@1\endcsname\@outputbox + % Avoid a bug by preventing a restore when leaving this group + \global\setbox\csname col@1\endcsname\box\csname col@1\endcsname + \@ifvoid\footbox{}{% + \global\setbox\footbox\vbox{% + \setbox\z@\box\@tempboxa + \let\recover@footins\relax + \balance@two\footbox\@tempboxa + \hb@xt@\textwidth{\box\footbox\hfil\box\@tempboxa}% + }% + }% +}% +\def\balance@two#1#2{% +\outputdebug@sw{{\tracingall\scrollmode\showbox#1\showbox#2}}{}% + \setbox\@ne\vbox{% + \@ifvoid#1{}{% + \unvcopy#1\recover@footins + \@ifvoid#2{}{\marry@baselines}% + }% + \@ifvoid#2{}{% + \unvcopy#2\recover@footins + }% + }% + \dimen@\ht\@ne\divide\dimen@\tw@ + \dimen@i\dimen@ + \vbadness\@M + \vfuzz\maxdimen + \loopwhile{% + \dimen@i=.5\dimen@i + \outputdebug@sw{\saythe\dimen@\saythe\dimen@i\saythe\dimen@ii}{}% + \setbox\z@\copy\@ne\setbox\tw@\vsplit\z@ to\dimen@ + \setbox\z@ \vbox{% + \unvcopy\z@ + \setbox\z@\vbox{\unvbox\z@ \setbox\z@\lastbox\aftergroup\vskip\aftergroup-\expandafter}\the\dp\z@\relax + }% + \setbox\tw@\vbox{% + \unvcopy\tw@ + \setbox\z@\vbox{\unvbox\tw@\setbox\z@\lastbox\aftergroup\vskip\aftergroup-\expandafter}\the\dp\z@\relax + }% + \dimen@ii\ht\tw@\advance\dimen@ii-\ht\z@ + \@ifdim{\dimen@i>.5\p@}{% + \advance\dimen@\@ifdim{\dimen@ii<\z@}{}{-}\dimen@i + \true@sw + }{% + \@ifdim{\dimen@ii<\z@}{% + \advance\dimen@\tw@\dimen@i + \true@sw + }{% + \false@sw + }% + }% + }% + \outputdebug@sw{\saythe\dimen@\saythe\dimen@i\saythe\dimen@ii}{}% +\@ifdim{\ht\z@=\z@}{% +\@ifdim{\ht\tw@=\z@}{% +\true@sw +}{% +\false@sw +}% +}{% +\true@sw +}% +{% +}{% +\ltxgrid@info{Unsatifactorily balanced columns: giving up}% +\setbox\tw@\box#1% +\setbox\z@ \box#2% +}% + \setbox\tw@\vbox{\unvbox\tw@\vskip\z@skip}% + \setbox\z@ \vbox{\unvbox\z@ \vskip\z@skip}% + \set@colroom +\dimen@\ht\z@\@ifdim{\dimen@<\ht\tw@}{\dimen@\ht\tw@}{}% +\@ifdim{\dimen@>\@colroom}{\dimen@\@colroom}{}% + \outputdebug@sw{\saythe{\ht\z@}\saythe{\ht\tw@}\saythe\@colroom\saythe\dimen@}{}% +\setbox#1\vbox to\dimen@{\unvbox\tw@\unskip\raggedcolumn@skip}% +\setbox#2\vbox to\dimen@{\unvbox\z@ \unskip\raggedcolumn@skip}% +\outputdebug@sw{{\tracingall\scrollmode\showbox#1\showbox#2}}{}% +}% +\def\recover@footins{% + \skip\z@ \lastskip\unskip + \skip\@ne\lastskip\unskip + \setbox\z@\lastbox + \@ifvbox\z@{% +\setbox\z@\vbox{% +\unvbox\z@ +\setbox\z@\lastbox +\@ifvoid\z@{}{% +\global\setbox\footbox\vbox{% + \unvbox\footbox + \@ifvbox\z@{% + \unvbox\z@ + }{% + \box\z@ + }% +}% +}% +}% + }{}% + \outputdebug@sw{{\tracingall\scrollmode\showbox\footbox}}{}% +}% +\prepdef\@begindocumenthook{% + \open@column@one\@ne + \set@colht + \@floatplacement + \@dblfloatplacement +}% +\def\longtable@longtable{% + \par + \ifx\multicols\@undefined\else\ifnum\col@number>\@ne\@twocolumntrue\fi\fi + \if@twocolumn\LT@err{longtable not in 1-column mode}\@ehc\fi + \begingroup + \@ifnextchar[\LT@array{\LT@array[x]}% +}% +\def\longtable@new{% + \par + \@ifnextchar[\LT@array{\LT@array[x]}% +}% +\def\endlongtable@longtable{% + \crcr + \noalign{% + \let\LT@entry\LT@entry@chop + \xdef\LT@save@row{\LT@save@row}}% + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \if@filesw + {\let\LT@entry\LT@entry@write\immediate\write\@auxout{% + \gdef\expandafter\noexpand + \csname LT@\romannumeral\c@LT@tables\endcsname + {\LT@save@row}}}% + \fi + \ifx\LT@save@row\LT@@save@row + \else + \LT@warn{Column \@width s have changed\MessageBreak + in table \thetable}% + \LT@final@warn + \fi + \endgraf\penalty -\LT@end@pen + \endgroup + \global\@mparbottom\z@ + \pagegoal\vsize + \endgraf\penalty\z@\addvspace\LTpost + \ifvoid\footins\else\insert\footins{}\fi +}% +\def\endlongtable@new{% + \crcr + \noalign{% + \let\LT@entry\LT@entry@chop + \xdef\LT@save@row{\LT@save@row}% + }% + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \@if@sw\if@filesw\fi{% + {% + \let\LT@entry\LT@entry@write + \immediate\write\@auxout{% + \gdef\expandafter\noexpand\csname LT@\romannumeral\c@LT@tables\endcsname + {\LT@save@row}% + }% + }% + }{}% + \@ifx\LT@save@row\LT@@save@row{}{% + \LT@warn{% + Column \@width s have changed\MessageBreak in table \thetable + }\LT@final@warn + }% + \endgraf + \nobreak + \box\@ifvoid\LT@lastfoot{\LT@foot}{\LT@lastfoot}% + \global\@mparbottom\z@ + \endgraf + \LT@post +}% +\def\LT@start@longtable{% + \let\LT@start\endgraf + \endgraf + \penalty\z@ + \vskip\LTpre + \dimen@\pagetotal + \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi + \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi + \advance\dimen@ \ht\LT@foot + \dimen@ii\vfuzz\vfuzz\maxdimen + \setbox\tw@\copy\z@ + \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox + \setbox\tw@\vbox{\unvbox\tw@}% + \vfuzz\dimen@ii + \advance\dimen@ \ht + \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@\dp + \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@ -\pagegoal + \ifdim \dimen@>\z@\vfil\break\fi + \global\@colroom\@colht + \ifvoid\LT@foot\else + \advance\vsize-\ht\LT@foot + \global\advance\@colroom-\ht\LT@foot + \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@ + \maxdepth\z@ + \fi + \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi + \output{\LT@output}% +}% +\def\LT@start@new{% + \let\LT@start\endgraf + \endgraf + \markthr@@{}% + \LT@pre + \@ifvoid\LT@firsthead{\LT@top}{\box\LT@firsthead\nobreak}% + \mark@envir{longtable}% +}% +\def\LT@end@hd@ft@longtable#1{% + \LT@echunk + \ifx\LT@start\endgraf + \LT@err{Longtable head or foot not at start of table}{Increase LTchunksize}% + \fi + \setbox#1\box\z@ + \LT@get@widths\LT@bchunk +}% +\def\LT@end@hd@ft@new#1{% + \LT@echunk + \@ifx{\LT@start\endgraf}{% + \LT@err{Longtable head or foot not at start of table}{Increase LTchunksize}% + }% + \global\setbox#1\box\z@ + \LT@get@widths + \LT@bchunk +}% +\def\LT@array@longtable[#1]#2{% + \refstepcounter{table}\stepcounter{LT@tables}% + \if l#1% + \LTleft\z@ \LTright\fill + \else\if r#1% + \LTleft\fill \LTright\z@ + \else\if c#1% + \LTleft\fill \LTright\fill + \fi\fi\fi + \let\LT@mcol\multicolumn + \let\LT@@tabarray\@tabarray + \let\LT@@hl\hline + \def\@tabarray{% + \let\hline\LT@@hl + \LT@@tabarray}% + \let\\\LT@tabularcr\let\tabularnewline\\% + \def\newpage{\noalign{\break}}% + \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% + \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% + \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption + \@tempdima\ht\strutbox + \let\@endpbox\LT@endpbox + \ifx\extrarowheight\@undefined + \let\@acol\@tabacol + \let\@classz\@tabclassz \let\@classiv\@tabclassiv + \def\@startpbox{\vtop\LT@startpbox}% + \let\@@startpbox\@startpbox + \let\@@endpbox\@endpbox + \let\LT@LL@FM@cr\@tabularcr + \else + \advance\@tempdima\extrarowheight + \col@sep\tabcolsep + \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr + \fi + \setbox\@arstrutbox\hbox{\vrule + \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \strutbox + \@width \z@}% + \let\@sharp##\let\protect\relax + \begingroup + \@mkpream{#2}% + \xdef\LT@bchunk{% + \global\advance\c@LT@chunks\@ne + \global\LT@rows\z@\setbox\z@\vbox\bgroup + \LT@setprevdepth + \tabskip\LTleft\halign to\hsize\bgroup + \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}% + \endgroup + \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols + \LT@make@row + \m@th\let\par\@empty + \everycr{}\lineskip\z@\baselineskip\z@ + \LT@bchunk +}% +\def\LT@LR@l{\LTleft\z@ \LTright\fill}% +\def\LT@LR@r{\LTleft\fill \LTright\z@ }% +\def\LT@LR@c{\LTleft\fill \LTright\fill}% +\def\LT@array@new[#1]#2{% + \refstepcounter{table}\stepcounter{LT@tables}% + \table@hook + \LTleft\fill \LTright\fill + \csname LT@LR@#1\endcsname + \let\LT@mcol\multicolumn + \let\LT@@hl\hline + \prepdef\@tabarray{\let\hline\LT@@hl}% + \let\\\LT@tabularcr + \let\tabularnewline\\% + \def\newpage{\noalign{\break}}% + \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% + \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% + \let\hline\LT@hline + \let\kill\LT@kill + \let\caption\LT@caption + \@tempdima\ht\strutbox + \let\@endpbox\LT@endpbox + \@ifxundefined\extrarowheight{% + \let\@acol\@tabacol + \let\@classz\@tabclassz + \let\@classiv\@tabclassiv + \def\@startpbox{\vtop\LT@startpbox}% + \let\@@startpbox\@startpbox + \let\@@endpbox\@endpbox + \let\LT@LL@FM@cr\@tabularcr + }{% + \advance\@tempdima\extrarowheight + \col@sep\tabcolsep + \let\@startpbox\LT@startpbox + \let\LT@LL@FM@cr\@arraycr + }% + \let\@acoll\@tabacoll + \let\@acolr\@tabacolr + \let\@acol\@tabacol + \setbox\@arstrutbox\hbox{% + \vrule + \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \strutbox + \@width \z@ + }% + \let\@sharp##% + \let\protect\relax + \begingroup + \@mkpream{#2}% + \@mkpream@relax + \edef\@preamble{\@preamble}% + \prepdef\@preamble{% + \global\advance\c@LT@chunks\@ne + \global\LT@rows\z@ + \setbox\z@\vbox\bgroup + \LT@setprevdepth + \tabskip\LTleft + \halign to\hsize\bgroup + \tabskip\z@ + \@arstrut + }% + \appdef\@preamble{% + \tabskip\LTright + \cr + }% + \global\let\LT@bchunk\@preamble + \endgroup + \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols + \LT@make@row + \m@th + \let\par\@empty + \everycr{}% + \lineskip\z@ + \baselineskip\z@ + \LT@bchunk +}% +\appdef\table@hook{}% +%% Note that it is not enough to define the environment itself; we also have to create the corresponding +%% \cmd\output\ routine procedures, which provide for continued footers and headers +%% (the very feature of \env{longtable} requiring support in the output routine). +%% This same consideration would arise in defining any syntactic extension to \env{longtable}, because +%% the environment name itself is exposed in the output routine. +\def\switch@longtable{% + \@ifpackageloaded{longtable}{% + \@ifx{\longtable\longtable@longtable}{% + \@ifx{\endlongtable\endlongtable@longtable}{% + \@ifx{\LT@start\LT@start@longtable}{% + \@ifx{\LT@end@hd@ft\LT@end@hd@ft@longtable}{% + \@ifx{\LT@array\LT@array@longtable}{% + \true@sw + }{\false@sw}% + }{\false@sw}% + }{\false@sw}% + }{\false@sw}% + }{\false@sw}% + {% + \class@info{Patching longtable package}% + }{% + \class@info{Patching unrecognized longtable package. (Proceeding with fingers crossed)}% + }% + \let\longtable\longtable@new + \let\endlongtable\endlongtable@new + \let\LT@start\LT@start@new + \let\LT@end@hd@ft\LT@end@hd@ft@new + \let\LT@array\LT@array@new + \newenvironment{longtable*}{% + \onecolumngrid@push + \longtable + }{% + \endlongtable + \onecolumngrid@pop + }% + }{}% +}% +\def\LT@pre{\penalty\z@\vskip\LTpre}% +\def\LT@bot{\nobreak\copy\LT@foot\vfil}% +\def\LT@top{\copy\LT@head\nobreak}% +\def\LT@post{\penalty\z@\addvspace\LTpost\mark@envir{\curr@envir}}% +\def\LT@adj{% + \setbox\z@\vbox{\null}\dimen@-\ht\z@ + \setbox\z@\vbox{\unvbox\z@\LT@bot}\advance\dimen@\ht\z@ + \global\advance\vsize-\dimen@ +}% +\def\output@init@longtable{\LT@adj}% +\def\output@prep@longtable{\setbox\@cclv\vbox{\unvbox\@cclv\LT@bot}}% +\def\output@post@longtable{\LT@top}% +\let\output@init@theindex\@empty +\let\output@prep@theindex\@empty +\def\output@post@theindex{% + \@ifodd\c@page{}{% + \@ifnum{\pagegrid@cur=\@ne}{% we have the leftmost column of a verso page + % insert the current top-level continued head + }% + }% +}% +\def\check@aux{\do@output@MVL{\do@check@aux}}% +\def\check@deferlist@stuck#1{% + \@ifx{\@deferlist@postshipout\@empty}{}{% + \@ifx{\@deferlist@postshipout\@deferlist}{% + \@fltstk + \clearpage@sw{% + \ltxgrid@warn{Deferred float stuck during \string\clearpage\space processing}% + }{% + \force@deferlist@stuck#1% + }% + }{% + %Successfully committed float(s) + }% + \global\let\@deferlist@postshipout\@empty + }% +}% +\def\@fltstk{% + \@latex@warning{A float is stuck (cannot be placed without \string\clearpage)}% +}% +\appdef\@outputpage{% + \global\let\@deferlist@postshipout\@deferlist +}% +\def\@next#1#2{% + \@ifx{#2\@empty}{\false@sw}{% + \expandafter\@xnext#2\@@#1#2% + \true@sw + }% +}% +\def\@xnext\@elt#1#2\@@#3#4{% + \def#3{#1}% + \gdef#4{#2}% + \def\@tempa{#4}\def\@tempb{\@freelist}% + \@ifx{\@tempa\@tempb}{% + \@ifx{#4\@empty}{% + \force@deferlist@empty%{Float register pool exhausted}% + }{}% + }{}% +}% +\def\force@deferlist@stuck#1{% +\force@deferlist@sw{% + \@booleantrue\clearpage@sw + \@booleantrue\forcefloats@sw + #1% +}{% +}% +}% +\def\force@deferlist@empty{% + \force@deferlist@sw{% + \penalty-\pagebreak@pen + \protect@penalty\do@forcecolumn@pen + }{% + }% +}% +\@booleanfalse\force@deferlist@sw +\mathchardef\do@forcecolumn@pen=10009 +\@namedef{output@-\the\do@forcecolumn@pen}{\do@forcecolumn}% +\def\do@forcecolumn{% + \@booleantrue\clearpage@sw + \@booleantrue\forcefloats@sw + \do@startcolumn +}% +\def\enlargethispage{% +\@ifstar{% +\@enlargethispage{}% +}{% +\@enlargethispage{}% +}% +}% +\def\@enlargethispage#1#2{% + \begingroup + \dimen@#2\relax + \edef\@tempa{#1}% + \edef\@tempa{\noexpand\@@enlargethispage{\@tempa}{\the\dimen@}}% + \expandafter\do@output@MVL\expandafter{\@tempa}% + \endgroup +}% +\def\@@enlargethispage#1#2{% + \def\@tempa{one}% + \@ifx{\thepagegrid\@tempa}{% + \true@sw + }{% + \def\@tempa{mlt}% + \@ifx{\thepagegrid\@tempa}{% + \@ifnum{\pagegrid@cur=\@ne}{% OK to adjust this page + \gdef\enlarge@colroom{#2}% + \true@sw + }{% Can only adjust this column; give up + \ltxgrid@warn{Too late to enlarge this page; move the command to the first column.}% + \false@sw + }% + }{% Unknown page grid + \ltxgrid@warn{Unable to enlarge a page of this kind.}% + \false@sw + }% + }% + {% + \class@info{Enlarging page \thepage\space by #2}% + \global\advance\@colroom#2\relax + \set@vsize + }{% + % Could not adjust this page + }% +}% +\let\enlarge@colroom\@empty +\let\@kludgeins\@undefined +\@booleantrue\textheight@sw +\prepdef\@outputpage{% + \textheight@sw{% + \count@\vbadness\vbadness\@M + \dimen@\vfuzz\vfuzz\maxdimen + \setbox\@outputbox\vbox to\textheight{\unvbox\@outputbox}% + \vfuzz\dimen@ + \vbadness\count@ + }{}% +}% +\def\ltxgrid@info{% + \ltxgrid@info@sw{\class@info}{\@gobble}% +}% +\@booleanfalse\ltxgrid@info@sw +\def\ltxgrid@warn{% + \ltxgrid@warn@sw{\class@warn}{\@gobble}% +}% +\@booleantrue\ltxgrid@warn@sw +\endinput +%% +%% End of file `ltxgrid.sty'. diff -r 7c27e8d9231d -r 852015a7eead project/static/proceedings/sources/ltxutil.sty --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project/static/proceedings/sources/ltxutil.sty Tue Jul 13 01:43:25 2010 +0530 @@ -0,0 +1,1750 @@ +%% +%% This is file `ltxutil.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% ltxutil.dtx (with options: `ltxutil,ltxutil-krn') +%% +%% This is a generated file; +%% altering it directly is inadvisable; +%% instead, modify the original source file. +%% See the URL in the file 00readme.txt. +%% +%% Copyright notice. +%% +%% These files are distributed +%% WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +%% +%%% @LaTeX-file{ +%%% filename = "ltxutil.dtx", +%%% version = "1.0rc5b", +%%% date = "2001/07/31", +%%% time = "12:23:00 GMT+8", +%%% checksum = "3641", +%%% author = "Arthur Ogawa (mailto:ogawa@teleport.com), +%%% commissioned by the American Physical Society. +%%% ", +%%% copyright = "Copyright (C) 1999 Arthur Ogawa, +%%% distributed under the terms of the +%%% LaTeX Project Public License, see +%%% ftp://ctan.tug.org/macros/latex/base/lppl.txt +%%% ", +%%% address = "Arthur Ogawa, +%%% USA", +%%% telephone = "", +%%% FAX = "", +%%% email = "ogawa@teleport.com", +%%% codetable = "ISO/ASCII", +%%% keywords = "latex, utility, kernel", +%%% supported = "yes", +%%% abstract = "package to add utilties to LaTeX", +%%% docstring = "The checksum field above generated by ltxdoc", +%%% } +\NeedsTeXFormat{LaTeX2e}[1995/12/01]% +\ProvidesFile{ltxutil.sty}% + [2001/07/31 1.0rc5b utilities package]% \fileversion +\def\package@name{ltxutil}% +\expandafter\PackageInfo\expandafter{\package@name}{% + Utility macros for \protect\LaTeXe, + by A. Ogawa (ogawa@teleport.com)% +}% +\typeout{% + ltxutil: portions licensed from W. E. Baxter (web@superscript.com)% +}% +\def\class@err#1{\ClassError{\class@name}{#1}\@eha}% +\def\class@warn#1{\ClassWarningNoLine{\class@name}{#1}}% +\def\class@info#1{\ClassInfo{\class@name}{#1}}% +\def\obsolete@command#1{% + \class@warn@end{Command \string#1\space is obsolete.^^JPlease remove from your document}% + \global\let#1\@empty + #1% +}% +\def\replace@command#1#2{% + \class@warn@end{Command \string#1\space is obsolete;^^JUse \string#2\space instead}% + \global\let#1#2% + #1% +}% +\def\replace@environment#1#2{% + \class@warn@end{Environment #1 is obsolete;^^JUse #2 instead}% + \glet@environment{#1}{#2}% + \@nameuse{#1}% +}% +\def\incompatible@package#1{% + \@ifpackageloaded{#1}{% + \def\@tempa{I cannot continue. You must remove the \string\usepackage\ statement that caused that package to be loaded.}% + \ClassError{\class@name}{The #1 package cannot be used with \class@name}% + \@tempa\stop + }{% + \class@info{#1 was not loaded (OK!)}% + }% +}% +\def\class@warn@end#1{% + \gappdef\class@enddocumenthook{\class@warn{#1}}% +}% +\AtEndOfClass{% + \@ifxundefined\class@name{\def\class@name{Generic Class}}{}% +}% +\def\t@{to}% +\dimendef\dimen@iii\thr@@ +\def\halignt@{\halign\t@}% +\chardef\f@ur=4\relax +\chardef\cat@letter=11\relax +\chardef\other=12\relax +\def\let@environment#1#2{% + \expandafter\let + \csname#1\expandafter\endcsname\csname#2\endcsname + \expandafter\let + \csname end#1\expandafter\endcsname\csname end#2\endcsname +}% +\def\glet@environment#1#2{% + \global\expandafter\let + \csname#1\expandafter\endcsname\csname#2\endcsname + \global\expandafter\let + \csname end#1\expandafter\endcsname\csname end#2\endcsname +}% +\newcommand\tracingplain{% + \tracingonline\z@\tracingcommands\z@\tracingstats\z@ + \tracingpages\z@\tracingoutput\z@\tracinglostchars\@ne + \tracingmacros\z@\tracingparagraphs\z@\tracingrestores\z@ + \showboxbreadth5\showboxdepth3\relax %\errorstopmode + }% +\newcommand\traceoutput{% + \appdef\@resetactivechars{\showoutput}% +}% +\newcommand\say[1]{\typeout{<\noexpand#1=\meaning#1>}}% +\newcommand\saythe[1]{\typeout{<\noexpand#1=\the#1>}}% +\def\fullinterlineskip{\prevdepth\z@}% +\countdef\count@i\@ne +\countdef\count@ii\tw@ +\long\def\prepdef#1#2{% + \@ifxundefined#1{\toks@{}}{\toks@\expandafter{#1}}% + \toks@ii{#2}% + \edef#1{\the\toks@ii\the\toks@}% +}% +\long\def\appdef#1#2{% + \@ifxundefined#1{\toks@{}}{\toks@\expandafter{#1}}% + \toks@ii{#2}% + \edef#1{\the\toks@\the\toks@ii}% +}% +\long\def\gappdef#1#2{% + \@ifxundefined#1{\toks@{}}{\toks@\expandafter{#1}}% + \toks@ii{#2}% + \global\edef#1{\the\toks@\the\toks@ii}% +}% +\long\def\appdef@val#1#2{% + \appdef#1{{#2}}% +}% +\long\def\appdef@e#1#2{% + \expandafter\appdef + \expandafter#1% + \expandafter{#2}% +}% +\long\def\appdef@eval#1#2{% + \expandafter\appdef@val + \expandafter#1% + \expandafter{#2}% +}% +\toksdef\toks@ii=\tw@ +\long\def\@ifxundefined#1{\@ifx{\undefined#1}}% +\long\def\@ifnotrelax#1#2#3{\@ifx{\relax#1}{#3}{#2}}% +\long\def\@argswap#1#2{#2#1}% +\long\def\@argswap@val#1#2{#2{#1}}% +\def\@ifxundefined@cs#1{\expandafter\@ifx\expandafter{\csname#1\endcsname\relax}}% +\def\@boolean#1#2{% + \long\def#1{% + #2% \if + \expandafter\true@sw + \else + \expandafter\false@sw + \fi + }% +}% +\def\@boole@def#1#{\@boolean{#1}}% Implicit #2 +\def\@booleantrue#1{\let#1\true@sw}% +\def\@booleanfalse#1{\let#1\false@sw}% +\@boole@def\@ifx#1{\ifx#1}% +\@boole@def\@ifx@empty#1{\ifx\@empty#1}% +\@boole@def\@if@empty#1{\if!#1!}% +\def\@if@sw#1#2{#1\expandafter\true@sw\else\expandafter\false@sw#2}% +\@boole@def\@ifdim#1{\ifdim#1}% +\@boole@def\@ifeof#1{\ifeof#1}% +\@boole@def\@ifhbox#1{\ifhbox#1}% +\@boole@def\@ifhmode{\ifhmode}% +\@boole@def\@ifinner{\ifinner}% +\@boole@def\@ifmmode{\ifmmode}% +\@boole@def\@ifnum#1{\ifnum#1}% +\@boole@def\@ifodd#1{\ifodd#1}% +\@boole@def\@ifvbox#1{\ifvbox#1}% +\@boole@def\@ifvmode{\ifvmode}% +\@boole@def\@ifvoid#1{\ifvoid#1}% +\long\def\true@sw#1#2{#1}% +\long\def\false@sw#1#2{#2}% +\long\def\loopuntil#1{#1{}{\loopuntil{#1}}}% +\long\def\loopwhile#1{#1{\loopwhile{#1}}{}}% +\def\@provide#1{% + \@ifx{\undefined#1}{\true@sw}{\@ifx{\relax#1}{\true@sw}{\false@sw}}% + {\def#1}{\def\j@nk}% +}% +\prepdef\document{% + \endgroup + \init@documenthook + \set@typesize@hook + \normalsize + \set@pica@hook + \true@sw{}% +}% +\def\init@documenthook{}% +\AtBeginDocument{% + \class@documenthook +}% +\AtEndDocument{% + \class@enddocumenthook +}% +\def\class@documenthook{}% +\def\class@enddocumenthook{}% +\def\set@typesize@hook{}% +\def\set@pica@hook{}% +\def\enddocument{% + \@enddocumenthook + \@checkend{document}% + \clear@document + \check@aux + \deadcycles\z@ + \@@end +}% +\def\clear@document{\clearpage}% +\def\check@aux{\do@check@aux}% +\def\do@check@aux{% + \@if@sw\if@filesw\fi{% + \immediate\closeout\@mainaux + \let\@setckpt\@gobbletwo + \let\@newl@bel\@testdef + \@tempswafalse + \makeatletter + \input\jobname.aux\relax + }{}% + \@dofilelist + \@ifdim{\font@submax >\fontsubfuzz\relax}{% + \@font@warning{% + Size substitutions with differences\MessageBreak + up to \font@submax\space have occured.\@gobbletwo + }% + }{}% + \@defaultsubs + \@refundefined + \@if@sw\if@filesw\fi{% + \@ifx{\@multiplelabels\relax}{% + \@if@sw\if@tempswa\fi{% + \@latex@warning@no@line{% + Label(s) may have changed. + Rerun to get cross-references right + }% + }{}% + }{% + \@multiplelabels + }% + }{}% +}% +\def\flushing{% + \let\\\@normalcr + \leftskip\z@skip + \rightskip\z@skip + \@rightskip\z@skip + \parfillskip\@flushglue +}% +\def\eqnarray@LaTeX{% + \stepcounter{equation}% + \def\@currentlabel{\p@equation\theequation}% + \global\@eqnswtrue + \m@th + \global\@eqcnt\z@ + \tabskip\@centering + \let\\\@eqncr + $$\everycr{}\halign\t@\displaywidth\bgroup + \hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel + &\global\@eqcnt\@ne\hskip \tw@\arraycolsep \hfil${##}$\hfil + &\global\@eqcnt\tw@ \hskip \tw@\arraycolsep + $\displaystyle{##}$\hfil\tabskip\@centering + &\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup + \tabskip\z@skip + \cr +} +\long\def\eqnarray@fleqn@fixed{% + \stepcounter{equation}\def\@currentlabel{\p@equation\theequation}% + \global\@eqnswtrue\m@th\global\@eqcnt\z@ + \tabskip\mathindent + \let\\=\@eqncr + \setlength\abovedisplayskip{\topsep}% + \ifvmode\addtolength\abovedisplayskip{\partopsep}\fi + \addtolength\abovedisplayskip{\parskip}% + \setlength\belowdisplayskip{\abovedisplayskip}% + \setlength\belowdisplayshortskip{\abovedisplayskip}% + \setlength\abovedisplayshortskip{\abovedisplayskip}% + $$% + \everycr{}% + \halignt@\linewidth\bgroup + \hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel + &\global\@eqcnt\@ne + \hskip\tw@\eqncolsep + \hfil${{}##{}}$\hfil + &\global\@eqcnt\tw@ + \hskip\tw@\eqncolsep + $\displaystyle{##}$\hfil\tabskip\@centering + &\global\@eqcnt\thr@@\hb@xt@\z@\bgroup\hss##\egroup + \tabskip\z@skip + \cr +}% +\@ifx{\eqnarray\eqnarray@LaTeX}{% + \class@info{Repairing broken LaTeX eqnarray}% + \let\eqnarray\eqnarray@fleqn@fixed + \newlength\eqncolsep + \setlength\eqncolsep\z@ + \let\eqnarray@LaTeX\relax + \let\eqnarray@fleqn@fixed\relax +}{}% +\def\mathindent{\@centering}% +\def\set@eqnarray@skips{}% +\def\footnote{% + \@ifnextchar[\@xfootnote{\@yfootnote\@footnotetext}% +}% +\def\footnotemark{% + \@ifnextchar[\@xfootnotemark{\@yfootnote}% +}% +\def\@xfootnote[#1]{% + \@xfootnotemark[#1]% + \@footnotetext +}% +\def\@xfootnotemark@ltx[#1]{% + \begingroup + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup + \H@@footnotemark +}% +\def\@yfootnote{% + \stepcounter\@mpfn + \protected@xdef\@thefnmark{\thempfn}% + \H@@footnotemark +}% +\appdef\class@documenthook{% + \@ifxundefined\H@@footnotemark{% + \let\H@@footnotemark\@footnotemark + }{}% + \let\@xfootnotemark\@xfootnotemark@ltx +}% +\long\def\@footnotetext{% + \insert\footins\bgroup + \make@footnotetext +}% +\long\def\@mpfootnotetext{% + \minipagefootnote@pick + \make@footnotetext +}% +\def\make@footnotetext#1{% + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth\dp\strutbox + \set@footnotewidth + \@parboxrestore + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox + }% + \color@endgroup + \minipagefootnote@drop +}% +\def\set@footnotewidth{% + \hsize\columnwidth + \linewidth\hsize +}% +\def\set@footnotewidth@ii{% + \hsize\textwidth + \advance\hsize\columnsep + \divide\hsize\tw@ + \advance\hsize-\columnsep + \linewidth\hsize +}% +\def\addtocontents#1#2{% + \protected@write\@auxout{% + \let \label \@gobble \let \index \@gobble \let \glossary \@gobble + \def\({\string\(}% + \def\){\string\)}% + \def\\{\string\\}% + }{\string \@writefile {#1}{#2}}% +}% +\def\addcontentsline#1#2#3{% + \addtocontents{#1}{% + \protect\contentsline{#2}{#3}{\thepage}{}% + }% +}% +\def\contentsline#1#2#3#4{% + \csname l@#1\endcsname{#2}{#3}% +}% +\def\label#1{% + \@bsphack + \protected@write\@auxout{}{% + \string\newlabel{#1}{{\@currentlabel}{\thepage}{}{}{}}% + }% + \@esphack +}% +\appdef\class@documenthook{% + \prepdef\caption{\minipagefootnote@here}% +}% +\def\minipagefootnote@init{% + \setbox\@mpfootins\box\voidb@x +}% +\def\minipagefootnote@pick{% + \global\setbox\@mpfootins\vbox\bgroup + \unvbox\@mpfootins +}% +\def\minipagefootnote@drop{% + \egroup +}% +\def\minipagefootnote@here{% + \par + \@ifvoid\@mpfootins{}{% + \vskip\skip\@mpfootins + \fullinterlineskip + \@ifinner{% + \vtop{\unvcopy\@mpfootins}% + {\setbox\z@\lastbox}% + }{}% + \unvbox\@mpfootins + }% +}% +\def\minipagefootnote@foot{% + \@ifvoid\@mpfootins{}{% + \insert\footins\bgroup\unvbox\@mpfootins\egroup + }% +}% +\def\endminipage{% + \par + \unskip + \minipagefootnote@here + \@minipagefalse %% added 24 May 89 + \color@endgroup + \egroup + \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}% +}% +\let\@xfloat@LaTeX\@xfloat +\def\@xfloat#1[#2]{% + \@xfloat@prep + \@nameuse{fp@proc@#2}% + \@ifxundefined\floats@sw{\global\@booleantrue\floats@sw}{}% + \floats@sw{\@xfloat@LaTeX{#1}[#2]}{\@xfloat@anchored{#1}[]}% +}% +\def\@xfloat@prep{% + \let\footnote\footnote@latex + \def\@mpfn{mpfootnote}% + \def\thempfn{\thempfootnote}% + \c@mpfootnote\z@ + \let\@footnotetext\@mpfootnotetext + \let\H@@footnotetext\@mpfootnotetext + \let\@makefntext\@mpmakefntext +}% +\appdef\class@documenthook{% + \let\footnote@latex\footnote +}% +\def\@xfloat@anchored#1[#2]{% + \def\@captype{#1}% + \begin@float@pagebreak + \let\end@float\end@float@anchored + \let\end@dblfloat\end@float@anchored + \hsize\columnwidth + \@parboxrestore + \@floatboxreset + \minipagefootnote@init +}% +\def\end@float@anchored{% + \minipagefootnote@here + \par\vskip\z@skip %% \par\vskip\z@ added 15 Dec 87 + \par + \end@float@pagebreak +}% +\def\begin@float@pagebreak{\par\addvspace\intextsep}% +\def\end@float@pagebreak{\par\addvspace\intextsep}% +\def\@mpmakefntext#1{% + \parindent=1em + \noindent + \hb@xt@1em{\hss\@makefnmark}% + #1% +}% +\def\do@if@floats#1#2{% + \@ifxundefined\floats@sw{\global\@booleantrue\floats@sw}{}% + \floats@sw{}{% + \expandafter\newwrite + \csname#1write\endcsname + \expandafter\def + \csname#1@stream\endcsname{\jobname#2}% + \expandafter\immediate + \expandafter\openout + \csname#1write\endcsname + \csname#1@stream\endcsname\relax + \@ifxundefined\@float@LaTeX{% + \let\@float@LaTeX\@float + \let\@dblfloat@LaTeX\@dblfloat + \let\@float\write@float + \let\@dblfloat\write@floats + }{}% + \let@environment{#1@float}{#1}% + \let@environment{#1@floats}{#1*}% + \@ifxundefined@cs{#1@write}{}{% + \let@environment{#1}{#1@write}% + }% + }% +}% +\def\triggerpar{\leavevmode\@@par}% +\def\oneapage{\def\begin@float@pagebreak{\newpage}\def\end@float@pagebreak{\newpage}}% +\def\print@float#1#2{% + \@ifxundefined@cs{#1write}{}{% + \begingroup + \@booleanfalse\floats@sw + #2% + \raggedbottom + \def\array@default{v}% floats must + \let\@float\@float@LaTeX + \let\@dblfloat\@dblfloat@LaTeX + \let\trigger@float@par\triggerpar + \let@environment{#1}{#1@float}% + \let@environment{#1*}{#1@floats}% + \expandafter\prepdef\csname#1\endcsname{\trigger@float@par}% + \expandafter\prepdef\csname#1*\endcsname{\trigger@float@par}% + \@namedef{fps@#1}{h!}% + \expandafter\immediate + \expandafter\closeout + \csname#1write\endcsname + \everypar{% + \global\let\trigger@float@par\relax + \global\everypar{}\setbox\z@\lastbox + \@ifxundefined@cs{#1sname}{}{% + \begin@float@pagebreak + \expandafter\section + \expandafter*% + \expandafter{% + \csname#1sname\endcsname + }% + }% + }% + \input{\csname#1@stream\endcsname}% + \endgroup + \global\expandafter\let\csname#1write\endcsname\relax + }% +}% +\def\write@float#1{\write@@float{#1}{#1}}% +\def\endwrite@float{\@Esphack}% +\def\write@floats#1{\write@@float{#1*}{#1}}% +\def\endwrite@floats{\@Esphack}% +\def\write@@float#1#2{% + \ifhmode + \@bsphack + \fi + \chardef\@tempc\csname#2write\endcsname + \toks@{\begin{#1}}% + \def\@tempb{#1}% + \expandafter\let\csname end#1\endcsname\endwrite@float + \catcode`\^^M\active + \@makeother\{\@makeother\}\@makeother\% + \write@floatline +}% +\begingroup + \catcode`\[\the\catcode`\{\catcode`\]\the\catcode`\}\@makeother\{\@makeother\}% + \gdef\float@end@tag#1\end{#2}#3\@nul[% + \def\@tempa[#2]% + \@ifx[\@tempa\@tempb][\end[#2]][\write@floatline]% + ]% + \obeylines% + \gdef\write@floatline#1^^M[% + \begingroup% + \newlinechar`\^^M% + \toks@\expandafter[\the\toks@#1]\immediate\write\@tempc[\the\toks@]% + \endgroup% + \toks@[]% + \float@end@tag#1\end{}\@nul% + ]% +\endgroup +\def\@alph#1{\ifcase#1\or a\or b\or c\or d\else\@ialph{#1}\fi} +\def\@ialph#1{\ifcase#1\or \or \or \or \or e\or f\or g\or h\or i\or j\or + k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or + y\or z\or aa\or bb\or cc\or dd\or ee\or ff\or gg\or hh\or ii\or jj\or + kk\or ll\or mm\or nn\or oo\or pp\or qq\or rr\or ss\or tt\or uu\or + vv\or ww\or xx\or yy\or zz\else\@ctrerr\fi} +\def\@startsection#1#2#3#4#5#6{% + \@startsection@hook + \if@noskipsec \leavevmode \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \@ifstar + {\@dblarg{\@ssect@ltx{#1}{#2}{#3}{#4}{#5}{#6}}}% + {\@dblarg{\@sect@ltx {#1}{#2}{#3}{#4}{#5}{#6}}}% +}% +\def\@startsection@hook{}% +\class@info + {Repairing broken LateX \string\@sect}% +\def\@sect@ltx#1#2#3#4#5#6[#7]#8{% + \@ifnum{#2>\c@secnumdepth}{% + \def\H@svsec{\phantomsection}% + \let\@svsec\@empty + }{% + \H@refstepcounter{#1}% + \def\H@svsec{% + \phantomsection + }% + \protected@edef\@svsec{{#1}}% + \@ifundefined{@#1cntformat}{% + \prepdef\@svsec\@seccntformat + }{% + \expandafter\prepdef + \expandafter\@svsec + \csname @#1cntformat\endcsname + }% + }% + \@tempskipa #5\relax + \@ifdim{\@tempskipa>\z@}{% + \begingroup + \interlinepenalty \@M + #6{% + \@ifundefined{@hangfrom@#1}{\@hang@from}{\csname @hangfrom@#1\endcsname}% + {\hskip#3\relax\H@svsec}{\@svsec}{#8}% + }% + \@@par + \endgroup + \@ifundefined{#1mark}{\@gobble}{\csname #1mark\endcsname}{#7}% + \addcontentsline{toc}{#1}{% + \@ifnum{#2>\c@secnumdepth}{% + \protect\numberline{}% + }{% + \protect\numberline{\csname the#1\endcsname}% + }% + #8}% + }{% + \def\@svsechd{% + #6{% + \@ifundefined{@runin@to@#1}{\@runin@to}{\csname @runin@to@#1\endcsname}% + {\hskip#3\relax\H@svsec}{\@svsec}{#8}% + }% + \@ifundefined{#1mark}{\@gobble}{\csname #1mark\endcsname}{#7}% + \addcontentsline{toc}{#1}{% + \@ifnum{#2>\c@secnumdepth}{% + \protect\numberline{}% + }{% + \protect\numberline{\csname the#1\endcsname}% + }% + #8}% + }% + }% + \@xsect{#5}% +}% +\def\@hang@from#1#2#3{\@hangfrom{#1#2}#3}% +\def\@runin@to #1#2#3{#1#2#3}% +\def\@ssect@ltx#1#2#3#4#5#6[#7]#8{% + \def\H@svsec{\phantomsection}% + \@tempskipa #5\relax + \@ifdim{\@tempskipa>\z@}{% + \begingroup + \interlinepenalty \@M + #6{% + \@ifundefined{@hangfroms@#1}{\@hang@froms}{\csname @hangfroms@#1\endcsname}% + {\hskip#3\relax\H@svsec}{#8}% + }% + \@@par + \endgroup + \@ifundefined{#1smark}{\@gobble}{\csname #1smark\endcsname}{#7}% + \addcontentsline{toc}{#1}{\protect\numberline{}#8}% + }{% + \def\@svsechd{% + #6{% + \@ifundefined{@runin@tos@#1}{\@runin@tos}{\csname @runin@tos@#1\endcsname}% + {\hskip#3\relax\H@svsec}{#8}% + }% + \@ifundefined{#1smark}{\@gobble}{\csname #1smark\endcsname}{#7}% + \addcontentsline{toc}{#1}{\protect\numberline{}#8}% + }% + }% + \@xsect{#5}% +}% +\def\@hang@froms#1#2{#1#2}% +\def\@runin@tos #1#2{#1#2}% +\appdef\init@documenthook{% + \providecommand\phantomsection{}% + \providecommand\hyper@anchor[1]{}% + \providecommand\hyper@last{}% + \providecommand\Hy@raisedlink[1]{#1}% + \providecommand\hyper@anchorstart[1]{}% + \providecommand\hyper@anchorend{}% + \providecommand\hyper@linkstart[2]{}% + \providecommand\hyper@linkend{}% +}% +\let\H@refstepcounter\refstepcounter +\def\sec@upcase#1{\relax{#1}}% +\appdef\class@documenthook{% + \@ifpackageloaded{array}{\switch@array}{\switch@tabular}% + \prepdef\endtabular{\endtabular@hook}% + \@provide\endtabular@hook{}% + \prepdef\endarray{\endarray@hook}% + \@provide\endarray@hook{}% + \providecommand\array@hook{}% + \prepdef\@tabular{\tabular@hook}% + \@provide\tabular@hook{}% +}% +\def\switch@tabular{% + \let\@array@sw\@array@sw@array + \@ifx{\@array\@array@LaTeX}{% + \@ifx{\multicolumn\multicolumn@LaTeX}{% + \@ifx{\@tabular\@tabular@LaTeX}{% + \@ifx{\@tabarray\@tabarray@LaTeX}{% + \@ifx{\array\array@LaTeX}{% + \@ifx{\endarray\endarray@LaTeX}{% + \@ifx{\endtabular\endtabular@LaTeX}{% + \@ifx{\@mkpream\@mkpream@LaTeX}{% + \@ifx{\@addamp\@addamp@LaTeX}{% + \@ifx{\@arrayacol\@arrayacol@LaTeX}{% + \@ifx{\@tabacol\@tabacol@LaTeX}{% + \@ifx{\@arrayclassz\@arrayclassz@LaTeX}{% + \@ifx{\@tabclassiv\@tabclassiv@LaTeX}{% + \@ifx{\@arrayclassiv\@arrayclassiv@LaTeX}{% + \@ifx{\@tabclassz\@tabclassz@LaTeX}{% + \@ifx{\@classv\@classv@LaTeX}{% + \@ifx{\hline\hline@LaTeX}{% + \@ifx{\@tabularcr\@tabularcr@LaTeX}{% + \@ifx{\@xtabularcr\@xtabularcr@LaTeX}{% + \@ifx{\@xargarraycr\@xargarraycr@LaTeX}{% + \@ifx{\@yargarraycr\@yargarraycr@LaTeX}{% + \true@sw + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + {% + \class@info{Patching LaTeX tabular.}% + }{% + \class@info{Unrecognized LaTeX tabular. Please update this document class! (Proceeding with fingers crossed.)}% + }% + \let\@array\@array@ltx + \let\multicolumn\multicolumn@ltx + \let\@tabular\@tabular@ltx + \let\@tabarray\@tabarray@ltx + \let\array\array@ltx + \let\endarray\endarray@ltx + \let\endtabular\endtabular@ltx + \let\@mkpream\@mkpream@ltx + \let\@addamp\@addamp@ltx + \let\@arrayacol\@arrayacol@ltx + \let\@tabacol\@tabacol@ltx + \let\@arrayclassz\@arrayclassz@ltx + \let\@tabclassiv\@tabclassiv@ltx + \let\@arrayclassiv\@arrayclassiv@ltx + \let\@tabclassz\@tabclassz@ltx + \let\@classv\@classv@ltx + \let\hline\hline@ltx + \let\@tabularcr\@tabularcr@ltx + \let\@xtabularcr\@xtabularcr@ltx + \let\@xargarraycr\@xargarraycr@ltx + \let\@yargarraycr\@yargarraycr@ltx +}% +\def\switch@array{% + \let\@array@sw\@array@sw@LaTeX + \@ifx{\@array\@array@array}{% + \@ifx{\@tabular\@tabular@array}{% + \@ifx{\@tabarray\@tabarray@array}{% + \@ifx{\array\array@array}{% + \@ifx{\endarray\endarray@array}{% + \@ifx{\endtabular\endtabular@array}{% + \@ifx{\@mkpream\@mkpream@array}{% + \@ifx{\@classx\@classx@array}{% + \@ifx{\insert@column\insert@column@array}{% + \@ifx{\@arraycr\@arraycr@array}{% + \@ifx{\@xarraycr\@xarraycr@array}{% + \@ifx{\@xargarraycr\@xargarraycr@array}{% + \@ifx{\@yargarraycr\@yargarraycr@array}{% + \true@sw + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }{% + \class@info{Patching array package.}% + }{% + \class@info{Unrecognized array package. Please update this document class! (Proceeding with fingers crossed.)}% + }% + \let\@array \@array@array@new + \let\@@array \@array % Cosi fan tutti + \let\@tabular \@tabular@array@new + \let\@tabarray \@tabarray@array@new + \let\array \array@array@new + \let\endarray \endarray@array@new + \let\endtabular\endtabular@array@new + \let\@mkpream \@mkpream@array@new + \let\@classx \@classx@array@new + \let\@arrayacol\@arrayacol@ltx + \let\@tabacol \@tabacol@ltx + \let\insert@column\insert@column@array@new + \expandafter\let\csname endtabular*\endcsname\endtabular % Cosi fan tutti + \let\@arraycr \@arraycr@new + \let\@xarraycr \@xarraycr@new + \let\@xargarraycr\@xargarraycr@new + \let\@yargarraycr\@yargarraycr@new +}% +\def\@array@sw@LaTeX{\@ifx{\\\@tabularcr}}% +\def\@array@sw@array{\@ifx{\d@llarbegin\begingroup}}% +\def\@tabular@LaTeX{% + \leavevmode + \hbox\bgroup$% + \let\@acol\@tabacol + \let\@classz\@tabclassz + \let\@classiv\@tabclassiv + \let\\\@tabularcr + \@tabarray +}% +\def\@tabular@ltx{% + \let\@acoll\@tabacoll + \let\@acolr\@tabacolr + \let\@acol\@tabacol + \let\@classz\@tabclassz + \let\@classiv\@tabclassiv + \let\\\@tabularcr + \@tabarray +}% +\def\@tabular@array{% + \leavevmode + \hbox\bgroup$% + \col@sep\tabcolsep + \let\d@llarbegin\begingroup + \let\d@llarend\endgroup + \@tabarray +}% +\def\@tabular@array@new{% + \let\@acoll\@tabacoll + \let\@acolr\@tabacolr + \let\@acol\@tabacol + \let\col@sep\@undefined + \let\d@llarbegin\begingroup + \let\d@llarend\endgroup + \@tabarray +}% +\def\@tabarray@LaTeX{% + \m@th\@ifnextchar[\@array{\@array[c]}% +}% +\def\@tabarray@ltx{% + \m@th\@ifnextchar[\@array{\expandafter\@array\expandafter[\array@default]}% +}% +\def\@tabarray@array{% + \@ifnextchar[{\@@array}{\@@array[c]}% +}% +\def\@tabarray@array@new{% + \@ifnextchar[{\@@array}{\expandafter\@@array\expandafter[\array@default]}% +}% +\newcount\intertabularlinepenalty +\intertabularlinepenalty=100 +\newcount\@tbpen +\appdef\samepage{\intertabularlinepenalty\@M}% +\def\@tabularcr@LaTeX{{\ifnum 0=`}\fi \@ifstar \@xtabularcr \@xtabularcr}% +\def\@tabularcr@ltx{{\ifnum 0=`}\fi \@ifstar {\global \@tbpen \@M \@xtabularcr }{\global \@tbpen \intertabularlinepenalty \@xtabularcr }}% +\def\@xtabularcr@LaTeX{\@ifnextchar [\@argtabularcr {\ifnum 0=`{\fi }\cr }}% +\def\@xtabularcr@ltx{\@ifnextchar [\@argtabularcr {\ifnum 0=`{\fi }\cr \noalign {\penalty \@tbpen }}}% +\def\@xargarraycr@LaTeX#1{\@tempdima #1\advance \@tempdima \dp \@arstrutbox \vrule \@height \z@ \@depth \@tempdima \@width \z@ \cr}% +\def\@xargarraycr@ltx#1{\@tempdima #1\advance \@tempdima \dp \@arstrutbox \vrule \@height \z@ \@depth \@tempdima \@width \z@ \cr \noalign {\penalty \@tbpen }}% +\def\@yargarraycr@LaTeX#1{\cr \noalign {\vskip #1}}% +\def\@yargarraycr@ltx#1{\cr \noalign {\penalty \@tbpen \vskip #1}}% +\def\@arraycr@array{% + \relax + \iffalse{\fi\ifnum 0=`}\fi + \@ifstar \@xarraycr \@xarraycr +}% +\def\@arraycr@new{% + \relax + \iffalse{\fi\ifnum 0=`}\fi + \@ifstar {\global \@tbpen \@M \@xarraycr }{\global \@tbpen \intertabularlinepenalty \@xarraycr }% +}% +\def\@xarraycr@array{% + \@ifnextchar [%] + \@argarraycr {\ifnum 0=`{}\fi\cr}% +}% +\def\@xarraycr@new{% + \@ifnextchar [%] + \@argarraycr {\ifnum 0=`{}\fi\cr \noalign {\penalty \@tbpen }}% +}% +\def\@xargarraycr@array#1{% + \unskip + \@tempdima #1\advance\@tempdima \dp\@arstrutbox + \vrule \@depth\@tempdima \@width\z@ + \cr +}% +\def\@xargarraycr@new#1{% + \unskip + \@tempdima #1\advance\@tempdima \dp\@arstrutbox + \vrule \@depth\@tempdima \@width\z@ + \cr + \noalign {\penalty \@tbpen }% +}% +\def\@yargarraycr@array#1{% + \cr + \noalign{\vskip #1}% +}% +\def\@yargarraycr@new#1{% + \cr + \noalign{\penalty \@tbpen \vskip #1}% +}% +\def\array@LaTeX{% + \let\@acol\@arrayacol + \let\@classz\@arrayclassz + \let\@classiv\@arrayclassiv + \let\\\@arraycr + \let\@halignto\@empty + \@tabarray +}% +\def\array@ltx{% + \@ifmmode{}{\@badmath$}% + \let\@acoll\@arrayacol + \let\@acolr\@arrayacol + \let\@acol\@arrayacol + \let\@classz\@arrayclassz + \let\@classiv\@arrayclassiv + \let\\\@arraycr + \let\@halignto\@empty + \@tabarray +}% +\def\array@array{% + \col@sep\arraycolsep + \def\d@llarbegin{$}\let\d@llarend\d@llarbegin\gdef\@halignto{}% + \@tabarray +} +\def\array@array@new{% + \@ifmmode{}{\@badmath$}% + \let\@acoll\@arrayacol + \let\@acolr\@arrayacol + \let\@acol\@arrayacol +\let\col@sep\@undefined + \def\d@llarbegin{$}% + \let\d@llarend\d@llarbegin + \gdef\@halignto{}% + \@tabarray +}% +\def\@array@LaTeX[#1]#2{% + \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi + \bgroup + \setbox\@arstrutbox\hbox{% + \vrule \@height\arraystretch\ht\strutbox + \@depth\arraystretch \dp\strutbox + \@width\z@}% + \@mkpream{#2}% + \edef\@preamble{% + \ialign \noexpand\@halignto + \bgroup \@arstrut \@preamble \tabskip\z@skip \cr}% + \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox + \let\tabularnewline\\% + \let\par\@empty + \let\@sharp##% + \set@typeset@protect + \lineskip\z@skip\baselineskip\z@skip + \ifhmode \@preamerr\z@ \@@par\fi + \@preamble +}% +\def\@array@ltx[#1]#2{% + \@nameuse{@array@align@#1}% + \set@arstrutbox + \@mkpream{#2}% + \prepdef\@preamble{% + \tabskip\tabmid@skip + \@arstrut + }% + \appdef\@preamble{% + \tabskip\tabright@skip + \cr + \array@row@pre + }% + \let\tabularnewline\\% + \let\par\@empty + \let\@sharp##% + \set@typeset@protect + \lineskip\z@skip\baselineskip\z@skip + \tabskip\tableft@skip\relax + \ifhmode \@preamerr\z@ \@@par\fi + \everycr{}% + \expandafter\halign\expandafter\@halignto\expandafter\bgroup\@preamble +}% +\def\set@arstrutbox{% + \setbox\@arstrutbox\hbox{% + \vrule \@height\arraystretch\ht\strutbox + \@depth\arraystretch \dp\strutbox + \@width\z@ + }% +}% +\def\@array@array[#1]#2{% + \@tempdima \ht \strutbox + \advance \@tempdima by\extrarowheight + \setbox \@arstrutbox \hbox{\vrule + \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \strutbox + \@width \z@}% + \begingroup + \@mkpream{#2}% + \xdef\@preamble{\noexpand \ialign \@halignto + \bgroup \@arstrut \@preamble + \tabskip \z@ \cr}% + \endgroup + \@arrayleft + \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi + \bgroup + \let \@sharp ##\let \protect \relax + \lineskip \z@ + \baselineskip \z@ + \m@th + \let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble +}% +\def\@array@array@new[#1]#2{% + \@tempdima\ht\strutbox + \advance\@tempdima by\extrarowheight + \setbox\@arstrutbox\hbox{% + \vrule \@height\arraystretch\@tempdima + \@depth \arraystretch\dp\strutbox + \@width \z@ + }% + \begingroup + \@mkpream{#2}% + \xdef\@preamble{\@preamble}% + \endgroup + \prepdef\@preamble{% + \tabskip\tabmid@skip + \@arstrut + }% + \appdef\@preamble{% + \tabskip\tabright@skip + \cr + \array@row@pre + }% + \@arrayleft + \@nameuse{@array@align@#1}% + \m@th + \let\\\@arraycr + \let\tabularnewline\\% + \let\par\@empty + \let\@sharp##% + \set@typeset@protect + \lineskip\z@\baselineskip\z@ + \tabskip\tableft@skip + \everycr{}% + \expandafter\halign\expandafter\@halignto\expandafter\bgroup\@preamble +}% +\def\endarray@LaTeX{% + \crcr\egroup\egroup +}% +\def\endarray@ltx{% + \crcr\array@row@pst\egroup\egroup +}% +\def\endarray@array{% + \crcr \egroup \egroup \@arrayright \gdef\@preamble{}% +}% +\def\endarray@array@new{% + \crcr\array@row@pst\egroup\egroup % Same as \endarray@ltx + \@arrayright + \global\let\@preamble\@empty +}% +\def\endtabular@LaTeX{% + \crcr\egroup\egroup $\egroup +}% +\def\endtabular@ltx{% + \endarray +}% +\def\endtabular@array{% + \endarray $\egroup +}% +\def\endtabular@array@new{% + \endarray +}% +\@namedef{endtabular*}{\endtabular}% +\long\def\multicolumn@LaTeX#1#2#3{% + \multispan{#1}\begingroup + \@mkpream{#2}% + \def\@sharp{#3}\set@typeset@protect + \let\@startpbox\@@startpbox\let\@endpbox\@@endpbox + \@arstrut \@preamble\hbox{}\endgroup\ignorespaces +}% +\long\def\multicolumn@ltx#1#2#3{% + \multispan{#1}% + \begingroup + \@mkpream{#2}% + \def\@sharp{#3}% + \set@typeset@protect + %\let\@startpbox\@@startpbox\let\@endpbox\@@endpbox + \@arstrut + \@preamble + \hbox{}% + \endgroup + \ignorespaces +}% +\def\@array@align@t{\leavevmode\vtop\bgroup}% +\def\@array@align@b{\leavevmode\vbox\bgroup}% +\def\@array@align@c{\leavevmode\@ifmmode{\vcenter\bgroup}{$\vcenter\bgroup\aftergroup$\aftergroup\relax}}% +\def\@array@align@v{% + \@ifmmode{% + \@badmath + \vcenter\bgroup + }{% + \@ifinner{% + $\vcenter\bgroup\aftergroup$ + }{% + \@@par\bgroup + }% + }% +}% +\def\array@default{c}% +\def\array@row@rst{% + \let\@array@align@v\@array@align@c +}% +\def\array@row@pre{}% +\def\array@row@pst{}% +\newcommand\toprule{\tab@rule{\column@font}{\column@fil}{\frstrut}}% +\newcommand\colrule{\unskip\lrstrut\\\tab@rule{\body@font}{}{\frstrut}}% +\newcommand\botrule{\unskip\lrstrut\\\noalign{\hline@rule}{}}% +\def\hline@LaTeX{% + \noalign{\ifnum0=`}\fi\hrule \@height \arrayrulewidth \futurelet + \reserved@a\@xhline +}% +\def\hline@ltx{% + \noalign{% + \ifnum0=`}\fi + \hline@rule + \futurelet\reserved@a\@xhline + % \noalign ended in \@xhline +}% +\def\@xhline@unneeded{% + \say\reserved@a + \ifx\reserved@a\hline + \vskip\doublerulesep + \vskip-\arrayrulewidth + \fi + \ifnum0=`{\fi}% +}% +\def\tab@rule#1#2#3{% + \crcr + \noalign{% + \hline@rule + \gdef\@arstrut@hook{% + \global\let\@arstrut@hook\@empty + #3% + }% + \gdef\cell@font{#1}% + \gdef\cell@fil{#2}% + }% +}% +\def\column@font{}% +\def\column@fil{}% +\def\body@font{}% +\def\cell@font{}% +\def\frstrut{}% +\def\lrstrut{}% +\def\@arstrut@hline{% + \relax + \@ifmmode{\copy}{\unhcopy}\@arstrutbox@hline + \@arstrut@hook +}% +\let\@arstrut@org\@arstrut +\def\@arstrut@hook{% + \global\let\@arstrut\@arstrut@org +}% +\newbox\@arstrutbox@hline +\appdef\set@arstrutbox{% + \setbox\@arstrutbox@hline\hbox{% + \setbox\z@\hbox{$0^{0}_{}$}% + \dimen@\ht\z@\advance\dimen@\@arstrut@hline@clnc + \@ifdim{\dimen@<\arraystretch\ht\strutbox}{\dimen@=\arraystretch\ht\strutbox}{}% + \vrule \@height\dimen@ + \@depth\arraystretch \dp\strutbox + \@width\z@ + }% +}% +\def\hline@rule{% + \hrule \@height \arrayrulewidth + \global\let\@arstrut\@arstrut@hline +}% +\def\@arstrut@hline@clnc{2\p@}% % Klootch: magic number +\def\tableft@skip{\z@skip}% +\def\tabmid@skip{\z@skip}%\@flushglue +\def\tabright@skip{\z@skip}% +\def\tableftsep{\tabcolsep}% +\def\tabmidsep{\tabcolsep}% +\def\tabrightsep{\tabcolsep}% +\def\cell@fil{}% +\def\pbox@hook{}% +\appdef\@arstrut{\@arstrut@hook}% +\let\@arstrut@hook\@empty +\def\@addtopreamble{\appdef\@preamble}% +\def\@mkpream@LaTeX#1{% + \@firstamptrue\@lastchclass6 + \let\@preamble\@empty + \let\protect\@unexpandable@protect + \let\@sharp\relax + \let\@startpbox\relax\let\@endpbox\relax + \@expast{#1}% + \expandafter\@tfor \expandafter + \@nextchar \expandafter:\expandafter=\reserved@a\do + {\@testpach\@nextchar + \ifcase \@chclass \@classz \or \@classi \or \@classii \or \@classiii + \or \@classiv \or\@classv \fi\@lastchclass\@chclass}% + \ifcase \@lastchclass \@acol + \or \or \@preamerr \@ne\or \@preamerr \tw@\or \or \@acol \fi +}% +\def\@mkpream@ltx#1{% + \@firstamptrue + \@lastchclass6 + \let\@preamble\@empty + \let\protect\@unexpandable@protect + \let\@sharp\relax + \@expast{#1}% + \expandafter\@tfor\expandafter\@nextchar\expandafter:\expandafter=\reserved@a + \do{% + \expandafter\@testpach\expandafter{\@nextchar}% + \ifcase\@chclass + \@classz + \or + \@classi + \or + \@classii + \or + \@classiii + \or + \@classiv + \or + \@classv + \fi + \@lastchclass\@chclass + }% + \ifcase\@lastchclass + \@acolr % right-hand column + \or + \or + \@preamerr\@ne + \or + \@preamerr\tw@ + \or + \or + \@acolr % right-hand column + \fi +}% +\def\insert@column@array{% + \the@toks \the \@tempcnta + \ignorespaces \@sharp \unskip + \the@toks \the \count@ \relax +}% +\def\insert@column@array@new{% + \the@toks\the\@tempcnta + \array@row@rst\cell@font + \ignorespaces\@sharp\unskip + \the@toks\the\count@ + \relax +}% +\def\@mkpream@relax{% + \let\tableftsep\relax + \let\tabmidsep\relax + \let\tabrightsep\relax + \let\array@row@rst\relax + \let\cell@font\relax + \let\@startpbox\relax +}% +\def\@mkpream@array#1{% + \gdef\@preamble{}\@lastchclass 4 \@firstamptrue + \let\@sharp\relax \let\@startpbox\relax \let\@endpbox\relax + \@temptokena{#1}\@tempswatrue + \@whilesw\if@tempswa\fi{\@tempswafalse\the\NC@list}% + \count@\m@ne + \let\the@toks\relax + \prepnext@tok + \expandafter \@tfor \expandafter \@nextchar + \expandafter :\expandafter =\the\@temptokena \do + {\@testpach + \ifcase \@chclass \@classz \or \@classi \or \@classii + \or \save@decl \or \or \@classv \or \@classvi + \or \@classvii \or \@classviii + \or \@classx + \or \@classx \fi + \@lastchclass\@chclass}% + \ifcase\@lastchclass + \@acol \or + \or + \@acol \or + \@preamerr \thr@@ \or + \@preamerr \tw@ \@addtopreamble\@sharp \or + \or + \else \@preamerr \@ne \fi + \def\the@toks{\the\toks}% +}% +\def\@mkpream@array@new#1{% + \gdef\@preamble{}% + \@lastchclass\f@ur + \@firstamptrue + \let\@sharp\relax + \@mkpream@relax + \@temptokena{#1}\@tempswatrue + \@whilesw\if@tempswa\fi{\@tempswafalse\the\NC@list}% + \count@\m@ne + \let\the@toks\relax + \prepnext@tok + \expandafter\@tfor\expandafter\@nextchar\expandafter:\expandafter=\the\@temptokena + \do{% + \@testpach + \ifcase\@chclass + \@classz + \or + \@classi + \or + \@classii + \or + \save@decl + \or + \or + \@classv + \or + \@classvi + \or + \@classvii + \or + \@classviii + \or + \@classx + \or + \@classx + \fi + \@lastchclass\@chclass + }% + \ifcase\@lastchclass + \@acolr % right-hand column + \or + \or + \@acolr % right-hand column + \or + \@preamerr\thr@@ + \or + \@preamerr\tw@\@addtopreamble\@sharp + \or + \or + \else + \@preamerr\@ne + \fi + \def\the@toks{\the\toks}% +}% +\def\@addamp@LaTeX{% + \if@firstamp\@firstampfalse\else\edef\@preamble{\@preamble &}\fi +}% +\def\@addamp@ltx{% + \if@firstamp\@firstampfalse\else\@addtopreamble{&}\fi +}% +\def\@arrayacol@LaTeX{% + \edef\@preamble{\@preamble \hskip \arraycolsep}% +}% +\def\@arrayacol@ltx{% + \@addtopreamble{\hskip\arraycolsep}% +}% +\def\@tabacoll{% + \@addtopreamble{\hskip\tableftsep\relax}% +}% +\def\@tabacol@LaTeX{% + \edef\@preamble{\@preamble \hskip \tabcolsep}% +}% +\def\@tabacol@ltx{% + \@addtopreamble{\hskip\tabmidsep\relax}% +}% +\def\@tabacolr{% + \@addtopreamble{\hskip\tabrightsep\relax}% +}% +\def\@arrayclassz@LaTeX{% + \ifcase \@lastchclass \@acolampacol \or \@ampacol \or + \or \or \@addamp \or + \@acolampacol \or \@firstampfalse \@acol \fi + \edef\@preamble{\@preamble + \ifcase \@chnum + \hfil$\relax\@sharp$\hfil \or $\relax\@sharp$\hfil + \or \hfil$\relax\@sharp$\fi}% +}% +\def\@arrayclassz@ltx{% + \ifcase\@lastchclass + \@acolampacol + \or + \@ampacol + \or + \or + \or + \@addamp + \or + \@acolampacol + \or + \@firstampfalse\@acoll + \fi + \ifcase\@chnum + \@addtopreamble{% + \hfil\array@row@rst$\relax\@sharp$\hfil + }% + \or + \@addtopreamble{% + \array@row@rst$\relax\@sharp$\hfil + }% + \or + \@addtopreamble{% + \hfil\array@row@rst$\relax\@sharp$% + }% + \fi +}% +\def\@tabclassz@LaTeX{% + \ifcase\@lastchclass + \@acolampacol + \or + \@ampacol + \or + \or + \or + \@addamp + \or + \@acolampacol + \or + \@firstampfalse\@acol + \fi + \edef\@preamble{% + \@preamble{% + \ifcase\@chnum + \hfil\ignorespaces\@sharp\unskip\hfil + \or + \hskip1sp\ignorespaces\@sharp\unskip\hfil + \or + \hfil\hskip1sp\ignorespaces\@sharp\unskip + \fi}}% +}% +\def\@tabclassz@ltx{% + \ifcase\@lastchclass + \@acolampacol + \or + \@ampacol + \or + \or + \or + \@addamp + \or + \@acolampacol + \or + \@firstampfalse\@acoll + \fi + \ifcase\@chnum + \@addtopreamble{% + {\hfil\array@row@rst\cell@font\ignorespaces\@sharp\unskip\hfil}% + }% + \or + \@addtopreamble{% + {\cell@fil\hskip1sp\array@row@rst\cell@font\ignorespaces\@sharp\unskip\hfil}% + }% + \or + \@addtopreamble{% + {\hfil\hskip1sp\array@row@rst\cell@font\ignorespaces\@sharp\unskip\cell@fil}% + }% + \fi +}% +\def\@tabclassiv@LaTeX{% + \@addtopreamble\@nextchar +}% +\def\@tabclassiv@ltx{% + \expandafter\@addtopreamble\expandafter{\@nextchar}% +}% +\def\@arrayclassiv@LaTeX{% + \@addtopreamble{$\@nextchar$}% +}% +\def\@arrayclassiv@ltx{% + \expandafter\@addtopreamble\expandafter{\expandafter$\@nextchar$}% +}% +\def\@classv@LaTeX{% + \@addtopreamble{\@startpbox{\@nextchar}\ignorespaces + \@sharp\@endpbox}% +}% +\def\@classv@ltx{% + \expandafter\@addtopreamble + \expandafter{% + \expandafter \@startpbox + \expandafter {\@nextchar}% + \pbox@hook\array@row@rst\cell@font\ignorespaces\@sharp\@endpbox + }% +}% +\def\@classx@array{% + \ifcase \@lastchclass + \@acolampacol \or + \@addamp \@acol \or + \@acolampacol \or + \or + \@acol \@firstampfalse \or + \@addamp + \fi +}% +\def\@classx@array@new{% + \ifcase \@lastchclass + \@acolampacol + \or + \@addamp \@acol + \or + \@acolampacol + \or + \or + \@firstampfalse\@acoll + \or + \@addamp + \fi +}% +\def\@xbitor@LaTeX #1{\@tempcntb \count#1 + \ifnum \@tempcnta =\z@ + \else + \divide\@tempcntb\@tempcnta + \ifodd\@tempcntb \@testtrue\fi + \fi}% +\def\@xbitor@ltx#1{% + \@tempcntb\count#1% + \@ifnum{\@tempcnta=\z@}{}{% + \divide\@tempcntb\@tempcnta + \@ifodd\@tempcntb{\@testtrue}{}% + }% +}% +\@ifx{\@xbitor\@xbitor@LaTeX}{% + \class@info{Repairing broken LaTeX \string\@xbitor}% +}{% + \class@info{Unrecognized LaTeX \string\@xbitor. Please update this document class! (Proceeding with fingers crossed.)}% +}% +\let\@xbitor\@xbitor@ltx +\newcommand*\@gobble@opt@one[2][]{}% +\def\@starttoc#1{% + \begingroup + \toc@pre + \makeatletter + \@input{\jobname.#1}% + \if@filesw + \expandafter\newwrite\csname tf@#1\endcsname + \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax + \fi + \@nobreakfalse + \toc@post + \endgroup +}% +\def\toc@pre{}% +\def\toc@post{}% +\def\toc@@font{}%{\footnotesize\rmfamily}% +\def\@dotsep{\z@}%{5.5pt}% +\let\tocdim@section \leftmargini +\let\tocdim@subsection \leftmarginii +\let\tocdim@subsubsection \leftmarginiii +\let\tocdim@paragraph \leftmarginiv +\let\tocdim@appendix \leftmarginv +\let\tocdim@pagenum \leftmarginvi +\def\toc@pre@auto{% + \toc@@font + \@tempdima\z@ + \toc@setindent\@tempdima{section}% + \toc@setindent\@tempdima{subsection}% + \toc@setindent\@tempdima{subsubsection}% + \toc@setindent\@tempdima{paragraph}% + \toc@letdimen{appendix}% + \toc@letdimen{pagenum}% +}% +\def\toc@post@auto{% + \if@filesw + \begingroup + \toc@writedimen{section}% + \toc@writedimen{subsection}% + \toc@writedimen{subsubsection}% + \toc@writedimen{paragraph}% + \toc@writedimen{appendix}% + \toc@writedimen{pagenum}% + \endgroup + \fi +}% +\def\toc@setindent#1#2{% + \csname tocdim@#2\endcsname\tocdim@min\relax + \@ifundefined{tocmax@#2}{\@namedef{tocmax@#2}{\z@}}{}% + \advance#1\@nameuse{tocmax@#2}\relax + \expandafter\edef\csname tocleft@#2\endcsname{\the#1}% +}% +\def\toc@letdimen#1{% + \csname tocdim@#1\endcsname\tocdim@min\relax + \@ifundefined{tocmax@#1}{\@namedef{tocmax@#1}{\z@}}{}% + \expandafter\let\csname tocleft@#1\expandafter\endcsname\csname tocmax@#1\endcsname +}% +\def\toc@writedimen#1{% + \immediate\write\@auxout{% + \gdef\expandafter\string\csname tocmax@#1\endcsname{% + \expandafter\the\csname tocdim@#1\endcsname + }% + }% +}% +\def\l@@sections#1#2#3#4{% + % #1 - superior section + % #2 - this section + % #3 - content, including possible \numberline + % #4 - page number + \begingroup + \everypar{}% + \set@tocdim@pagenum{#4}% + \global\@tempdima\csname tocdim@#2\endcsname + \leftskip\csname tocleft@#2\endcsname\relax + \dimen@\csname tocleft@#1\endcsname\relax + \parindent-\leftskip\advance\parindent\dimen@ + \rightskip\tocleft@pagenum plus 1fil\relax + \skip@\parfillskip\parfillskip\z@ + \let\numberline\numberline@@sections + \@nameuse{l@f@#2}% + \ignorespaces#3\unskip\nobreak\hskip\skip@ + \hb@xt@\rightskip{\hfil\unhbox\@tempboxa}\hskip-\rightskip\hskip\z@skip + \par + \expandafter\aftergroup\csname tocdim@#2\endcsname\expandafter + \endgroup\the\@tempdima\relax +}% +\def\set@tocdim@pagenum#1{% + \setbox\@tempboxa\hbox{\ignorespaces#1}% + \@ifdim{\tocdim@pagenum<\wd\z@}{\global\tocdim@pagenum\wd\z@}{}% +}% +\def\numberline@@sections#1{% + \leavevmode\hb@xt@-\parindent{% + \hfil + \@if@empty{#1}{}{% + \setbox\z@\hbox{#1.\kern\@dotsep}% + \@ifdim{\@tempdima<\wd\z@}{\global\@tempdima\wd\z@}{}% + \unhbox\z@ + }% + }% + \ignorespaces +}% +\def\tocdim@min{\z@}% +\def\list#1#2{% + \ifnum \@listdepth >5\relax + \@toodeep + \else + \global\advance\@listdepth\@ne + \fi + \rightmargin\z@ + \listparindent\z@ + \itemindent\z@ + \csname @list\romannumeral\the\@listdepth\endcsname + \def\@itemlabel{#1}% + \let\makelabel\@mklab + \@nmbrlistfalse + #2\relax + \@trivlist + \parskip\parsep + \set@listindent + \ignorespaces +}% +\def\set@listindent@parshape{% + \parindent\listparindent + \advance\@totalleftmargin\leftmargin + \advance\linewidth-\rightmargin + \advance\linewidth-\leftmargin + \parshape\@ne\@totalleftmargin\linewidth +}% +\def\set@listindent@{% + \parindent\listparindent + \advance\@totalleftmargin\leftmargin + \advance\rightskip\rightmargin + \advance\leftskip\@totalleftmargin +}% +\let\set@listindent\set@listindent@parshape +\endinput +%% +%% End of file `ltxutil.sty'. diff -r 7c27e8d9231d -r 852015a7eead project/static/proceedings/sources/mk_booklet.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project/static/proceedings/sources/mk_booklet.tex Tue Jul 13 01:43:25 2010 +0530 @@ -0,0 +1,12 @@ +% File to make the booklet with the right margins + +\documentclass[letter]{article} +\usepackage{pdfpages} +\usepackage[letterpaper, top=.4in, bottom=.4in]{geometry} + +\begin{document} +\pagestyle{empty} +\includepdf[pages=-, noautoscale, scale=.9]{booklet_0.pdf} + +\end{document} + diff -r 7c27e8d9231d -r 852015a7eead project/static/proceedings/sources/scipy2009confs.pdf Binary file project/static/proceedings/sources/scipy2009confs.pdf has changed diff -r 7c27e8d9231d -r 852015a7eead project/templates/proceedings/show_paper_preview.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project/templates/proceedings/show_paper_preview.html Tue Jul 13 01:43:25 2010 +0530 @@ -0,0 +1,9 @@ +{% extends "base.html" %} +{% block title %}Preview of the paper{% endblock %} + +{% block content %} +

Preview of the paper

+ + + +{% endblock content %} diff -r 7c27e8d9231d -r 852015a7eead project/templates/proceedings/submit.html diff -r 7c27e8d9231d -r 852015a7eead project/urls.py