├── .gitignore ├── publisher ├── mail │ ├── mail_authors_example.txt │ ├── mail_authors.py │ ├── templates │ │ ├── author-revision.txt.tmpl │ │ └── reviewer-invite.txt.tmpl │ ├── email.json │ ├── mail_reviewers.py │ └── _mailer.py ├── _static │ ├── status.sty │ ├── google_analytics.js │ ├── scipy-proc.css │ ├── proc_links.js │ ├── scipy.sty │ ├── institutions.json │ ├── common.css │ └── screen.css ├── _templates │ ├── proceedings.bib.tmpl │ ├── students.html.tmpl │ ├── organization.html.tmpl │ ├── article.bib.tmpl │ ├── students.tex.tmpl │ ├── organization.tex.tmpl │ ├── toc.tex.tmpl │ ├── copyright.tex.tmpl │ ├── title.tex.tmpl │ ├── index.html.tmpl │ ├── proceedings.tex.tmpl │ ├── article.html.tmpl │ ├── header.html.tmpl │ └── cover.svg ├── writer │ ├── sphinx_highlight.py │ ├── code_block.py │ ├── rstmath.py │ └── __init__.py ├── tempita │ ├── compat3.py │ ├── _looper.py │ └── __init__.py ├── options.py ├── conf.py ├── Makefile ├── build_html.py ├── build_papers.py ├── build_template.py └── build_paper.py ├── papers └── 00_vanderwalt │ ├── figure1.png │ └── 00_vanderwalt.rst ├── make_paper.sh ├── reviews ├── README ├── submission-template.rst ├── invite-abstract-reviews.rst ├── invite-paper-reviews.rst └── review-template.rst ├── README.txt ├── LICENSE.txt └── scipy_proc.json /.gitignore: -------------------------------------------------------------------------------- 1 | output 2 | _build 3 | *.pyc 4 | *~ 5 | -------------------------------------------------------------------------------- /publisher/mail/mail_authors_example.txt: -------------------------------------------------------------------------------- 1 | ./mail_authors.py --template author-revision.txt 2 | -------------------------------------------------------------------------------- /publisher/_static/status.sty: -------------------------------------------------------------------------------- 1 | % DRAFT ?? 2 | \usepackage{draftwatermark} 3 | \SetWatermarkLightness{0.9} 4 | -------------------------------------------------------------------------------- /papers/00_vanderwalt/figure1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrjohansson/scipy_proceedings/master/papers/00_vanderwalt/figure1.png -------------------------------------------------------------------------------- /publisher/_templates/proceedings.bib.tmpl: -------------------------------------------------------------------------------- 1 | @Proceedings{ {{proceedings['citation_key']}}, 2 | title = { {{proceedings['title']['full']}} }, 3 | booktitle = { {{proceedings['title']['full']}} }, 4 | year = { {{proceedings['year']}} }, 5 | editor = { {{' and '.join(proceedings['editor'])}} }, 6 | isbn = { {{proceedings['isbn']}} } 7 | } 8 | -------------------------------------------------------------------------------- /publisher/mail/mail_authors.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import _mailer as mailer 4 | 5 | args = mailer.parse_args() 6 | config = mailer.load_config('email.json') 7 | 8 | for author in config['authors']: 9 | to = mailer.email_addr_from(author) 10 | mailer.send_template(config['sender'], to, args.template, config) 11 | 12 | print "Mail for %d authors." % len(config['authors']) 13 | -------------------------------------------------------------------------------- /make_paper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DIR=$1 4 | 5 | if [[ ! -d $DIR ]]; then 6 | echo "Usage: make_paper.sh source_dir" 7 | exit -1 8 | fi 9 | 10 | python publisher/build_paper.py $DIR 11 | if [ "$?" -ne "0" ]; then 12 | echo "Error building paper $DIR. Aborting." 13 | exit 1 14 | fi 15 | 16 | #cd $OUTDIR 17 | #$TEX2PDF > /dev/null && $TEX2PDF | (python $WD/publisher/page_count.py) 18 | -------------------------------------------------------------------------------- /publisher/_templates/students.html.tmpl: -------------------------------------------------------------------------------- 1 |

Sponsored Students

2 | 3 |
4 | 5 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /publisher/_templates/organization.html.tmpl: -------------------------------------------------------------------------------- 1 |

Organization

2 | 3 |
4 | 5 | {{for committee in organization}} 6 | 7 |

{{html_quote(committee['name']) | html}}

8 | 9 | 15 | 16 | {{endfor}} 17 | 18 |
19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /publisher/_static/google_analytics.js: -------------------------------------------------------------------------------- 1 | var _gaq = _gaq || []; 2 | _gaq.push(['_setAccount', 'UA-30141106-1']); 3 | _gaq.push(['_trackPageview']); 4 | 5 | (function() { 6 | var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 7 | ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 8 | var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 9 | })(); 10 | -------------------------------------------------------------------------------- /publisher/_static/scipy-proc.css: -------------------------------------------------------------------------------- 1 | @import "common.css"; 2 | @import "screen.css"; 3 | 4 | body { 5 | font-family: Verdana, sans-serif; 6 | } 7 | 8 | #content { 9 | width: 40em; 10 | padding: 0.5em 1em 0.5em 1em; 11 | } 12 | 13 | .title { 14 | float: left; 15 | } 16 | 17 | .pagenr { 18 | float: right; 19 | } 20 | 21 | .authors { 22 | font-style: italic; 23 | padding-left: 1em; 24 | } 25 | 26 | .abstract { 27 | width: 80ex; 28 | text-align: justify 29 | padding-left: 1em; 30 | } 31 | -------------------------------------------------------------------------------- /publisher/_static/proc_links.js: -------------------------------------------------------------------------------- 1 | function proc_versions() { 2 | var versions = ['2011', '2010', '2009', '2008']; 3 | var proc_url = 'http://conference.scipy.org/proceedings/scipy'; 4 | document.write(''); 13 | } 14 | -------------------------------------------------------------------------------- /publisher/_templates/article.bib.tmpl: -------------------------------------------------------------------------------- 1 | @InProceedings{ {{'-'.join([article['paper_id'], 2 | proceedings['citation_key']])}}, 3 | author = { {{' and '.join(article['author'])}} }, 4 | title = { {{article['title']}} }, 5 | booktitle = { {{proceedings['title']['full']}} }, 6 | pages = { {{' - '.join([str(article['page']['start']), str(article['page']['stop'])])}} }, 7 | year = { {{proceedings['year']}} }, 8 | editor = { {{' and '.join(proceedings['editor'])}} } 9 | } 10 | -------------------------------------------------------------------------------- /publisher/_templates/students.tex.tmpl: -------------------------------------------------------------------------------- 1 | \documentclass[letterpaper,compsoc,onecolumn,twoside,english]{IEEEtran} 2 | \thispagestyle{empty} 3 | \pagestyle{empty} 4 | \usepackage[utf8]{inputenc} 5 | \usepackage{../../_static/status} 6 | 7 | \begin{document} 8 | 9 | \section*{Sponsored Students} 10 | \vspace{4mm} 11 | 12 | \begin{itemize} 13 | 14 | {{for student in sponsored_students}} 15 | \item[] \normalsize\textsc{% 16 | {{student['name']}}}, \small{% 17 | {{student['org']}}, {{student['location']}}} 18 | {{endfor}} 19 | 20 | \end{itemize} 21 | 22 | \end{document} 23 | -------------------------------------------------------------------------------- /publisher/writer/sphinx_highlight.py: -------------------------------------------------------------------------------- 1 | from pygments.style import Style 2 | from pygments.styles.friendly import FriendlyStyle 3 | from pygments.token import Generic, Comment, Number 4 | 5 | class SphinxStyle(Style): 6 | """ 7 | Like friendly, but a bit darker to enhance contrast on the green 8 | background. 9 | """ 10 | 11 | background_color = '#eeffcc' 12 | default_style = '' 13 | 14 | styles = FriendlyStyle.styles 15 | styles.update({ 16 | Generic.Output: '#333', 17 | Comment: 'italic #408090', 18 | Number: '#208050', 19 | }) 20 | -------------------------------------------------------------------------------- /reviews/README: -------------------------------------------------------------------------------- 1 | README 2 | ====== 3 | 4 | For each SciPy review and update the substitutions in the two templates 5 | for inviting reviewers to review the abstracts and papers:: 6 | 7 | invite-abstract-reviews.rst 8 | invite-paper-reviews.rst 9 | 10 | Generate the invite to review the abstracts:: 11 | 12 | rst2html.py invite-abstract-reviews.rst > invite-abstract-reviews.rst 13 | 14 | Generate the invite to review the papers as well as the review template:: 15 | 16 | rst2html.py invite-paper-reviews.rst > invite-paper-reviews.rst 17 | rst2html.py review-template.rst > review-template.html 18 | -------------------------------------------------------------------------------- /publisher/_templates/organization.tex.tmpl: -------------------------------------------------------------------------------- 1 | \documentclass[letterpaper,compsoc,onecolumn,twoside,english]{IEEEtran} 2 | \thispagestyle{empty} 3 | \pagestyle{empty} 4 | \usepackage[utf8]{inputenc} 5 | \usepackage{../../_static/status} 6 | 7 | \begin{document} 8 | 9 | \section*{Organization} 10 | \vspace{4mm} 11 | 12 | {{for committee in organization}} 13 | 14 | \subsection*{ {{committee['name']}} } 15 | 16 | \begin{itemize} 17 | 18 | {{for member in committee['members'] }} 19 | \item[] \normalsize\textsc{% 20 | {{member['name']}}},\small{ {{member['org']}}} 21 | {{endfor}} 22 | 23 | \end{itemize} 24 | 25 | {{endfor}} 26 | 27 | \end{document} 28 | -------------------------------------------------------------------------------- /publisher/_templates/toc.tex.tmpl: -------------------------------------------------------------------------------- 1 | \documentclass[letterpaper,compsoc,onecolumn,twoside,english]{IEEEtran} 2 | \usepackage[utf8]{inputenc} 3 | \setlength{\parindent}{0mm} 4 | \thispagestyle{empty} 5 | \pagestyle{empty} 6 | 7 | 8 | \begin{document} 9 | 10 | \section*{Contents} 11 | \vspace{4mm} 12 | 13 | {{for line in toc}} 14 | 15 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 16 | \textsf{% 17 | {{line['title']}}% 18 | \hfill% 19 | \textbf{ {{line['page']['start']}} }% 20 | \\% 21 | \small\textit{% 22 | \parbox{0.9\textwidth}{ 23 | {{line['authors']}} }% 24 | }% 25 | }% 26 | \\ 27 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 28 | 29 | {{endfor}} 30 | 31 | \end{document} 32 | -------------------------------------------------------------------------------- /publisher/writer/code_block.py: -------------------------------------------------------------------------------- 1 | # --- Code-block directive from Sphinx --- 2 | 3 | from docutils import nodes 4 | from docutils.parsers.rst import Directive, directives 5 | 6 | class CodeBlock(Directive): 7 | """ 8 | Directive for a code block with special highlighting or line numbering 9 | settings. 10 | """ 11 | 12 | has_content = True 13 | required_arguments = 1 14 | optional_arguments = 0 15 | final_argument_whitespace = False 16 | option_spec = { 17 | 'linenos': directives.flag, 18 | 'linenostart': directives.nonnegative_int, 19 | } 20 | 21 | def run(self): 22 | code = u'\n'.join(self.content) 23 | literal = nodes.literal_block(code, code) 24 | literal['language'] = self.arguments[0] 25 | literal['linenos'] = 'linenos' in self.options 26 | literal['linenostart'] = self.options.get('linenostart', 1) 27 | return [literal] 28 | 29 | directives.register_directive('code-block', CodeBlock) 30 | 31 | # --- End code-block directive from Sphinx --- 32 | -------------------------------------------------------------------------------- /publisher/tempita/compat3.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | __all__ = ['b', 'basestring_', 'bytes', 'next', 'is_unicode'] 4 | 5 | if sys.version < "3": 6 | b = bytes = str 7 | basestring_ = basestring 8 | else: 9 | 10 | def b(s): 11 | if isinstance(s, str): 12 | return s.encode('latin1') 13 | return bytes(s) 14 | basestring_ = (bytes, str) 15 | bytes = bytes 16 | text = str 17 | 18 | if sys.version < "3": 19 | 20 | def next(obj): 21 | return obj.next() 22 | else: 23 | next = next 24 | 25 | if sys.version < "3": 26 | 27 | def is_unicode(obj): 28 | return isinstance(obj, unicode) 29 | else: 30 | 31 | def is_unicode(obj): 32 | return isinstance(obj, str) 33 | 34 | 35 | def coerce_text(v): 36 | if not isinstance(v, basestring_): 37 | if sys.version < "3": 38 | attr = '__unicode__' 39 | else: 40 | attr = '__str__' 41 | if hasattr(v, attr): 42 | return unicode(v) 43 | else: 44 | return bytes(v) 45 | return v 46 | -------------------------------------------------------------------------------- /publisher/options.py: -------------------------------------------------------------------------------- 1 | """ 2 | Configuration utilities. 3 | """ 4 | 5 | __all__ = ['options'] 6 | 7 | import os.path 8 | import json 9 | import codecs 10 | 11 | import conf 12 | toc_conf = conf.toc_conf 13 | proc_conf = conf.proc_conf 14 | inst_conf = conf.inst_conf 15 | 16 | def get_config(): 17 | config = cfg2dict(proc_conf) 18 | config.update(cfg2dict(toc_conf)) 19 | return config 20 | 21 | def cfg2dict(filename): 22 | """Return the content of a JSON config file as a dictionary. 23 | 24 | """ 25 | if not os.path.exists(filename): 26 | print '*** Warning: %s does not exist.' % filename 27 | return {} 28 | 29 | return json.loads(codecs.open(filename, 'r', 'utf-8').read()) 30 | 31 | def dict2cfg(d, filename): 32 | """Write dictionary out to config file. 33 | 34 | """ 35 | json.dump(d, codecs.open(filename, 'w', 'utf-8'), ensure_ascii=False) 36 | 37 | def mkdir_p(dir): 38 | if os.path.isdir(dir): 39 | return 40 | os.makedirs(dir) 41 | 42 | options = cfg2dict(proc_conf) 43 | inst_table = cfg2dict(inst_conf) 44 | -------------------------------------------------------------------------------- /publisher/conf.py: -------------------------------------------------------------------------------- 1 | import glob 2 | import os 3 | 4 | work_dir = os.path.dirname(__file__) 5 | papers_dir = os.path.join(work_dir,'../papers') 6 | output_dir = os.path.join(work_dir,'../output') 7 | template_dir = os.path.join(work_dir,'_templates') 8 | static_dir = os.path.join(work_dir,'_static') 9 | css_file = os.path.join(static_dir,'scipy-proc.css') 10 | toc_list = os.path.join(static_dir,'toc.txt') 11 | inst_conf = os.path.join(static_dir,'institutions.json') 12 | build_dir = os.path.join(work_dir,'_build') 13 | pdf_dir = os.path.join(build_dir, 'pdfs') 14 | html_dir = os.path.join(build_dir, 'html') 15 | bib_dir = os.path.join(html_dir, 'bib') 16 | toc_conf = os.path.join(build_dir, 'toc.json') 17 | proc_conf = os.path.join(work_dir,'../scipy_proc.json') 18 | 19 | if os.path.isfile(toc_list): 20 | with open(toc_list) as f: 21 | dirs = f.read().splitlines() 22 | else: 23 | dirs = sorted([os.path.basename(d) 24 | for d in glob.glob('%s/*' % papers_dir) 25 | if os.path.isdir(d)]) 26 | -------------------------------------------------------------------------------- /publisher/_templates/copyright.tex.tmpl: -------------------------------------------------------------------------------- 1 | \documentclass[letterpaper,compsoc,onecolumn,twoside]{IEEEtran} 2 | \thispagestyle{empty} 3 | \pagestyle{empty} 4 | \usepackage[utf8]{inputenc} 5 | \usepackage{parskip} 6 | \usepackage{../../_static/status} 7 | 8 | \begin{document} 9 | 10 | \null 11 | \vfill 12 | 13 | \section*{% 14 | {{proceedings['title']['full']}}} 15 | 16 | %Edited by {{proceedings['editor'][0]}} and {{proceedings['editor'][1]}}. 17 | 18 | Edited by {{if len(proceedings['editor']) <=2:}} 19 | {{' and '.join(proceedings['editor'])}}% 20 | {{else}} 21 | {{', '.join(authlist[:-1] + ['and ' + authlist[-1],])}}% 22 | {{endif}}. 23 | 24 | \bigskip 25 | 26 | {{proceedings['title']['acronym']}} {{proceedings['year']}}\\ 27 | {{proceedings['location']}}\\ 28 | {{proceedings['dates']}}, {{proceedings['year']}} 29 | 30 | \bigskip 31 | \bigskip 32 | 33 | Copyright \copyright{ {{ proceedings['year']}}}. {{for line in proceedings['copyright']['proceedings']}} 34 | {{line}} 35 | 36 | {{endfor}} 37 | 38 | \bigskip 39 | \bigskip 40 | \bigskip 41 | \bigskip 42 | 43 | ISBN-13: {{proceedings['isbn']}} 44 | 45 | \end{document} 46 | -------------------------------------------------------------------------------- /publisher/mail/templates/author-revision.txt.tmpl: -------------------------------------------------------------------------------- 1 | From: {{sender['name'] | html}} 2 | Subject: [{{conference}}] reviews submitted, revisions requested 3 | To: {{email | html}} 4 | Cc: {{cced | html}} 5 | MIME-Version: 1.0 6 | Content-Type: text/plain 7 | 8 | Dear colleagues and friends, 9 | 10 | Your submitted articles have now all received at least one review. You can 11 | browse the reviews and PDFs for all papers here: 12 | 13 | {{reviews_url}} 14 | {{built_proceedings_url}} 15 | 16 | You can also access the complete build system including the original 17 | restructured text manuscripts: 18 | 19 | https://github.com/scipy/scipy_proceedings/tree/{{year}} 20 | 21 | If you have any problems with the build system or the generated PDF, please let 22 | us know ASAP. 23 | 24 | Please revise your articles based on the reviews. To make edits to your paper, 25 | modify the restructured text documents on the {{year}} branch: 26 | 27 | https://github.com/scipy/scipy_proceedings/tree/{{year}}/papers 28 | 29 | Updates can be submitted via a GitHub pull request. The deadline for changes 30 | is {{due}}. 31 | 32 | With best regards, 33 | 34 | {{editors}} 35 | -------------------------------------------------------------------------------- /publisher/mail/templates/reviewer-invite.txt.tmpl: -------------------------------------------------------------------------------- 1 | From: {{sender['name'] | html}} 2 | Subject: [{{conference}}] invitation to review proceedings 3 | To: {{email | html}} 4 | Cc: {{cced | html}} 5 | MIME-Version: 1.0 6 | Content-Type: text/plain 7 | 8 | Dear colleague and friend, 9 | 10 | Considering your expertise, we would like to invite you to review the 11 | following papers for the {{conference}} conference proceedings: 12 | 13 | 14 | {{for p in papers}} 15 | {{download}}/{{p}}.html 16 | {{endfor}} 17 | 18 | We would appreciate it if, within the next week, you could confirm 19 | whether or not you'll be able to take part in this process. Reviews are due by 20 | {{due}} and should be submitted via email to {{submit_email}}. 21 | 22 | For further instructions, please refer to the reviewer report: 23 | 24 | {{review_form}} 25 | 26 | Of course, you are more than welcome (and encouraged!) to review additional 27 | papers, if time and interest permits. You can browse all submitted papers 28 | here: 29 | 30 | {{download}} 31 | 32 | Please note that reviews are made public, including the reviewer's name. 33 | 34 | With best regards, 35 | 36 | {{editors}} 37 | -------------------------------------------------------------------------------- /publisher/_templates/title.tex.tmpl: -------------------------------------------------------------------------------- 1 | \documentclass[pdftex,letterpaper]{article} 2 | \usepackage[pdftex]{graphicx} 3 | \usepackage{palatino} 4 | \usepackage[utf8]{inputenc} 5 | \usepackage{../../_static/status} 6 | \newcommand{\gargantuan}{\fontsize{34}{38}\selectfont} 7 | \addtolength{\oddsidemargin}{-1.125in} 8 | \addtolength{\textwidth}{2.0in} 9 | \addtolength{\textheight}{0.75in} 10 | 11 | \begin{document} 12 | \begin{titlepage} 13 | 14 | \begin{center} 15 | 16 | \IfFileExists{../../_static/logo.png}{\includegraphics{../../_static/logo.png} }{ \null \vspace{3 cm} } 17 | \bigskip 18 | \bigskip 19 | \bigskip 20 | % Title 21 | { \gargantuan \bfseries \sffamily Proceedings of the {{proceedings['title']['ordinal']}} \\ 22 | {{proceedings['title']['conference']}}} 23 | 24 | \bigskip 25 | \bigskip 26 | \bigskip 27 | { \huge \sffamily {{proceedings['dates']}}} 28 | \hspace{2 mm}{ \huge \textbullet }\hspace{2 mm} 29 | { \huge \sffamily {{proceedings['location']}}}\\[1cm] 30 | 31 | \end{center} 32 | 33 | \vfill 34 | 35 | {{for editor in proceedings['editor']}} 36 | 37 | \hfill { \huge \sffamily {{editor}}}\\ 38 | {{endfor}} 39 | 40 | \end{titlepage} 41 | \end{document} 42 | -------------------------------------------------------------------------------- /publisher/Makefile: -------------------------------------------------------------------------------- 1 | BUILDDIR = _build 2 | TEXDIR = _build/tex 3 | HTMLDIR = _build/html 4 | PDFDIR = _build/pdfs 5 | PAPERDIR = ../output 6 | TEMPLATES = _templates 7 | STATIC = _static 8 | 9 | BUILDTMPL = ./build_template.py 10 | TEX2PDF := cd $(TEXDIR) && pdflatex -interaction=batchmode 11 | 12 | .PHONY: front-pdf proceedings papers toc clean 13 | 14 | all: clean proceedings 15 | 16 | clean: 17 | rm -rf $(PAPERDIR)/* $(BUILDDIR)/* 18 | 19 | $(TEXDIR): 20 | mkdir -p $@ 21 | 22 | $(TEXDIR)/%.tex: $(TEXDIR) 23 | $(BUILDTMPL) $(@F) 24 | 25 | $(TEXDIR)/%.pdf: $(TEXDIR)/%.tex 26 | ($(TEX2PDF) $(/dev/null) 27 | 28 | title-pdf: $(TEXDIR)/title.pdf 29 | copyright-pdf: $(TEXDIR)/copyright.pdf 30 | organization-pdf: $(TEXDIR)/organization.pdf 31 | students-pdf: $(TEXDIR)/students.pdf 32 | 33 | front-pdf: title-pdf copyright-pdf organization-pdf students-pdf 34 | 35 | papers: 36 | ./build_papers.py 37 | 38 | proceedings: front-pdf papers $(TEXDIR)/proceedings.tex 39 | ($(TEX2PDF) proceedings 1>/dev/null) 40 | ($(TEX2PDF) proceedings 1>/dev/null) 41 | cp $(TEXDIR)/proceedings.pdf $(PDFDIR)/proceedings.pdf 42 | 43 | proceedings-html: proceedings 44 | python build_html.py 45 | -convert $(STATIC)/logo.png -resize x100 $(HTMLDIR)/logo.png 46 | -------------------------------------------------------------------------------- /publisher/_templates/index.html.tmpl: -------------------------------------------------------------------------------- 1 |

{{proceedings['title']['full']}} ({{proceedings['title']['acronym']}} {{proceedings['year']}})

2 | 3 |
4 | 5 |

{{', '.join(proceedings['editor'])}}

6 |

{{proceedings['dates']}}

7 |

{{proceedings['location']}}

8 |

9 |

Organizers | 10 | Sponsored Students 11 |

12 | 13 |

Articles

14 | 15 | {{for line in toc}} 16 | 17 |

18 | {{html_quote(line['title']) | html}} 19 | {{html_quote(line['page']['start']) | html}}
20 | {{html_quote(line['authors']) | html}} 21 |

22 | 23 | {{endfor}} 24 | 25 | 40 |
41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /publisher/mail/email.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | "conference": "SciPy 2011", 4 | "year": "2011", 5 | "due": "April 29, 2012", 6 | "download": "http://jarrodmillman.com/scipy2011", 7 | "editors": "Stefan van der Walt and Jarrod Millman", 8 | "sender": { 9 | "login": "jarrod.millman", 10 | "name": "Jarrod Millman ", 11 | "password": "test" 12 | }, 13 | 14 | "submit_email": "jarrod.millman+scipy2011@gmail.com", 15 | "review_form": "https://raw.github.com/scipy/scipy_proceedings/master/reviews/review-template.rst", 16 | "cced": "millman.ucb@gmail.com, sjvdwalt@gmail.com", 17 | 18 | "reviews_url": "http://jarrodmillman.com/scipy2011-reviews", 19 | "built_proceedings_url": "http://jarrodmillman.com/scipy2011", 20 | 21 | "reviewers": [ 22 | {"name": "Stefan van der Walt", 23 | "email": "sjvdwalt@gmail.com", 24 | "papers": ["00_vanderwalt", "00_vanderwalt"]}, 25 | {"name": "Jarrod Millman", 26 | "email": "jarrod.millman+2011@gmail.com", 27 | "papers": ["00_vanderwalt"]} 28 | ], 29 | 30 | "authors": [ 31 | { 32 | "name": "Jarrod Millman", 33 | "email": "millman@berkeley.edu" 34 | }, 35 | { 36 | "name": "Jarrod Millman", 37 | "email": "jarrod.millman+2011@gmail.com" 38 | } 39 | ] 40 | 41 | } 42 | -------------------------------------------------------------------------------- /publisher/mail/mail_reviewers.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import _mailer as mailer 4 | import os 5 | from conf import work_dir 6 | 7 | args = mailer.parse_args() 8 | config = mailer.load_config('email.json') 9 | 10 | 11 | for reviewer_info in config['reviewers']: 12 | for p in reviewer_info['papers']: 13 | if not os.path.isdir(os.path.join(work_dir, '../papers/', p)): 14 | raise RuntimeError("Paper %s not found..refusing to generate emails." % p) 15 | 16 | 17 | for reviewer_info in config['reviewers']: 18 | reviewer_config = config.copy() 19 | reviewer_config.update(reviewer_info) 20 | reviewer = reviewer_info['email'] 21 | 22 | to = mailer.email_addr_from(reviewer_info) 23 | mailer.send_template(config['sender'], to + ', ' + config['cced'], 24 | 'reviewer-invite.txt', reviewer_config) 25 | 26 | 27 | # Generate a summary of emails sent 28 | 29 | paper_reviewers = {} 30 | for reviewer_info in config['reviewers']: 31 | for paper in reviewer_info['papers']: 32 | d = paper_reviewers.setdefault(paper, []) 33 | d.append(reviewer_info['name']) 34 | 35 | for paper in paper_reviewers: 36 | print "%s:" % paper 37 | for reviewer in paper_reviewers[paper]: 38 | print "->", reviewer 39 | print 40 | 41 | print "Papers:", len(paper_reviewers) 42 | print "Reviewers:", len(config['reviewers']) 43 | print 44 | -------------------------------------------------------------------------------- /publisher/build_html.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import os 4 | import glob 5 | import shutil 6 | 7 | from conf import bib_dir, template_dir, html_dir, static_dir, pdf_dir 8 | from options import get_config, mkdir_p 9 | from build_template import bib_from_tmpl, html_from_tmpl, from_template 10 | 11 | config = get_config() 12 | mkdir_p(bib_dir) 13 | for file in glob.glob(os.path.join(static_dir,'*.css')): 14 | shutil.copy(file, html_dir) 15 | html_pdfs = os.path.join(html_dir, 'pdfs') 16 | mkdir_p(html_pdfs) 17 | for file in glob.glob(os.path.join(pdf_dir,'*.pdf')): 18 | shutil.copy(file, html_pdfs) 19 | 20 | citation_key = config['proceedings']['citation_key'] # e.g. proc-scipy-2010 21 | 22 | bib_from_tmpl('proceedings', config, citation_key) 23 | 24 | proc_dict = dict(config.items() + 25 | {'pdf': 'pdfs/proceedings.pdf'}.items() + 26 | {'bibtex': 'bib/' + citation_key}.items()) 27 | 28 | for dest_fn in ['index', 'organization', 'students']: 29 | html_from_tmpl(dest_fn+'.html', proc_dict, dest_fn) 30 | 31 | for article in config['toc']: 32 | art_dict = dict(config.items() + 33 | {'article': article}.items() + 34 | {'pdf': 'pdfs/'+article['paper_id']+'.pdf'}.items() + 35 | {'bibtex': 'bib/'+article['paper_id']+'.bib'}.items()) 36 | bib_from_tmpl('article', art_dict, article['paper_id']) 37 | html_from_tmpl('article.html',art_dict, article['paper_id']) 38 | -------------------------------------------------------------------------------- /publisher/_static/scipy.sty: -------------------------------------------------------------------------------- 1 | % These preamble commands are from build_paper.py 2 | 3 | % DRAFT 4 | \usepackage{status} 5 | 6 | % PDF Standard Fonts 7 | \usepackage{mathptmx} 8 | \usepackage[scaled=.90]{helvet} 9 | \usepackage{courier} 10 | 11 | % Make verbatim environment smaller 12 | \makeatletter 13 | \g@addto@macro\@verbatim\footnotesize 14 | \makeatother 15 | 16 | % Do not indent code sections 17 | \renewcommand{\quote}{} 18 | 19 | % Provide AMS mathematical commands such as "align" 20 | \usepackage{amsmath} 21 | \usepackage{amsfonts} 22 | \usepackage{bm} 23 | 24 | % Define colours for hyperref 25 | \usepackage{color} 26 | 27 | \definecolor{orange}{cmyk}{0,0.4,0.8,0.2} 28 | \definecolor{darkorange}{rgb}{.71,0.21,0.01} 29 | \definecolor{darkblue}{rgb}{.01,0.21,0.71} 30 | \definecolor{darkgreen}{rgb}{.1,.52,.09} 31 | 32 | \usepackage{hyperref} 33 | \hypersetup{pdftex, % needed for pdflatex 34 | breaklinks=true, % so long urls are correctly broken across lines 35 | colorlinks=true, 36 | urlcolor=blue, 37 | linkcolor=darkblue, 38 | citecolor=darkgreen, 39 | } 40 | 41 | % Include graphics for authors who raw-inlined figures 42 | % (then docutils won't automatically add the package) 43 | \usepackage{graphicx} 44 | 45 | \ifthenelse{\isundefined{\longtable}}{}{ 46 | \renewenvironment{longtable}{\begin{center}\begin{tabular}}% 47 | {\end{tabular}\end{center}\vspace{2mm}} 48 | } 49 | 50 | % Packages required for code highlighting 51 | \usepackage{fancyvrb} 52 | 53 | -------------------------------------------------------------------------------- /publisher/_templates/proceedings.tex.tmpl: -------------------------------------------------------------------------------- 1 | \documentclass[letterpaper,compsoc,onecolumn,twoside,english]{IEEEtran} 2 | \usepackage[utf8]{inputenc} 3 | \setlength{\parindent}{0mm} 4 | \thispagestyle{empty} 5 | \pagestyle{empty} 6 | \usepackage{pdfpages} 7 | \usepackage{pax} 8 | % Define colours for hyperref 9 | \usepackage{color} 10 | 11 | \definecolor{orange}{cmyk}{0,0.4,0.8,0.2} 12 | \definecolor{darkorange}{rgb}{.71,0.21,0.01} 13 | \definecolor{darkblue}{rgb}{.01,0.21,0.71} 14 | \definecolor{darkgreen}{rgb}{.1,.52,.09} 15 | 16 | \usepackage{hyperref} 17 | \hypersetup{pdftex, % needed for pdflatex 18 | breaklinks=true, % so long urls are correctly broken across lines 19 | colorlinks=true, 20 | urlcolor=blue, 21 | linkcolor=darkblue, 22 | citecolor=darkgreen, 23 | } 24 | 25 | 26 | \begin{document} 27 | 28 | \includepdf{title.pdf} 29 | \includepdf[pages=-,openright]{copyright.pdf} 30 | \includepdf[pages=-,openright]{organization.pdf} 31 | \includepdf[pages=-]{students.pdf} 32 | 33 | \section*{Contents} 34 | \vspace{4mm} 35 | 36 | {{for line in toc}} 37 | 38 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 39 | \textsf{\hyperlink{../pdfs/{{line['paper_id']}}.pdf.1}{% 40 | {{line['title']}}}% 41 | \hfill% 42 | \textbf{ {{line['page']['start']}} }% 43 | \\% 44 | \small\textit{% 45 | \parbox{0.9\textwidth}{ 46 | {{line['authors']}} }% 47 | }% 48 | }% 49 | \\ 50 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 51 | 52 | {{endfor}} 53 | 54 | {{for line in toc}} 55 | 56 | \includepdf[pages=-,link]{../pdfs/{{line['paper_id']}}.pdf} 57 | 58 | {{endfor}} 59 | 60 | 61 | \end{document} 62 | -------------------------------------------------------------------------------- /publisher/_templates/article.html.tmpl: -------------------------------------------------------------------------------- 1 |

{{html_quote(article['title']) | html}}

2 | 3 |
4 | 5 | {{for auth, inst in zip(article['author'], article['author_institution'])}} 6 | 7 |

8 | {{html_quote(auth) | html}}
9 | {{html_quote(inst) | html}}
10 |

11 | 12 | {{endfor}} 13 | 14 | 15 | Abstract 16 |

17 | {{for p in article['abstract']}} 18 |

19 | {{html_quote(p) | html}} 20 |

21 | {{endfor}} 22 |

23 | 24 | 25 | 26 | Keywords 27 |

{{html_quote(article['keywords']) | html}} 28 |

29 | 30 | 31 | 32 |

33 | Bibtex entry 34 |

35 |

36 | Full text PDF 37 |

38 | 39 | 40 |
41 | 42 |