You can use Jupyter Notebook cell tags to control some of the behavior of
the rendered notebook. This uses the sphinx-togglebutton
package to add a little button that toggles the visibility of content.
You can cell tags to control the content hidden with code cells. Add the following tags to a cell's metadata to control what to hide in code cells:
hide_input
tag to hide the cell inputshide_output
to hide the cell outputshide_cell
to hide the entire cellFor example, we'll show cells with each below.
import matplotlib.pyplot as plt
import numpy as np
data = np.random.rand(2, 100) * 100
Here is a cell with a hide_input
tag. Click the "toggle" button to the
right to show it.
# This cell has a hide_input tag
fig, ax = plt.subplots()
ax.scatter(*data, c=data[0], s=data[0])
<matplotlib.collections.PathCollection at 0x7f239d8561c0>
Here's a cell with a hide_output
tag:
# This cell has a hide_output tag
fig, ax = plt.subplots()
ax.scatter(*data, c=data[0], s=data[0])
<matplotlib.collections.PathCollection at 0x7f239d32e130>
And the following cell has a hide_cell
tag:
# This cell has a hide_cell tag
fig, ax = plt.subplots()
ax.scatter(*data, c=data[0], s=data[0])
<matplotlib.collections.PathCollection at 0x7f239d358880>
There are two ways to hide markdown cells. First, you can add the hide_input
cell metadata. This triggers the same hiding behavior described above for
code cells.
{note}
This cell was hidden by adding a `hide_input` tag to it!
You may also use a Sphinx directive to hide specific markdown content. This
is possible by adding the .toggle
class to any block-level directive
that will allow for classes. For example, to the container
, note
, or admonition
directives.
For example, the hidden block below
{admonition}
:class: toggle
Wow, a hidden block! ✨✨
Is generated with the following code:
```{admonition} This cell was hidden with the toggle class
:class: toggle
Wow, a hidden block! ✨✨
```
{admonition}
Note that containers for markdown (like notes, or this `container`
directive) cannot have their own headings (ie, lines that start
with `#`. If you'd like to use headings, do one of the following:
* Use **bolded text** if you want to highlight sections of a
toggle-able section.
* Use an **admonition** directive to control the title of the
message box (that's what this message box uses). Like so:
````
```{admonition} my admonition title
My admonition content
```
````
Sometimes, you want to entirely remove parts of a cell so that it doesn't make it
into the output at all. To do this, you can use the same tag pattern described above,
but with the word remove_
instead of hide_
. Use the following tags:
remove_input
tag to remove the cell inputsremove_output
to remove the cell outputsremove_cell
to remove the entire cellHere is a cell with a remove_input
tag. The inputs will not make it into
the page at all.
# This cell has a remove_input tag
fig, ax = plt.subplots()
ax.scatter(*data, c=data[0], s=data[0])
<matplotlib.collections.PathCollection at 0x7f239d2d5100>
Here's a cell with a remove_output
tag:
# This cell has a remove_output tag
fig, ax = plt.subplots()
ax.scatter(*data, c=data[0], s=data[0])
<matplotlib.collections.PathCollection at 0x7f239d2247c0>
And the following cell has a remove_cell
tag (there should be nothing
below, since the cell will be gone).
# This cell has a remove_cell tag
fig, ax = plt.subplots()
ax.scatter(*data, c=data[0], s=data[0])
<matplotlib.collections.PathCollection at 0x7f239d1f5dc0>