web-dev-qa-db-fra.com

Comment gérer les citations dans Ipython Notebook?

Quelle est la meilleure façon de gérer les citations dans Ipython Notebook? Idéalement, j'aimerais avoir un fichier bibtex, puis, comme dans latex, avoir une liste de raccourcis dans les cellules de démarque Ipython, avec les références complètes à la fin du cahier.

Le matériel pertinent que j'ai trouvé est le suivant: http://nbviewer.ipython.org/github/ipython/nbconvert-examples/blob/master/citations/Tutorial.ipynb

Mais je ne pouvais pas très bien suivre la documentation. Quelqu'un peut-il l'expliquer? Merci beaucoup!!

24
user3698176

Résumé

Cette solution est basée en grande partie sur Sylvain Deville excellent article de blog . Il vous permet d'écrire simplement [@citation_key] Dans les cellules de démarque. Les références seront formatées après la conversion du document. Les seules exigences sont LaTeX et pandoc, qui sont tous deux largement pris en charge. S'il n'y a jamais de garantie, cette approche devrait donc encore fonctionner dans de nombreuses années.

Guide pas à pas

En plus d'une installation fonctionnelle de jupyter, vous avez besoin de:

  1. LaTeX ( guide d'installation ).

  2. Pandoc ( guide d'installation ).

  3. Un langage de style de citation . Téléchargez un style de citation, par exemple APA . Enregistrez le fichier .csl (Par exemple, apa.csl) Dans le même dossier que votre bloc-notes jupyter (ou spécifiez le chemin d'accès au fichier .csl Plus tard).

  4. Un fichier .bib avec vos références. J'utilise un exemple de fichier de dossardlist.bib. Enregistrez dans le même dossier que votre carnet jupyter (ou spécifiez le chemin d'accès au fichier .bib Plus tard).

Une fois ces étapes terminées, le reste est simple:

  1. Utilisez la syntaxe de mardown pour les références dans les cellules de démarque de votre bloc-notes jupyter. Par exemple, [@Sh:1] Où la syntaxe fonctionne comme ceci: ([@citationkey_in_bib_file]). Je préfère de beaucoup cette syntaxe aux autres solutions car elle est si rapide à taper [@something].

  2. À la fin de votre bloc-notes ipython, créez une cellule de code avec la syntaxe suivante pour convertir automatiquement votre document (notez qu'il s'agit de code R, utilisez un équivalent commande à system() pour 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)
    

    Exécutez cette cellule (ou exécutez simplement toutes les cellules). Notez que le 2ème appel système est simplement pandoc -s paper.md -t docx -o paper.docx --filter pandoc-citeproc --bibliography=listb.bib --csl=apa.csl. J'ai simplement utilisé paste0() pour pouvoir étaler cela sur plusieurs lignes et le rendre plus agréable à lire.

    La sortie est un document Word. Si vous préférez un autre document , consultez ce guide pour une syntaxe alternative.


Suppléments

1) Si vous n'aimez pas que votre document converti comprenne la syntaxe de la conversion de document, insérez une cellule de démarque au-dessus et au-dessous de la cellule de code avec la syntaxe de la conversion. Dans la cellule ci-dessus, entrez <!-- Et dans la cellule ci-dessous, entrez -->. Il s'agit d'une commande html régulière pour un commentaire, donc la syntaxe entre ces deux cellules sera évaluée mais pas imprimée .

2) Vous pouvez également inclure un en-tête yaml dans votre première cellule. Par exemple.,

---
title: This is a great title. 
author: Author Name
abstract: This is a great abstract
---
11
Flo

Vous pouvez utiliser le Document Tools du Calico suite , qui peut être installé séparément avec:

Sudo ipython install-nbextension https://bitbucket.org/ipre/calico/downloads/calico-document-tools-1.0.Zip

Lisez le tutoriel et regardez le vidéo YouTube pour plus de détails.


Attention: seules les références citées sont traitées. Par conséquent, si vous ne parvenez pas à citer un article, il n'apparaîtra pas dans la section Références. Comme petit exemple de travail, copiez ce qui suit dans une cellule Markdown et appuyez sur l'icône "book".

<!--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).

Cela devrait entraîner la cellule Markdown ajoutée suivante:

Références

^ Pérez, Fernando et Granger, Brian E .. 2007. IPython: un système pour le calcul scientifique interactif. URL

^ Papa, David A. et Markov, Igor L .. 2007. Partitionnement et clustering hypergraphiques. URL

9
Aristide

J'ai pu l'exécuter avec l'approche suivante:

  • Insérez la citation html comme dans le tutoriel que vous avez mentionné.
  • Créer ipython.bib au format "standard" bibtex. Il va dans le même fichier que votre *.ipynb fichier de bloc-notes.
  • Créez le fichier modèle comme dans le tutoriel, également dans le même répertoire ou bien dans le répertoire (dépendant de la distribution) avec les autres modèles. Sur mon système, c'est /usr/local/lib/python2.7/dist-packages/IPython/nbconvert/templates/latex.
  • Le tutoriel a le modèle étendre latex_article.tplx. Sur ma distribution, c'est article.tplx (sans pour autant latex_).
  • Exécutez nbconvert avec --to latex; qui génère un .aux fichier entre autres. Latex se plaindra des références manquantes.
  • Courir bibtex yournotebook.aux; cela génère yournotebook.bbl. Vous n'avez besoin de relancer cette opération que si vous modifiez les références.
  • Relancez nbconvert soit avec --to latex ou avec --to pdf. Cela génère un .tex fichier, sinon s'exécute jusqu'au .pdf.

Si vous voulez une sortie html, vous pouvez utiliser pandoc pour assembler les références dans une page de citation bien rangée. Cela peut nécessiter une modification manuelle pour créer une page html que vous pouvez référencer à partir de votre document principal.

1
Frank M

Si vous savez que vous allez de toute façon convertir votre cahier en latex, pensez simplement à ajouter une cellule "Raw" (Ctrl + M R) à la fin du document, contenant la bibliographie comme vous le feriez dans Pure LaTeX.

Par exemple, lorsque j'ai besoin de référencer quelques liens externes, je ne me soucierais même pas de faire une chose BibTeX appropriée et d'avoir simplement une cellule "Raw" à la fin du cahier comme ça:

\begin {thebibliography} {1} 
\bibitem {post1} 
 Holographie en termes simples. K.Tretyakov (article de blog), 2015. \\ 
\Url {http://fouryears.eu/2015/07/24/holography-in-simple-terms/} 
 
\bibtem {book1} 
 L'importance des citations. J. Smith. 2010. 
\End {la bibliographie} 

Les éléments peuvent être cités dans d'autres cellules Markdown à l'aide de la fonction habituelle <cite data-cite="post1">(KT, 2015)</cite>

Bien sûr, vous pouvez également utiliser le BibTeX approprié. Ajoutez simplement la cellule Raw correspondante, par exemple:

\bibliographystyle {unsrt} 
\bibliography {papiers} 

De cette façon, vous n'avez pas à vous soucier de la modification d'un fichier de modèle distinct (au prix d'encombrer l'exportation HTML du bloc-notes avec du latex brut, cependant).

0
KT.

Vous devriez jeter un œil à l'extension latex_envs dans https://github.com/ipython-contrib/IPython-notebook-extensions (installez à partir de ce dépôt, c'est la version la plus récente). Cette extension contient un moyen d'intégrer la bibliographie à l'aide des fichiers bibtex et de la notation latex standard, et génère une section de bibliographie à la fin du cahier. Le style des citations peut être (dans une certaine mesure) personnalisé. Une documentation ici https://rawgit.com/jfbercher/latex_envs/master/doc/latex_env_doc.html

0
jfb