La documentación en http://ipython.org/ipython-doc/stable/interactive/notebook.html dice
Puede proporcionar una estructura conceptual para su documento computacional como un todo utilizando diferentes niveles de encabezados; hay 6 niveles disponibles, desde el nivel 1 (nivel superior) hasta el nivel 6 (párrafo). Estos se pueden usar más tarde para construir tablas de contenido, etc.
Sin embargo, no puedo encontrar instrucciones en ninguna parte sobre cómo usar mis encabezados jerárquicos para crear dicha tabla de contenido. ¿Hay alguna forma de hacer esto?
NB: También estaría interesado en otros tipos de navegación usando encabezados de cuaderno ipython, si existen. Por ejemplo, saltar hacia atrás y hacia adelante de un título a otro para encontrar rápidamente el inicio de cada sección, u ocultar (plegar) el contenido de una sección completa. Esta es mi lista de deseos, pero cualquier tipo de navegación sería de interés. ¡Gracias!
fuente
Respuestas:
Existe una nbextension ipython que construye una tabla de contenido para un cuaderno. Parece que solo proporciona navegación, no sección plegable.
fuente
Puede agregar un TOC manualmente con Markdown y HTML. Así es como he estado agregando:
Cree TOC en la parte superior de Jupyter Notebook:
Agregue anclas html en todo el cuerpo:
Puede que no sea el mejor enfoque, pero funciona. Espero que esto ayude.
fuente
<a name="pookie"></a>
para el ancla y para el uso del enlace:Take me to [pookie](#pookie)
Aquí hay una opción más sin demasiada molestia JS: https://github.com/kmahelona/ipython_notebook_goodies
fuente
¿Qué tal usar un complemento del navegador que le brinde una descripción general de CUALQUIER página html? He probado lo siguiente:
Ambos funcionan bastante bien para los portátiles IPython. Estaba reacio a usar las soluciones anteriores, ya que parecen un poco inestables y terminé usando estas extensiones.
fuente
Recientemente creé una pequeña extensión de Jupyter llamada jupyter-navbar . Busca encabezados escritos en celdas de rebajas y muestra enlaces a ellos en la barra lateral de forma jerárquica. La barra lateral es redimensionable y plegable. Vea la captura de pantalla a continuación.
Es fácil de instalar y aprovecha los códigos JS y CSS "personalizados" que se ejecutan cada vez que se abre un cuaderno, por lo que no es necesario ejecutarlo manualmente.
fuente
Ahora hay dos paquetes que se pueden usar para manejar extensiones de Jupyter:
jupyter_contrib_nbextensions que instala extensiones, incluida la tabla de contenido;
jupyter_nbextensions_configurator que proporciona interfaces gráficas de usuario para configurar qué nbextensions están habilitadas (se cargan automáticamente para cada portátil) y proporciona controles para configurar las opciones de nbextensions.
ACTUALIZAR:
A partir de versiones recientes de
jupyter_contrib_nbextensions
, al menos conconda
, no es necesario instalarlojupyter_nbextensions_configurator
porque se instala junto con esas extensiones.fuente
Instrucciones de JupyterLab ToC
Ya hay muchas buenas respuestas a esta pregunta, pero a menudo requieren ajustes para funcionar correctamente con portátiles en JupyterLab. Escribí esta respuesta para detallar las posibles formas de incluir un ToC en un cuaderno mientras trabajaba y exportaba desde JupyterLab.
Como panel lateral
La extensión jupyterlab-toc agrega la ToC como un panel lateral que puede numerar encabezados, contraer secciones y usarse para la navegación (vea el gif a continuación para ver una demostración). Instalar con el siguiente comando
En el cuaderno como una celda
Por el momento, esto se puede hacer manualmente como en la respuesta de Matt Dancho, o automáticamente a través de la extensión del cuaderno toc2 jupyter en la interfaz clásica del portátil.
Primero, instale toc2 como parte del paquete jupyter_contrib_nbextensions :
Luego, inicie JupyterLab, vaya a
Help --> Launch Classic Notebook
y abra el cuaderno en el que desea agregar la ToC. Haga clic en el símbolo TOC2 en la barra de herramientas para que aparezca la ventana ToC flotante (vea el gif a continuación si no puede encontrarlo), haga clic en el icono de engranaje y marque la casilla "Agregar celda ToC del cuaderno". Guarde el cuaderno y la celda ToC estará allí cuando lo abra en JupyterLab. La celda insertada es una celda de descuento con html en ella, no se actualizará automáticamente.Las opciones predeterminadas del toc2 se pueden configurar en la pestaña "Nbextensions" en la página de inicio del portátil clásico. Por ejemplo, puede elegir numerar los títulos y anclar la ToC como una barra lateral (que personalmente creo que se ve más limpia).
En un archivo HTML exportado
nbconvert
se puede utilizar para exportar cuadernos a HTML siguiendo las reglas de cómo formatear el HTML exportado. Latoc2
extensión mencionada anteriormente agrega un formato de exportación llamadohtml_toc
, que se puede usar directamentenbconvert
desde la línea de comando (después de quetoc2
se haya instalado la extensión):Recuerde que los comandos de shell se pueden agregar a las celdas del cuaderno colocándolos delante de un signo de exclamación
!
, por lo que puede pegar esta línea en la última celda del cuaderno y siempre tener un archivo HTML con un ToC generado cuando presiona "Ejecutar todas las celdas" ( o cualquier salida que deseenbconvert
). De esta manera, podría utilizarjupyterlab-toc
para navegar por el portátil mientras está trabajando y aún obtener ToC en la salida exportada sin tener que recurrir al uso de la interfaz clásica del portátil (para los puristas entre nosotros).Tenga en cuenta que configurar las opciones predeterminadas de toc2 como se describe anteriormente, no cambiará el formato de
nbconver --to html_toc
. Debe abrir el cuaderno en la interfaz clásica del cuaderno para que los metadatos se escriban en el archivo .ipynb (nbconvert lee los metadatos al exportar) Alternativamente, puede agregar los metadatos manualmente a través de la pestaña Herramientas del cuaderno de la barra lateral de JupyterLab, por ejemplo, algo me gusta:Si prefiere un enfoque basado en GUI, debería poder abrir el cuaderno clásico y hacer clic
File --> Save as HTML (with ToC)
(aunque tenga en cuenta que este elemento de menú no estaba disponible para mí).Los gifs de arriba están vinculados a la documentación respectiva de las extensiones.
fuente
jupyter lab
, pero necesitaba agregar una tabla de contenido a la salida HTML de un cuaderno grande. ¡Esto funciona perfectamente! Hubo algunos pasos adicionales para que funcione: 1. Habilite TOC2, por ejemploconda install -c conda-forge jupyter_nbextensions_configurator
, vaya ahttp://localhost:8888/nbextensions
, desmarque "compatibilidad" y habilite "Toc2". 2. Inicie Classical Notebbok, modifique la configuración de TOC según sus necesidades yAdd TOC to Cell
(proceda como se describe). 3. Abra su.ipynb
archivo y busque"toc"
, copie las configuraciones de json toc y agréguelas a los metadatos usando la pestaña de herramientas del laboratorioIntroducción
Como han mencionado @Ian y @Sergey, nbextensions es una solución simple. Para elaborar su respuesta, aquí hay algo más de información.
¿Qué es nbextensions?
Por ejemplo, solo para citar algunas extensiones:
Tabla de contenido
Encabezados plegables
Instalar nbextensions
La instalación se puede realizar a través de Conda o PIP
Copiar archivos js y css
Para copiar los archivos javascript y css de nbextensions en el directorio de búsqueda del servidor jupyter, haga lo siguiente:
Alternar extensiones
Tenga en cuenta que si no está familiarizado con el terminal, sería mejor instalar el configurador nbextensions (ver la siguiente sección)
Puede habilitar / deshabilitar las extensiones de su elección. Como menciona la documentación, el comando genérico es:
Concretamente, para habilitar la extensión ToC (Tabla de contenido), haga lo siguiente:
Instalar la interfaz de configuración (opcional pero útil)
Como dice su documentación, nbextensions_configurator proporciona interfaces de configuración para nbextensions.
Se parece a lo siguiente:
Para instalarlo si usa conda:
Si no tiene Conda o no desea instalar a través de Conda, siga los siguientes 2 pasos:
fuente
toc2/main
es lo mismo que verificar "Tabla de contenido (2)" en localhost: 8888 / tree # nbextensions_configurator .Aquí está mi enfoque, aunque torpe y disponible en github :
Coloque la primera celda del cuaderno, la celda de importación:
En algún lugar después de la celda de importación, coloque la celda genTOCEntry pero no la ejecute todavía:
Debajo de la celda genTOCEntry`, cree una celda TOC como celda de rebaja:
A medida que se desarrolla el portátil, coloque este genTOCMarkdownCell antes de comenzar una nueva sección:
Mueva genTOCMarkdownCell hasta el punto en su cuaderno donde desea comenzar una nueva sección y haga el argumento para genTOCMarkdownCell el título de la cadena para su nueva sección y luego ejecútelo. Agregue una celda de rebajas justo después y copie el resultado de genTOCMarkdownCell en la celda de rebajas que inicia su nueva sección. Luego vaya a la celda genTOCEntry cerca de la parte superior de su computadora portátil y ejecútela. Por ejemplo, si crea el argumento para genTOCMarkdownCell como se muestra arriba y lo ejecuta, obtendrá esta salida para pegarla en la primera celda de rebaja de su sección recién indexada:
Luego, cuando va a la parte superior de su cuaderno y ejecuta genTocEntry, obtiene el resultado:
Copie esta cadena de enlace y péguela en la celda de descuento de TOC de la siguiente manera:
Después de editar la celda TOC para insertar la cadena de enlace y luego presionar shift-enter, el enlace a su nueva sección aparecerá en la Tabla de contenido de su cuaderno como un enlace web y al hacer clic en él, el navegador se ubicará en su nueva sección.
Una cosa que a menudo olvido es que al hacer clic en una línea en la tabla de contenido, el navegador salta a esa celda pero no la selecciona. Cualquiera que sea la celda que estaba activa cuando hicimos clic en el enlace TOC todavía está activa, por lo que una flecha hacia abajo o hacia arriba o shift-enter se refiere a la celda aún activa, no a la celda que obtuvimos al hacer clic en el enlace TOC.
fuente
Como ya señaló Ian, hay una extensión de tabla de contenido de minrk para el IPython Notebook. Tuve algunos problemas para que funcionara e hice este IPython Notebook que genera semiautomáticamente los archivos para la extensión de la tabla de contenido de minrk en Windows. No utiliza los comandos o enlaces 'curl', pero escribe los archivos * .js y * .css directamente en su directorio IPython Notebook-profile-.
Hay una sección en el cuaderno llamada 'Lo que debe hacer' ; sígala y tenga una buena tabla de contenido flotante :)
Aquí hay una versión html que ya la muestra: http://htmlpreview.github.io/?https://github.com/ahambi/140824-TOC/blob/master/A%20floating%20table%20of%20contents.htm
fuente