latex - sheet - manual jupyter notebook
¿Cómo manejar citas en el cuaderno de Ipython? (5)
¿Cuál es la mejor manera de ocuparse de las citas en Ipython Notebook? Idealmente, me gustaría tener un archivo bibtex, y luego, como en el látex, tener una lista de taquigrafías en celdas de reducción de Ipython, con las referencias completas al final del cuaderno.
El material relevante que encontré es el siguiente: http://nbviewer.ipython.org/github/ipython/nbconvert-examples/blob/master/citations/Tutorial.ipynb
Pero no pude seguir muy bien la documentación. ¿Alguien puede explicarlo? ¡¡Muchas gracias!!
Resumen
Esta solución se basa en gran medida en la excelente publicación de blog de Sylvain Deville. Te permite simplemente escribir [@citation_key]
en las celdas de [@citation_key]
. Las referencias serán formateadas después de la conversión del documento. Los únicos requisitos son LaTeX y pandoc, que son ampliamente compatibles. Si bien nunca hay una garantía, este enfoque debería funcionar durante muchos años.
Guía paso por paso
Además de una instalación de trabajo de jupyter necesitas:
LaTeX ( guía de instalación ).
Pandoc ( guía de instalación ).
Un lenguaje de estilo de citas . Descargar un estilo de cita, por ejemplo, APA . Guarde el archivo
.csl
(por ejemplo,apa.csl
) en la misma carpeta que su notebook jupyter (o especifique la ruta al archivo.csl
más adelante).Un archivo
.bib
con sus referencias. Estoy utilizando un archivo de muestra baberolist.bib
. Guarde en la misma carpeta que su notebook jupyter (o especifique la ruta al archivo.bib
más adelante).
Una vez que hayas completado estos pasos, el resto es fácil:
Use la sintaxis de mardown para las referencias en las celdas de reducción en su cuaderno jupyter. Por ejemplo,
[@Sh:1]
donde la sintaxis funciona así:([@citationkey_in_bib_file])
. Prefiero esta sintaxis a otras soluciones porque es muy rápido escribir[@something]
.Al final de su cuaderno de ipython, cree una celda de código con la siguiente sintaxis para convertir automáticamente su documento (tenga en cuenta que este es el código R, use un comando equivalente a
system()
para python):#automatic document conversion to markdown and then to word #first convert the ipython notebook paper.ipynb to markdown system("jupyter nbconvert --to markdown paper.ipynb") #next convert markdown to ms word conversion <- paste0("pandoc -s paper.md -t docx -o paper.docx", " --filter pandoc-citeproc", " --bibliography="listb.bib", " --csl="apa.csl") system(conversion)
Ejecutar esta celda (o simplemente ejecutar todas las celdas). Tenga en cuenta que la segunda llamada al sistema es simplemente
pandoc -s paper.md -t docx -o paper.docx --filter pandoc-citeproc --bibliography=listb.bib --csl=apa.csl
. Simplemente utilicépaste0()
para poder difundir esto en varias líneas y hacerlo más agradable de leer.La salida es un documento de Word. Si prefiere otro documento , consulte esta guía para obtener una sintaxis alternativa.
Extras
1) Si no le gusta que su documento convertido incluya la sintaxis para la conversión del documento, inserte una celda de reducción por debajo y debajo de la celda del código con la sintaxis para la conversión. En la celda de arriba ingrese <!--
y en la celda de abajo ingrese -->
. Este es un comando html regular para un comentario, por lo que la sintaxis entre estas dos celdas se evaluará pero no se imprimirá .
2) También puede incluir un encabezado yaml en su primera celda. P.ej,
---
title: This is a great title.
author: Author Name
abstract: This is a great abstract
---
Debería echar un vistazo a la extensión latex_envs en https://github.com/ipython-contrib/IPython-notebook-extensions (instalar desde este repositorio, es la versión más reciente). Esta extensión contiene una forma de integrar la bibliografía utilizando archivos bibtex y notación de látex estándar, y genera una sección de bibliografía al final del cuaderno. El estilo de las citas puede ser (hasta cierto punto) personalizado. Algunos documentos aquí https://rawgit.com/jfbercher/latex_envs/master/doc/latex_env_doc.html
Pude ejecutarlo con el siguiente enfoque:
- Inserta la cita html como en el http://nbviewer.ipython.org/github/ipython/nbconvert-examples/blob/master/citations/Tutorial.ipynb que mencionaste.
- Cree
ipython.bib
en el formatobibtex
"estándar".*.ipynb
en el mismo archivo que su archivo de cuaderno*.ipynb
. - Cree el archivo de plantilla como en el tutorial, también en el mismo directorio o también en el directorio (dependiente de la distribución) con las otras plantillas. En mi sistema, eso es
/usr/local/lib/python2.7/dist-packages/IPython/nbconvert/templates/latex
. - El tutorial tiene la plantilla de extensión
latex_article.tplx
. En mi distribución, eslatex_
(sinlatex_
). - Ejecute
nbconvert
connbconvert
--to latex
; que genera un archivo.aux
entre otras cosas. El látex se quejará de las referencias faltantes. - Ejecute
bibtex yournotebook.aux
; esto generayournotebook.bbl
. Solo necesitas volver a ejecutar esto si cambias las referencias. - Vuelva a ejecutar
nbconvert
con ---to latex
o con--to pdf
. Esto genera un archivo.tex
, o bien se ejecuta hasta un archivo.pdf
.
Si desea una salida html, puede usar pandoc para ensamblar las referencias en una página de citas ordenada. Esto puede requerir un poco de edición manual para hacer una página html a la que pueda hacer referencia desde su documento principal.
Puede utilizar las herramientas de documentos de la suite Calico , que se pueden instalar por separado con:
sudo ipython install-nbextension https://bitbucket.org/ipre/calico/downloads/calico-document-tools-1.0.zip
Lee el tutorial y mira el video de YouTube para más detalles.
Advertencia: solo se procesan las referencias citadas. Por lo tanto, si no cita un artículo, no aparecerá en la sección Referencias. Como un pequeño ejemplo de trabajo, copie lo siguiente en una celda de Markdown y presione el icono "libro".
<!--bibtex
@Article{PER-GRA:2007,
Author = {P/'erez, Fernando and Granger, Brian E.},
Title = {{IP}ython: a System for Interactive Scientific Computing},
Journal = {Computing in Science and Engineering},
Volume = {9},
Number = {3},
Pages = {21--29},
month = may,
year = 2007,
url = "http://ipython.org",
ISSN = "1521-9615",
doi = {10.1109/MCSE.2007.53},
publisher = {IEEE Computer Society},
}
@article{Papa2007,
author = {Papa, David A. and Markov, Igor L.},
journal = {Approximation algorithms and metaheuristics},
pages = {1--38},
title = {{Hypergraph partitioning and clustering}},
url = {http://www.podload.org/pubs/book/part/_survey.pdf},
year = {2007}
}
-->
Examples of citations: [CITE](#cite-PER-GRA:2007) or [CITE](#cite-Papa2007).
Esto debería resultar en la siguiente celda de Markdown agregada:
Referencias
^ Pérez, Fernando y Granger, Brian E .. 2007. IPython: un sistema para la computación científica interactiva . URL
^ Papá, David A. y Markov, Igor L .. 2007. Partición y agrupamiento de Hypergraph . URL
Si sabe que, de todos modos, convertirá su bloc de notas a látex, considere simplemente agregar una celda "Sin procesar" (Ctrl + MR) al final del documento, que contiene la bibliografía tal como lo ubicaría en LaTeX puro.
Por ejemplo, cuando necesito hacer referencia a un par de enlaces externos, ni siquiera me gustaría hacer una cosa BibTeX adecuada y simplemente tener una celda "Raw" al final del cuaderno de esa manera:
/begin{thebibliography}{1} /bibitem{post1} Holography in Simple Terms. K.Tretyakov (blog post), 2015.// /url{http://fouryears.eu/2015/07/24/holography-in-simple-terms/} /bibtem{book1} The Importance of Citations. J. Smith. 2010. /end{thebibliography}
Los elementos se pueden citar en otras celdas de Markdown usando el habitual <cite data-cite="post1">(KT, 2015)</cite>
Por supuesto, también puede utilizar BibTeX adecuado. Solo agregue la celda Raw correspondiente, por ejemplo:
/bibliographystyle{unsrt} /bibliography{papers}
De esta manera, no tiene que molestarse en editar un archivo de plantilla por separado (sin embargo, al precio de saturar la exportación HTML del notebook con Latex en bruto).