##// END OF EJS Templates
A new implementation of reveal converter with jinja templates.
damianavila -
Show More
@@ -0,0 +1,21 b''
1 {%- extends 'basichtml.tpl' -%}
2
3
4
5 {%- block any_cell scoped -%}
6 {%- if cell.metadata.slide_type in ['-', 'slide', 'subslide'] -%}
7 {{ super() }}
8 {%- elif cell.metadata.slide_type in ['skip'] -%}
9 <div style=display:none>
10 {{ super() }}
11 </div>
12 {%- elif cell.metadata.slide_type in ['notes'] -%}
13 <aside class="notes">
14 {{ super() }}
15 </aside>
16 {%- elif cell.metadata.slide_type in ['fragment'] -%}
17 <div class="fragment">
18 {{ super() }}
19 </div>
20 {%- endif -%}
21 {%- endblock any_cell -%}
@@ -0,0 +1,17 b''
1 {%- extends 'subslides.tpl' -%}
2
3
4
5 {%- block any_cell scoped -%}
6 {%- if cell.metadata.slide_type in ['slide'] -%}
7 <section>
8 <section>
9 {%- endif -%}
10
11 {{ super() }}
12
13 {%- if cell.metadata.slide_helper in ['slide_end'] -%}
14 </section>
15 </section>
16 {%- endif -%}
17 {%- endblock any_cell -%}
@@ -0,0 +1,15 b''
1 {%- extends 'reveal_cells.tpl' -%}
2
3
4
5 {%- block any_cell scoped -%}
6 {%- if cell.metadata.slide_type in ['subslide'] -%}
7 <section>
8 {%- endif -%}
9
10 {{ super() }}
11
12 {%- if cell.metadata.slide_helper in ['subslide_end'] -%}
13 </section>
14 {%- endif -%}
15 {%- endblock any_cell -%}
@@ -139,9 +139,9 b' class ExtractFigureTransformer(ActivatableTransformer):'
139 139 """Create a new figure file in the given format.
140 140
141 141 """
142 tplf = self.figname_format_map.get(fmt,self.default_key_tpl)
142 tplf = self.figname_format_map.get(fmt,self.default_key_tpl)
143 143 tplk = self.key_format_map.get(fmt,self.default_key_tpl)
144
144
145 145 # option to pass the hash as data ?
146 146 figname = tplf.format(count=count, ext=self._get_ext(fmt))
147 147 key = tplk.format(count=count, ext=self._get_ext(fmt))
@@ -167,105 +167,20 b' class ExtractFigureTransformer(ActivatableTransformer):'
167 167
168 168 class RevealHelpTransformer(ConfigurableTransformers):
169 169
170 section_open = False
171 subsection_open = False
172 fragment_open = False
173
174 def open_subsection(self):
175 self.subsection_open = True
176 return True
177
178 def open_section(self):
179 self.section_open = True
180 return True
181
182 def open_fragment(self):
183 self.fragment_open = True
184 return True
185
186 # could probaly write those maybe_close/open
187 # with a function functor
188 def maybe_close_section(self):
189 """return True is already open, false otherwise
190 and change state to close
191 """
192 if self.section_open :
193 self.section_open = False
194 return True
195 else :
196 return False
197
198 def maybe_open_section(self):
199 """return True is already open, false otherwise
200 and change state to close
201 """
202 if not self.section_open :
203 self.section_open = True
204 return True
205 else :
206 return False
207
208 def maybe_open_subsection(self):
209 """return True is already open, false otherwise
210 and change state to close
211 """
212 if not self.subsection_open :
213 self.subsection_open = True
214 return True
215 else :
216 return False
217
218 def maybe_close_subsection(self):
219 """return True is already open, false otherwise
220 and change state to close
221 """
222 if self.subsection_open :
223 self.subsection_open = False
224 return True
225 else :
226 return False
227
228 def maybe_close_fragment(self):
229 """return True is already open, false otherwise
230 and change state to close
231 """
232 if self.fragment_open :
233 self.fragment_open = False
234 return True
235 else :
236 return False
237
238 def cell_transform(self, cell, other, count):
239 ctype = cell.metadata.get('slideshow', {}).get('slide_type', None)
240 if ctype in [None, '-'] :
241 cell.metadata.slideshow = {}
242 cell.metadata.slideshow['slide_type'] = None
243 elif ctype == 'fragment':
244 cell.metadata.slideshow.close_fragment = self.maybe_close_fragment()
245 cell.metadata.slideshow.close_subsection = False
246 cell.metadata.slideshow.close_section = False
247
248 cell.metadata.slideshow.open_section = self.maybe_open_section()
249 cell.metadata.slideshow.open_subsection = self.maybe_open_subsection()
250 cell.metadata.slideshow.open_fragment = self.open_fragment()
251
252 elif ctype == 'subslide':
253 cell.metadata.slideshow.close_fragment = self.maybe_close_fragment()
254 cell.metadata.slideshow.close_subsection = self.maybe_close_subsection()
255 cell.metadata.slideshow.close_section = False
256
257 cell.metadata.slideshow.open_section = self.maybe_open_section()
258 cell.metadata.slideshow.open_subsection = self.open_subsection()
259 cell.metadata.slideshow.open_fragment = False
260 elif ctype == 'slide':
261 cell.metadata.slideshow.close_fragment = self.maybe_close_fragment()
262 cell.metadata.slideshow.close_subsection = self.maybe_close_subsection()
263 cell.metadata.slideshow.close_section = self.maybe_close_section()
264
265 cell.metadata.slideshow.open_section = self.open_section()
266 cell.metadata.slideshow.open_subsection = self.open_subsection()
267 cell.metadata.slideshow.open_fragment = False
268 return cell, other
170 def __call__(self, nb, other):
171 try :
172 for worksheet in nb.worksheets :
173 for i, cell in enumerate(worksheet.cells):
174 cell.metadata.slide_type = cell.metadata.get('slideshow', {}).get('slide_type', None)
175 if cell.metadata.slide_type is None:
176 cell.metadata.slide_type = '-'
177 if cell.metadata.slide_type in ['slide']:
178 worksheet.cells[i - 1].metadata.slide_helper = 'slide_end'
179 if cell.metadata.slide_type in ['subslide']:
180 worksheet.cells[i - 1].metadata.slide_helper = 'subslide_end'
181 return nb, other
182 except NotImplementedError as error :
183 raise NotImplementedError('should be implemented by subclass')
269 184
270 185
271 186 class CSSHtmlHeaderTransformer(ActivatableTransformer):
@@ -1,85 +1,8 b''
1 {%- extends 'basichtml.tpl' -%}
1 {%- extends 'slides.tpl' -%}
2 2
3 3
4 {% block any_cell -%}
5
6 {% if cell.metadata.slideshow.close_fragment %}
7 </div>
8 {% endif %}
9 {% if cell.metadata.slideshow.close_subsection %}
10 </section>
11 {% endif %}
12 {% if cell.metadata.slideshow.close_section %}
13 </section>
14 {% endif %}
15
16 {% if cell.metadata.slideshow.open_section %}
17 <section>
18 {%- endif %}
19 {% if cell.metadata.slideshow.open_subsection %}
20 <section>
21 {%- endif %}
22 {% if cell.metadata.slideshow.open_fragment %}
23 <div class='fragment'>
24 {% endif %}
25 {% if cell.metadata.slideshow.slide_type in ['notes'] %}
26 <aside class="notes">
27 {{ super() }}
28 </aside>
29 {% elif cell.metadata.slideshow.slide_type not in ['skip'] %}
30 {{ super() }}
31 {% endif %}
32
33 {% endblock %}
34
35
36 {% block body %}
37 <body>
38 <div class="reveal"><div class="slides">
39 {{ super() }}
40 </section>
41 </section>
42 </div></div>
43
44 <script src="reveal/lib/js/head.min.js"></script>
45
46 <script src="reveal/js/reveal.min.js"></script>
47
48 <script>
49
50 // Full list of configuration options available here: https://github.com/hakimel/reveal.js#configuration
51 Reveal.initialize({
52 controls: true,
53 progress: true,
54 history: true,
55
56 theme: Reveal.getQueryHash().theme, // available themes are in /css/theme
57 transition: Reveal.getQueryHash().transition || 'linear', // default/cube/page/concave/zoom/linear/none
58
59 // Optional libraries used to extend on reveal.js
60 dependencies: [
61 { src: 'reveal/lib/js/classList.js', condition: function() { return !document.body.classList; } },
62 { src: 'reveal/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
63 { src: 'reveal/plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
64 { src: 'notes/notes.js', async: true, condition: function() { return !!document.body.classList; } },
65 { src: 'https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js?config=TeX-AMS_HTML', async: true },
66 { src: 'js/revealmathjax.js', async: true}
67 ]
68 });
69 </script>
70
71 <script>
72 Reveal.addEventListener( 'slidechanged', function( event ) {
73 MathJax.Hub.Rerender(event.currentSlide);
74 });
75 </script>
76 </body>
77 </html>{% endblock body %}
78
79
80
81
82 {% block header %}<!DOCTYPE html>
4 {% block header %}
5 <!DOCTYPE html>
83 6 <html>
84 7 <head>
85 8
@@ -147,4 +70,65 b' div.output_prompt {'
147 70 margin: 5px 5px 0 -5px;
148 71 }
149 72 </style>
150 </head>{% endblock %}
73 </head>
74 {% endblock header%}
75
76
77 {% block body %}
78 <body>
79 <div class="reveal"><div class="slides">
80
81 {{ super() }}
82
83 </div></div>
84
85 <!-- Social buttons -->
86 <div class="addthis_toolbox addthis_floating_style addthis_32x32_style" style="left:20px;top:20px;">
87 <a class="addthis_button_twitter"></a>
88 <a class="addthis_button_google_plusone_share"></a>
89 <a class="addthis_button_linkedin"></a>
90 <a class="addthis_button_facebook"></a>
91 <a class="addthis_button_more"></a>
92 </div>
93 <!-- End of social buttons -->
94
95 <script src="reveal/lib/js/head.min.js"></script>
96
97 <script src="reveal/js/reveal.min.js"></script>
98
99 <script>
100
101 // Full list of configuration options available here: https://github.com/hakimel/reveal.js#configuration
102 Reveal.initialize({
103 controls: true,
104 progress: true,
105 history: true,
106
107 theme: Reveal.getQueryHash().theme, // available themes are in /css/theme
108 transition: Reveal.getQueryHash().transition || 'linear', // default/cube/page/concave/zoom/linear/none
109
110 // Optional libraries used to extend on reveal.js
111 dependencies: [
112 { src: 'reveal/lib/js/classList.js', condition: function() { return !document.body.classList; } },
113 { src: 'reveal/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
114 { src: 'reveal/plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
115 { src: 'notes/notes.js', async: true, condition: function() { return !!document.body.classList; } },
116 { src: 'http://s7.addthis.com/js/300/addthis_widget.js', async: true},
117 { src: 'js/revealmathjax.js', async: true},
118 { src: 'js/mathjax-onload.js', async: true}
119 ]
120 });
121 </script>
122
123 <script>
124 Reveal.addEventListener( 'slidechanged', function( event ) {
125 MathJax.Hub.Rerender(event.currentSlide);
126 });
127 </script>
128
129 </body>
130 {% endblock body %}
131
132 {% block footer %}
133 </html>
134 {% endblock footer %} No newline at end of file
This diff has been collapsed as it changes many lines, (1041 lines changed) Show them Hide them
@@ -104,6 +104,7 b' b,strong { font-weight: bold; }'
104 104
105 105 </style>
106 106 <style type="text/css">
107 <<<<<<< HEAD
107 108 article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
108 109 audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
109 110 audio:not([controls]){display:none;}
@@ -1124,6 +1125,579 b' div.output_prompt {'
1124 1125 }
1125 1126 </style>
1126 1127 <meta charset="UTF-8">
1128 =======
1129
1130 /* Flexible box model classes */
1131 /* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
1132
1133 .hbox {
1134 display: -webkit-box;
1135 -webkit-box-orient: horizontal;
1136 -webkit-box-align: stretch;
1137
1138 display: -moz-box;
1139 -moz-box-orient: horizontal;
1140 -moz-box-align: stretch;
1141
1142 display: box;
1143 box-orient: horizontal;
1144 box-align: stretch;
1145 }
1146
1147 .hbox > * {
1148 -webkit-box-flex: 0;
1149 -moz-box-flex: 0;
1150 box-flex: 0;
1151 }
1152
1153 .vbox {
1154 display: -webkit-box;
1155 -webkit-box-orient: vertical;
1156 -webkit-box-align: stretch;
1157
1158 display: -moz-box;
1159 -moz-box-orient: vertical;
1160 -moz-box-align: stretch;
1161
1162 display: box;
1163 box-orient: vertical;
1164 box-align: stretch;
1165 }
1166
1167 .vbox > * {
1168 -webkit-box-flex: 0;
1169 -moz-box-flex: 0;
1170 box-flex: 0;
1171 }
1172
1173 .reverse {
1174 -webkit-box-direction: reverse;
1175 -moz-box-direction: reverse;
1176 box-direction: reverse;
1177 }
1178
1179 .box-flex0 {
1180 -webkit-box-flex: 0;
1181 -moz-box-flex: 0;
1182 box-flex: 0;
1183 }
1184
1185 .box-flex1, .box-flex {
1186 -webkit-box-flex: 1;
1187 -moz-box-flex: 1;
1188 box-flex: 1;
1189 }
1190
1191 .box-flex2 {
1192 -webkit-box-flex: 2;
1193 -moz-box-flex: 2;
1194 box-flex: 2;
1195 }
1196
1197 .box-group1 {
1198 -webkit-box-flex-group: 1;
1199 -moz-box-flex-group: 1;
1200 box-flex-group: 1;
1201 }
1202
1203 .box-group2 {
1204 -webkit-box-flex-group: 2;
1205 -moz-box-flex-group: 2;
1206 box-flex-group: 2;
1207 }
1208
1209 .start {
1210 -webkit-box-pack: start;
1211 -moz-box-pack: start;
1212 box-pack: start;
1213 }
1214
1215 .end {
1216 -webkit-box-pack: end;
1217 -moz-box-pack: end;
1218 box-pack: end;
1219 }
1220
1221 .center {
1222 -webkit-box-pack: center;
1223 -moz-box-pack: center;
1224 box-pack: center;
1225 }
1226
1227 </style>
1228 <style type="text/css">
1229 /**
1230 * Primary styles
1231 *
1232 * Author: IPython Development Team
1233 */
1234
1235
1236 body {
1237 overflow: hidden;
1238 }
1239
1240 span#save_widget {
1241 padding: 5px;
1242 margin: 0px 0px 0px 300px;
1243 display:inline-block;
1244 }
1245
1246 span#notebook_name {
1247 height: 1em;
1248 line-height: 1em;
1249 padding: 3px;
1250 border: none;
1251 font-size: 146.5%;
1252 }
1253
1254 .ui-menubar-item .ui-button .ui-button-text {
1255 padding: 0.4em 1.0em;
1256 font-size: 100%;
1257 }
1258
1259 .ui-menu {
1260 -moz-box-shadow: 0px 6px 10px -1px #adadad;
1261 -webkit-box-shadow: 0px 6px 10px -1px #adadad;
1262 box-shadow: 0px 6px 10px -1px #adadad;
1263 }
1264
1265 .ui-menu .ui-menu-item a {
1266 border: 1px solid transparent;
1267 padding: 2px 1.6em;
1268 }
1269
1270 .ui-menu .ui-menu-item a.ui-state-focus {
1271 margin: 0;
1272 }
1273
1274 .ui-menu hr {
1275 margin: 0.3em 0;
1276 }
1277
1278 #menubar_container {
1279 position: relative;
1280 }
1281
1282 #notification {
1283 position: absolute;
1284 right: 3px;
1285 top: 3px;
1286 height: 25px;
1287 padding: 3px 6px;
1288 z-index: 10;
1289 }
1290
1291 #toolbar {
1292 padding: 3px 15px;
1293 }
1294
1295 #cell_type {
1296 font-size: 85%;
1297 }
1298
1299
1300 div#main_app {
1301 width: 100%;
1302 position: relative;
1303 }
1304
1305 span#quick_help_area {
1306 position: static;
1307 padding: 5px 0px;
1308 margin: 0px 0px 0px 0px;
1309 }
1310
1311 .help_string {
1312 float: right;
1313 width: 170px;
1314 padding: 0px 5px;
1315 text-align: left;
1316 font-size: 85%;
1317 }
1318
1319 .help_string_label {
1320 float: right;
1321 font-size: 85%;
1322 }
1323
1324 div#notebook_panel {
1325 margin: 0px 0px 0px 0px;
1326 padding: 0px;
1327 }
1328
1329 div#notebook {
1330 overflow-y: scroll;
1331 overflow-x: auto;
1332 width: 100%;
1333 /* This spaces the cell away from the edge of the notebook area */
1334 padding: 5px 5px 15px 5px;
1335 margin: 0px;
1336 background-color: white;
1337 }
1338
1339 div#pager_splitter {
1340 height: 8px;
1341 }
1342
1343 div#pager {
1344 padding: 15px;
1345 overflow: auto;
1346 display: none;
1347 }
1348
1349 div.ui-widget-content {
1350 border: 1px solid #aaa;
1351 outline: none;
1352 }
1353
1354 .cell {
1355 border: 1px solid transparent;
1356 }
1357
1358 div.cell {
1359 width: 100%;
1360 padding: 5px 5px 5px 0px;
1361 /* This acts as a spacer between cells, that is outside the border */
1362 margin: 2px 0px 2px 0px;
1363 }
1364
1365 div.code_cell {
1366 background-color: white;
1367 }
1368
1369 /* any special styling for code cells that are currently running goes here */
1370 div.code_cell.running {
1371 }
1372
1373 div.prompt {
1374 /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
1375 width: 11ex;
1376 /* This 0.4em is tuned to match the padding on the CodeMirror editor. */
1377 padding: 0.4em;
1378 margin: 0px;
1379 font-family: monospace;
1380 text-align:right;
1381 }
1382
1383 div.input {
1384 page-break-inside: avoid;
1385 }
1386
1387 /* input_area and input_prompt must match in top border and margin for alignment */
1388 div.input_area {
1389 color: black;
1390 border: 1px solid #ddd;
1391 border-radius: 3px;
1392 background: #f7f7f7;
1393 }
1394
1395 div.input_prompt {
1396 color: navy;
1397 border-top: 1px solid transparent;
1398 }
1399
1400 div.output_wrapper {
1401 /* This is a spacer between the input and output of each cell */
1402 margin-top: 5px;
1403 margin-left: 5px;
1404 /* FF needs explicit width to stretch */
1405 width: 100%;
1406 /* this position must be relative to enable descendents to be absolute within it */
1407 position: relative;
1408 }
1409
1410 /* class for the output area when it should be height-limited */
1411 div.output_scroll {
1412 /* ideally, this would be max-height, but FF barfs all over that */
1413 height: 24em;
1414 /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
1415 width: 100%;
1416
1417 overflow: auto;
1418 border-radius: 3px;
1419 box-shadow: inset 0 2px 8px rgba(0, 0, 0, .8);
1420 }
1421
1422 /* output div while it is collapsed */
1423 div.output_collapsed {
1424 margin-right: 5px;
1425 }
1426
1427 div.out_prompt_overlay {
1428 height: 100%;
1429 padding: 0px;
1430 position: absolute;
1431 border-radius: 3px;
1432 }
1433
1434 div.out_prompt_overlay:hover {
1435 /* use inner shadow to get border that is computed the same on WebKit/FF */
1436 box-shadow: inset 0 0 1px #000;
1437 background: rgba(240, 240, 240, 0.5);
1438 }
1439
1440 div.output_prompt {
1441 color: darkred;
1442 /* 5px right shift to account for margin in parent container */
1443 margin: 0 5px 0 -5px;
1444 }
1445
1446 /* This class is the outer container of all output sections. */
1447 div.output_area {
1448 padding: 0px;
1449 page-break-inside: avoid;
1450 }
1451
1452 /* This class is for the output subarea inside the output_area and after
1453 the prompt div. */
1454 div.output_subarea {
1455 padding: 0.4em 0.4em 0.4em 0.4em;
1456 }
1457
1458 /* The rest of the output_* classes are for special styling of the different
1459 output types */
1460
1461 /* all text output has this class: */
1462 div.output_text {
1463 text-align: left;
1464 color: black;
1465 font-family: monospace;
1466 }
1467
1468 /* stdout/stderr are 'text' as well as 'stream', but pyout/pyerr are *not* streams */
1469 div.output_stream {
1470 padding-top: 0.0em;
1471 padding-bottom: 0.0em;
1472 }
1473 div.output_stdout {
1474 }
1475 div.output_stderr {
1476 background: #fdd; /* very light red background for stderr */
1477 }
1478
1479 div.output_latex {
1480 text-align: left;
1481 color: black;
1482 }
1483
1484 div.output_html {
1485 }
1486
1487 div.output_png {
1488 }
1489
1490 div.output_jpeg {
1491 }
1492
1493 div.text_cell {
1494 background-color: white;
1495 padding: 5px 5px 5px 5px;
1496 }
1497
1498 div.text_cell_input {
1499 color: black;
1500 border: 1px solid #ddd;
1501 border-radius: 3px;
1502 background: #f7f7f7;
1503 }
1504
1505 div.text_cell_render {
1506 font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;
1507 outline: none;
1508 resize: none;
1509 width: inherit;
1510 border-style: none;
1511 padding: 5px;
1512 color: black;
1513 }
1514
1515 /* The following gets added to the <head> if it is detected that the user has a
1516 * monospace font with inconsistent normal/bold/italic height. See
1517 * notebookmain.js. Such fonts will have keywords vertically offset with
1518 * respect to the rest of the text. The user should select a better font.
1519 * See: https://github.com/ipython/ipython/issues/1503
1520 *
1521 * .CodeMirror span {
1522 * vertical-align: bottom;
1523 * }
1524 */
1525
1526 .CodeMirror {
1527 line-height: 1.231; /* Changed from 1em to our global default */
1528 }
1529
1530 .CodeMirror-scroll {
1531 height: auto; /* Changed to auto to autogrow */
1532 /* The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
1533 /* We have found that if it is visible, vertical scrollbars appear with font size changes.*/
1534 overflow-y: hidden;
1535 overflow-x: auto; /* Changed from auto to remove scrollbar */
1536 }
1537
1538 /* CSS font colors for translated ANSI colors. */
1539
1540
1541 .ansiblack {color: black;}
1542 .ansired {color: darkred;}
1543 .ansigreen {color: darkgreen;}
1544 .ansiyellow {color: brown;}
1545 .ansiblue {color: darkblue;}
1546 .ansipurple {color: darkviolet;}
1547 .ansicyan {color: steelblue;}
1548 .ansigrey {color: grey;}
1549 .ansibold {font-weight: bold;}
1550
1551 .completions {
1552 position: absolute;
1553 z-index: 10;
1554 overflow: hidden;
1555 border: 1px solid grey;
1556 }
1557
1558 .completions select {
1559 background: white;
1560 outline: none;
1561 border: none;
1562 padding: 0px;
1563 margin: 0px;
1564 overflow: auto;
1565 font-family: monospace;
1566 }
1567
1568 option.context {
1569 background-color: #DEF7FF;
1570 }
1571 option.introspection {
1572 background-color: #EBF4EB;
1573 }
1574
1575 /*fixed part of the completion*/
1576 .completions p b {
1577 font-weight:bold;
1578 }
1579
1580 .completions p {
1581 background: #DDF;
1582 /*outline: none;
1583 padding: 0px;*/
1584 border-bottom: black solid 1px;
1585 padding: 1px;
1586 font-family: monospace;
1587 }
1588
1589 pre.dialog {
1590 background-color: #f7f7f7;
1591 border: 1px solid #ddd;
1592 border-radius: 3px;
1593 padding: 0.4em;
1594 padding-left: 2em;
1595 }
1596
1597 p.dialog {
1598 padding : 0.2em;
1599 }
1600
1601 .shortcut_key {
1602 display: inline-block;
1603 width: 15ex;
1604 text-align: right;
1605 font-family: monospace;
1606 }
1607
1608 .shortcut_descr {
1609 }
1610
1611 /* Word-wrap output correctly. This is the CSS3 spelling, though Firefox seems
1612 to not honor it correctly. Webkit browsers (Chrome, rekonq, Safari) do.
1613 */
1614 pre, code, kbd, samp { white-space: pre-wrap; }
1615
1616 #fonttest {
1617 font-family: monospace;
1618 }
1619
1620 </style>
1621 <style type="text/css">
1622 .rendered_html {color: black;}
1623 .rendered_html em {font-style: italic;}
1624 .rendered_html strong {font-weight: bold;}
1625 .rendered_html u {text-decoration: underline;}
1626 .rendered_html :link { text-decoration: underline }
1627 .rendered_html :visited { text-decoration: underline }
1628 .rendered_html h1 {font-size: 197%; margin: .65em 0; font-weight: bold;}
1629 .rendered_html h2 {font-size: 153.9%; margin: .75em 0; font-weight: bold;}
1630 .rendered_html h3 {font-size: 123.1%; margin: .85em 0; font-weight: bold;}
1631 .rendered_html h4 {font-size: 100% margin: 0.95em 0; font-weight: bold;}
1632 .rendered_html h5 {font-size: 85%; margin: 1.5em 0; font-weight: bold;}
1633 .rendered_html h6 {font-size: 77%; margin: 1.65em 0; font-weight: bold;}
1634 .rendered_html ul {list-style:disc; margin: 1em 2em;}
1635 .rendered_html ul ul {list-style:square; margin: 0em 2em;}
1636 .rendered_html ul ul ul {list-style:circle; margin-left: 0em 2em;}
1637 .rendered_html ol {list-style:upper-roman; margin: 1em 2em;}
1638 .rendered_html ol ol {list-style:upper-alpha; margin: 0em 2em;}
1639 .rendered_html ol ol ol {list-style:decimal; margin: 0em 2em;}
1640 .rendered_html ol ol ol ol {list-style:lower-alpha; margin 0em 2em;}
1641 .rendered_html ol ol ol ol ol {list-style:lower-roman; 0em 2em;}
1642
1643 .rendered_html hr {
1644 color: black;
1645 background-color: black;
1646 }
1647
1648 .rendered_html pre {
1649 margin: 1em 2em;
1650 }
1651
1652 .rendered_html blockquote {
1653 margin: 1em 2em;
1654 }
1655
1656 .rendered_html table {
1657 border: 1px solid black;
1658 border-collapse: collapse;
1659 margin: 1em 2em;
1660 }
1661
1662 .rendered_html td {
1663 border: 1px solid black;
1664 text-align: left;
1665 vertical-align: middle;
1666 padding: 4px;
1667 }
1668
1669 .rendered_html th {
1670 border: 1px solid black;
1671 text-align: left;
1672 vertical-align: middle;
1673 padding: 4px;
1674 font-weight: bold;
1675 }
1676
1677 .rendered_html tr {
1678 border: 1px solid black;
1679 }
1680
1681 .rendered_html p + p {
1682 margin-top: 1em;
1683 }
1684
1685
1686 </style>
1687 <style type="text/css">
1688 /* Overrides of notebook CSS for static HTML export
1689
1690 */
1691 body {
1692 overflow: visible;
1693 padding: 8px;
1694 }
1695 .input_area {
1696 padding: 0.4em;
1697 }
1698
1699 </style>
1700 >>>>>>> A new implementation of reveal converter with jinja templates.
1127 1701 <style type="text/css">
1128 1702 .highlight .hll { background-color: #ffffcc }
1129 1703 .highlight { background: #f8f8f8; }
@@ -1188,10 +1762,51 b' div.output_prompt {'
1188 1762 .highlight .vi { color: #19177C } /* Name.Variable.Instance */
1189 1763 .highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
1190 1764 </style>
1765
1766 <style type="text/css">
1767 /* Overrides of notebook CSS for static HTML export */
1768
1769 .reveal {
1770 font-size: 20px;
1771 }
1772 .reveal pre {
1773 width: 100%;
1774 padding: 0.2em;
1775 margin: 0px auto;
1776 font-family: monospace, sans-serif;
1777 font-size: 60%;
1778 box-shadow: 0px 0px 0px rgba(0, 0, 0, 0);
1779 }
1780 .reveal section img {
1781 border: 0px solid black;
1782 box-shadow: 0 0 10px rgba(0, 0, 0, 0);
1783 }
1784 div.input_area {
1785 padding: 0.2em;
1786 }
1787 div.code_cell {
1788 background-color: transparent;
1789 }
1790 div.prompt {
1791 width: 11ex;
1792 padding: 0.0em;
1793 margin: 0px;
1794 font-family: monospace;
1795 font-size: 60%;
1796 text-align: center;
1797 }
1798 div.output_prompt {
1799 /* 5px right shift to account for margin in parent container */
1800 margin: 5px 5px 0 -5px;
1801 }
1802 </style>
1191 1803 </head>
1804
1192 1805 <body>
1193 1806 <div class="reveal"><div class="slides">
1807
1194 1808 <section>
1809 <section>
1195 1810 <div class="text_cell_render border-box-sizing rendered_html">
1196 1811 <h1>A brief tour of the IPython notebook</h1>
1197 1812 <p>This document will give you a brief tour of the capabilities of the IPython notebook.<br />
@@ -1202,8 +1817,8 b' system.<br />'
1202 1817 </p>
1203 1818 <p>The rest of the notebooks in this directory illustrate various other aspects and
1204 1819 capabilities of the IPython notebook; some of them may require additional libraries to be executed.</p>
1205 </div>
1206 <aside class="notes">
1820 </div><aside class="notes">
1821
1207 1822 <div class="text_cell_render border-box-sizing rendered_html">
1208 1823 <p><strong>NOTE:</strong> This notebook <em>must</em> be run from its own directory, so you must <code>cd</code>
1209 1824 to this directory and then start the notebook, but do <em>not</em> use the <code>--notebook-dir</code>
@@ -1211,9 +1826,9 b' option to run it from another location.</p>'
1211 1826 <p>The first thing you need to know is that you are still controlling the same old IPython you're used to,
1212 1827 so things like shell aliases and magic commands still work:</p>
1213 1828 </div>
1214 </aside>
1215 </section>
1216 <section>
1829 </aside></section>
1830 </section><section>
1831 <section>
1217 1832 <div class="cell border-box-sizing code_cell vbox">
1218 1833 <div class="input hbox">
1219 1834 <div class="prompt input_prompt">In&nbsp;[1]:</div>
@@ -1223,11 +1838,15 b' so things like shell aliases and magic commands still work:</p>'
1223 1838
1224 1839 </div>
1225 1840 </div>
1226 <div class="vbox output_wrapper">
1841 <div class="output_wrapper">
1227 1842 <div class="output vbox">
1843 <div class="prompt output_prompt">
1844 <div class="output vbox">Out[1]:</div>
1845 </div>
1228 1846 <div class="hbox output_area">
1229 <div class="prompt output_prompt">Out[1]:</div>
1230 <div class="output_subarea output_pyout">
1847 <div class="prompt"></div>
1848 <div class="box-flex1 output_subarea output_pyout">
1849
1231 1850 <pre>u&apos;/Users/minrk/dev/ip/mine/docs/examples/notebooks&apos;</pre>
1232 1851 </div>
1233 1852 </div>
@@ -1243,11 +1862,14 b' so things like shell aliases and magic commands still work:</p>'
1243 1862
1244 1863 </div>
1245 1864 </div>
1246 <div class="vbox output_wrapper">
1865 <div class="output_wrapper">
1247 1866 <div class="output vbox">
1867 <div class="prompt output_prompt">
1868 <div class="output vbox"></div>
1869 </div>
1248 1870 <div class="hbox output_area">
1249 <div class="prompt output_prompt"></div>
1250 <div class="output_subarea output_stream output_stdout">
1871 <div class="prompt"></div>
1872 <div class="box-flex1 output_subarea output_stream output_stdout">
1251 1873 <pre>00_notebook_tour.ipynb callbacks.ipynb python-logo.svg
1252 1874 01_notebook_introduction.ipynb cython_extension.ipynb rmagic_extension.ipynb
1253 1875 Animations_and_Progress.ipynb display_protocol.ipynb sympy.ipynb
@@ -1271,26 +1893,29 b' animation.m4v progbar.ipynb'
1271 1893
1272 1894 </div>
1273 1895 </div>
1274 <div class="vbox output_wrapper">
1896 <div class="output_wrapper">
1275 1897 <div class="output vbox">
1898 <div class="prompt output_prompt">
1899 <div class="output vbox"></div>
1900 </div>
1276 1901 <div class="hbox output_area">
1277 <div class="prompt output_prompt"></div>
1278 <div class="output_subarea output_stream output_stdout">
1902 <div class="prompt"></div>
1903 <div class="box-flex1 output_subarea output_stream output_stdout">
1279 1904 <pre>The IPython notebook is great!
1280 1905 </pre>
1281 1906 </div>
1282 1907 </div>
1283 1908 </div>
1284 1909 </div>
1285 </div>
1286 </section>
1287 <section>
1288 <section>
1910 </div></section>
1911 </section><section>
1912 <section>
1289 1913 <div class="text_cell_render border-box-sizing rendered_html">
1290 1914 <h2>
1291 1915 Plots with matplotlib
1292 1916 </h2>
1293 1917 </div>
1918
1294 1919 <div class="text_cell_render border-box-sizing rendered_html">
1295 1920 <p>IPython adds an 'inline' matplotlib backend,
1296 1921 which embeds any matplotlib figures into the notebook.</p>
@@ -1304,11 +1929,14 b' which embeds any matplotlib figures into the notebook.</p>'
1304 1929
1305 1930 </div>
1306 1931 </div>
1307 <div class="vbox output_wrapper">
1932 <div class="output_wrapper">
1308 1933 <div class="output vbox">
1934 <div class="prompt output_prompt">
1935 <div class="output vbox"></div>
1936 </div>
1309 1937 <div class="hbox output_area">
1310 <div class="prompt output_prompt"></div>
1311 <div class="output_subarea output_stream output_stdout">
1938 <div class="prompt"></div>
1939 <div class="box-flex1 output_subarea output_stream output_stdout">
1312 1940 <pre>
1313 1941 Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].
1314 1942 For more information, type &apos;help(pylab)&apos;.
@@ -1329,11 +1957,15 b' For more information, type &apos;help(pylab)&apos;.'
1329 1957
1330 1958 </div>
1331 1959 </div>
1332 <div class="vbox output_wrapper">
1960 <div class="output_wrapper">
1333 1961 <div class="output vbox">
1962 <div class="prompt output_prompt">
1963 <div class="output vbox"></div>
1964 </div>
1334 1965 <div class="hbox output_area">
1335 <div class="prompt output_prompt"></div>
1336 <div class="output_subarea output_display_data">
1966 <div class="prompt"></div>
1967 <div class="box-flex1 output_subarea output_display_data">
1968
1337 1969 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAX0AAAEICAYAAACzliQjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
1338 1970 AAALEgAACxIB0t1+/AAAIABJREFUeJztfXt0VdWd/+fmwSvhlUDeAcSECREFFWtLi8YKWlBTrS8c
1339 1971 q1StZVppO21XZ3XNrJnqmqmF6XSpa9EquqYVOlZp+6tCUfHZKK2ltIpohcqjonnwCOQBeSc35/fH
@@ -1693,8 +2325,7 b' kL6BgYHBGML/B3suibfww4xPAAAAAElFTkSuQmCC'
1693 2325 </div>
1694 2326 </div>
1695 2327 </div>
1696 </div>
1697 </section><section>
2328 </div></section><section>
1698 2329 <div class="text_cell_render border-box-sizing rendered_html">
1699 2330 <p>You can paste blocks of input with prompt markers, such as those from
1700 2331 <a href="http://docs.python.org/tutorial/interpreter.html#interactive-mode">the official Python tutorial</a></p>
@@ -1710,19 +2341,21 b' kL6BgYHBGML/B3suibfww4xPAAAAAElFTkSuQmCC'
1710 2341
1711 2342 </div>
1712 2343 </div>
1713 <div class="vbox output_wrapper">
2344 <div class="output_wrapper">
1714 2345 <div class="output vbox">
2346 <div class="prompt output_prompt">
2347 <div class="output vbox"></div>
2348 </div>
1715 2349 <div class="hbox output_area">
1716 <div class="prompt output_prompt"></div>
1717 <div class="output_subarea output_stream output_stdout">
2350 <div class="prompt"></div>
2351 <div class="box-flex1 output_subarea output_stream output_stdout">
1718 2352 <pre>Be careful not to fall off!
1719 2353 </pre>
1720 2354 </div>
1721 2355 </div>
1722 2356 </div>
1723 2357 </div>
1724 </div>
1725 </section><section>
2358 </div></section><section>
1726 2359 <div class="text_cell_render border-box-sizing rendered_html">
1727 2360 <p>Errors are shown in informative ways:</p>
1728 2361 </div>
@@ -1735,11 +2368,14 b' kL6BgYHBGML/B3suibfww4xPAAAAAElFTkSuQmCC'
1735 2368
1736 2369 </div>
1737 2370 </div>
1738 <div class="vbox output_wrapper">
2371 <div class="output_wrapper">
1739 2372 <div class="output vbox">
2373 <div class="prompt output_prompt">
2374 <div class="output vbox"></div>
2375 </div>
1740 2376 <div class="hbox output_area">
1741 <div class="prompt output_prompt"></div>
1742 <div class="output_subarea output_stream output_stderr">
2377 <div class="prompt"></div>
2378 <div class="box-flex1 output_subarea output_stream output_stderr">
1743 2379 <pre>ERROR: File &#96;u&apos;non_existent_file.py&apos;&#96; not found.</pre>
1744 2380 </div>
1745 2381 </div>
@@ -1757,12 +2393,16 b' kL6BgYHBGML/B3suibfww4xPAAAAAElFTkSuQmCC'
1757 2393
1758 2394 </div>
1759 2395 </div>
1760 <div class="vbox output_wrapper">
2396 <div class="output_wrapper">
1761 2397 <div class="output vbox">
2398 <div class="prompt output_prompt">
2399 <div class="output vbox"></div>
2400 </div>
1762 2401 <div class="hbox output_area">
1763 <div class="prompt output_prompt"></div>
1764 <div class="output_subarea output_pyerr">
1765 <pre><span class="ansired">---------------------------------------------------------------------------</span>
2402 <div class="prompt"></div>
2403 <div class="box-flex1 output_subarea output_pyerr">
2404 <pre>
2405 <span class="ansired">---------------------------------------------------------------------------</span>
1766 2406 <span class="ansired">ZeroDivisionError</span> Traceback (most recent call last)
1767 2407 <span class="ansigreen">&lt;ipython-input-8-dc39888fd1d2&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
1768 2408 <span class="ansigreen"> 1</span> x <span class="ansiyellow">=</span> <span class="ansicyan">1</span><span class="ansiyellow"></span>
@@ -1774,13 +2414,13 b' kL6BgYHBGML/B3suibfww4xPAAAAAElFTkSuQmCC'
1774 2414 </div>
1775 2415 </div>
1776 2416 </div>
1777 </div>
1778 </section><section>
2417 </div></section><section>
1779 2418 <div class="text_cell_render border-box-sizing rendered_html">
1780 2419 <p>When IPython needs to display additional information (such as providing details on an object via <code>x?</code>
1781 2420 it will automatically invoke a pager at the bottom of the screen:</p>
1782 </div>
1783 <div class="fragment" class="cell border-box-sizing code_cell vbox">
2421 </div><div class="fragment">
2422
2423 <div class="cell border-box-sizing code_cell vbox">
1784 2424 <div class="input hbox">
1785 2425 <div class="prompt input_prompt">In&nbsp;[18]:</div>
1786 2426 <div class="input_area box-flex1">
@@ -1790,9 +2430,9 b' it will automatically invoke a pager at the bottom of the screen:</p>'
1790 2430 </div>
1791 2431 </div>
1792 2432 </div>
1793 </section>
1794 </section>
1795 <section>
2433 </div></section>
2434 </section><section>
2435 <section>
1796 2436 <div class="text_cell_render border-box-sizing rendered_html">
1797 2437 <h2>Non-blocking output of kernel</h2>
1798 2438 <p>If you execute the next cell, you will see the output arriving as it is generated, not all at the end.</p>
@@ -1809,20 +2449,23 b' it will automatically invoke a pager at the bottom of the screen:</p>'
1809 2449
1810 2450 </div>
1811 2451 </div>
1812 <div class="vbox output_wrapper">
2452 <div class="output_wrapper">
1813 2453 <div class="output vbox">
2454 <div class="prompt output_prompt">
2455 <div class="output vbox"></div>
2456 </div>
1814 2457 <div class="hbox output_area">
1815 <div class="prompt output_prompt"></div>
1816 <div class="output_subarea output_stream output_stdout">
2458 <div class="prompt"></div>
2459 <div class="box-flex1 output_subarea output_stream output_stdout">
1817 2460 <pre>0 1 2 3 4 5 6 7
1818 2461 </pre>
1819 2462 </div>
1820 2463 </div>
1821 2464 </div>
1822 2465 </div>
1823 </div>
1824 </section>
1825 <section>
2466 </div></section>
2467 </section><section>
2468 <section>
1826 2469 <div class="text_cell_render border-box-sizing rendered_html">
1827 2470 <h2>Clean crash and restart</h2>
1828 2471 <p>We call the low-level system libc.time routine with the wrong argument via
@@ -1842,10 +2485,9 b' ctypes to segfault the Python interpreter:</p>'
1842 2485
1843 2486 </div>
1844 2487 </div>
1845 </div>
1846 </section>
1847 <section>
1848 <section>
2488 </div></section>
2489 </section><section>
2490 <section>
1849 2491 <div class="text_cell_render border-box-sizing rendered_html">
1850 2492 <h2>Markdown cells can contain formatted text and code</h2>
1851 2493 <p>You can <em>italicize</em>, <strong>boldface</strong></p>
@@ -1864,17 +2506,14 b' ctypes to segfault the Python interpreter:</p>'
1864 2506 x += 4;
1865 2507 }
1866 2508 </code></pre>
1867 </div>
1868 </section><section>
2509 </div></section><section>
1869 2510 <div class="text_cell_render border-box-sizing rendered_html">
1870 2511 <p>Courtesy of MathJax, you can include mathematical expressions both inline:
1871 2512 $e^{i\pi} + 1 = 0$ and displayed:</p>
1872 2513 <p>$$e^x=\sum_{i=0}^\infty \frac{1}{i!}x^i$$</p>
1873 </div>
1874 </section>
1875 </section>
1876 <section>
1877 <section>
2514 </div></section>
2515 </section><section>
2516 <section>
1878 2517 <div class="text_cell_render border-box-sizing rendered_html">
1879 2518 <h2>Rich displays: include anyting a browser can show</h2>
1880 2519 <p>Note that we have an actual protocol for this, see the <code>display_protocol</code> notebook for further details.</p>
@@ -1890,11 +2529,15 b' $e^{i\\pi} + 1 = 0$ and displayed:</p>'
1890 2529
1891 2530 </div>
1892 2531 </div>
1893 <div class="vbox output_wrapper">
2532 <div class="output_wrapper">
1894 2533 <div class="output vbox">
2534 <div class="prompt output_prompt">
2535 <div class="output vbox">Out[1]:</div>
2536 </div>
1895 2537 <div class="hbox output_area">
1896 <div class="prompt output_prompt">Out[1]:</div>
1897 <div class="output_subarea output_pyout">
2538 <div class="prompt"></div>
2539 <div class="box-flex1 output_subarea output_pyout">
2540
1898 2541 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAggAAABDCAYAAAD5/P3lAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
1899 2542 AAAH3AAAB9wBYvxo6AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAACAASURB
1900 2543 VHic7Z15uBxF1bjfugkJhCWBsCSAJGACNg4QCI3RT1lEAVE+UEBNOmwCDcjHT1wQgU+WD3dFxA1o
@@ -2062,8 +2705,7 b' HMRRca/E5hVINNIVwI2B56z6/3ExLRI31pXNAAAAAElFTkSuQmCC'
2062 2705 </div>
2063 2706 </div>
2064 2707 </div>
2065 </div>
2066 </section><section>
2708 </div></section><section>
2067 2709 <div class="text_cell_render border-box-sizing rendered_html">
2068 2710 <p>An image can also be displayed from raw data or a url</p>
2069 2711 </div>
@@ -2076,21 +2718,29 b' HMRRca/E5hVINNIVwI2B56z6/3ExLRI31pXNAAAAAElFTkSuQmCC'
2076 2718
2077 2719 </div>
2078 2720 </div>
2079 <div class="vbox output_wrapper">
2721 <div class="output_wrapper">
2080 2722 <div class="output vbox">
2723 <div class="prompt output_prompt">
2724 <div class="output vbox">Out[2]:</div>
2725 </div>
2081 2726 <div class="hbox output_area">
2082 <div class="prompt output_prompt">Out[2]:</div>
2083 <div class="output_subarea output_pyout output_html rendered_html">
2727 <div class="prompt"></div>
2728 <div class="box-flex1 output_subarea output_pyout">
2729 <div class="output_html rendered_html">
2084 2730 <img src="http://python.org/images/python-logo.gif" />
2085 2731 </div>
2086 2732 </div>
2087 2733 </div>
2088 2734 </div>
2089 2735 </div>
2090 <div style=display:none class="text_cell_render border-box-sizing rendered_html">
2736 </div><div style=display:none>
2737
2738 <div class="text_cell_render border-box-sizing rendered_html">
2091 2739 <p>SVG images are also supported out of the box (since modern browsers do a good job of rendering them):</p>
2092 2740 </div>
2093 <div style=display:none class="cell border-box-sizing code_cell vbox">
2741 </div><div style=display:none>
2742
2743 <div class="cell border-box-sizing code_cell vbox">
2094 2744 <div class="input hbox">
2095 2745 <div class="prompt input_prompt">In&nbsp;[3]:</div>
2096 2746 <div class="input_area box-flex1">
@@ -2100,11 +2750,14 b' HMRRca/E5hVINNIVwI2B56z6/3ExLRI31pXNAAAAAElFTkSuQmCC'
2100 2750
2101 2751 </div>
2102 2752 </div>
2103 <div class="vbox output_wrapper">
2753 <div class="output_wrapper">
2104 2754 <div class="output vbox">
2755 <div class="prompt output_prompt">
2756 <div class="output vbox">Out[3]:</div>
2757 </div>
2105 2758 <div class="hbox output_area">
2106 <div class="prompt output_prompt">Out[3]:</div>
2107 <div class="output_subarea output_pyout">
2759 <div class="prompt"></div>
2760 <div class="box-flex1 output_subarea output_pyout">
2108 2761 <svg height="115.02pt" id="svg2" inkscape:version="0.43" sodipodi:docbase="/home/sdeibel" sodipodi:docname="logo-python-generic.svg" sodipodi:version="0.32" version="1.0" width="388.84pt" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
2109 2762 <metadata id="metadata2193">
2110 2763 <rdf:RDF>
@@ -2171,10 +2824,9 b' HMRRca/E5hVINNIVwI2B56z6/3ExLRI31pXNAAAAAElFTkSuQmCC'
2171 2824 </div>
2172 2825 </div>
2173 2826 </div>
2174 </section>
2175 </section>
2176 <section>
2177 <section>
2827 </div></section>
2828 </section><section>
2829 <section>
2178 2830 <div class="text_cell_render border-box-sizing rendered_html">
2179 2831 <h4>Embedded vs Non-embedded Images</h4>
2180 2832 </div>
@@ -2198,8 +2850,7 b' HMRRca/E5hVINNIVwI2B56z6/3ExLRI31pXNAAAAAElFTkSuQmCC'
2198 2850
2199 2851 </div>
2200 2852 </div>
2201 </div>
2202 </section><section>
2853 </div></section><section>
2203 2854 <div class="text_cell_render border-box-sizing rendered_html">
2204 2855 <p>Today's image from a webcam at Berkeley, (at the time I created this notebook). This should also work in the Qtconsole.
2205 2856 Drawback is that the saved notebook will be larger, but the image will still be present offline.</p>
@@ -2213,11 +2864,15 b' Drawback is that the saved notebook will be larger, but the image will still be '
2213 2864
2214 2865 </div>
2215 2866 </div>
2216 <div class="vbox output_wrapper">
2867 <div class="output_wrapper">
2217 2868 <div class="output vbox">
2869 <div class="prompt output_prompt">
2870 <div class="output vbox">Out[5]:</div>
2871 </div>
2218 2872 <div class="hbox output_area">
2219 <div class="prompt output_prompt">Out[5]:</div>
2220 <div class="output_subarea output_pyout">
2873 <div class="prompt"></div>
2874 <div class="box-flex1 output_subarea output_pyout">
2875
2221 2876 <img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAtAC0AAD//gAdQ29weXJpZ2h0IDIwMTIgVS5DLiBSZWdlbnRz/+Ef/kV4
2222 2877 aWYAAElJKgAIAAAACgAOAQIAIAAAAIYAAAAPAQIABgAAAKYAAAAQAQIAFAAAAKwAAAASAQMAAQAA
2223 2878 AAEAAAAaAQUAAQAAAMwAAAAbAQUAAQAAANQAAAAoAQMAAQAAAAIAAAAyAQIAFAAAANwAAAATAgMA
@@ -3416,8 +4071,7 b' iCexrNEssiuIRldxwPzrVLcxNEI8+g474/zFc3F2CidRLiNFyPXFBYQqgNKFOfw1pPRTStwsP4ZC'
3416 4071 </div>
3417 4072 </div>
3418 4073 </div>
3419 </div>
3420 </section><section>
4074 </div></section><section>
3421 4075 <div class="text_cell_render border-box-sizing rendered_html">
3422 4076 <p>Today's image from same webcam at Berkeley, (refreshed every minutes, if you reload the notebook), visible only with an active internet connexion, that should be different from the previous one. This will not work on Qtconsole.
3423 4077 Notebook saved with this kind of image will be lighter and always reflect the current version of the source, but the image won't display offline.</p>
@@ -3431,23 +4085,29 b' Notebook saved with this kind of image will be lighter and always reflect the cu'
3431 4085
3432 4086 </div>
3433 4087 </div>
3434 <div class="vbox output_wrapper">
4088 <div class="output_wrapper">
3435 4089 <div class="output vbox">
4090 <div class="prompt output_prompt">
4091 <div class="output vbox">Out[6]:</div>
4092 </div>
3436 4093 <div class="hbox output_area">
3437 <div class="prompt output_prompt">Out[6]:</div>
3438 <div class="output_subarea output_pyout output_html rendered_html">
4094 <div class="prompt"></div>
4095 <div class="box-flex1 output_subarea output_pyout">
4096 <div class="output_html rendered_html">
3439 4097 <img src="http://scienceview.berkeley.edu/view/images/newview.jpg" />
3440 4098 </div>
3441 4099 </div>
3442 4100 </div>
3443 4101 </div>
3444 4102 </div>
3445 <div style=display:none class="text_cell_render border-box-sizing rendered_html">
4103 </div><div style=display:none>
4104
4105 <div class="text_cell_render border-box-sizing rendered_html">
3446 4106 <p>Of course, if you re-run the all notebook, the two images will be the same again.</p>
3447 4107 </div>
3448 </section>
3449 </section>
3450 <section>
4108 </div></section>
4109 </section><section>
4110 <section>
3451 4111 <div class="text_cell_render border-box-sizing rendered_html">
3452 4112 <h3>Video</h3>
3453 4113 </div>
@@ -3469,11 +4129,15 b' hosted content is trivial):</p>'
3469 4129
3470 4130 </div>
3471 4131 </div>
3472 <div class="vbox output_wrapper">
4132 <div class="output_wrapper">
3473 4133 <div class="output vbox">
4134 <div class="prompt output_prompt">
4135 <div class="output vbox">Out[7]:</div>
4136 </div>
3474 4137 <div class="hbox output_area">
3475 <div class="prompt output_prompt">Out[7]:</div>
3476 <div class="output_subarea output_pyout output_html rendered_html">
4138 <div class="prompt"></div>
4139 <div class="box-flex1 output_subarea output_pyout">
4140 <div class="output_html rendered_html">
3477 4141
3478 4142 <iframe
3479 4143 width="400"
@@ -3488,7 +4152,9 b' hosted content is trivial):</p>'
3488 4152 </div>
3489 4153 </div>
3490 4154 </div>
3491 <div style=display:none class="text_cell_render border-box-sizing rendered_html">
4155 </div><div style=display:none>
4156
4157 <div class="text_cell_render border-box-sizing rendered_html">
3492 4158 <p>Using the nascent video capabilities of modern browsers, you may also be able to display local
3493 4159 videos. At the moment this doesn't work very well in all browsers, so it may or may not work for you;
3494 4160 we will continue testing this and looking for ways to make it more robust.<br />
@@ -3497,7 +4163,9 b' we will continue testing this and looking for ways to make it more robust.<br />'
3497 4163 transport, and uses the HTML5 video tag to load it. On Chrome 15 it works correctly, displaying a control
3498 4164 bar at the bottom with a play/pause button and a location slider.</p>
3499 4165 </div>
3500 <div style=display:none class="cell border-box-sizing code_cell vbox">
4166 </div><div style=display:none>
4167
4168 <div class="cell border-box-sizing code_cell vbox">
3501 4169 <div class="input hbox">
3502 4170 <div class="prompt input_prompt">In&nbsp;[8]:</div>
3503 4171 <div class="input_area box-flex1">
@@ -3510,11 +4178,15 b' bar at the bottom with a play/pause button and a location slider.</p>'
3510 4178
3511 4179 </div>
3512 4180 </div>
3513 <div class="vbox output_wrapper">
4181 <div class="output_wrapper">
3514 4182 <div class="output vbox">
4183 <div class="prompt output_prompt">
4184 <div class="output vbox">Out[8]:</div>
4185 </div>
3515 4186 <div class="hbox output_area">
3516 <div class="prompt output_prompt">Out[8]:</div>
3517 <div class="output_subarea output_pyout output_html rendered_html">
4187 <div class="prompt"></div>
4188 <div class="box-flex1 output_subarea output_pyout">
4189 <div class="output_html rendered_html">
3518 4190 <video controls alt="test" src="data:video/x-m4v;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAAqiW1kYXQAAAKMBgX//4jcRem9
3519 4191 5tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTE4IC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENv
3520 4192 cHlsZWZ0IDIwMDMtMjAxMSAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9w
@@ -3730,8 +4402,10 b' AAAAAAAALGlsc3QAAAAkqXRvbwAAABxkYXRhAAAAAQAAAABMYXZmNTIuMTExLjA='
3730 4402 </div>
3731 4403 </div>
3732 4404 </div>
3733 </section>
3734 <section>
4405 </div>
4406 </div></section>
4407 </section><section>
4408 <section>
3735 4409 <div class="text_cell_render border-box-sizing rendered_html">
3736 4410 <h2>Local Files</h2>
3737 4411 <p>The above examples embed images and video from the notebook filesystem in the output
@@ -3739,8 +4413,9 b' areas of code cells. It is also possible to request these files directly in mar'
3739 4413 if they reside in the notebook directory via relative urls prefixed with <code>files/</code>:</p>
3740 4414 <pre><code>files/[subdirectory/]&lt;filename&gt;
3741 4415 </code></pre>
3742 </div>
3743 <div style=display:none class="text_cell_render border-box-sizing rendered_html">
4416 </div><div style=display:none>
4417
4418 <div class="text_cell_render border-box-sizing rendered_html">
3744 4419 <p>For example, in the example notebook folder, we have the Python logo, addressed as:</p>
3745 4420 <pre><code>&lt;img src="files/python-logo.svg" /&gt;
3746 4421 </code></pre>
@@ -3764,9 +4439,9 b' directory at a high level in your filesystem (e.g. your home directory).'
3764 4439 When you run the notebook in a password-protected manner, local file access is restricted
3765 4440 to authenticated users unless read-only views are active.
3766 4441 </div>
3767 </section>
3768 <section>
3769 <section>
4442 </div></section>
4443 </section><section>
4444 <section>
3770 4445 <div class="text_cell_render border-box-sizing rendered_html">
3771 4446 <h2>Linking to files and directories for viewing in the browser</h2>
3772 4447 <p>It is also possible to link directly to files or directories so they can be opened in the browser. This is especially convenient if you're interacting with a tool within IPython that generates HTML pages, and you'd like to easily be able to open those in a new browser window. Alternatively, if your IPython notebook server is on a remote system, creating links provides an easy way to download any files that get generated.</p>
@@ -3781,11 +4456,14 b' to authenticated users unless read-only views are active.'
3781 4456
3782 4457 </div>
3783 4458 </div>
3784 <div class="vbox output_wrapper">
4459 <div class="output_wrapper">
3785 4460 <div class="output vbox">
4461 <div class="prompt output_prompt">
4462 <div class="output vbox"></div>
4463 </div>
3786 4464 <div class="hbox output_area">
3787 <div class="prompt output_prompt"></div>
3788 <div class="output_subarea output_stream output_stdout">
4465 <div class="prompt"></div>
4466 <div class="box-flex1 output_subarea output_stream output_stdout">
3789 4467 <pre>00_notebook_tour.ipynb formatting.ipynb
3790 4468 01_notebook_introduction.ipynb octavemagic_extension.ipynb
3791 4469 Animations_and_Progress.ipynb publish_data.ipynb
@@ -3799,8 +4477,7 b' display_protocol.ipynb trapezoid_rule.ipynb'
3799 4477 </div>
3800 4478 </div>
3801 4479 </div>
3802 </div>
3803 </section><section>
4480 </div></section><section>
3804 4481 <div class="text_cell_render border-box-sizing rendered_html">
3805 4482 <p>If we want to create a link to one of them, we can call use the <code>FileLink</code> object.</p>
3806 4483 </div>
@@ -3814,18 +4491,22 b' display_protocol.ipynb trapezoid_rule.ipynb'
3814 4491
3815 4492 </div>
3816 4493 </div>
3817 <div class="vbox output_wrapper">
4494 <div class="output_wrapper">
3818 4495 <div class="output vbox">
4496 <div class="prompt output_prompt">
4497 <div class="output vbox">Out[2]:</div>
4498 </div>
3819 4499 <div class="hbox output_area">
3820 <div class="prompt output_prompt">Out[2]:</div>
3821 <div class="output_subarea output_pyout output_html rendered_html">
4500 <div class="prompt"></div>
4501 <div class="box-flex1 output_subarea output_pyout">
4502 <div class="output_html rendered_html">
3822 4503 <a href='files/00_notebook_tour.ipynb' target='_blank'>00_notebook_tour.ipynb</a><br>
3823 4504 </div>
3824 4505 </div>
3825 4506 </div>
3826 4507 </div>
3827 4508 </div>
3828 </section><section>
4509 </div></section><section>
3829 4510 <div class="text_cell_render border-box-sizing rendered_html">
3830 4511 <p>Alternatively, if we want to link to all of them, we can use the <code>FileLinks</code> object, passing <code>'.'</code> to indicate that we want links generated for the current working directory. Note that if there were other directories under the current directory, <code>FileLinks</code> would work in a recursive manner creating links to files in all sub-directories as well.</p>
3831 4512 </div>
@@ -3839,11 +4520,15 b' display_protocol.ipynb trapezoid_rule.ipynb'
3839 4520
3840 4521 </div>
3841 4522 </div>
3842 <div class="vbox output_wrapper">
4523 <div class="output_wrapper">
3843 4524 <div class="output vbox">
4525 <div class="prompt output_prompt">
4526 <div class="output vbox">Out[7]:</div>
4527 </div>
3844 4528 <div class="hbox output_area">
3845 <div class="prompt output_prompt">Out[7]:</div>
3846 <div class="output_subarea output_pyout output_html rendered_html">
4529 <div class="prompt"></div>
4530 <div class="box-flex1 output_subarea output_pyout">
4531 <div class="output_html rendered_html">
3847 4532 <a href='files/./00_notebook_tour.ipynb' target='_blank'>00_notebook_tour.ipynb</a><br>
3848 4533 <a href='files/./01_notebook_introduction.ipynb' target='_blank'>01_notebook_introduction.ipynb</a><br>
3849 4534 <a href='files/./animation.m4v' target='_blank'>animation.m4v</a><br>
@@ -3865,9 +4550,9 b' display_protocol.ipynb trapezoid_rule.ipynb'
3865 4550 </div>
3866 4551 </div>
3867 4552 </div>
3868 </section>
3869 </section>
3870 <section>
4553 </div></section>
4554 </section><section>
4555 <section>
3871 4556 <div class="text_cell_render border-box-sizing rendered_html">
3872 4557 <h3>External sites</h3>
3873 4558 <p>You can even embed an entire page from another site in an iframe; for example this is today's Wikipedia
@@ -3882,20 +4567,24 b' page for mobile users:</p>'
3882 4567
3883 4568 </div>
3884 4569 </div>
3885 <div class="vbox output_wrapper">
4570 <div class="output_wrapper">
3886 4571 <div class="output vbox">
4572 <div class="prompt output_prompt">
4573 <div class="output vbox">Out[9]:</div>
4574 </div>
3887 4575 <div class="hbox output_area">
3888 <div class="prompt output_prompt">Out[9]:</div>
3889 <div class="output_subarea output_pyout output_html rendered_html">
4576 <div class="prompt"></div>
4577 <div class="box-flex1 output_subarea output_pyout">
4578 <div class="output_html rendered_html">
3890 4579 <iframe src=http://en.mobile.wikipedia.org/?useformat=mobile width=700 height=350></iframe>
3891 4580 </div>
3892 4581 </div>
3893 4582 </div>
3894 4583 </div>
3895 4584 </div>
3896 </section>
3897 <section>
3898 <section>
4585 </div></section>
4586 </section><section>
4587 <section>
3899 4588 <div class="text_cell_render border-box-sizing rendered_html">
3900 4589 <h3>Mathematics</h3>
3901 4590 <p>And we also support the display of mathematical expressions typeset in LaTeX, which is rendered
@@ -3916,18 +4605,21 b' renders it. The <code>Math</code> object will add the needed LaTeX delimiters ('
3916 4605
3917 4606 </div>
3918 4607 </div>
3919 <div class="vbox output_wrapper">
4608 <div class="output_wrapper">
3920 4609 <div class="output vbox">
4610 <div class="prompt output_prompt">
4611 <div class="output vbox">Out[10]:</div>
4612 </div>
3921 4613 <div class="hbox output_area">
3922 <div class="prompt output_prompt">Out[10]:</div>
3923 <div class="output_subarea output_pyout">
4614 <div class="prompt"></div>
4615 <div class="box-flex1 output_subarea output_pyout">
4616
3924 4617 $$F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx$$
3925 4618 </div>
3926 4619 </div>
3927 4620 </div>
3928 4621 </div>
3929 </div>
3930 </section><section>
4622 </div></section><section>
3931 4623 <div class="text_cell_render border-box-sizing rendered_html">
3932 4624 <p>With the <code>Latex</code> class, you have to include the delimiters yourself. This allows you to use other LaTeX modes such as <code>eqnarray</code>:</p>
3933 4625 </div>
@@ -3946,11 +4638,15 b' $$F(k) = \\int_{-\\infty}^{\\infty} f(x) e^{2\\pi i k} dx$$'
3946 4638
3947 4639 </div>
3948 4640 </div>
3949 <div class="vbox output_wrapper">
4641 <div class="output_wrapper">
3950 4642 <div class="output vbox">
4643 <div class="prompt output_prompt">
4644 <div class="output vbox">Out[11]:</div>
4645 </div>
3951 4646 <div class="hbox output_area">
3952 <div class="prompt output_prompt">Out[11]:</div>
3953 <div class="output_subarea output_pyout">
4647 <div class="prompt"></div>
4648 <div class="box-flex1 output_subarea output_pyout">
4649
3954 4650 \begin{eqnarray}
3955 4651 \nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\
3956 4652 \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
@@ -3961,8 +4657,7 b' $$F(k) = \\int_{-\\infty}^{\\infty} f(x) e^{2\\pi i k} dx$$'
3961 4657 </div>
3962 4658 </div>
3963 4659 </div>
3964 </div>
3965 </section><section>
4660 </div></section><section>
3966 4661 <div class="text_cell_render border-box-sizing rendered_html">
3967 4662 <p>Or you can enter latex directly with the <code>%%latex</code> cell magic:</p>
3968 4663 </div>
@@ -3981,11 +4676,15 b' $$F(k) = \\int_{-\\infty}^{\\infty} f(x) e^{2\\pi i k} dx$$'
3981 4676
3982 4677 </div>
3983 4678 </div>
3984 <div class="vbox output_wrapper">
4679 <div class="output_wrapper">
3985 4680 <div class="output vbox">
4681 <div class="prompt output_prompt">
4682 <div class="output vbox"></div>
4683 </div>
3986 4684 <div class="hbox output_area">
3987 <div class="prompt output_prompt"></div>
3988 <div class="output_subarea output_display_data">
4685 <div class="prompt"></div>
4686 <div class="box-flex1 output_subarea output_display_data">
4687
3989 4688 \begin{aligned}
3990 4689 \nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\
3991 4690 \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
@@ -3996,15 +4695,15 b' $$F(k) = \\int_{-\\infty}^{\\infty} f(x) e^{2\\pi i k} dx$$'
3996 4695 </div>
3997 4696 </div>
3998 4697 </div>
3999 </div>
4000 <div style=display:none class="text_cell_render border-box-sizing rendered_html">
4698 </div><div style=display:none>
4699
4700 <div class="text_cell_render border-box-sizing rendered_html">
4001 4701 <p>There is also a <code>%%javascript</code> cell magic for running javascript directly,
4002 4702 and <code>%%svg</code> for manually entering SVG content.</p>
4003 4703 </div>
4004 </section>
4005 </section>
4006 <section>
4007 <section>
4704 </div></section>
4705 </section><section>
4706 <section>
4008 4707 <div class="text_cell_render border-box-sizing rendered_html">
4009 4708 <h1>Loading external codes</h1>
4010 4709 <ul>
@@ -4013,12 +4712,12 b' and <code>%%svg</code> for manually entering SVG content.</p>'
4013 4712 </ul>
4014 4713 <p>In this notebook we've kept the output saved so you can see the result, but you should run the next
4015 4714 cell yourself (with an active internet connection).</p>
4016 </div>
4017 </section><section>
4715 </div></section><section>
4018 4716 <div class="text_cell_render border-box-sizing rendered_html">
4019 4717 <p>Let's make sure we have pylab again, in case we have restarted the kernel due to the crash demo above</p>
4020 </div>
4021 <div class="fragment" class="cell border-box-sizing code_cell vbox">
4718 </div><div class="fragment">
4719
4720 <div class="cell border-box-sizing code_cell vbox">
4022 4721 <div class="input hbox">
4023 4722 <div class="prompt input_prompt">In&nbsp;[12]:</div>
4024 4723 <div class="input_area box-flex1">
@@ -4027,11 +4726,14 b' cell yourself (with an active internet connection).</p>'
4027 4726
4028 4727 </div>
4029 4728 </div>
4030 <div class="vbox output_wrapper">
4729 <div class="output_wrapper">
4031 4730 <div class="output vbox">
4731 <div class="prompt output_prompt">
4732 <div class="output vbox"></div>
4733 </div>
4032 4734 <div class="hbox output_area">
4033 <div class="prompt output_prompt"></div>
4034 <div class="output_subarea output_stream output_stdout">
4735 <div class="prompt"></div>
4736 <div class="box-flex1 output_subarea output_stream output_stdout">
4035 4737 <pre>
4036 4738 Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].
4037 4739 For more information, type &apos;help(pylab)&apos;.
@@ -4041,7 +4743,9 b' For more information, type &apos;help(pylab)&apos;.'
4041 4743 </div>
4042 4744 </div>
4043 4745 </div>
4044 <div class="fragment" class="cell border-box-sizing code_cell vbox">
4746 </div><div class="fragment">
4747
4748 <div class="cell border-box-sizing code_cell vbox">
4045 4749 <div class="input hbox">
4046 4750 <div class="prompt input_prompt">In&nbsp;[15]:</div>
4047 4751 <div class="input_area box-flex1">
@@ -4051,7 +4755,9 b' For more information, type &apos;help(pylab)&apos;.'
4051 4755 </div>
4052 4756 </div>
4053 4757 </div>
4054 <div style=display:none class="cell border-box-sizing code_cell vbox">
4758 </div><div style=display:none>
4759
4760 <div class="cell border-box-sizing code_cell vbox">
4055 4761 <div class="input hbox">
4056 4762 <div class="prompt input_prompt">In&nbsp;[16]:</div>
4057 4763 <div class="input_area box-flex1">
@@ -4093,11 +4799,15 b' For more information, type &apos;help(pylab)&apos;.'
4093 4799
4094 4800 </div>
4095 4801 </div>
4096 <div class="vbox output_wrapper">
4802 <div class="output_wrapper">
4097 4803 <div class="output vbox">
4804 <div class="prompt output_prompt">
4805 <div class="output vbox"></div>
4806 </div>
4098 4807 <div class="hbox output_area">
4099 <div class="prompt output_prompt"></div>
4100 <div class="output_subarea output_display_data">
4808 <div class="prompt"></div>
4809 <div class="box-flex1 output_subarea output_display_data">
4810
4101 4811 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAV0AAAD5CAYAAACEcub7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
4102 4812 AAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl0VPX5x/H3ZN9JkLAkASMYoiTIvoqgxRU3/LmgBVRq
4103 4813 XVHEVqFq0UiVRVwDatWjiBZcTottpYhSUBQw7ARIIAsQQljDEkJ2MjO/PwYoSMg6M3fu5PM6h2NJ
@@ -4258,8 +4968,9 b' X07vG9Z4QUTEBQ4dOkRpaSklJSVnnQPx/xV9BfkfDyZLAAAAAElFTkSuQmCC'
4258 4968 </div>
4259 4969 </div>
4260 4970 </div>
4261 </section>
4262 </section>
4971 </div></section>
4972 </section>
4973
4263 4974 </div></div>
4264 4975
4265 4976 <!-- Social buttons -->
@@ -4307,8 +5018,9 b' dependencies: ['
4307 5018 { src: 'reveal/lib/js/classList.js', condition: function() { return !document.body.classList; } },
4308 5019 { src: 'reveal/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
4309 5020 { src: 'reveal/plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
4310 { src: 'reveal/plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } },
5021 { src: 'notes/notes.js', async: true, condition: function() { return !!document.body.classList; } },
4311 5022 { src: 'http://s7.addthis.com/js/300/addthis_widget.js', async: true},
5023 { src: 'js/revealmathjax.js', async: true},
4312 5024 { src: 'js/mathjax-onload.js', async: true}
4313 5025 ]
4314 5026 });
@@ -4320,4 +5032,5 b' MathJax.Hub.Rerender(event.currentSlide);'
4320 5032 });
4321 5033 </script>
4322 5034 </body>
4323 </html> No newline at end of file
5035
5036 </html>
1 NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (1514 lines changed) Show them Hide them
General Comments 0
You need to be logged in to leave comments. Login now