├── images ├── pdf.png ├── cc_by_4p0.png ├── arrow-down.png ├── octocat-small.png ├── figure_2 │ ├── period_000009.svg │ ├── period_000008.svg │ ├── period_000007.svg │ ├── period_000006.svg │ ├── period_000005.svg │ └── period_000004.svg └── figure_3 │ └── period_000004.svg ├── javascript ├── python-highlighting │ ├── readme.txt │ └── prism.js ├── google-analytics │ ├── readme.txt │ └── analytics.js ├── Minimal-MathJax │ ├── fonts │ │ └── HTML-CSS │ │ │ └── TeX │ │ │ └── woff │ │ │ ├── MathJax_Math-Italic.woff │ │ │ ├── MathJax_Main-Regular.woff │ │ │ ├── MathJax_Size2-Regular.woff │ │ │ ├── MathJax_Size3-Regular.woff │ │ │ └── MathJax_Size4-Regular.woff │ ├── readme.txt │ └── jax │ │ └── output │ │ └── CommonHTML │ │ ├── fonts │ │ └── TeX │ │ │ └── AMS-Regular.js │ │ └── autoload │ │ └── mtable.js ├── scale-fix │ └── scale.fix.js ├── reference_list │ └── reference_list.js ├── update_figures.js ├── README.md └── html5shiv │ └── html5shiv.js ├── Publication_template by AndrewGYork.pdf ├── LICENSE ├── figure_generation ├── figure_1.py ├── figure_2.py └── figure_3.py ├── README.md ├── stylesheets ├── prism.css └── styles.css └── index.html /images/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndrewGYork/publication_template/HEAD/images/pdf.png -------------------------------------------------------------------------------- /javascript/python-highlighting/readme.txt: -------------------------------------------------------------------------------- 1 | Python syntax highlighting, via http://prismjs.com/ 2 | -------------------------------------------------------------------------------- /images/cc_by_4p0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndrewGYork/publication_template/HEAD/images/cc_by_4p0.png -------------------------------------------------------------------------------- /images/arrow-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndrewGYork/publication_template/HEAD/images/arrow-down.png -------------------------------------------------------------------------------- /images/octocat-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndrewGYork/publication_template/HEAD/images/octocat-small.png -------------------------------------------------------------------------------- /javascript/google-analytics/readme.txt: -------------------------------------------------------------------------------- 1 | This Google Analytics snippet is specific to me; you should replace it with your own. 2 | -------------------------------------------------------------------------------- /Publication_template by AndrewGYork.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndrewGYork/publication_template/HEAD/Publication_template by AndrewGYork.pdf -------------------------------------------------------------------------------- /javascript/Minimal-MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndrewGYork/publication_template/HEAD/javascript/Minimal-MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Italic.woff -------------------------------------------------------------------------------- /javascript/Minimal-MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndrewGYork/publication_template/HEAD/javascript/Minimal-MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Regular.woff -------------------------------------------------------------------------------- /javascript/Minimal-MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Size2-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndrewGYork/publication_template/HEAD/javascript/Minimal-MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Size2-Regular.woff -------------------------------------------------------------------------------- /javascript/Minimal-MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Size3-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndrewGYork/publication_template/HEAD/javascript/Minimal-MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Size3-Regular.woff -------------------------------------------------------------------------------- /javascript/Minimal-MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Size4-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AndrewGYork/publication_template/HEAD/javascript/Minimal-MathJax/fonts/HTML-CSS/TeX/woff/MathJax_Size4-Regular.woff -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | This work is licensed under the Creative Commons Attribution 4.0 International License. 2 | To view a copy of this license, visit: 3 | http://creativecommons.org/licenses/by/4.0/ 4 | or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. 5 | -------------------------------------------------------------------------------- /javascript/Minimal-MathJax/readme.txt: -------------------------------------------------------------------------------- 1 | I want to use MathJax, but I don't want to rely on an internet connection (e.g. when I'm editing a local copy offline). 2 | 3 | I followed the recipe described here: 4 | https://tiborsimon.io/articles/web/minimal-mathjax/ 5 | Starting from MathJax 2.7.0. ~500kB and a handful of files, so far. Not bad! 6 | -------------------------------------------------------------------------------- /javascript/google-analytics/analytics.js: -------------------------------------------------------------------------------- 1 | (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 2 | (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 3 | m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 4 | })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 5 | ga('create', 'UA-90305913-1', 'auto'); 6 | ga('send', 'pageview'); 7 | -------------------------------------------------------------------------------- /figure_generation/figure_1.py: -------------------------------------------------------------------------------- 1 | import os 2 | import numpy as np 3 | import matplotlib.pyplot as plt 4 | 5 | assert os.path.isdir('./../images') 6 | if not os.path.isdir('./../images/figure_1'): 7 | os.mkdir('./../images/figure_1') 8 | x = np.linspace(0, 10, 1000) 9 | period = 2 10 | fig = plt.figure(figsize=(7, 3)) 11 | plt.plot(x, np.sin(2 * np.pi * x / period)) 12 | plt.xlim(x.min(), x.max()) 13 | plt.ylim(-1, 1) 14 | plt.grid() 15 | plt.savefig('./../images/figure_1/period_%06i.svg'%period) 16 | -------------------------------------------------------------------------------- /figure_generation/figure_2.py: -------------------------------------------------------------------------------- 1 | import os 2 | import numpy as np 3 | import matplotlib.pyplot as plt 4 | 5 | assert os.path.isdir('./../images') 6 | if not os.path.isdir('./../images/figure_2'): 7 | os.mkdir('./../images/figure_2') 8 | x = np.linspace(0, 10, 1000) 9 | for period in np.arange(1, 10): 10 | fig = plt.figure(figsize=(7, 3)) 11 | plt.plot(x, np.sin(2 * np.pi * x / period)) 12 | plt.xlim(x.min(), x.max()) 13 | plt.ylim(-1, 1) 14 | plt.grid() 15 | plt.savefig('./../images/figure_2/period_%06i.svg'%period) 16 | -------------------------------------------------------------------------------- /javascript/scale-fix/scale.fix.js: -------------------------------------------------------------------------------- 1 | fixScale = function(doc) { 2 | var addEvent = 'addEventListener', 3 | type = 'gesturestart', 4 | qsa = 'querySelectorAll', 5 | scales = [1, 1], 6 | meta = qsa in doc ? doc[qsa]('meta[name=viewport]') : []; 7 | 8 | function fix() { 9 | meta.content = 'width=device-width,minimum-scale=' + scales[0] + ',maximum-scale=' + scales[1]; 10 | doc.removeEventListener(type, fix, true); 11 | } 12 | if ((meta = meta[meta.length - 1]) && addEvent in doc) { 13 | fix(); 14 | scales = [.25, 1.6]; 15 | doc[addEvent](type, fix, true); 16 | } 17 | }; 18 | -------------------------------------------------------------------------------- /figure_generation/figure_3.py: -------------------------------------------------------------------------------- 1 | import os 2 | import numpy as np 3 | import matplotlib.pyplot as plt 4 | 5 | # We're going to make a single 'local' image: 6 | assert os.path.isdir('./../images') 7 | if not os.path.isdir('./../images/figure_3'): 8 | os.mkdir('./../images/figure_3') 9 | # ...and a bunch of images (for an interactive figure) in a separate 10 | # directory: 11 | if not os.path.isdir('./../../big_images'): 12 | os.mkdir('./../../big_images/') 13 | if not os.path.isdir('./../../big_images/figure_3'): 14 | os.mkdir('./../../big_images/figure_3') 15 | x = np.linspace(0, 10, 1000) 16 | for period in np.arange(1, 10): 17 | fig = plt.figure(figsize=(7, 3)) 18 | plt.plot(x, np.sin(2 * np.pi * x / period)) 19 | plt.xlim(x.min(), x.max()) 20 | plt.ylim(-1, 1) 21 | plt.grid() 22 | if period == 4: 23 | # Save one local placeholder for the interactive figure 24 | plt.savefig('./../images/figure_3/period_%06i.svg'%period) 25 | # Save the rest of the interactive figure in a separate directory: 26 | plt.savefig('./../../big_images/figure_3/period_%06i.svg'%period) 27 | -------------------------------------------------------------------------------- /javascript/reference_list/reference_list.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("DOMContentLoaded", function(event) { 2 | already_included = ""; 3 | list_of_refs = document.createElement("ol"); 4 | var links = document.getElementsByClassName("citation"); 5 | for(var i = 0; i < links.length; i++){ 6 | if (!(already_included.indexOf(links[i].innerText) >= 0)) { 7 | already_included = already_included.concat(links[i].innerText); 8 | li = document.createElement("li"); 9 | li.appendChild(document.createTextNode("[")); 10 | lnk = document.createElement("a"); 11 | lnk.href = links[i].href; 12 | lnk.innerText = links[i].innerText; 13 | li.appendChild(lnk); 14 | li.appendChild(document.createTextNode( 15 | "] "+links[i].title+" "+links[i].href)); 16 | list_of_refs.appendChild(li); 17 | } 18 | } 19 | if (links.length > 0) { 20 | sections = document.body.getElementsByTagName("section"); 21 | last_section = sections[sections.length - 1]; 22 | heading = document.createElement("h3"); 23 | heading.appendChild(document.createTextNode("References")); 24 | last_section.appendChild(heading); 25 | last_section.appendChild(list_of_refs); 26 | } 27 | }); 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # A template for writing scientific papers 2 | DOI 3 | 4 | View it in action here: 5 | https://andrewgyork.github.io/publication_template/ 6 | 7 | This repository is intended to hold a (mostly) self-contained scientific publication. It contains: 8 | 9 | * HTML, javascript, and small images (index.html, and in the javascript and images directories) 10 | * Code which produces figures (in the `figure_code` directory) 11 | 12 | Some files aren't suitable for version control, (e.g. raw data, large numbers of pre-rendered figure images, etc). These are stored in a sister repository: 13 | 14 | https://github.com/AndrewGYork/publication_template_data 15 | 16 | Hopefully this makes it easier to nuke the version control history for big, non-text files without risking the small, important text-based files stored here. 17 | 18 | Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License 19 | -------------------------------------------------------------------------------- /javascript/update_figures.js: -------------------------------------------------------------------------------- 1 | // Figure 2 interactively loads static images, stored locally 2 | function update_figure_2() { 3 | var period = document.getElementById("Figure_2_period").value; 4 | var filename = "./images/figure_2/period_" + period + ".svg"; 5 | var image = document.getElementById("Figure_2_image"); 6 | image.src = filename; 7 | } 8 | 9 | // Figure 3 interactively loads static images. 10 | // Check if our big images are available locally or remotely: 11 | var big_image_directory = "./../big_images"; 12 | var img = new Image(); 13 | img.onerror = function() { 14 | window.big_image_directory = "https://andrewgyork.github.io/publication_template_data/big_images"; 15 | img.onerror = function() { 16 | window.big_image_directory = ""; 17 | img.onerror = ""; 18 | window.alert("Interactive images not found."); 19 | } 20 | img.src = big_image_directory + "/figure_3/period_000004.svg" 21 | } 22 | img.onload = function() { 23 | console.log("Loading interactive images from: " + big_image_directory) 24 | } 25 | img.src = big_image_directory + "/figure_3/period_000004.svg" 26 | 27 | function update_figure_3() { 28 | var period = document.getElementById("Figure_3_period").value; 29 | var filename = big_image_directory + "/figure_3/period_" + period + ".svg"; 30 | var image = document.getElementById("Figure_3_image"); 31 | image.src = filename; 32 | } 33 | -------------------------------------------------------------------------------- /javascript/README.md: -------------------------------------------------------------------------------- 1 | `update_figures.js` is specific code, hand-written to animate the figures in this particular publication. If you copy this publication as a template, you'll have to rewrite this file yourself (or just use static figures). 2 | 3 | You should also delete or modify the `google-analytics/analytics.js` script, since the tracking code is specific to me. 4 | 5 | `reference_list/reference_list.js` is more general code; it's intended to search the document for citations formatted in a particular way, and append a (not too ugly) list of references to the end of the document. It's intended to stay the same every time the template is used, unless the user wants to do their reference list a different way. 6 | 7 | `scale-fix/scale-fix.js` came with the template that I based my work on, ['dinky' by 'broccolini'](https://github.com/broccolini/dinky). I believe it helps the document scale correctly for different size screens. It's possible that it's not doing anything, and it's just cruft, but I haven't taken the time to understand. Incidentally, 'broccolini' mentioned in their original work that 'attribution is not necessary but it is appreciated', so I put an attribution in a comment in index.html; if you copy this publication as a template, I'd appreciate it if this attribution remains. 8 | 9 | `html5shiv/html5shiv.js` is from [HTML5 boilerplate](https://html5boilerplate.com/). As I understand it, this file helps make HTML5 work with old versions of IE, but I haven't tested this extensively. 10 | 11 | `python-highlighting/prism.js` is from [prismjs.com/](http://prismjs.com/); the version I included allows python sytnax highlighting for code inside `
` tags. If someone wanted syntax highlighting for another language, they should replace `prism.js` with a fresh copy downloaded from `prismjs.com`
12 | 
13 | `Minimal-MathJax/` is to allow math typesetting, which I imagine many template users would want.
14 | 


--------------------------------------------------------------------------------
/javascript/html5shiv/html5shiv.js:
--------------------------------------------------------------------------------
1 | (function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
2 | a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x";
3 | c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
4 | "undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment();
5 | for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d code[class*="language-"],
 58 | pre[class*="language-"] {
 59 | 	background: #f5f2f0;
 60 | }
 61 | 
 62 | /* Inline code */
 63 | :not(pre) > code[class*="language-"] {
 64 | 	padding: .1em;
 65 | 	border-radius: .3em;
 66 | 	white-space: normal;
 67 | }
 68 | 
 69 | .token.comment,
 70 | .token.prolog,
 71 | .token.doctype,
 72 | .token.cdata {
 73 | 	color: slategray;
 74 | }
 75 | 
 76 | .token.punctuation {
 77 | 	color: #999;
 78 | }
 79 | 
 80 | .namespace {
 81 | 	opacity: .7;
 82 | }
 83 | 
 84 | .token.property,
 85 | .token.tag,
 86 | .token.boolean,
 87 | .token.number,
 88 | .token.constant,
 89 | .token.symbol,
 90 | .token.deleted {
 91 | 	color: #905;
 92 | }
 93 | 
 94 | .token.selector,
 95 | .token.attr-name,
 96 | .token.string,
 97 | .token.char,
 98 | .token.builtin,
 99 | .token.inserted {
100 | 	color: #690;
101 | }
102 | 
103 | .token.operator,
104 | .token.entity,
105 | .token.url,
106 | .language-css .token.string,
107 | .style .token.string {
108 | 	color: #a67f59;
109 | 	background: hsla(0, 0%, 100%, .5);
110 | }
111 | 
112 | .token.atrule,
113 | .token.attr-value,
114 | .token.keyword {
115 | 	color: #07a;
116 | }
117 | 
118 | .token.function {
119 | 	color: #DD4A68;
120 | }
121 | 
122 | .token.regex,
123 | .token.important,
124 | .token.variable {
125 | 	color: #e90;
126 | }
127 | 
128 | .token.important,
129 | .token.bold {
130 | 	font-weight: bold;
131 | }
132 | .token.italic {
133 | 	font-style: italic;
134 | }
135 | 
136 | .token.entity {
137 | 	cursor: help;
138 | }
139 | 
140 | 


--------------------------------------------------------------------------------
/javascript/python-highlighting/prism.js:
--------------------------------------------------------------------------------
1 | /* http://prismjs.com/download.html?themes=prism&languages=python */
2 | var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-(\w+)\b/i,t=0,n=_self.Prism={util:{encode:function(e){return e instanceof a?new a(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)break e;if(!(v instanceof a)){u.lastIndex=0;var b=u.exec(v),k=1;if(!b&&h&&m!=r.length-1){if(u.lastIndex=y,b=u.exec(e),!b)break;for(var w=b.index+(c?b[1].length:0),_=b.index+b[0].length,A=m,P=y,x=r.length;x>A&&_>P;++A)P+=r[A].length,w>=P&&(++m,y=P);if(r[m]instanceof a||r[A-1].greedy)continue;k=A-m,v=e.slice(y,P),b.index-=y}if(b){c&&(f=b[1].length);var w=b.index+f,b=b[0].slice(f),_=w+b.length,O=v.slice(0,w),S=v.slice(_),j=[m,k];O&&j.push(O);var N=new a(l,g?n.tokenize(b,g):b,d,b,h);j.push(N),S&&j.push(S),Array.prototype.splice.apply(r,j)}}}}}return r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},a=n.Token=function(e,t,n,a,r){this.type=e,this.content=t,this.alias=n,this.length=0|(a||"").length,this.greedy=!!r};if(a.stringify=function(e,t,r){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return a.stringify(n,t,e)}).join("");var i={type:e.type,content:a.stringify(e.content,t,r),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:r};if("comment"==i.type&&(i.attributes.spellcheck="true"),e.alias){var l="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,l)}n.hooks.run("wrap",i);var o="";for(var s in i.attributes)o+=(o?" ":"")+s+'="'+(i.attributes[s]||"")+'"';return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(o?" "+o:"")+">"+i.content+""},!_self.document)return _self.addEventListener?(_self.addEventListener("message",function(e){var t=JSON.parse(e.data),a=t.language,r=t.code,i=t.immediateClose;_self.postMessage(n.highlight(r,n.languages[a],a)),i&&_self.close()},!1),_self.Prism):_self.Prism;var r=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return r&&(n.filename=r.src,document.addEventListener&&!r.hasAttribute("data-manual")&&("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism);
3 | Prism.languages.python={"triple-quoted-string":{pattern:/"""[\s\S]+?"""|'''[\s\S]+?'''/,alias:"string"},comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:{pattern:/("|')(?:\\\\|\\?[^\\\r\n])*?\1/,greedy:!0},"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)[a-z0-9_]+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/,"boolean":/\b(?:True|False)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/};
4 | 


--------------------------------------------------------------------------------
/javascript/Minimal-MathJax/jax/output/CommonHTML/fonts/TeX/AMS-Regular.js:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  /MathJax/jax/output/CommonHTML/fonts/TeX/AMS-Regular.js
 3 |  *
 4 |  *  Copyright (c) 2009-2016 The MathJax Consortium
 5 |  *
 6 |  *  Licensed under the Apache License, Version 2.0 (the "License");
 7 |  *  you may not use this file except in compliance with the License.
 8 |  *  You may obtain a copy of the License at
 9 |  *
10 |  *      http://www.apache.org/licenses/LICENSE-2.0
11 |  *
12 |  *  Unless required by applicable law or agreed to in writing, software
13 |  *  distributed under the License is distributed on an "AS IS" BASIS,
14 |  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 |  *  See the License for the specific language governing permissions and
16 |  *  limitations under the License.
17 |  */
18 | 
19 | (function(b){var a="MathJax_AMS";b.FONTDATA.FONTS[a]={className:b.FONTDATA.familyName(a),centerline:270,ascent:1003,descent:463,32:[0,0,250,0,0],65:[701,1,722,17,703],66:[683,1,667,11,620],67:[702,19,722,39,684],68:[683,1,722,16,688],69:[683,1,667,12,640],70:[683,1,611,12,584],71:[702,19,778,39,749],72:[683,1,778,14,762],73:[683,1,389,20,369],74:[683,77,500,6,478],75:[683,1,778,22,768],76:[683,1,667,12,640],77:[683,1,944,17,926],78:[683,20,722,20,702],79:[701,19,778,34,742],80:[683,1,611,16,597],81:[701,181,778,34,742],82:[683,1,722,16,705],83:[702,12,556,28,528],84:[683,1,667,33,635],85:[683,19,722,16,709],86:[683,20,722,0,719],87:[683,19,1000,5,994],88:[683,1,722,16,705],89:[683,1,722,16,704],90:[683,1,667,29,635],107:[683,1,556,17,534],160:[0,0,250,0,0],165:[683,0,750,11,738],174:[709,175,947,32,915],240:[749,21,556,42,509],295:[695,13,540,42,562],710:[845,-561,2333,-14,2346],732:[899,-628,2333,1,2330],770:[845,-561,0,-2347,13],771:[899,-628,0,-2332,-3],989:[605,85,778,55,719],1008:[434,6,667,37,734],8245:[560,-43,275,12,244],8463:[695,13,540,42,562],8487:[684,22,722,44,675],8498:[695,1,556,55,497],8502:[763,21,667,-22,687],8503:[764,43,444,-22,421],8504:[764,43,667,54,640],8513:[705,23,639,37,577],8592:[437,-64,500,64,422],8594:[437,-64,500,58,417],8602:[437,-60,1000,56,942],8603:[437,-60,1000,54,942],8606:[417,-83,1000,56,944],8608:[417,-83,1000,55,943],8610:[417,-83,1111,56,1031],8611:[417,-83,1111,79,1054],8619:[575,41,1000,56,964],8620:[575,41,1000,35,943],8621:[417,-83,1389,57,1331],8622:[437,-60,1000,56,942],8624:[722,0,500,56,444],8625:[722,0,500,55,443],8630:[461,1,1000,17,950],8631:[460,1,1000,46,982],8634:[650,83,778,56,722],8635:[650,83,778,56,721],8638:[694,194,417,188,375],8639:[694,194,417,41,228],8642:[694,194,417,188,375],8643:[694,194,417,41,228],8644:[667,0,1000,55,944],8646:[667,0,1000,55,944],8647:[583,83,1000,55,944],8648:[694,193,833,83,749],8649:[583,83,1000,55,944],8650:[694,194,833,83,749],8651:[514,14,1000,55,944],8652:[514,14,1000,55,944],8653:[534,35,1000,54,942],8654:[534,37,1000,32,965],8655:[534,35,1000,55,943],8666:[611,111,1000,76,944],8667:[611,111,1000,55,923],8669:[417,-83,1000,56,943],8672:[437,-64,1334,64,1251],8674:[437,-64,1334,84,1251],8705:[846,21,500,56,444],8708:[860,166,556,55,497],8709:[587,3,778,54,720],8717:[440,1,429,102,456],8722:[270,-230,500,84,417],8724:[766,93,778,57,722],8726:[430,23,778,91,685],8733:[472,-28,778,56,722],8736:[694,0,722,55,666],8737:[714,20,722,55,666],8738:[551,51,722,55,666],8739:[430,23,222,91,131],8740:[750,252,278,-21,297],8741:[431,23,389,55,331],8742:[750,250,500,-20,518],8756:[471,82,667,24,643],8757:[471,82,667,23,643],8764:[365,-132,778,55,719],8765:[367,-133,778,56,722],8769:[467,-32,778,55,719],8770:[463,-34,778,55,720],8774:[652,155,778,54,720],8776:[481,-50,778,55,719],8778:[579,39,778,51,725],8782:[492,-8,778,56,722],8783:[492,-133,778,56,722],8785:[609,108,778,56,722],8786:[601,101,778,15,762],8787:[601,102,778,14,762],8790:[367,-133,778,56,722],8791:[721,-133,778,56,722],8796:[859,-133,778,56,723],8806:[753,175,778,83,694],8807:[753,175,778,83,694],8808:[752,286,778,82,693],8809:[752,286,778,82,693],8812:[750,250,500,74,425],8814:[708,209,778,82,693],8815:[708,209,778,82,693],8816:[801,303,778,82,694],8817:[801,303,778,82,694],8818:[732,228,778,56,722],8819:[732,228,778,56,722],8822:[681,253,778,44,734],8823:[681,253,778,83,694],8828:[580,153,778,83,694],8829:[580,154,778,82,694],8830:[732,228,778,56,722],8831:[732,228,778,56,722],8832:[705,208,778,82,693],8833:[705,208,778,82,693],8840:[801,303,778,83,693],8841:[801,303,778,82,691],8842:[635,241,778,84,693],8843:[635,241,778,82,691],8847:[539,41,778,83,694],8848:[539,41,778,64,714],8858:[582,82,778,57,721],8859:[582,82,778,57,721],8861:[582,82,778,57,721],8862:[689,0,778,55,722],8863:[689,0,778,55,722],8864:[689,0,778,55,722],8865:[689,0,778,55,722],8872:[694,0,611,55,555],8873:[694,0,722,55,666],8874:[694,0,889,55,833],8876:[695,1,611,-55,554],8877:[695,1,611,-55,554],8878:[695,1,722,-55,665],8879:[695,1,722,-55,665],8882:[539,41,778,83,694],8883:[539,41,778,83,694],8884:[636,138,778,83,694],8885:[636,138,778,83,694],8888:[408,-92,1111,55,1055],8890:[431,212,556,57,500],8891:[716,0,611,55,555],8892:[716,0,611,55,555],8901:[189,0,278,55,222],8903:[545,44,778,55,720],8905:[492,-8,778,146,628],8906:[492,-8,778,146,628],8907:[694,22,778,55,722],8908:[694,22,778,55,722],8909:[464,-36,778,56,722],8910:[578,21,760,83,676],8911:[578,22,760,83,676],8912:[540,40,778,84,694],8913:[540,40,778,83,693],8914:[598,22,667,55,611],8915:[598,22,667,55,611],8916:[736,22,667,56,611],8918:[541,41,778,82,693],8919:[541,41,778,82,693],8920:[568,67,1333,56,1277],8921:[568,67,1333,55,1277],8922:[886,386,778,83,674],8923:[886,386,778,83,674],8926:[734,0,778,83,694],8927:[734,0,778,82,694],8928:[801,303,778,82,693],8929:[801,303,778,82,694],8934:[730,359,778,55,719],8935:[730,359,778,55,719],8936:[730,359,778,55,719],8937:[730,359,778,55,719],8938:[706,208,778,82,693],8939:[706,208,778,82,693],8940:[802,303,778,82,693],8941:[801,303,778,82,693],8994:[378,-122,778,55,722],8995:[378,-143,778,55,722],9416:[709,175,902,8,894],9484:[694,-306,500,55,444],9488:[694,-306,500,55,444],9492:[366,22,500,55,444],9496:[366,22,500,55,444],9585:[694,195,889,0,860],9586:[694,195,889,0,860],9632:[689,0,778,55,722],9633:[689,0,778,55,722],9650:[575,20,722,84,637],9651:[575,20,722,84,637],9654:[539,41,778,83,694],9660:[576,19,722,84,637],9661:[576,19,722,84,637],9664:[539,41,778,83,694],9674:[716,132,667,56,611],9733:[694,111,944,49,895],10003:[706,34,833,84,749],10016:[716,22,833,48,786],10731:[716,132,667,56,611],10846:[813,97,611,55,555],10877:[636,138,778,83,694],10878:[636,138,778,83,694],10885:[762,290,778,55,722],10886:[762,290,778,55,722],10887:[635,241,778,82,693],10888:[635,241,778,82,693],10889:[761,387,778,57,718],10890:[761,387,778,57,718],10891:[1003,463,778,83,694],10892:[1003,463,778,83,694],10901:[636,138,778,83,694],10902:[636,138,778,83,694],10933:[752,286,778,82,693],10934:[752,286,778,82,693],10935:[761,294,778,57,717],10936:[761,294,778,57,717],10937:[761,337,778,57,718],10938:[761,337,778,57,718],10949:[753,215,778,84,694],10950:[753,215,778,83,694],10955:[783,385,778,82,693],10956:[783,385,778,82,693],57350:[430,23,222,-20,240],57351:[431,24,389,-20,407],57352:[605,85,778,55,719],57353:[434,6,667,37,734],57356:[752,284,778,82,693],57357:[752,284,778,82,693],57358:[919,421,778,82,694],57359:[801,303,778,82,694],57360:[801,303,778,82,694],57361:[919,421,778,82,694],57366:[828,330,778,82,694],57367:[752,332,778,82,694],57368:[828,330,778,82,694],57369:[752,333,778,82,693],57370:[634,255,778,84,693],57371:[634,254,778,82,691]};b.fontLoaded("TeX/"+a.substr(8))})(MathJax.OutputJax.CommonHTML);
20 | 


--------------------------------------------------------------------------------
/stylesheets/styles.css:
--------------------------------------------------------------------------------
  1 | @import url(https://fonts.googleapis.com/css?family=Arvo:400,700,400italic);
  2 | 
  3 | /* MeyerWeb Reset */
  4 | 
  5 | html, body, div, span, applet, object, iframe,
  6 | h1, h2, h3, h4, h5, h6, p, blockquote, pre,
  7 | a, abbr, acronym, address, big, cite, code,
  8 | del, dfn, em, img, ins, kbd, q, s, samp,
  9 | small, strike, strong, sub, sup, tt, var,
 10 | b, u, i, center,
 11 | dl, dt, dd, ol, ul, li,
 12 | fieldset, form, label, legend,
 13 | table, caption, tbody, tfoot, thead, tr, th, td,
 14 | article, aside, canvas, details, embed,
 15 | figure, figcaption, footer, header, hgroup,
 16 | menu, nav, output, ruby, section, summary,
 17 | time, mark, audio, video {
 18 |   margin: 0;
 19 |   padding: 0;
 20 |   border: 0;
 21 |   font: inherit;
 22 |   vertical-align: baseline;
 23 | }
 24 | 
 25 | 
 26 | /* Base text styles */
 27 | 
 28 | body {
 29 |   padding: 10px 50px 0 0;
 30 |   font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
 31 |   font-size: 15px;
 32 |   color: #030303;
 33 |   background-color: #FCFBF8;
 34 |   margin: 0;
 35 |   line-height: 1.8em;
 36 |   -webkit-font-smoothing: antialiased;
 37 | }
 38 | 
 39 | h1, h2, h3, h4, h5, h6 {
 40 |   color:#232323;
 41 |   margin:36px 0 10px;
 42 | }
 43 | 
 44 | p, ul, ol, table, dl {
 45 |   margin:0 0 22px;
 46 | }
 47 | 
 48 | p.author_list {
 49 |   margin:0 0 0px;
 50 |   font-weight: 700;
 51 | }
 52 | 
 53 | p.author_affiliations {
 54 |   margin:0 0 0px;
 55 |   font-style: italic;
 56 | }
 57 | 
 58 | p.contact_email {
 59 |   margin:0 0 0px;
 60 |   font-style: italic;
 61 | }
 62 | 
 63 | p.abstract {
 64 |   margin: 0% 1% 2%;
 65 |   font-weight: 700;
 66 | }
 67 | 
 68 | h1, h2, h3 {
 69 |   font-family: Arvo, Monaco, serif;
 70 |   line-height:1.3;
 71 |   font-weight: normal;
 72 | }
 73 | 
 74 | h1, h2, h3 {
 75 |   display: block;
 76 |   border-bottom: 1px solid #ccc;
 77 |   padding-bottom: 5px;
 78 | }
 79 | 
 80 | h1 {
 81 |   font-size: 30px;
 82 | }
 83 | 
 84 | h2 {
 85 |   font-size: 24px;
 86 | }
 87 | 
 88 | h3 {
 89 |   font-size: 18px;
 90 | }
 91 | 
 92 | h4, h5 {
 93 |   font-family: Arvo, Monaco, serif;
 94 |   font-weight: 700;
 95 | }
 96 | 
 97 | h6 {
 98 |   font-family: Arvo, Monaco, serif;
 99 |   font-weight: 200;
100 | }
101 | 
102 | a {
103 |   font-weight:200;
104 |   text-decoration:none;
105 | }
106 | 
107 | a:hover {
108 |   text-decoration: underline;
109 | }
110 | 
111 | a small {
112 |   font-size: 12px;
113 | }
114 | 
115 | em {
116 |   font-style: italic;
117 | }
118 | 
119 | strong {
120 |   font-weight:700;
121 | }
122 | 
123 | sup {
124 |   vertical-align: super;
125 |   font-size: smaller;
126 | }
127 | 
128 | ul {
129 |   list-style-position: inside;
130 |   list-style: disc;
131 |   padding-left: 25px;
132 | }
133 | 
134 | ol {
135 |   list-style-position: inside;
136 |   list-style: decimal;
137 |   padding-left: 25px;
138 | }
139 | 
140 | blockquote {
141 |   margin: 0;
142 |   padding: 0 0 0 20px;
143 |   font-style: italic;
144 | }
145 | 
146 | dl, dt, dd, dl p {
147 |   font-color: #444;
148 | }
149 | 
150 | dl dt {
151 |   font-weight: bold;
152 | }
153 | 
154 | dl dd {
155 |   padding-left: 20px;
156 |   font-style: italic;
157 | }
158 | 
159 | dl p {
160 |   padding-left: 20px;
161 |   font-style: italic;
162 | }
163 | 
164 | hr {
165 |   border:0;
166 |   background:#ccc;
167 |   height:1px;
168 |   margin:0 0 24px;
169 | }
170 | 
171 | /* Images */
172 | 
173 | img {
174 |   position: relative;
175 |   margin: 0 auto;
176 |   height: auto;
177 |   max-width: 100%;
178 |   padding: 0px;
179 |   margin: 0px 0 0px 0;
180 |   border: 0px solid #ccc;
181 | }
182 | 
183 | p img {
184 |   display: inline;
185 |   margin: 0;
186 |   padding: 0;
187 |   vertical-align: middle;
188 |   text-align: center;
189 |   border: none;
190 | }
191 | 
192 | figure {
193 |   border: 1px solid #ccc;
194 |   background: #FFFFFF;
195 | }
196 | 
197 | figcaption {
198 |   font-size: 12px;
199 |   background: #FFFFFF;
200 |   line-height: 150%;
201 |   margin-right: 1%;
202 |   margin-left: 1%;
203 | }
204 | 
205 | /* Code blocks */
206 | 
207 | code, pre {
208 |   font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
209 |   color:#000;
210 |   background:#e7e7e7;
211 |   font-size: 12px;
212 | }
213 | 
214 | pre {
215 |   padding: 4px 12px;
216 |   background: #FDFEFB;
217 |   border-radius:4px;
218 |   border:1px solid #D7D8C8;
219 |   overflow: auto;
220 |   overflow-y: hidden;
221 |   margin-bottom: 32px;
222 | }
223 | 
224 | 
225 | /* Tables */
226 | 
227 | table {
228 |   width: 100%;
229 |   border: 1px solid #ccc;
230 |   margin-bottom: 32px;
231 |   text-align: left;
232 |  }
233 | 
234 | table.figure_controls {
235 |   font-size: 12px;
236 |   line-height: 100%;
237 |   margin-bottom: 0px;
238 | }
239 | 
240 | th {
241 |   font-family: 'Arvo', Helvetica, Arial, sans-serif;
242 |   font-size: 18px;
243 |   font-weight: normal;
244 |   padding: 10px;
245 |   background: #232323;
246 |   color: #FDFEFB;
247 |  }
248 | 
249 | td {
250 |   padding: 0px;
251 |   background: #eee;
252 |  }
253 | 
254 | 
255 | /* Wrapper */
256 | .wrapper {
257 |   width:960px;
258 | }
259 | 
260 | 
261 | /* Header */
262 | 
263 | header {
264 |   background-color: #474747;
265 |   color: #FDFDFB;
266 |   width:170px;
267 |   float:left;
268 |   position:fixed;
269 |   border: 1px solid #000;
270 |   -webkit-border-top-right-radius: 4px;
271 |   -webkit-border-bottom-right-radius: 4px;
272 |   -moz-border-radius-topright: 4px;
273 |   -moz-border-radius-bottomright: 4px;
274 |   border-top-right-radius: 4px;
275 |   border-bottom-right-radius: 4px;
276 |   padding: 34px 25px 22px 50px;
277 |   margin: 30px 25px 0 0;
278 |   -webkit-font-smoothing: antialiased;
279 | }
280 | 
281 | p.header {
282 |   font-size: 16px;
283 | }
284 | 
285 | h1.header {
286 |   font-family: Arvo, sans-serif;
287 |   font-size: 30px;
288 |   font-weight: 300;
289 |   line-height: 1.3em;
290 |   border-bottom: none;
291 |   margin-top: 0;
292 | }
293 | 
294 | 
295 | h1.header, a.header, a.name, header a{
296 |   color: #fff;
297 | }
298 | 
299 | a.header {
300 |   text-decoration: underline;
301 | }
302 | 
303 | a.name {
304 |   white-space: nowrap;
305 | }
306 | 
307 | header ul {
308 |   list-style:none;
309 |   padding:0;
310 | }
311 | 
312 | header li {
313 |   list-style-type: none;
314 |   width:135px;
315 |   height:15px;
316 |   margin-bottom: 12px;
317 |   line-height: 1em;
318 |   padding: 6px 6px 6px 7px;
319 |   background: #1100AF;
320 |   background: -moz-linear-gradient(top, #1100AF 0%, #110082 100%);
321 |   background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8f8f8), color-stop(100%, #dddddd));
322 |   background: -webkit-linear-gradient(top, #1100AF 0%,#110082 100%);
323 |   background: -o-linear-gradient(top, #1100AF 0%,#110082 100%);
324 |   background: -ms-linear-gradient(top, #1100AF 0%,#110082 100%);
325 |   background: linear-gradient(top, #1100AF 0%,#110082 100%);
326 |   border-radius:4px;
327 |   border:1px solid #0D0D0D;
328 |   -webkit-box-shadow: inset 0px 1px 1px 0 rgba(38,2,233, 1);
329 |   box-shadow: inset 0px 1px 1px 0 rgba(38,2,233, 1);
330 | }
331 | 
332 | header li:hover {
333 |   background: #1D00C3;
334 |   background: -moz-linear-gradient(top, #1D00C3 0%, #190195 100%);
335 |   background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8f8f8), color-stop(100%,#dddddd));
336 |   background: -webkit-linear-gradient(top, #1D00C3 0%,#190195 100%);
337 |   background: -o-linear-gradient(top, #1D00C3 0%,#190195 100%);
338 |   background: -ms-linear-gradient(top, #1D00C3 0%,#190195 100%);
339 |   background: linear-gradient(top, #1D00C3 0%,#190195 100%);
340 | }
341 | 
342 | a.buttons {
343 |   -webkit-font-smoothing: antialiased;
344 |   background: url(../images/arrow-down.png) no-repeat;
345 |   font-weight: normal;
346 |   text-shadow: rgba(0, 0, 0, 0.4) 0 -1px 0;
347 |   padding: 2px 2px 2px 22px;
348 |   height: 30px;
349 | }
350 | 
351 | a.github {
352 |   background: url(../images/octocat-small.png) no-repeat 1px;
353 | }
354 | 
355 | a.pdf {
356 |   background: url(../images/pdf.png) no-repeat 1px;
357 | }
358 | 
359 | a.buttons:hover {
360 |   color: #fff;
361 |   text-decoration: none;
362 | }
363 | 
364 | 
365 | /* Section - for main page content */
366 | 
367 | section {
368 |   width:650px;
369 |   float:right;
370 |   padding-bottom:50px;
371 | }
372 | 
373 | 
374 | /* Footer */
375 | 
376 | footer {
377 |   width:170px;
378 |   float:left;
379 |   position:fixed;
380 |   bottom:10px;
381 |   padding-left: 50px;
382 | }
383 | 
384 | @media print, screen and (max-width: 960px) {
385 |   div.wrapper {
386 |     width:auto;
387 |     margin:0;
388 |   }
389 | 
390 |   header, section, footer {
391 |     float:none;
392 |     position:static;
393 |     width:auto;
394 |   }
395 | 
396 |   footer {
397 |     border-top: 1px solid #ccc;
398 |     margin:0 84px 0 50px;
399 |     padding:0;
400 |   }
401 | 
402 |   header {
403 |     padding-right:320px;
404 |   }
405 | 
406 |   section {
407 |     padding:20px 84px 20px 50px;
408 |     margin:0 0 20px;
409 |   }
410 | 
411 |   header a small {
412 |     display:inline;
413 |   }
414 | 
415 |   header ul {
416 |     position:absolute;
417 |     right:130px;
418 |     top:84px;
419 |   }
420 | }
421 | 
422 | @media print, screen and (max-width: 720px) {
423 |   body {
424 |     word-wrap:break-word;
425 |   }
426 | 
427 |   header {
428 |     padding:10px 20px 0;
429 |     margin-right: 0;
430 |   }
431 | 
432 |   section {
433 |     padding:10px 0 10px 20px;
434 |     margin:0 0 30px;
435 |   }
436 | 
437 |   footer {
438 |     margin: 0 0 0 30px;
439 |   }
440 | 
441 |   header ul, header p.view {
442 |     position:static;
443 |   }
444 | }
445 | 
446 | @media print, screen and (max-width: 480px) {
447 |   header ul li.download {
448 |     display:none;
449 |   }
450 | 
451 |   footer {
452 |     margin: 0 0 0 20px;
453 |   }
454 | 
455 |   footer a{
456 |     display:block;
457 |   }
458 | }
459 | 
460 | @media print {
461 |   body {
462 |     padding:0.4in;
463 |     font-size:12pt;
464 |     color:#444;
465 |   }
466 | }
467 | 
468 | .onlyprint {display: none;}
469 | @media print {
470 |   .onlyprint {display: block;}
471 | }
472 | 


--------------------------------------------------------------------------------
/javascript/Minimal-MathJax/jax/output/CommonHTML/autoload/mtable.js:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *  /MathJax/jax/output/CommonHTML/autoload/mtable.js
 3 |  *
 4 |  *  Copyright (c) 2009-2016 The MathJax Consortium
 5 |  *
 6 |  *  Licensed under the Apache License, Version 2.0 (the "License");
 7 |  *  you may not use this file except in compliance with the License.
 8 |  *  You may obtain a copy of the License at
 9 |  *
10 |  *      http://www.apache.org/licenses/LICENSE-2.0
11 |  *
12 |  *  Unless required by applicable law or agreed to in writing, software
13 |  *  distributed under the License is distributed on an "AS IS" BASIS,
14 |  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 |  *  See the License for the specific language governing permissions and
16 |  *  limitations under the License.
17 |  */
18 | 
19 | MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function(){var g="2.7.0";var b=MathJax.ElementJax.mml,a=MathJax.Hub.config,e=MathJax.OutputJax.CommonHTML,d=MathJax.Hub.SplitList;var c=-1,f=1000000;b.mtable.Augment({toCommonHTML:function(l){var m={rows:[],labels:[],labeled:false};l=this.CHTMLdefaultNode(l,{noBBox:true,childOptions:m});var k=e.Element("mjx-table");while(l.firstChild){k.appendChild(l.firstChild)}l.appendChild(k);var h=this.getValues("columnalign","rowalign","columnspacing","rowspacing","columnwidth","equalcolumns","equalrows","columnlines","rowlines","frame","framespacing","align","width","side","minlabelspacing","useHeight");var j=e.TEX.min_rule_thickness/e.em;m.t=e.Px(j*this.CHTML.scale,1);this.CHTMLgetBoxSizes(h,m);this.CHTMLgetAttributes(h,m);this.CHTMLadjustCells(h,m);if(h.frame){k.style.border=m.t+" "+h.frame}this.CHTMLalignV(h,m,l);this.CHTMLcolumnWidths(h,m,l);this.CHTMLstretchCells(h,m);if(m.labeled){this.CHTMLaddLabels(h,m,l,k)}var i=this.CHTML;i.w=i.r=m.R;i.h=i.t=m.T-m.B;i.d=i.b=m.B;if(!h.frame&&!i.pwidth){l.style.padding="0 "+e.Em(1/6);i.L=i.R=1/6}this.CHTMLhandleSpace(l);this.CHTMLhandleBBox(l);this.CHTMLhandleColor(l);return l},CHTMLgetBoxSizes:function(z,k){var r=e.FONTDATA.lineH*z.useHeight,t=e.FONTDATA.lineD*z.useHeight;var y=[],h=[],l=[],w=-1,q,n;for(q=0,n=this.data.length;qw){w=p}}var u=B.data[p-A].CHTML;if(u.h>y[q]){y[q]=u.h}if(u.d>h[q]){h[q]=u.d}if(u.w>l[p]){l[p]=u.w}}}if(z.equalrows){k.HD=true;var x=Math.max.apply(Math,y);var o=Math.max.apply(Math,h);for(q=0,n=y.length;qt||m<=0){m=null}}else{w.align=this.defaults.align}var p=0,l=0,u=e.TEX.axis_height;if(w.fspace){p+=k.FSPACE[1]}if(w.frame){p+=2/e.em;l+=1/e.em}for(var q=0;q=m){l+=r+s+x[q]}}}if(!m){l=({top:p,bottom:0,center:p/2,baseline:p/2,axis:p/2-u})[w.align]}if(l){o.style.verticalAlign=e.Em(-l)}k.T=p;k.B=l},CHTMLcolumnWidths:function(l,r,A){var I=r.CWIDTH,K=r.CSPACE,u=r.J,F;var G=0,n=false,y=l.width.match(/%$/);var H,B,v;if(l.width!=="auto"&&!y){G=Math.max(0,this.CHTMLlength2em(l.width,r.R));n=true}if(l.equalcolumns){if(y){var z=e.Percent(1/(u+1));for(F=0;F<=u;F++){I[F]=z}}else{v=Math.max.apply(Math,r.W);if(l.width!=="auto"){var q=(l.fspace?r.FSPACE[0]+(l.frame?2/e.em:0):0);for(F=0;F<=u;F++){q+=K[F]}v=Math.max((G-q)/(u+1),v)}v=e.Em(v);for(F=0;F<=u;F++){I[F]=v}}n=true}var E=0;if(l.fspace){E=r.FSPACE[0]}var s=[],D=[],h=[],o=[];var t=r.rows[0];for(F=0;F<=u;F++){o[F]=r.W[F];if(I[F]==="auto"){s.push(F)}else{if(I[F]==="fit"){D.push(F)}else{if(I[F].match(/%$/)){h.push(F)}else{o[F]=this.CHTMLlength2em(I[F],o[F])}}}E+=o[F]+K[F];if(t[F]){t[F].style.width=e.Em(o[F])}}if(l.frame){E+=2/e.em}var C=(D.length>0);if(n){if(y){for(F=0;F<=u;F++){cell=t[F].style;if(I[F]==="auto"&&!C){cell.width=""}else{if(I[F]==="fit"){cell.width=""}else{if(I[F].match(/%$/)){cell.width=I[F]}else{cell.minWidth=cell.maxWidth=cell.width}}}}}else{if(G>E){var k=0;for(H=0,B=h.length;HE&&D.length){var x=(G-E)/D.length;for(H=0,B=D.length;Ht*z){z=t*p}z+=y;z*=t;D+=z}else{D+=p-t*z+n;z-=t*n;z*=-t}}var o=e.addElement(w,"mjx-box",{style:{width:"100%","text-align":q.indentalign}});o.appendChild(B);var C=e.Element("mjx-itable");B.style.display="inline-table";if(!B.style.width){B.style.width="auto"}C.style.verticalAlign="top";B.style.verticalAlign=e.Em(k.T-k.B-k.H[0]);w.style.verticalAlign="";if(z){if(q.indentalign===b.INDENTALIGN.CENTER){B.style.marginLeft=e.Em(z);B.style.marginRight=e.Em(-z)}else{var u="margin"+(q.indentalign===b.INDENTALIGN.RIGHT?"Right":"Left");B.style[u]=e.Em(z)}}if(k.CALIGN[c]==="left"){w.insertBefore(C,o);C.style.marginRight=e.Em(-k.W[c]-y);if(y){C.style.marginLeft=e.Em(y)}}else{w.appendChild(C);C.style.marginLeft=e.Em(-k.W[c]+y)}var l=k.labels,j=0;if(h.fspace){j=k.FSPACE[0]+(h.frame?1/e.em:0)}for(var x=0,v=l.length;x1){h.h*=k;h.d*=k}}}else{h.w=Math.max(h.w,this.CHTMLlength2em(j,h.w))}}}}return l}});MathJax.Hub.Startup.signal.Post("CommonHTML mtable Ready");MathJax.Ajax.loadComplete(e.autoloadDir+"/mtable.js")});
20 | 


--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
  1 | 
  2 | 
 10 | 
 11 |   
 12 |     
 13 |     
 14 |     
 15 |     
 16 |     
 17 |     
 18 |     
 19 |     
 20 |     publication_template by AndrewGYork
 21 | 
 22 |     
 23 |     
 24 |     
 27 |     
 30 |     
 31 |     
 32 |     
 33 |     
 34 |     
 35 |     
 36 |     
 37 |   
 38 |   
 39 |     
40 |
41 |

Publication-template

42 | 47 |

This project is maintained by AndrewGYork

48 |
49 | 54 |
55 |

Technical note

56 |

A template for writing scientific papers

57 |

Andrew G. York1*

58 |

1Calico Life Sciences LLC, South San Francisco, CA 94080, USA

59 |

*Permanent email: andrew.g.york+template@gmail.com

60 |

A template for formatting scientific papers using HTML, CSS, and Javascript.

61 |

doi: 10.5281/zenodo.231328

62 | 63 |

64 | Note that this is a limited PDF or print version; animated and interactive figures are disabled. For the full version of this article, please visit https://andrewgyork.github.io/publication_template

65 | 66 | 68 | 69 |

70 | Examples

71 |

Scientific papers from my lab which use this template:

72 | 76 | 77 |

78 | Introduction

79 |

80 | Version control tools like Git, Github, and Github Pages are great for developing, sharing, and documenting code. Why not for science, too? Consider the following workflow: 81 |

82 |
    83 |
  • Discover or invent something. This is supposed to be the hard part. For me, this invariably involves writing wild and wooly exploratory Python code, which goes in a private Github repository, if I'm behaving myself.
  • 84 |
  • Collect results into intelligible figures. I usually do this via Python code, which also belongs in a private Github repository.
  • 85 |
  • Write explanatory text. I've always found this step is a mess. No set of tools I've tried (e.g. Word, LaTeX, Google Docs) fit my workflow (e.g. collaboration, version control, formatting). An HTML/CSS template with math typesetting, code syntax highlighting, and automatic reference listing (via Javascript) fits me perfectly - and allows collaborative writing via a private Github repo!
  • 86 |
  • Circulate preprints. Existing options like email, arXiv, or bioR\(\chi\)iv are great, but it's 2016 - why are we using PDFs? The web makes sharing data, code, animations, and interactive figures straightforward. If the code, data, and HTML are already on Github, then sharing a preprint is as simple as activating Github Pages.
  • 87 |
  • Submit for peer review. Historically, a huge mess. Much has been written about the unfortunate state of academic publishing. Why not cut out the middleman and solicit review directly from qualified colleagues? (A much longer discussion, and beyond the scope of this document - but I want to try it.)
  • 88 |
  • Archive for posterity. I want my work to exist after I die, in an open, available and citable form. Github, Github Pages, and Zenodo address these problems cleanly (although there's room for improvement).
  • 89 |
90 | 91 |

I've been careful about dependencies; Git and Github are helpful, but not required. You can download a .zip of this repository, edit index.html with a text editor, and view the results with a web browser. I avoid Javascript which loads via the web, so you can work offline. My figure generation code depends on the Scipy stack, but this is easy to swap out; all you have to do is generate static images, put them in the proper folder, and link to them from index.html. You can generate your static images using any tool you choose. If you happen to use code to generate your figures, though, great! You can put this code in the figure_generation directory, enabling version control and simple reproduction of your results by others.

92 | 93 |

Writing directly in HTML/CSS/Javascript isn't for everyone. It's fiddly, has a learning curve, and requires obsessive attention to detail. In my experience, writing a scientific publication already fits this description, so it's a small price to pay, and one I'm already paying.

94 | 95 |

96 | Math typesetting

97 | 98 |

I use MathJax for typesetting. I want to be able to work offline, but a local MathJax copy is huge, so I followed the recipe described by Tibor Simon to make a minimal version. The recipe's pretty cool; you delete most of MathJax, try to load it, watch your browser console, and copy files back one at a time until your browser stops complaining. I only support LaTex input; if you want more, you can follow Tibor's recipe and replace the contents of /javascript/Minimal-MathJax/.

99 | 100 |

Examples of paragraph equations:

101 |
102 | $$\begin{equation}\prod_{\substack{1\le i \le n\\ 1\le j \le m}}M_{i,j} \end{equation}$$ 103 | $$\begin{equation}L' = {L}{\sqrt{1-\frac{v^2}{c^2}}}\end{equation} $$ 104 | $$\begin{align} B'&=-\nabla \times E,\\E'&=\nabla \times B - 4\pi j,\end{align} $$ 105 | $$\begin{equation}x = a_0 + \frac{1}{a_1 + \frac{1}{a_2 + \frac{1}{a_3 + a_4}}}\end{equation} $$ 106 |
107 | 108 | Example of inline math: \(\frac{a^3}{b}\) 109 | 110 |

111 | Code syntax highlighting

112 | 113 |

Prism.js makes HTML syntax highlighting easy. I only included Python highlighting; if you want more, download a freshly customized version from prismjs.com and replace /javascript/python-highlighting/prims.js.

114 | 115 |

Example Python syntax highlighting:

116 |
import antigravity
117 | antigravity.fly()
118 | print("Whee!")
119 | 
120 | 121 |

122 | Automatic reference list

123 | 124 |

An example of how to include a citation: 125 | 126 | [Eswaramoorthy2014]. 127 | 128 | If you inspect the HTML, you'll see that inserting the citation is super clumsy, but at least you don't have to keep track of uniqueness, ordering, etc.

129 | 130 |

131 | Static and interactive figures

132 | 133 |

Version control isn't a great way to organize images, but you can get away with it if there aren't too many, and they don't change too often. Figure 1 uses an image stored in the local repository.

134 | 135 |
136 | Figure 1 138 |
Figure 1: A static figure using a local image. This image was generated by /figure_generation/figure_1.py.
139 |

140 | 141 |

Figure 2 is interactive; the images are pre-computed (by Python code, in this case) and stored in the local repository. Simple javascript changes the figure's img.src when the figure's select changes. The images are small and don't change much, so it's not horrible to store them in this repository. A similar figure with substantially more images would stretch the limits of this approach.

142 | 143 |
144 | Figure 2 146 | 147 | 148 | 159 | 160 |
Period: (change this to adjust the period of the sinusoidal plot)
161 |
Figure 2: An interactive figure using local images. This figure's images were pre-generated by /figure_generation/figure_2.py, and switched dynamically by /javascript/update_figures.js.
162 |

163 | 164 |

Interactive figures can potentially contain huge numbers of images, which are clumsy to store in a version-controlled repository. My current preferred solution is to store such images in an auxiliary location. During the writing process, we generate these images automatically using the figure generation code and store them locally. Once the paper is ready to publish, we host a copy of these images in a second auxiliary repository. The figure update Javascript finds the appropriate image source for us.

165 | 166 |
167 | Figure 3 169 | 170 | 171 | 182 | 183 |
Period: (change this to adjust the period of the sinusoidal plot)
184 |
Figure 3: An interactive figure using images that aren't stored in this repository. This figure's images were pre-generated by /figure_generation/figure_3.py, and switched dynamically by /javascript/update_figures.js.
185 |

186 | 187 | 189 | 190 |
191 | 196 |
197 | 198 | 199 | 200 | 201 | -------------------------------------------------------------------------------- /images/figure_2/period_000009.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 19 | 20 | 21 | 22 | 28 | 29 | 30 | 121 | 122 | 123 | 126 | 127 | 128 | 131 | 132 | 133 | 136 | 137 | 138 | 141 | 142 | 143 | 144 | 145 | 148 | 149 | 150 | 151 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 447 | 448 | 449 | 450 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 477 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | -------------------------------------------------------------------------------- /images/figure_2/period_000008.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 19 | 20 | 21 | 22 | 28 | 29 | 30 | 133 | 134 | 135 | 138 | 139 | 140 | 143 | 144 | 145 | 148 | 149 | 150 | 153 | 154 | 155 | 156 | 157 | 160 | 161 | 162 | 163 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 459 | 460 | 461 | 462 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 489 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | -------------------------------------------------------------------------------- /images/figure_2/period_000007.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 19 | 20 | 21 | 22 | 28 | 29 | 30 | 145 | 146 | 147 | 150 | 151 | 152 | 155 | 156 | 157 | 160 | 161 | 162 | 165 | 166 | 167 | 168 | 169 | 172 | 173 | 174 | 175 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 471 | 472 | 473 | 474 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 501 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | -------------------------------------------------------------------------------- /images/figure_3/period_000004.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 20 | 21 | 22 | 23 | 30 | 31 | 32 | 197 | 198 | 199 | 202 | 203 | 204 | 207 | 208 | 209 | 212 | 213 | 214 | 217 | 218 | 219 | 220 | 221 | 224 | 225 | 226 | 227 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 526 | 527 | 528 | 529 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 557 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | -------------------------------------------------------------------------------- /images/figure_2/period_000006.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 19 | 20 | 21 | 22 | 28 | 29 | 30 | 153 | 154 | 155 | 158 | 159 | 160 | 163 | 164 | 165 | 168 | 169 | 170 | 173 | 174 | 175 | 176 | 177 | 180 | 181 | 182 | 183 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 479 | 480 | 481 | 482 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 509 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | -------------------------------------------------------------------------------- /images/figure_2/period_000005.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 19 | 20 | 21 | 22 | 28 | 29 | 30 | 175 | 176 | 177 | 180 | 181 | 182 | 185 | 186 | 187 | 190 | 191 | 192 | 195 | 196 | 197 | 198 | 199 | 202 | 203 | 204 | 205 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 501 | 502 | 503 | 504 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 531 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | -------------------------------------------------------------------------------- /images/figure_2/period_000004.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 19 | 20 | 21 | 22 | 28 | 29 | 30 | 195 | 196 | 197 | 200 | 201 | 202 | 205 | 206 | 207 | 210 | 211 | 212 | 215 | 216 | 217 | 218 | 219 | 222 | 223 | 224 | 225 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 521 | 522 | 523 | 524 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 551 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | --------------------------------------------------------------------------------