Solución:
Esto ahora está integrado en nbconvert (a partir de 5.3.0) usando etiquetas.
Aquí hay un ejemplo que elimina una celda específica de la salida. Usando este cuaderno. El ejemplo tiene tres celdas: una celda de reducción, una celda de código que se ocultará y una celda de código que no se ocultará.
- Añade el
remove_cell
etiqueta a cualquier celda que desee ocultar utilizando el editor de etiquetas integrado en el cuaderno o JupyterLab (el nombre específico “remove_cell” no importa) -
Convertir con nbconvert
jupyter nbconvert nbconvert-example.ipynb --TagRemovePreprocessor.remove_cell_tags="{"remove_cell"}"
Cualquier celda con la etiqueta remove_cell
se eliminará de la salida.
Además de celdas completas, puede filtrar solo entradas o solo salidas:
TagRemovePreprocessor.remove_input_tags
TagRemovePreprocessor.remove_single_output_tags
TagRemovePreprocessor.remove_all_outputs_tags
Esta es una extensión de la respuesta de Mathmagician, que le permite:
- alternar solo un unicelular (el nombre de la función JS tiene un sufijo aleatorio, por lo que si se usa más de una vez, no entraría en conflicto con otros usos)
- alternar la celda debajo la celda actual – esta es muy útil en presentaciones RISE donde es posible que desee mostrar el código, pero luego ocultarlo para mostrar su salida
Lo que debe hacer es ejecutar el siguiente código primero para definir el hide_toggle
función:
from IPython.display import HTML
import random
def hide_toggle(for_next=False):
this_cell = """$('div.cell.code_cell.rendered.selected')"""
next_cell = this_cell + '.next()'
toggle_text="Toggle show/hide" # text shown on toggle link
target_cell = this_cell # target cell to control with toggle
js_hide_current="" # bit of JS to permanently hide code in current cell (only when toggling next cell)
if for_next:
target_cell = next_cell
toggle_text += ' next cell'
js_hide_current = this_cell + '.find("div.input").hide();'
js_f_name="code_toggle_{}".format(str(random.randint(1,2**64)))
html = """
<script>
function {f_name}() {{
{cell_selector}.find('div.input').toggle();
}}
{js_hide_current}
</script>
<a href="https://foroayuda.es/javascript:{f_name}()">{toggle_text}</a>
""".format(
f_name=js_f_name,
cell_selector=target_cell,
js_hide_current=js_hide_current,
toggle_text=toggle_text
)
return HTML(html)
Y luego úselo en celdas como esta:
x = 1
y = 2
print('Result is {} + {}'.format(x, y))
hide_toggle()
O esto (si desea alternar la siguiente celda)
hide_toggle(for_next=True)
Este es un método que le permite ocultar celdas de la salida HTML / PDF editando solo los metadatos de la celda.
Versiones que estoy usando:
$ jupyter notebook --version
4.1.0
$ jupyter nbconvert --version
4.2.0
- Descargue las plantillas de extensión del cuaderno ipython siguiendo las instrucciones de instalación en Github: pip install https://github.com/ipython-contrib/IPython-notebook-extensions/tarball/master
- Esto solo instala los archivos en su directorio de datos local de jupyter. Detalles completos en el archivo Léame
- correr
jupyter notebook
- ir a
localhost:8888/nbextensions
(o cualquier puerto en el que comenzó) y activePrintview
- volver a
localhost:8888/tree
, cree un nuevo cuaderno y acceda a él - crear una celda de código con algún código que produzca una salida, por ejemplo
print("You can see me") #but not me
- ir a
View
>Cell Toolbar
>Edit Metadata
- haga clic en el
Edit Metadata
botón que ahora se muestra en la parte superior derecha de la celda - agregar
'hide_input':True
para el json, por ejemplo, el mío parecía{
después
"collapsed": false,
"hide_input": true,
"trusted": true
} - guardar cuaderno
- vuelve a la terminal y ejecuta
jupyter nbconvert --to pdf --template printviewlatex.tplx notebookname.ipynb
(si su cuaderno se llamanotebookname.ipynb.ipynb
)
Ahora debería tener un documento llamado notebookname.pdf en el directorio. Con suerte, debería tener solo el texto You can see me
en ella … dedos cruzados.