diff --git a/docs/source/development/figs/nbconvert.png b/docs/source/development/figs/nbconvert.png new file mode 100644 index 0000000000000000000000000000000000000000..e9864b9d10904ef6a5c4b9fb9969d3946baea0d5 GIT binary patch literal 23877 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 + + + + + + + + + image/svg+xml + + + + + + + + + + Notebook + + Preprocessors + + + Exporter + + + + + + Exportedfile + + + Postprocessors + + diff --git a/docs/source/development/how_ipython_works.rst b/docs/source/development/how_ipython_works.rst index 515dec0..e1daa33 100644 --- a/docs/source/development/how_ipython_works.rst +++ b/docs/source/development/how_ipython_works.rst @@ -69,3 +69,21 @@ notebooks, so you can edit notebooks even if you don't have the kernel for that language—you just won't be able to run code. The kernel doesn't know anything about the notebook document: it just gets sent cells of code to execute when the user runs them. + +Exporting to other formats +`````````````````````````` + +The Nbconvert tool in IPython converts notebook files to other formats, such as +HTML, LaTeX, or reStructuredText. This conversion goes through a series of steps: + +.. image:: figs/nbconvert.png + +1. Preprocessors modify the notebook in memory. E.g. ExecutePreprocessor runs + the code in the notebook and updates the output. +2. An exporter converts the notebook to another file format. Most of the + exporters use templates for this. +3. Postprocessors work on the file produced by exporting. + +The `nbviewer `_ website uses nbconvert with the +HTML exporter. When you give it a URL, it fetches the notebook from that URL, +converts it to HTML, and serves that HTML to you. diff --git a/docs/source/development/index.rst b/docs/source/development/index.rst index 5771c25..ba7dea4 100644 --- a/docs/source/development/index.rst +++ b/docs/source/development/index.rst @@ -19,6 +19,7 @@ on the IPython GitHub wiki. .. toctree:: :maxdepth: 1 + how_ipython_works messaging kernels wrapperkernels