Runtools
Runtools provide a number of additional functions for working with code cells in the IPython notebook:
Code Cell Execution
- Execute a single cell
- Execute from top cell to currently selected cell
- Execute from currently selected cell to bottom cell
- Execute all cells
- Execute all cells, ignore exceptions (requires ipython/pull/6521)
- Execute marked code cells (cells with green gutter area are marked)
- Stop execution (duplicate to standard toolbar button)
When executing marked cells, they are put in a execution list, and
executed in order. The execution list can be modified by unmarking
a cell not yet run. The execution list can be stopped by clicking on
stop execution
. Execution of the currently running cell can be stopped
by pressing stop execution
twice.
Code Cell Marking
- Mark one or more code cell
Code Cell Display
- Hide or show input (i.e. the source code) of marked code cells
- Hide or show output of marked code cells
Description
The runtools extension adds a button to turn on/off a floating toolbar:
This adds Code execution buttons:
Codecells can be marked by clicking on the gutter of a codecell or by clicking on the markers toolbar:
Marked codecells can be locked to read-only mode and moved upd and down:
The input and output areas of marked codecells can be hidden:
A IPython notebook with marked cells looks like this:
Demo
Internals
New metadata elements added to each cell:
cell.metadata.hide_input
- hide input field of the cellcell.metadata.hide_output
- hide output field of the cellcell.metadata.run_control.marked
- mark a codecell
To export a notebook with hidden input/output fields, the custom template hide_input_output.tpl
is required.
It should have been installed in the templates
folder.
You can find the templates
folder of jupyter_contrib_nbextensions
from python using
from jupyter_contrib_nbextensions.nbconvert_support import templates_directory
print(templates_directory())
The template needs to be in a path where nbconvert can find it. This can be your local path or specified in
jupyter_nbconvert_config
or jupyter_notebook_config
as c.Exporter.extra_template_paths
, see Jupyter docs.
For HTML export a template is provided as nbextensions.tpl
in the jupyter_contrib_nbextensions
templates directory. Alternatively you can create your own template:
{%- extends 'full.tpl' -%}
{% block input_group -%}
{%- if cell.metadata.hide_input -%}
{%- else -%}
{{ super() }}
{%- endif -%}
{% endblock input_group %}
{% block output_group -%}
{%- if cell.metadata.hide_output -%}
{%- else -%}
{{ super() }}
{%- endif -%}
{% endblock output_group %}
For LaTeX export a different template is required, which is included as nbextensions.tplx
in the jupyter_contrib_nbextensions
templates directory. Alternatively you can create your own template:
((- extends 'report.tplx' -))
((* block input_group -))
((- if cell.metadata.hide_input -))
((- else -))
((( super() )))
((- endif -))
(( endblock input_group *))
((* block output_group -))
((- if cell.metadata.hide_output -))
((- else -))
((( super() )))
((- endif -))
(( endblock output_group *))