##// END OF EJS Templates
Added new delimiters to build vertical (nested slides). We also update the example_slide.ipynb to show the new functionality
damianavila -
Show More
@@ -1,134 +1,145 b''
1 from converters.markdown import ConverterMarkdown
1 from converters.markdown import ConverterMarkdown
2 import io
2 import io
3 import os
3 import os
4
4
5 class ConverterReveal(ConverterMarkdown):
5 class ConverterReveal(ConverterMarkdown):
6 """Convert a notebook to a html slideshow.
6 """Convert a notebook to a html slideshow.
7
7
8 It generates a static html slideshow based in markdown and reveal.js.
8 It generates a static html slideshow based in markdown and reveal.js.
9 You have four ways to delimit the the slides:
10 ##--- delimit horizontal slides
11 ##<<< open vertical slides
12 ##>>> close vertical slides
13 ##>>><<< close vertical slides and open new vertical slides.
9 """
14 """
10
15
11 def __init__(self, infile, highlight_source=False, show_prompts=True,
16 def __init__(self, infile, highlight_source=False, show_prompts=True,
12 inline_prompt=True):
17 inline_prompt=True):
13 super(ConverterMarkdown, self).__init__(infile)
18 super(ConverterMarkdown, self).__init__(infile)
14 self.highlight_source = highlight_source
19 self.highlight_source = highlight_source
15 self.show_prompts = show_prompts
20 self.show_prompts = show_prompts
16 self.inline_prompt = inline_prompt
21 self.inline_prompt = inline_prompt
17
22
18 def convert(self, cell_separator='\n'):
23 def convert(self, cell_separator='\n'):
19 """
24 """
20 Generic method to converts notebook to a string representation.
25 Generic method to converts notebook to a string representation.
21
26
22 This is accomplished by dispatching on the cell_type, so subclasses of
27 This is accomplished by dispatching on the cell_type, so subclasses of
23 Convereter class do not need to re-implement this method, but just
28 Convereter class do not need to re-implement this method, but just
24 need implementation for the methods that will be dispatched.
29 need implementation for the methods that will be dispatched.
25
30
26 Parameters
31 Parameters
27 ----------
32 ----------
28 cell_separator : string
33 cell_separator : string
29 Character or string to join cells with. Default is "\n"
34 Character or string to join cells with. Default is "\n"
30
35
31 Returns
36 Returns
32 -------
37 -------
33 out : string
38 out : string
34 """
39 """
35 lines = []
40 lines = []
36 lines.extend(self.optional_header())
41 lines.extend(self.optional_header())
37 top = '<section data-markdown><script type="text/template">'
42 left = '<section data-markdown><script type="text/template">'
38 bottom = '</script></section>'
43 right = '</script></section>'
39 text = self.main_body(cell_separator)
44 text = self.main_body(cell_separator)
40 for i,j in enumerate(text):
45 for i,j in enumerate(text):
41 if j == u'---':
46 if j == u'##---':
42 text[i] = bottom + top
47 text[i] = right + left
48 if j == u'##<<<':
49 text[i] = right + '<section>' + left
50 if j == u'##>>>':
51 text[i] = right + '</section>' + left
52 if j == u'##>>><<<':
53 text[i] = right + '</section><section>' + left
43 lines.extend(text)
54 lines.extend(text)
44 lines.extend(self.optional_footer())
55 lines.extend(self.optional_footer())
45 return u'\n'.join(lines)
56 return u'\n'.join(lines)
46
57
47 def save(self, outfile=None, encoding=None):
58 def save(self, outfile=None, encoding=None):
48 "read and parse notebook into self.nb"
59 "read and parse notebook into self.nb"
49 if outfile is None:
60 if outfile is None:
50 outfile = self.outbase + '_slides.' + 'html'
61 outfile = self.outbase + '_slides.' + 'html'
51 if encoding is None:
62 if encoding is None:
52 encoding = self.default_encoding
63 encoding = self.default_encoding
53 with io.open(outfile, 'w', encoding=encoding) as f:
64 with io.open(outfile, 'w', encoding=encoding) as f:
54 f.write(self.output)
65 f.write(self.output)
55 return os.path.abspath(outfile)
66 return os.path.abspath(outfile)
56
67
57 def optional_header(self):
68 def optional_header(self):
58 optional_header_body = [\
69 optional_header_body = [\
59 '''
70 '''
60 <!DOCTYPE html>
71 <!DOCTYPE html>
61 <html>
72 <html>
62 <head>
73 <head>
63 <meta charset="utf-8" />
74 <meta charset="utf-8" />
64 <meta http-equiv="X-UA-Compatible" content="chrome=1">
75 <meta http-equiv="X-UA-Compatible" content="chrome=1">
65
76
66 <meta name="apple-mobile-web-app-capable" content="yes" />
77 <meta name="apple-mobile-web-app-capable" content="yes" />
67 <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
78 <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
68
79
69 <link rel="stylesheet" href="reveal/css/reveal.css">
80 <link rel="stylesheet" href="reveal/css/reveal.css">
70 <link rel="stylesheet" href="reveal/css/theme/default.css" id="theme">
81 <link rel="stylesheet" href="reveal/css/theme/default.css" id="theme">
71
82
72 <!-- For syntax highlighting -->
83 <!-- For syntax highlighting -->
73 <link rel="stylesheet" href="reveal/lib/css/zenburn.css">
84 <link rel="stylesheet" href="reveal/lib/css/zenburn.css">
74
85
75 <!-- If the query includes 'print-pdf', use the PDF print sheet -->
86 <!-- If the query includes 'print-pdf', use the PDF print sheet -->
76 <script>
87 <script>
77 document.write( '<link rel="stylesheet" href="reveal/css/print/' + ( window.location.search.match( /print-pdf/gi ) ? 'pdf' : 'paper' ) + '.css" type="text/css" media="print">' );
88 document.write( '<link rel="stylesheet" href="reveal/css/print/' + ( window.location.search.match( /print-pdf/gi ) ? 'pdf' : 'paper' ) + '.css" type="text/css" media="print">' );
78 </script>
89 </script>
79
90
80 <!--[if lt IE 9]>
91 <!--[if lt IE 9]>
81 <script src="reveal/lib/js/html5shiv.js"></script>
92 <script src="reveal/lib/js/html5shiv.js"></script>
82 <![endif]-->
93 <![endif]-->
83
94
84 </head>
95 </head>
85 <body><div class="reveal"><div class="slides">
96 <body><div class="reveal"><div class="slides">
86 <section data-markdown><script type="text/template">
97 <section data-markdown><script type="text/template">
87 ''']
98 ''']
88 return optional_header_body
99 return optional_header_body
89
100
90 def optional_footer(self):
101 def optional_footer(self):
91 optional_footer_body = [\
102 optional_footer_body = [\
92 '''
103 '''
93 </script></section>
104 </script></section>
94 </div></div>
105 </div></div>
95
106
96 <script src="reveal/lib/js/head.min.js"></script>
107 <script src="reveal/lib/js/head.min.js"></script>
97
108
98 <script src="reveal/js/reveal.min.js"></script>
109 <script src="reveal/js/reveal.min.js"></script>
99
110
100 <script>
111 <script>
101
112
102 // Full list of configuration options available here: https://github.com/hakimel/reveal.js#configuration
113 // Full list of configuration options available here: https://github.com/hakimel/reveal.js#configuration
103 Reveal.initialize({
114 Reveal.initialize({
104 controls: true,
115 controls: true,
105 progress: true,
116 progress: true,
106 history: true,
117 history: true,
107
118
108 theme: Reveal.getQueryHash().theme || 'night', // available themes are in /css/theme
119 theme: Reveal.getQueryHash().theme || 'night', // available themes are in /css/theme
109 transition: Reveal.getQueryHash().transition || 'linear', // default/cube/page/concave/zoom/linear/none
120 transition: Reveal.getQueryHash().transition || 'linear', // default/cube/page/concave/zoom/linear/none
110
121
111 // Optional libraries used to extend on reveal.js
122 // Optional libraries used to extend on reveal.js
112 dependencies: [
123 dependencies: [
113 { src: 'reveal/lib/js/classList.js', condition: function() { return !document.body.classList; } },
124 { src: 'reveal/lib/js/classList.js', condition: function() { return !document.body.classList; } },
114 { src: 'reveal/plugin/markdown/showdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
125 { src: 'reveal/plugin/markdown/showdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
115 { src: 'reveal/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
126 { src: 'reveal/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
116 { src: 'reveal/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
127 { src: 'reveal/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
117 { src: 'reveal/plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
128 { src: 'reveal/plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
118 { src: 'reveal/plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } },
129 { src: 'reveal/plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } },
119 { src: 'https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js?config=TeX-AMS_HTML', async: true },
130 { src: 'https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js?config=TeX-AMS_HTML', async: true },
120 { src: 'js/revealmathjax.js', async: true}
131 { src: 'js/revealmathjax.js', async: true}
121 ]
132 ]
122 });
133 });
123 </script>
134 </script>
124
135
125 <script>
136 <script>
126 Reveal.addEventListener( 'slidechanged', function( event ) {
137 Reveal.addEventListener( 'slidechanged', function( event ) {
127 MathJax.Hub.Rerender();
138 MathJax.Hub.Rerender();
128 });
139 });
129 </script>
140 </script>
130
141
131 </body>
142 </body>
132 </html>
143 </html>
133 ''']
144 ''']
134 return optional_footer_body
145 return optional_footer_body
@@ -1,468 +1,468 b''
1 {
1 {
2 "metadata": {
2 "metadata": {
3 "name": "test_example_slide"
3 "name": "example_slide"
4 },
4 },
5 "nbformat": 3,
5 "nbformat": 3,
6 "nbformat_minor": 0,
6 "nbformat_minor": 0,
7 "worksheets": [
7 "worksheets": [
8 {
8 {
9 "cells": [
9 "cells": [
10 {
10 {
11 "cell_type": "heading",
11 "cell_type": "heading",
12 "level": 1,
12 "level": 1,
13 "metadata": {},
13 "metadata": {},
14 "source": [
14 "source": [
15 "Notebook Slide Example"
15 "Notebook Slide Example"
16 ]
16 ]
17 },
17 },
18 {
18 {
19 "cell_type": "markdown",
19 "cell_type": "markdown",
20 "metadata": {},
20 "metadata": {},
21 "source": [
21 "source": [
22 "Rendered by vIPer using [Reveal.js](http://lab.hakim.se/reveal-js)!"
22 "Rendered by vIPer using [Reveal.js](http://lab.hakim.se/reveal-js)!"
23 ]
23 ]
24 },
24 },
25 {
25 {
26 "cell_type": "markdown",
26 "cell_type": "markdown",
27 "metadata": {},
27 "metadata": {},
28 "source": [
28 "source": [
29 "(also you can get a [pdf](http://www.slideviper.oquanta.info/reveal/slides.pdf) version with chrome!)"
29 "(also you can get a [pdf](http://www.slideviper.oquanta.info/reveal/slides.pdf) version with chrome!)"
30 ]
30 ]
31 },
31 },
32 {
32 {
33 "cell_type": "markdown",
33 "cell_type": "markdown",
34 "metadata": {},
34 "metadata": {},
35 "source": [
35 "source": [
36 "---"
36 "##<<<"
37 ]
37 ]
38 },
38 },
39 {
39 {
40 "cell_type": "heading",
40 "cell_type": "heading",
41 "level": 2,
41 "level": 2,
42 "metadata": {},
42 "metadata": {},
43 "source": [
43 "source": [
44 "NOTE: This notebook was modified from a Fernando's one"
44 "NOTE: This notebook was modified from a Fernando's one"
45 ]
45 ]
46 },
46 },
47 {
47 {
48 "cell_type": "markdown",
48 "cell_type": "markdown",
49 "metadata": {},
49 "metadata": {},
50 "source": [
50 "source": [
51 "Since the notebook was introduced with [IPython 0.12](http://ipython.org/ipython-doc/rel-0.12.1/whatsnew/version0.12.html), it has proved to be very popular, and we are seeing great adoption of the tool and the underlying file format in research and education. One persistent question we've had since the beginning (even prior to its official release) was whether it would be possible to easily write blog posts using the notebook."
51 "Since the notebook was introduced with [IPython 0.12](http://ipython.org/ipython-doc/rel-0.12.1/whatsnew/version0.12.html), it has proved to be very popular, and we are seeing great adoption of the tool and the underlying file format in research and education. One persistent question we've had since the beginning (even prior to its official release) was whether it would be possible to easily write blog posts using the notebook."
52 ]
52 ]
53 },
53 },
54 {
54 {
55 "cell_type": "markdown",
55 "cell_type": "markdown",
56 "metadata": {},
56 "metadata": {},
57 "source": [
57 "source": [
58 "---"
58 "##---"
59 ]
59 ]
60 },
60 },
61 {
61 {
62 "cell_type": "markdown",
62 "cell_type": "markdown",
63 "metadata": {},
63 "metadata": {},
64 "source": [
64 "source": [
65 "The combination of easy editing in markdown with the notebook's ability to contain code, figures and results, makes it an ideal platform for quick authoring of technical documents, so being able to post to a blog is a natural request."
65 "The combination of easy editing in markdown with the notebook's ability to contain code, figures and results, makes it an ideal platform for quick authoring of technical documents, so being able to post to a blog is a natural request."
66 ]
66 ]
67 },
67 },
68 {
68 {
69 "cell_type": "markdown",
69 "cell_type": "markdown",
70 "metadata": {},
70 "metadata": {},
71 "source": [
71 "source": [
72 "---"
72 "##---"
73 ]
73 ]
74 },
74 },
75 {
75 {
76 "cell_type": "markdown",
76 "cell_type": "markdown",
77 "metadata": {},
77 "metadata": {},
78 "source": [
78 "source": [
79 "Today, in answering a query about this from a colleague, I decided to try again the status of our conversion pipeline, and I'm happy to report that with a bit of elbow-grease, at least on Blogger things work pretty well! \n",
79 "Today, in answering a query about this from a colleague, I decided to try again the status of our conversion pipeline, and I'm happy to report that with a bit of elbow-grease, at least on Blogger things work pretty well! \n",
80 "\n",
80 "\n",
81 "This post was *entirely* written as a notebook, and in fact I have now created a [github repo](https://github.com/fperez/blog), which means that you can see it directly [rendered in IPyhton's nbviewer app](http://nbviewer.ipython.org/urls/raw.github.com/fperez/blog/master/120907-Blogging with the IPython Notebook.ipynb)."
81 "This post was *entirely* written as a notebook, and in fact I have now created a [github repo](https://github.com/fperez/blog), which means that you can see it directly [rendered in IPyhton's nbviewer app](http://nbviewer.ipython.org/urls/raw.github.com/fperez/blog/master/120907-Blogging with the IPython Notebook.ipynb)."
82 ]
82 ]
83 },
83 },
84 {
84 {
85 "cell_type": "markdown",
85 "cell_type": "markdown",
86 "metadata": {},
86 "metadata": {},
87 "source": [
87 "source": [
88 "---"
88 "##>>><<<"
89 ]
89 ]
90 },
90 },
91 {
91 {
92 "cell_type": "heading",
92 "cell_type": "heading",
93 "level": 2,
93 "level": 2,
94 "metadata": {},
94 "metadata": {},
95 "source": [
95 "source": [
96 "Converting your notebook to html with nbconvert"
96 "Converting your notebook to html with nbconvert"
97 ]
97 ]
98 },
98 },
99 {
99 {
100 "cell_type": "markdown",
100 "cell_type": "markdown",
101 "metadata": {},
101 "metadata": {},
102 "source": [
102 "source": [
103 "The first thing you will need is our [nbconvert](https://github.com/ipython/nbconvert) tool that converts notebooks across formats. The README file in the repo contains the requirements for nbconvert (basically [python-markdown](http://pypi.python.org/pypi/Markdown/), [pandoc](http://johnmacfarlane.net/pandoc), [docutils from SVN](http://docutils.svn.sourceforge.net/viewvc/docutils/trunk/docutils/?view=tar) and [pygments](http://pygments.org)).\n",
103 "The first thing you will need is our [nbconvert](https://github.com/ipython/nbconvert) tool that converts notebooks across formats. The README file in the repo contains the requirements for nbconvert (basically [python-markdown](http://pypi.python.org/pypi/Markdown/), [pandoc](http://johnmacfarlane.net/pandoc), [docutils from SVN](http://docutils.svn.sourceforge.net/viewvc/docutils/trunk/docutils/?view=tar) and [pygments](http://pygments.org)).\n",
104 "\n",
104 "\n",
105 "Once you have nbconvert installed, you can convert your notebook to Blogger-friendly html with:\n",
105 "Once you have nbconvert installed, you can convert your notebook to Blogger-friendly html with:\n",
106 "\n",
106 "\n",
107 " nbconvert -f blogger-html your_notebook.ipynb"
107 " nbconvert -f blogger-html your_notebook.ipynb"
108 ]
108 ]
109 },
109 },
110 {
110 {
111 "cell_type": "markdown",
111 "cell_type": "markdown",
112 "metadata": {},
112 "metadata": {},
113 "source": [
113 "source": [
114 "---"
114 "##---"
115 ]
115 ]
116 },
116 },
117 {
117 {
118 "cell_type": "markdown",
118 "cell_type": "markdown",
119 "metadata": {},
119 "metadata": {},
120 "source": [
120 "source": [
121 "This will leave two files in your computer, one named `your_notebook.html` and one named `your_noteboook_header.html`; it might also create a directory called `your_notebook_files` if needed for ancillary files. The first file will contain the body of your post and can be pasted wholesale into the Blogger editing area. The second file contains the CSS and Javascript material needed for the notebook to display correctly, you should only need to use this once to configure your blogger setup (see next):"
121 "This will leave two files in your computer, one named `your_notebook.html` and one named `your_noteboook_header.html`; it might also create a directory called `your_notebook_files` if needed for ancillary files. The first file will contain the body of your post and can be pasted wholesale into the Blogger editing area. The second file contains the CSS and Javascript material needed for the notebook to display correctly, you should only need to use this once to configure your blogger setup (see next):"
122 ]
122 ]
123 },
123 },
124 {
124 {
125 "cell_type": "markdown",
125 "cell_type": "markdown",
126 "metadata": {},
126 "metadata": {},
127 "source": [
127 "source": [
128 "---"
128 "##---"
129 ]
129 ]
130 },
130 },
131 {
131 {
132 "cell_type": "markdown",
132 "cell_type": "markdown",
133 "metadata": {},
133 "metadata": {},
134 "source": [
134 "source": [
135 " # Only one notebook so far\n",
135 " # Only one notebook so far\n",
136 " (master)longs[blog]> ls\n",
136 " (master)longs[blog]> ls\n",
137 " 120907-Blogging with the IPython Notebook.ipynb fig/ old/\n",
137 " 120907-Blogging with the IPython Notebook.ipynb fig/ old/\n",
138 "\n",
138 "\n",
139 " # Now run the conversion:\n",
139 " # Now run the conversion:\n",
140 " (master)longs[blog]> nbconvert.py -f blogger-html 120907-Blogging\\ with\\ the\\ IPython\\ Notebook.ipynb\n",
140 " (master)longs[blog]> nbconvert.py -f blogger-html 120907-Blogging\\ with\\ the\\ IPython\\ Notebook.ipynb\n",
141 " \n",
141 " \n",
142 " # This creates the header and html body files\n",
142 " # This creates the header and html body files\n",
143 " (master)longs[blog]> ls\n",
143 " (master)longs[blog]> ls\n",
144 " 120907-Blogging with the IPython Notebook_header.html fig/\n",
144 " 120907-Blogging with the IPython Notebook_header.html fig/\n",
145 " 120907-Blogging with the IPython Notebook.html old/\n",
145 " 120907-Blogging with the IPython Notebook.html old/\n",
146 " 120907-Blogging with the IPython Notebook.ipynb"
146 " 120907-Blogging with the IPython Notebook.ipynb"
147 ]
147 ]
148 },
148 },
149 {
149 {
150 "cell_type": "markdown",
150 "cell_type": "markdown",
151 "metadata": {},
151 "metadata": {},
152 "source": [
152 "source": [
153 "---"
153 "##>>><<<"
154 ]
154 ]
155 },
155 },
156 {
156 {
157 "cell_type": "heading",
157 "cell_type": "heading",
158 "level": 2,
158 "level": 2,
159 "metadata": {},
159 "metadata": {},
160 "source": [
160 "source": [
161 "Configuring your Blogger blog to accept notebooks"
161 "Configuring your Blogger blog to accept notebooks"
162 ]
162 ]
163 },
163 },
164 {
164 {
165 "cell_type": "markdown",
165 "cell_type": "markdown",
166 "metadata": {},
166 "metadata": {},
167 "source": [
167 "source": [
168 "The notebook uses a lot of custom CSS for formatting input and output, as well as Javascript from [MathJax](http://www.mathjax.org) to display mathematical notation. You will need all this CSS and the Javascript calls in your blog's configuration for your notebook-based posts to display correctly:"
168 "The notebook uses a lot of custom CSS for formatting input and output, as well as Javascript from [MathJax](http://www.mathjax.org) to display mathematical notation. You will need all this CSS and the Javascript calls in your blog's configuration for your notebook-based posts to display correctly:"
169 ]
169 ]
170 },
170 },
171 {
171 {
172 "cell_type": "markdown",
172 "cell_type": "markdown",
173 "metadata": {},
173 "metadata": {},
174 "source": [
174 "source": [
175 "---"
175 "##---"
176 ]
176 ]
177 },
177 },
178 {
178 {
179 "cell_type": "markdown",
179 "cell_type": "markdown",
180 "metadata": {},
180 "metadata": {},
181 "source": [
181 "source": [
182 "1. Once authenticated, go to your blog's overview page by clicking on its title.\n",
182 "1. Once authenticated, go to your blog's overview page by clicking on its title.\n",
183 "2. Click on templates (left column) and customize using the Advanced options.\n",
183 "2. Click on templates (left column) and customize using the Advanced options.\n",
184 "3. Scroll down the middle column until you see an \"Add CSS\" option.\n",
184 "3. Scroll down the middle column until you see an \"Add CSS\" option.\n",
185 "4. Copy entire the contents of the `_header` file into the CSS box."
185 "4. Copy entire the contents of the `_header` file into the CSS box."
186 ]
186 ]
187 },
187 },
188 {
188 {
189 "cell_type": "markdown",
189 "cell_type": "markdown",
190 "metadata": {},
190 "metadata": {},
191 "source": [
191 "source": [
192 "---"
192 "##---"
193 ]
193 ]
194 },
194 },
195 {
195 {
196 "cell_type": "markdown",
196 "cell_type": "markdown",
197 "metadata": {},
197 "metadata": {},
198 "source": [
198 "source": [
199 "That's it, and you shouldn't need to do anything else as long as the CSS we use in the notebooks doesn't drastically change. This customization of your blog needs to be done only once.\n",
199 "That's it, and you shouldn't need to do anything else as long as the CSS we use in the notebooks doesn't drastically change. This customization of your blog needs to be done only once.\n",
200 "\n",
200 "\n",
201 "While you are at it, I recommend you change the width of your blog so that cells have enough space for clean display; in experimenting I found out that the default template was too narrow to properly display code cells, producing a lot of text wrapping that impaired readability. I ended up using a layout with a single column for all blog contents, putting the blog archive at the bottom. Otherwise, if I kept the right sidebar, code cells got too squished in the post area."
201 "While you are at it, I recommend you change the width of your blog so that cells have enough space for clean display; in experimenting I found out that the default template was too narrow to properly display code cells, producing a lot of text wrapping that impaired readability. I ended up using a layout with a single column for all blog contents, putting the blog archive at the bottom. Otherwise, if I kept the right sidebar, code cells got too squished in the post area."
202 ]
202 ]
203 },
203 },
204 {
204 {
205 "cell_type": "markdown",
205 "cell_type": "markdown",
206 "metadata": {},
206 "metadata": {},
207 "source": [
207 "source": [
208 "---"
208 "##---"
209 ]
209 ]
210 },
210 },
211 {
211 {
212 "cell_type": "markdown",
212 "cell_type": "markdown",
213 "metadata": {},
213 "metadata": {},
214 "source": [
214 "source": [
215 "I also had problems using some of the fancier templates available from 'Dynamic Views', in that I could never get inline math to render. But sticking to those from the Simple or 'Picture Window' categories worked fine and they still allow for a lot of customization.\n",
215 "I also had problems using some of the fancier templates available from 'Dynamic Views', in that I could never get inline math to render. But sticking to those from the Simple or 'Picture Window' categories worked fine and they still allow for a lot of customization.\n",
216 "\n",
216 "\n",
217 "*Note:* if you change blog templates, Blogger does destroy your custom CSS, so you may need to repeat the above steps in that case."
217 "*Note:* if you change blog templates, Blogger does destroy your custom CSS, so you may need to repeat the above steps in that case."
218 ]
218 ]
219 },
219 },
220 {
220 {
221 "cell_type": "markdown",
221 "cell_type": "markdown",
222 "metadata": {},
222 "metadata": {},
223 "source": [
223 "source": [
224 "---"
224 "##>>>"
225 ]
225 ]
226 },
226 },
227 {
227 {
228 "cell_type": "heading",
228 "cell_type": "heading",
229 "level": 2,
229 "level": 2,
230 "metadata": {},
230 "metadata": {},
231 "source": [
231 "source": [
232 "Adding the actual posts"
232 "Adding the actual posts"
233 ]
233 ]
234 },
234 },
235 {
235 {
236 "cell_type": "markdown",
236 "cell_type": "markdown",
237 "metadata": {},
237 "metadata": {},
238 "source": [
238 "source": [
239 "Now, whenever you want to write a new post as a notebook, simply convert the `.ipynb` file to blogger-html and copy its entire contents to the clipboard. Then go to the 'raw html' view of the post, remove anything Blogger may have put there by default, and paste. You should also click on the 'options' tab (right hand side) and select both `Show HTML literally` and `Use <br> tag`, else your paragraph breaks will look all wrong.\n",
239 "Now, whenever you want to write a new post as a notebook, simply convert the `.ipynb` file to blogger-html and copy its entire contents to the clipboard. Then go to the 'raw html' view of the post, remove anything Blogger may have put there by default, and paste. You should also click on the 'options' tab (right hand side) and select both `Show HTML literally` and `Use <br> tag`, else your paragraph breaks will look all wrong.\n",
240 "\n",
240 "\n",
241 "That's it!"
241 "That's it!"
242 ]
242 ]
243 },
243 },
244 {
244 {
245 "cell_type": "markdown",
245 "cell_type": "markdown",
246 "metadata": {},
246 "metadata": {},
247 "source": [
247 "source": [
248 "---"
248 "##---"
249 ]
249 ]
250 },
250 },
251 {
251 {
252 "cell_type": "heading",
252 "cell_type": "heading",
253 "level": 2,
253 "level": 2,
254 "metadata": {},
254 "metadata": {},
255 "source": [
255 "source": [
256 "What can you put in?"
256 "What can you put in?"
257 ]
257 ]
258 },
258 },
259 {
259 {
260 "cell_type": "markdown",
260 "cell_type": "markdown",
261 "metadata": {},
261 "metadata": {},
262 "source": [
262 "source": [
263 "I will now add a few bits of code, plots, math, etc, to show which kinds of content can be put in and work out of the box. These are mostly bits copied from our [example notebooks](https://github.com/ipython/ipython/tree/master/docs/examples/notebooks) so the actual content doesn't matter, I'm just illustrating the *kind* of content that works."
263 "I will now add a few bits of code, plots, math, etc, to show which kinds of content can be put in and work out of the box. These are mostly bits copied from our [example notebooks](https://github.com/ipython/ipython/tree/master/docs/examples/notebooks) so the actual content doesn't matter, I'm just illustrating the *kind* of content that works."
264 ]
264 ]
265 },
265 },
266 {
266 {
267 "cell_type": "code",
267 "cell_type": "code",
268 "collapsed": false,
268 "collapsed": false,
269 "input": [
269 "input": [
270 "# Let's initialize pylab so we can plot later\n",
270 "# Let's initialize pylab so we can plot later\n",
271 "%pylab inline"
271 "%pylab inline"
272 ],
272 ],
273 "language": "python",
273 "language": "python",
274 "metadata": {},
274 "metadata": {},
275 "outputs": [
275 "outputs": [
276 {
276 {
277 "output_type": "stream",
277 "output_type": "stream",
278 "stream": "stdout",
278 "stream": "stdout",
279 "text": [
279 "text": [
280 "\n",
280 "\n",
281 "Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].\n",
281 "Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].\n",
282 "For more information, type 'help(pylab)'.\n"
282 "For more information, type 'help(pylab)'.\n"
283 ]
283 ]
284 }
284 }
285 ],
285 ],
286 "prompt_number": 1
286 "prompt_number": 1
287 },
287 },
288 {
288 {
289 "cell_type": "markdown",
289 "cell_type": "markdown",
290 "metadata": {},
290 "metadata": {},
291 "source": [
291 "source": [
292 "---"
292 "##---"
293 ]
293 ]
294 },
294 },
295 {
295 {
296 "cell_type": "markdown",
296 "cell_type": "markdown",
297 "metadata": {},
297 "metadata": {},
298 "source": [
298 "source": [
299 "With pylab loaded, the usual matplotlib operations work"
299 "With pylab loaded, the usual matplotlib operations work"
300 ]
300 ]
301 },
301 },
302 {
302 {
303 "cell_type": "code",
303 "cell_type": "code",
304 "collapsed": false,
304 "collapsed": false,
305 "input": [
305 "input": [
306 "x = linspace(0, 2*pi)\n",
306 "x = linspace(0, 2*pi)\n",
307 "plot(x, sin(x), label=r'$\\sin(x)$')\n",
307 "plot(x, sin(x), label=r'$\\sin(x)$')\n",
308 "plot(x, cos(x), 'ro', label=r'$\\cos(x)$')\n",
308 "plot(x, cos(x), 'ro', label=r'$\\cos(x)$')\n",
309 "title(r'Two familiar functions')\n",
309 "title(r'Two familiar functions')\n",
310 "legend()"
310 "legend()"
311 ],
311 ],
312 "language": "python",
312 "language": "python",
313 "metadata": {},
313 "metadata": {},
314 "outputs": [
314 "outputs": [
315 {
315 {
316 "output_type": "pyout",
316 "output_type": "pyout",
317 "prompt_number": 2,
317 "prompt_number": 2,
318 "text": [
318 "text": [
319 "<matplotlib.legend.Legend at 0xa90d90c>"
319 "<matplotlib.legend.Legend at 0xa90d90c>"
320 ]
320 ]
321 },
321 },
322 {
322 {
323 "output_type": "display_data",
323 "output_type": "display_data",
324 "png": "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\ncHL/D9ce9mWkzIEYAAAAAElFTkSuQmCC\n"
324 "png": "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\ncHL/D9ce9mWkzIEYAAAAAElFTkSuQmCC\n"
325 }
325 }
326 ],
326 ],
327 "prompt_number": 2
327 "prompt_number": 2
328 },
328 },
329 {
329 {
330 "cell_type": "markdown",
330 "cell_type": "markdown",
331 "metadata": {},
331 "metadata": {},
332 "source": [
332 "source": [
333 "---"
333 "##---"
334 ]
334 ]
335 },
335 },
336 {
336 {
337 "cell_type": "markdown",
337 "cell_type": "markdown",
338 "metadata": {},
338 "metadata": {},
339 "source": [
339 "source": [
340 "The notebook, thanks to MathJax, has great LaTeX support, so that you can type inline math $(1,\\gamma,\\ldots, \\infty)$ as well as displayed equations:\n",
340 "The notebook, thanks to MathJax, has great LaTeX support, so that you can type inline math $(1,\\gamma,\\ldots, \\infty)$ as well as displayed equations:\n",
341 "\n",
341 "\n",
342 "$$\n",
342 "$$\n",
343 "e^{i \\pi}+1=0\n",
343 "e^{i \\pi}+1=0\n",
344 "$$\n",
344 "$$\n",
345 "\n",
345 "\n",
346 "**(the last equation is beatiful, isn't it?... Dami\u00e1n talking... he he!)**"
346 "**(the last equation is beatiful, isn't it?... Dami\u00e1n talking... he he!)**"
347 ]
347 ]
348 },
348 },
349 {
349 {
350 "cell_type": "markdown",
350 "cell_type": "markdown",
351 "metadata": {},
351 "metadata": {},
352 "source": [
352 "source": [
353 "---"
353 "##<<<"
354 ]
354 ]
355 },
355 },
356 {
356 {
357 "cell_type": "heading",
357 "cell_type": "heading",
358 "level": 2,
358 "level": 2,
359 "metadata": {},
359 "metadata": {},
360 "source": [
360 "source": [
361 "You can easily include formatted text and code with markdown"
361 "You can easily include formatted text and code with markdown"
362 ]
362 ]
363 },
363 },
364 {
364 {
365 "cell_type": "markdown",
365 "cell_type": "markdown",
366 "metadata": {},
366 "metadata": {},
367 "source": [
367 "source": [
368 "You can *italicize*, **boldface**\n",
368 "You can *italicize*, **boldface**\n",
369 "\n",
369 "\n",
370 "* build \n",
370 "* build \n",
371 "* lists\n",
371 "* lists\n",
372 "\n",
372 "\n",
373 "and embed code meant for illustration instead of execution in Python:\n",
373 "and embed code meant for illustration instead of execution in Python:\n",
374 "\n",
374 "\n",
375 " def f(x):\n",
375 " def f(x):\n",
376 " \"\"\"a docstring\"\"\"\n",
376 " \"\"\"a docstring\"\"\"\n",
377 " return x**2"
377 " return x**2"
378 ]
378 ]
379 },
379 },
380 {
380 {
381 "cell_type": "markdown",
381 "cell_type": "markdown",
382 "metadata": {},
382 "metadata": {},
383 "source": [
383 "source": [
384 "---"
384 "##---"
385 ]
385 ]
386 },
386 },
387 {
387 {
388 "cell_type": "markdown",
388 "cell_type": "markdown",
389 "metadata": {},
389 "metadata": {},
390 "source": [
390 "source": [
391 "or other languages:\n",
391 "or other languages:\n",
392 "\n",
392 "\n",
393 " if (i=0; i<n; i++) {\n",
393 " if (i=0; i<n; i++) {\n",
394 " printf(\"hello %d\\n\", i);\n",
394 " printf(\"hello %d\\n\", i);\n",
395 " x += 4;\n",
395 " x += 4;\n",
396 " }"
396 " }"
397 ]
397 ]
398 },
398 },
399 {
399 {
400 "cell_type": "markdown",
400 "cell_type": "markdown",
401 "metadata": {},
401 "metadata": {},
402 "source": [
402 "source": [
403 "**And you also have highlight for your code, hehe! (Dami\u00e1n talking again...)**"
403 "**And you also have highlight for your code, hehe! (Dami\u00e1n talking again...)**"
404 ]
404 ]
405 },
405 },
406 {
406 {
407 "cell_type": "markdown",
407 "cell_type": "markdown",
408 "metadata": {},
408 "metadata": {},
409 "source": [
409 "source": [
410 "---"
410 "##>>>"
411 ]
411 ]
412 },
412 },
413 {
413 {
414 "cell_type": "markdown",
414 "cell_type": "markdown",
415 "metadata": {},
415 "metadata": {},
416 "source": [
416 "source": [
417 "And since the notebook can store displayed images in the file itself, you can show images which will be embedded in your post:"
417 "And since the notebook can store displayed images in the file itself, you can show images which will be embedded in your post:"
418 ]
418 ]
419 },
419 },
420 {
420 {
421 "cell_type": "markdown",
421 "cell_type": "markdown",
422 "metadata": {},
422 "metadata": {},
423 "source": [
423 "source": [
424 "![Image](http://www.bugtreat.com/blog/wp-content/uploads/2012/04/Python-Programming-Language.png)"
424 "![Image](http://www.bugtreat.com/blog/wp-content/uploads/2012/04/Python-Programming-Language.png)"
425 ]
425 ]
426 },
426 },
427 {
427 {
428 "cell_type": "markdown",
428 "cell_type": "markdown",
429 "metadata": {},
429 "metadata": {},
430 "source": [
430 "source": [
431 "---"
431 "##---"
432 ]
432 ]
433 },
433 },
434 {
434 {
435 "cell_type": "heading",
435 "cell_type": "heading",
436 "level": 1,
436 "level": 1,
437 "metadata": {},
437 "metadata": {},
438 "source": [
438 "source": [
439 "IPython rocks!"
439 "IPython rocks!"
440 ]
440 ]
441 },
441 },
442 {
442 {
443 "cell_type": "markdown",
443 "cell_type": "markdown",
444 "metadata": {},
444 "metadata": {},
445 "source": [
445 "source": [
446 "Just my little contribution...\n",
446 "Just my little contribution...\n",
447 "\n",
447 "\n",
448 "I have a lot of work to do but this is an exciting beginning!\n",
448 "I have a lot of work to do but this is an exciting beginning!\n",
449 "\n",
449 "\n",
450 "You can check [vIPer](http://www.viperapp.oquanta.info)."
450 "You can check [vIPer](http://www.viperapp.oquanta.info)."
451 ]
451 ]
452 },
452 },
453 {
453 {
454 "cell_type": "markdown",
454 "cell_type": "markdown",
455 "metadata": {},
455 "metadata": {},
456 "source": [
456 "source": [
457 "And you can find me at:\n",
457 "And you can find me at:\n",
458 "\n",
458 "\n",
459 "* [@damian_avila](https://twitter.com/damian_avila)\n",
459 "* [@damian_avila](https://twitter.com/damian_avila)\n",
460 "* [OQUANTA](http://www.oquanta.info)\n",
460 "* [OQUANTA](http://www.oquanta.info)\n",
461 "* [BLOG](http://www.damian.oquanta.info)"
461 "* [BLOG](http://www.damian.oquanta.info)"
462 ]
462 ]
463 }
463 }
464 ],
464 ],
465 "metadata": {}
465 "metadata": {}
466 }
466 }
467 ]
467 ]
468 } No newline at end of file
468 }
General Comments 0
You need to be logged in to leave comments. Login now