Login Sign up

(Re)using content between notebooks and beyond

Rowan Cockett, Steve Purves

Audience level:

Brief Summary

The analysis and explanations in Jupyter Notebooks are often required in other reports, presentations, papers, or tutorials. Currently, content is duplicated through copy/paste, loosing any ability for linked updates, versions or downstream contributions. We introduce a tool, iooxa, that enables the “import” of cells between notebooks and editing of that content in an interactive writing platform.


Explanations or analysis that start in a Jupyter Notebook are often required in other contexts - such as reports, presentations, papers, or tutorials. To create these other documents, Notebook content is duplicated using screenshots or copy/paste of text and images. Unfortunately, this copy/paste style of creating documents does not create links to the original notebook, and provides limited avenues for contribution from where that content is used downstream (e.g. improving explanations, fixing typos, etc.). Similarly, if an analysis or explanation is updated (e.g. a new figure), the reports or presentations that make use of that content must manually be made aware of those updates.

To link these downstream documents build-chains are required, which is often too onerous for presentations or reports, and requires context switching for any downstream contribution. For example, an “Edit on GitHub” button in documentation/books requires knowledge of Git, GitHub, and Markdown/RST, which remains a high bar for potential non-technical contributors.

In this presentation we introduce a tool, iooxa, that allows you to sync content between Jupyter Notebooks and a web-based, collaborative document editor. This allows you to track cells and content between Jupyter Notebooks and edit that content directly in downstream documents - while maintaining attribution, version history, as well as making any updates available in the original notebook through a Jupyter Lab/Notebook extension.

Our goal with these tools is to encourage linking and reuse of content and the integration of interactive, explorable explanations that live in contexts beyond the Jupyter Notebook. In this presentation we will share some of our experience of creating educational materials and software tutorials (e.g. in SimPEG and GeoSci.xyz), where one of our goals is to encourage contribution from non-technical contributors and share the educational content between projects (e.g. through figure, equation and question banks, see a lightning talk here, and a previous JupyterCon talk). We will also describe how these developments interact with recent work in JupyterBook and MyST.

The poster will present the parallels between programming and writing (building upon a SciPy talk), and how concepts like “package managers” for content and standards for “interactive writing” could impact the communication of scientific ideas.