Подтвердить что ты не робот

Как обрабатывать цитаты в ноутбуке Ipython?

Каков наилучший способ позаботиться о ссылках в ноутбуке Ipython? В идеале, я хотел бы иметь файл bibtex, а затем, как и в латексе, иметь список сокращений в ячейках памяти Ipython с полными ссылками в конце ноутбука.

Соответствующий материал, который я нашел, таков: http://nbviewer.ipython.org/github/ipython/nbconvert-examples/blob/master/citations/Tutorial.ipynb

Но я не мог хорошо следить за документацией. Может ли кто-нибудь объяснить это? Большое спасибо!

4b9b3361

Ответ 1

Вы можете использовать Инструменты документа Calico suite, который можно установить отдельно с помощью

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

Прочтите учебник и посмотрите видео YouTube для более подробная информация.


Предупреждение: обрабатываются только цитируемые ссылки. Поэтому, если вы не укажете статью, она не появится в разделе "Ссылки". В качестве небольшого рабочего примера скопируйте следующее в ячейку Markdown и нажмите значок "книга".

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

Это приведет к следующей добавленной ячейке Markdown:

Ссылки

^ P & eacute; rez, Fernando and Granger, Brian E.. 2007. IPython: система интерактивных научных вычислений. URL

^ Папа, Дэвид А. и Марков, Игорь Л. 2007. Разделение и кластеризация гиперграфов. URL

Ответ 2

Резюме

Это решение в значительной степени основано на Sylvain Deville отличном сообщении в блоге. Это позволяет просто написать [@citation_key] в ячейках markdown. Ссылки будут отформатированы после преобразования документа. Единственными требованиями являются LaTeX и pandoc, которые широко поддерживаются. Хотя никогда не существует гарантии, такой подход должен, тем не менее, работать в течение многих лет.

Пошаговое руководство

В дополнение к рабочей установке jupyter вам необходимо:

  • LaTeX (руководство по установке).

  • Pandoc (руководство по установке).

  • A стиль стиля цитаты. Загрузите стиль цитаты, например APA. Сохраните файл .csl (например, apa.csl) в той же папке, что и ваш jupyter notebook (или укажите путь к файлу .csl позже).

  • A .bib файл с вашими ссылками. Я использую образец bib файла list.bib. Сохраните в той же папке, что и ваш ноутбук jupyter (или укажите путь к файлу .bib позже).

Как только вы выполните эти шаги, все остальное будет легко:

  • Используйте синтаксис mardown для ссылок в ячейках markdown вашего ноутбука jupyter. Например, [@Sh:1], где синтаксис работает следующим образом: ([@citationkey_in_bib_file]). Я предпочитаю этот синтаксис для других решений, потому что так быстро набирать [@something].

  • В конце вашего ноутбука ipython создайте ячейку кода со следующим синтаксисом автоматически конвертируйте документ (обратите внимание, что это код R, используйте эквивалентную команду для system() для 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)
    

    Запустите эту ячейку (или просто запустите все ячейки). Обратите внимание, что 2-й системный вызов просто pandoc -s paper.md -t docx -o paper.docx --filter pandoc-citeproc --bibliography=listb.bib --csl=apa.csl. Я просто использовал paste0(), чтобы иметь возможность распространять это по нескольким строкам и сделать его более приятным для чтения.

    Вывод - это текстовый документ. Если вы предпочитаете другой документ, посмотрите это руководство для альтернативного синтаксиса.


Дополнительно

1) Если вам не нравится, что ваш преобразованный документ включает синтаксис преобразования документа, вставьте ячейку уценки выше и ниже ячейки кода с синтаксисом для преобразования. В ячейке выше введите <!-- и в ячейке ниже введите -->. Это регулярная команда html для комментария, поэтому синтаксис между этими двумя ячейками будет оценен, но не напечатан.

2) Вы также можете включить заголовок yaml в своей первой ячейке. Например,

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

Ответ 3

Мне удалось запустить его со следующим подходом:

  • Вставьте ссылку html, как указано в tutorial, который вы упомянули.
  • Создайте ipython.bib в стандартном формате bibtex. Он входит в тот же файл, что и ваш файл с записью *.ipynb.
  • Создайте файл шаблона, как в учебнике, также в том же каталоге, либо в каталоге (зависимый от дистрибутива) с другими шаблонами. В моей системе это /usr/local/lib/python2.7/dist-packages/IPython/nbconvert/templates/latex.
  • Учебник имеет расширение шаблона latex_article.tplx. В моем распределении это article.tplx (без latex_).
  • Запустите nbconvert с помощью --to latex; который генерирует файл .aux между прочим. Латекс будет жаловаться на недостающие ссылки.
  • Запустить bibtex yournotebook.aux; это порождает yournotebook.bbl. Вам просто нужно повторно запустить это, если вы измените ссылки.
  • Повторно запустите nbconvert либо с помощью --to latex, либо с помощью --to pdf. Это генерирует файл .tex, либо выполняется до .pdf.

Если вы хотите выводить html, вы можете использовать pandoc, чтобы собрать ссылки в страницу чистой цитаты. Это может потребовать редактирования вручную, чтобы сделать html-страницу, которую вы можете ссылаться из основного документа.

Ответ 4

Если вы знаете, что все равно будете конвертировать свой ноутбук в латекс, просто добавьте ячейку "Raw" (Ctrl + M R) в конец документа, содержащую библиографию, так же, как вы бы поместили ее в чистый LaTeX.

Например, когда мне нужно ссылаться на пару внешних ссылок, я бы даже не хотел делать правильную вещь BibTeX и просто имел бы "Raw" ячейку в конце ноутбука:

\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}

Элементы можно процитировать в других ячейках Markdown, используя обычный <cite data-cite="post1">(KT, 2015)</cite>

Конечно, вы также можете использовать собственный BibTeX. Просто добавьте соответствующую ячейку Raw, например:

\bibliographystyle{unsrt}
\bibliography{papers}

Таким образом, вам не нужно беспокоиться об изменении отдельного файла шаблона (по цене захламления экспорта HTML-документа с помощью портативного латекса).

Ответ 5

Вы должны посмотреть расширение latex_envs в https://github.com/ipython-contrib/IPython-notebook-extensions (установить из этого репо, это самая последняя версия). Это расширение содержит способ интегрирования библиографии с использованием файлов bibtex и стандартной латексной нотации и создает раздел библиографии в конце ноутбука. Стиль цитат может быть (в некоторой степени) настроен. Некоторая документация здесь https://rawgit.com/jfbercher/latex_envs/master/doc/latex_env_doc.html