1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6 ><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
7 /><meta name="generator" content="pandoc"
8 /><meta name="author" content="Sam Smith"
9 /><meta name="author" content="Jen Jones"
10 /><meta name="date" content="July 15, 2006"
11 /><!-- configuration parameters -->
12<meta name="defaultView" content="slideshow" />
13<meta name="controlVis" content="hidden" />
14<style type="text/css" media="projection" id="slideProj">
15/* Do not edit or override these styles! The system will likely break if you do. */
17div#header, div#footer, div#controls, .slide {position: absolute;}
18html>body div#header, html>body div#footer,
19 html>body div#controls, html>body .slide {position: fixed;}
20.handout {display: none;}
21.layout {display: block;}
22.slide, .hideme, .incremental {visibility: hidden;}
23#slide0 {visibility: visible;}
25/* The following styles size, place, and layer the slide components.
26 Edit these if you want to change the overall slide layout.
27 The commented lines can be uncommented (and modified, if necessary)
28 to help you with the rearrangement process. */
30/* target = 1024x768 */
32div#header, div#footer, .slide {width: 100%; top: 0; left: 0;}
33div#header {top: 0; height: 3em; z-index: 1;}
34div#footer {top: auto; bottom: 0; height: 2.5em; z-index: 5;}
35.slide {top: 0; width: 92%; padding: 3.5em 4% 4%; z-index: 2; list-style: none;}
36div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;}
37div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
39#currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em; z-index: 10;}
40html>body #currentSlide {position: fixed;}
43div#header {background: #FCC;}
44div#footer {background: #CCF;}
45div#controls {background: #BBD;}
46div#currentSlide {background: #FFC;}
49/* Following are the presentation styles -- edit away! */
51body {background: #FFF url(bodybg.gif) -16px 0 no-repeat; color: #000; font-size: 2em;}
52:link, :visited {text-decoration: none; color: #00C;}
53#controls :active {color: #88A !important;}
54#controls :focus {outline: 1px dotted #227;}
55h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;}
56ul, pre {margin: 0; line-height: 1em;}
57html, body {margin: 0; padding: 0;}
59blockquote, q {font-style: italic;}
60blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em; text-align: center; font-size: 1em;}
61blockquote p {margin: 0;}
62blockquote i {font-style: normal;}
63blockquote b {display: block; margin-top: 0.5em; font-weight: normal; font-size: smaller; font-style: normal;}
64blockquote b i {font-style: italic;}
66kbd {font-weight: bold; font-size: 1em;}
67sup {font-size: smaller; line-height: 1px;}
69.slide code {padding: 2px 0.25em; font-weight: bold; color: #533;}
70.slide code.bad, code del {color: red;}
71.slide code.old {color: silver;}
72.slide pre {padding: 0; margin: 0.25em 0 0.5em 0.5em; color: #533; font-size: 90%;}
73.slide pre code {display: block;}
74.slide ul {margin-left: 5%; margin-right: 7%; list-style: disc;}
75.slide li {margin-top: 0.75em; margin-right: 0;}
76.slide ul ul {line-height: 1;}
77.slide ul ul li {margin: .2em; font-size: 85%; list-style: square;}
78.slide img.leader {display: block; margin: 0 auto;}
80div#header, div#footer {background: #005; color: #AAB;
81 font-family: Verdana, Helvetica, sans-serif;}
82div#header {background: #005 url(bodybg.gif) -16px 0 no-repeat;
84div#footer {font-size: 0.5em; font-weight: bold; padding: 1em 0;}
85#footer h1, #footer h2 {display: block; padding: 0 1em;}
86#footer h2 {font-style: italic;}
88div.long {font-size: 0.75em;}
89.slide h1 {position: absolute; top: 0.7em; left: 87px; z-index: 1;
90 margin: 0; padding: 0.3em 0 0 50px; white-space: nowrap;
91 font: bold 150%/1em Helvetica, sans-serif; text-transform: capitalize;
92 color: #DDE; background: #005;}
93.slide h3 {font-size: 130%;}
94h1 abbr {font-variant: small-caps;}
96div#controls {position: absolute; left: 50%; bottom: 0;
98 text-align: right; font: bold 0.9em Verdana, Helvetica, sans-serif;}
99html>body div#controls {position: fixed; padding: 0 0 1em 0;
101div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
102 margin: 0; padding: 0;}
103#controls #navLinks a {padding: 0; margin: 0 0.5em;
104 background: #005; border: none; color: #779;
106#controls #navList {height: 1em;}
107#controls #navList #jumplist {position: absolute; bottom: 0; right: 0; background: #DDD; color: #227;}
109#currentSlide {text-align: center; font-size: 0.5em; color: #449;}
111#slide0 {padding-top: 3.5em; font-size: 90%;}
112#slide0 h1 {position: static; margin: 1em 0 0; padding: 0;
113 font: bold 2em Helvetica, sans-serif; white-space: normal;
114 color: #000; background: transparent;}
115#slide0 h2 {font: bold italic 1em Helvetica, sans-serif; margin: 0.25em;}
116#slide0 h3 {margin-top: 1.5em; font-size: 1.5em;}
117#slide0 h4 {margin-top: 0; font-size: 1em;}
119ul.urls {list-style: none; display: inline; margin: 0;}
120.urls li {display: inline; margin: 0;}
121.note {display: none;}
122.external {border-bottom: 1px dotted gray;}
123html>body .external {border-bottom: none;}
124.external:after {content: " \274F"; font-size: smaller; color: #77B;}
126.incremental, .incremental *, .incremental *:after {color: #DDE; visibility: visible;}
127img.incremental {visibility: hidden;}
128.slide .current {color: #B02;}
133li:after {content: " [" attr(class) "]"; color: #F88;}
136<style type="text/css" media="projection" id="operaFix">
137/* DO NOT CHANGE THESE unless you really want to break Opera Show */
139 visibility: visible !important;
140 position: static !important;
141 page-break-before: always;
143#slide0 {page-break-before: avoid;}
146<style type="text/css" media="screen" id="outlineStyle">
147/* don't change this unless you want the layout stuff to show up in the outline view! */
149.layout div, #footer *, #controlForm * {display: none;}
150#footer, #controls, #controlForm, #navLinks, #toggle {
151 display: block; visibility: visible; margin: 0; padding: 0;}
152#toggle {float: right; padding: 0.5em;}
153html>body #toggle {position: fixed; top: 0; right: 0;}
155/* making the outline look pretty-ish */
157#slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;}
158#slide0 h1 {padding-top: 1.5em;}
159.slide h1 {margin: 1.5em 0 0; padding-top: 0.25em;
160 border-top: 1px solid #888; border-bottom: 1px solid #AAA;}
161#toggle {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;}
164<style type="text/css" media="print" id="slidePrint">
165/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */
166.slide, ul {page-break-inside: avoid; visibility: visible !important;}
167h1 {page-break-after: avoid;}
169body {font-size: 12pt; background: white;}
172#slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;}
173#slide0 h3 {margin: 0; padding: 0;}
174#slide0 h4 {margin: 0 0 0.5em; padding: 0;}
175#slide0 {margin-bottom: 3em;}
177h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;}
178.extra {background: transparent !important;}
179div.extra, pre.extra, .example {font-size: 10pt; color: #333;}
180ul.extra a {font-weight: bold;}
181p.example {display: none;}
183#header {display: none;}
184#footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;}
185#footer h2, #controls {display: none;}
187/* The following rule keeps the layout stuff out of print. Remove at your own risk! */
188.layout, .layout * {display: none !important;}
191<script type="text/javascript">
192// S5 v1.1 slides.js -- released into the Public Domain
194// Please see http://www.meyerweb.com/eric/tools/s5/credits.html for information
195// about all the wonderful and talented contributors to this code!
204var defaultView = 'slideshow';
205var controlVis = 'visible';
207var isIE = navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('Opera') < 1 ? 1 : 0;
208var isOp = navigator.userAgent.indexOf('Opera') > -1 ? 1 : 0;
209var isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0;
211function hasClass(object, className) {
212 if (!object.className) return false;
213 return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1);
216function hasValue(object, value) {
217 if (!object) return false;
218 return (object.search('(^|\\s)' + value + '(\\s|$)') != -1);
221function removeClass(object,className) {
223 object.className = object.className.replace(new RegExp('(^|\\s)'+className+'(\\s|$)'), RegExp.$1+RegExp.$2);
226function addClass(object,className) {
227 if (!object || hasClass(object, className)) return;
228 if (object.className) {
229 object.className += ' '+className;
231 object.className = className;
235function GetElementsWithClassName(elementName,className) {
236 var allElements = document.getElementsByTagName(elementName);
237 var elemColl = new Array();
238 for (var i = 0; i< allElements.length; i++) {
239 if (hasClass(allElements[i], className)) {
240 elemColl[elemColl.length] = allElements[i];
246function isParentOrSelf(element, id) {
247 if (element == null || element.nodeName=='BODY') return false;
248 else if (element.id == id) return true;
249 else return isParentOrSelf(element.parentNode, id);
252function nodeValue(node) {
254 if (node.nodeType == 1) {
255 var children = node.childNodes;
256 for (var i = 0; i < children.length; ++i) {
257 result += nodeValue(children[i]);
260 else if (node.nodeType == 3) {
261 result = node.nodeValue;
266function slideLabel() {
267 var slideColl = GetElementsWithClassName('*','slide');
268 var list = document.getElementById('jumplist');
269 smax = slideColl.length;
270 for (var n = 0; n < smax; n++) {
271 var obj = slideColl[n];
273 var did = 'slide' + n.toString();
274 obj.setAttribute('id',did);
278 var menu = obj.firstChild;
279 if (!menu) continue; // to cope with empty slides
280 while (menu && menu.nodeType == 3) {
281 menu = menu.nextSibling;
283 if (!menu) continue; // to cope with slides with only text nodes
285 var menunodes = menu.childNodes;
286 for (var o = 0; o < menunodes.length; o++) {
287 otext += nodeValue(menunodes[o]);
289 list.options[list.length] = new Option(n + ' : ' + otext, n);
293function currentSlide() {
295 if (document.getElementById) {
296 cs = document.getElementById('currentSlide');
298 cs = document.currentSlide;
300 cs.innerHTML = '<span id="csHere">' + snum + '<\/span> ' +
301 '<span id="csSep">\/<\/span> ' +
302 '<span id="csTotal">' + (smax-1) + '<\/span>';
304 cs.style.visibility = 'hidden';
306 cs.style.visibility = 'visible';
311 if (document.getElementById('slideProj').disabled || step == 0) return;
312 var jl = document.getElementById('jumplist');
313 var cid = 'slide' + snum;
314 var ce = document.getElementById(cid);
315 if (incrementals[snum].length > 0) {
316 for (var i = 0; i < incrementals[snum].length; i++) {
317 removeClass(incrementals[snum][i], 'current');
318 removeClass(incrementals[snum][i], 'incremental');
324 if (snum > lmax) snum = lmax;
325 if (snum < 0) snum = 0;
327 snum = parseInt(jl.value);
328 var nid = 'slide' + snum;
329 var ne = document.getElementById(nid);
331 ne = document.getElementById('slide0');
334 if (step < 0) {incpos = incrementals[snum].length} else {incpos = 0;}
335 if (incrementals[snum].length > 0 && incpos == 0) {
336 for (var i = 0; i < incrementals[snum].length; i++) {
337 if (hasClass(incrementals[snum][i], 'current'))
340 addClass(incrementals[snum][i], 'incremental');
343 if (incrementals[snum].length > 0 && incpos > 0)
344 addClass(incrementals[snum][incpos - 1], 'current');
345 ce.style.visibility = 'hidden';
346 ne.style.visibility = 'visible';
347 jl.selectedIndex = snum;
352function goTo(target) {
353 if (target >= smax || target == snum) return;
357function subgo(step) {
359 removeClass(incrementals[snum][incpos - 1],'current');
360 removeClass(incrementals[snum][incpos], 'incremental');
361 addClass(incrementals[snum][incpos],'current');
365 removeClass(incrementals[snum][incpos],'current');
366 addClass(incrementals[snum][incpos], 'incremental');
367 addClass(incrementals[snum][incpos - 1],'current');
372 var slideColl = GetElementsWithClassName('*','slide');
373 var slides = document.getElementById('slideProj');
374 var outline = document.getElementById('outlineStyle');
375 if (!slides.disabled) {
376 slides.disabled = true;
377 outline.disabled = false;
380 for (var n = 0; n < smax; n++) {
381 var slide = slideColl[n];
382 slide.style.visibility = 'visible';
385 slides.disabled = false;
386 outline.disabled = true;
389 for (var n = 0; n < smax; n++) {
390 var slide = slideColl[n];
391 slide.style.visibility = 'hidden';
393 slideColl[snum].style.visibility = 'visible';
397function showHide(action) {
398 var obj = GetElementsWithClassName('*','hideme')[0];
400 case 's': obj.style.visibility = 'visible'; break;
401 case 'h': obj.style.visibility = 'hidden'; break;
403 if (obj.style.visibility != 'visible') {
404 obj.style.visibility = 'visible';
406 obj.style.visibility = 'hidden';
412// 'keys' code adapted from MozPoint (http://mozpoint.mozdev.org/)
416 key.which = key.keyCode;
418 if (key.which == 84) {
426 if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return;
427 if (key.target && isParentOrSelf(key.target, 'controls')) return;
428 if(number != undef) {
433 case 34: // page down
436 if(number != undef) {
438 } else if (!incrementals[snum] || incpos >= incrementals[snum].length) {
447 if(number != undef) {
449 } else if (!incrementals[snum] || incpos <= 0) {
465 if (key.which < 48 || key.which > 57) {
468 if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return;
469 if (key.target && isParentOrSelf(key.target, 'controls')) return;
470 number = (((number != undef) ? number : 0) * 10) + (key.which - 48);
480 target = window.event.srcElement;
482 } else target = e.target;
483 if (target.getAttribute('href') != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object')) return true;
484 if (!e.which || e.which == 1) {
485 if (!incrementals[snum] || incpos >= incrementals[snum].length) {
493function findSlide(hash) {
495 var slides = GetElementsWithClassName('*','slide');
496 for (var i = 0; i < slides.length; i++) {
497 var targetSlide = slides[i];
498 if ( (targetSlide.name && targetSlide.name == hash)
499 || (targetSlide.id && targetSlide.id == hash) ) {
500 target = targetSlide;
504 while(target != null && target.nodeName != 'BODY') {
505 if (hasClass(target, 'slide')) {
506 return parseInt(target.id.slice(5));
508 target = target.parentNode;
513function slideJump() {
514 if (window.location.hash == null) return;
515 var sregex = /^#slide(\d+)$/;
516 var matches = sregex.exec(window.location.hash);
518 if (matches != null) {
519 dest = parseInt(matches[1]);
521 dest = findSlide(window.location.hash.slice(1));
528 var thisUri = window.location.href;
529 thisUri = thisUri.slice(0, thisUri.length - window.location.hash.length);
530 var aelements = document.getElementsByTagName('A');
531 for (var i = 0; i < aelements.length; i++) {
532 var a = aelements[i].href;
533 var slideID = a.match('\#slide[0-9]{1,2}');
534 if ((slideID) && (slideID[0].slice(0,1) == '#')) {
535 var dest = findSlide(slideID[0].slice(1));
537 if (aelements[i].addEventListener) {
538 aelements[i].addEventListener("click", new Function("e",
539 "if (document.getElementById('slideProj').disabled) return;" +
540 "go("+dest+" - snum); " +
541 "if (e.preventDefault) e.preventDefault();"), true);
542 } else if (aelements[i].attachEvent) {
543 aelements[i].attachEvent("onclick", new Function("",
544 "if (document.getElementById('slideProj').disabled) return;" +
545 "go("+dest+" - snum); " +
546 "event.returnValue = false;"));
553function externalLinks() {
554 if (!document.getElementsByTagName) return;
555 var anchors = document.getElementsByTagName('a');
556 for (var i=0; i<anchors.length; i++) {
557 var anchor = anchors[i];
558 if (anchor.getAttribute('href') && hasValue(anchor.rel, 'external')) {
559 anchor.target = '_blank';
560 addClass(anchor,'external');
565function createControls() {
566 var controlsDiv = document.getElementById("controls");
567 if (!controlsDiv) return;
568 var hider = ' onmouseover="showHide(\'s\');" onmouseout="showHide(\'h\');"';
569 var hideDiv, hideList = '';
570 if (controlVis == 'hidden') {
575 controlsDiv.innerHTML = '<form action="#" id="controlForm"' + hideDiv + '>' +
576 '<div id="navLinks">' +
577 '<a accesskey="t" id="toggle" href="javascript:toggle();">Ø<\/a>' +
578 '<a accesskey="z" id="prev" href="javascript:go(-1);">«<\/a>' +
579 '<a accesskey="x" id="next" href="javascript:go(1);">»<\/a>' +
580 '<div id="navList"' + hideList + '><select id="jumplist" onchange="go(\'j\');"><\/select><\/div>' +
582 if (controlVis == 'hidden') {
583 var hidden = document.getElementById('navLinks');
585 var hidden = document.getElementById('jumplist');
587 addClass(hidden,'hideme');
590function fontScale() { // causes layout problems in FireFox that get fixed if browser's Reload is used; same may be true of other Gecko-based browsers
591 if (!s5mode) return false;
592 var vScale = 22; // both yield 32 (after rounding) at 1024x768
593 var hScale = 32; // perhaps should auto-calculate based on theme's declared value?
594 if (window.innerHeight) {
595 var vSize = window.innerHeight;
596 var hSize = window.innerWidth;
597 } else if (document.documentElement.clientHeight) {
598 var vSize = document.documentElement.clientHeight;
599 var hSize = document.documentElement.clientWidth;
600 } else if (document.body.clientHeight) {
601 var vSize = document.body.clientHeight;
602 var hSize = document.body.clientWidth;
604 var vSize = 700; // assuming 1024x768, minus chrome and such
605 var hSize = 1024; // these do not account for kiosk mode or Opera Show
607 var newSize = Math.min(Math.round(vSize/vScale),Math.round(hSize/hScale));
608 fontSize(newSize + 'px');
609 if (isGe) { // hack to counter incremental reflow bugs
610 var obj = document.getElementsByTagName('body')[0];
611 obj.style.display = 'none';
612 obj.style.display = 'block';
616function fontSize(value) {
617 if (!(s5ss = document.getElementById('s5ss'))) {
619 document.getElementsByTagName('head')[0].appendChild(s5ss = document.createElement('style'));
620 s5ss.setAttribute('media','screen, projection');
621 s5ss.setAttribute('id','s5ss');
623 document.createStyleSheet();
624 document.s5ss = document.styleSheets[document.styleSheets.length - 1];
628 while (s5ss.lastChild) s5ss.removeChild(s5ss.lastChild);
629 s5ss.appendChild(document.createTextNode('body {font-size: ' + value + ' !important;}'));
631 document.s5ss.addRule('body','font-size: ' + value + ' !important;');
635function notOperaFix() {
636 slideCSS = document.getElementById('slideProj').href;
637 var slides = document.getElementById('slideProj');
638 var outline = document.getElementById('outlineStyle');
639 slides.setAttribute('media','screen');
640 outline.disabled = true;
642 slides.setAttribute('href','null'); // Gecko fix
643 slides.setAttribute('href',slideCSS); // Gecko fix
645 if (isIE && document.styleSheets && document.styleSheets[0]) {
646 document.styleSheets[0].addRule('img', 'behavior: url(ui/default/iepngfix.htc)');
647 document.styleSheets[0].addRule('div', 'behavior: url(ui/default/iepngfix.htc)');
648 document.styleSheets[0].addRule('.slide', 'behavior: url(ui/default/iepngfix.htc)');
652function getIncrementals(obj) {
653 var incrementals = new Array();
656 var children = obj.childNodes;
657 for (var i = 0; i < children.length; i++) {
658 var child = children[i];
659 if (hasClass(child, 'incremental')) {
660 if (child.nodeName == 'OL' || child.nodeName == 'UL') {
661 removeClass(child, 'incremental');
662 for (var j = 0; j < child.childNodes.length; j++) {
663 if (child.childNodes[j].nodeType == 1) {
664 addClass(child.childNodes[j], 'incremental');
668 incrementals[incrementals.length] = child;
669 removeClass(child,'incremental');
672 if (hasClass(child, 'show-first')) {
673 if (child.nodeName == 'OL' || child.nodeName == 'UL') {
674 removeClass(child, 'show-first');
675 if (child.childNodes[isGe].nodeType == 1) {
676 removeClass(child.childNodes[isGe], 'incremental');
679 incrementals[incrementals.length] = child;
682 incrementals = incrementals.concat(getIncrementals(child));
687function createIncrementals() {
688 var incrementals = new Array();
689 for (var i = 0; i < smax; i++) {
690 incrementals[i] = getIncrementals(document.getElementById('slide'+i));
695function defaultCheck() {
696 var allMetas = document.getElementsByTagName('meta');
697 for (var i = 0; i< allMetas.length; i++) {
698 if (allMetas[i].name == 'defaultView') {
699 defaultView = allMetas[i].content;
701 if (allMetas[i].name == 'controlVis') {
702 controlVis = allMetas[i].content;
707// Key trap fix, new function body for trap()
714 modifierKey = e.ctrlKey || e.altKey || e.metaKey;
719 return modifierKey || e.which == 0;
732 incrementals = createIncrementals();
734 if (defaultView == 'outline') {
737 document.onkeyup = keys;
738 document.onkeypress = trap;
739 document.onclick = clicker;
743window.onload = startup;
744window.onresize = function(){setTimeout('fontScale()', 50);}</script>
747 ><div class="layout">
748<div id="controls"></div>
749<div id="currentSlide"></div>
750<div id="header"></div>
754 ><h2 id="my-s5-document"
758<div class="presentation">
761<h1 id="my-s5-document-1"
763 ><h3 id="sam-smith-jen-jones"
764 >Sam Smith, Jen Jones</h3
765 ><h4 id="july-15-2006-1"
783 >$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$</li
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list