sheet notebook cheat ipython-notebook

ipython notebook - notebook - Adición de párrafos de estilo personalizado en las celdas de rebaja



jupyter notebook windows (5)

Estos estilos css personalizados ya están agregados en la versión 2 y superior de ipython.

<div class="alert"> As of IPython 2.0, the user interface has changed significantly </div>

<div class="alert alert-success"> Enter edit mode by pressing `Enter` </div>

<div class="alert alert-error"> Don''t try to type into a cell in command mode </div>

Simplemente pegue esto en la celda y cámbielo al tipo markdown.

Revise this para ver ejemplos y ipython en profundidad para las características de vanguardia de ipython.

Quiero agregar más elementos de formato que los proporcionados por Markdown synthax en un cuaderno IPython .

Por ejemplo, quiero agregar un "Cuadro de advertencia" o un "Cuadro de notas" que son básicamente párrafos con diferentes estilos (por ejemplo, un color de fondo diferente, un borde, un icono, etc.).

Supongo que puedo agregar código HTML en la celda, por ejemplo, un <div> con un estilo en línea. Pero, ¿cuál es la forma "correcta" de hacerlo, me refiero a la que promueve el desarrollador de ipython?

Ejemplos apreciados.

NB: Estoy usando la versión 1.0dev actual de git master.


Otro medio consiste simplemente en crear una cadena de estilo y abrirla con el objeto HTML iPython en una celda de código:

from IPython.display import HTML style = "<style>div.warn { background-color: #fcf2f2;border-color: #dFb5b4; border-left: 5px solid #dfb5b4; padding: 0.5em;}</style>" HTML(style)

Entonces utilízalo en una celda de rebaja:

<div class="warn">Warning!</div>


Respondiendo a mi propia pregunta ...

Otras soluciones

Jim propuso agregar un estilo CSS personalizado en una celda de reducción de cada cuaderno. Esta solución funciona, pero no es conveniente ya que necesita incrustar el estilo en cada cuaderno. En mi caso, quiero un estilo global y no quiero modificar todos los cuadernos después de cada modificación de estilo.

Una solución natural sería utilizar un archivo personalizado ( custom.css ) que contenga el estilo. Sin embargo, después de seguir estas instrucciones, el estilo no se aplica al bloc de notas (aunque se puede descargar desde el servidor).

La mejor solución (hasta ahora)

Encontré una solución al mirar este impresionante libro escrito como una colección de cuadernos IPython. El autor agrega al final de cada cuaderno el siguiente código de celda:

from IPython.core.display import HTML def css_styling(): styles = open("./styles/custom.css", "r").read() return HTML(styles) css_styling()

Al colocar un archivo custom.css en la carpeta de su cuaderno (en la subcarpeta de styles ), el estilo se cargará después de la primera ejecución de la celda. Además, el estilo se cargará mágicamente cada vez que se abra el portátil, ¡sin la necesidad de ejecutar la celda nuevamente!

Este truco de magia funciona porque el estilo se guarda en la celda de salida la primera vez que lo ejecutamos, y aunque sea invisible, se guardará como cualquier otra salida. Entonces, cuando cargamos el portátil, y de manera contundente las celdas de salida, se aplicará el estilo.

CSS de muestra

Para completar la respuesta publico un estilo CSS que utilicé para crear un "cuadro de advertencia":

<style> div.warn { background-color: #fcf2f2; border-color: #dFb5b4; border-left: 5px solid #dfb5b4; padding: 0.5em; } </style>

Guarde este estilo y cárguelo utilizando la celda de código que se muestra anteriormente. Ahora, para insertar un cuadro de advertencia en su cuaderno, use esta sintaxis:

<div class=warn> **Warning:** remember to do bookeping <div/>

Eso será rendido así:

Para un estilo de cuaderno más general, puede inspirarse en el custom.css del libro mencionado anteriormente.


Una forma sencilla de agregar cuadros de advertencia, nota, éxito (etc.) (también llamados cuadros de advertencia o alerta) es simplemente utilizando las clases de arranque que ya se incluyen con el cuaderno. La única advertencia es que los enlaces y otros estilos (por ejemplo, en negrita) deben especificarse en HTML dentro de la caja.

Ejemplo

Una celda de rebaja que contiene este código:

# Upload data files <p class="lead">This <a href="https://jupyter.org/">Jupyter notebook</a> shows how to upload data files to be converted to [Photon-HDF5](http://photon-hdf5.org) format. </p> <i>Please send feedback and report any problems to the [Photon-HDF5 google group](https://groups.google.com/forum/#!forum/photon-hdf5).</i> <br> <div class="alert alert-warning"> <b>NOTE</b> Uploading data files is only necessary when running the notebook online. </div>

resultará en esta salida:

Puede cambiar la alert-warning con alert-success , alert-info o alert-danger para obtener diferentes colores para la caja.


Actualización: esta técnica ya no funciona en IPython 4.0 / Jupyter ya que la forma en que se representa el portátil ha cambiado.

Creo que la mejor manera de hacer ese estilo es crear una entrada de reducción en la parte superior de su documento y recopilar sus estilos allí. Dado que una celda de reducción puede contener cualquier código HTML válido, podría contener (por ejemplo)

<style> .warning { color: red; } </style>

Vea la charla de Matt Davis sobre PyCon 2013 , aproximadamente 22 minutos durante las preguntas y respuestas para ver un ejemplo de esto en uso.