如何在Ipython Notebook中处理引用?

use*_*176 24 markdown latex bibtex ipython

在Ipython Notebook中处理引用的最佳方法是什么?理想情况下,我想有一个bibtex文件,然后,就像在乳胶中一样,在Ipython markdown单元格中有一个shorthands列表,在笔记本末尾有完整的引用.

我找到的相关材料是:http://nbviewer.ipython.org/github/ipython/nbconvert-examples/blob/master/citations/Tutorial.ipynb

但我无法很好地遵循文档.有人能解释一下吗?非常感谢!!

Flo*_*Flo 11

摘要

这个解决方案主要基于Sylvain Deville的优秀博客文章.它允许您简单地写入[@citation_key]markdown单元格.文档转换后将格式化引用.唯一的要求是LaTeX和pandoc,它们都得到了广泛的支持.虽然从来没有保证,但这种方法应该在很多年内仍然有效.

循序渐进的指南

除了jupyter的工作安装,您还需要:

  1. LaTeX(安装指南).

  2. Pandoc(安装指南).

  3. 一个引文样式语言.下载引文样式,例如APA.将.csl文件(例如apa.csl)保存到与jupyter笔记本相同的文件夹中(或.csl稍后指定文件的路径).

  4. 包含引用的.bib文件.我正在使用示例bib文件 list.bib.保存到jupyter笔记本所在的文件夹(或.bib稍后指定文件的路径).

完成这些步骤后,其余步骤很简单:

  1. 使用mardown语法为jupyter笔记本中的markdown单元格中的引用.例如,[@Sh:1]语法的工作原理如下:([@citationkey_in_bib_file]).我比其他解决方案更喜欢这种语法,因为它的输入速度非常快[@something].

  2. 在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)
    
    Run Code Online (Sandbox Code Playgroud)

    运行此单元格(或只是运行所有单元格).请注意,第二个系统调用很简单pandoc -s paper.md -t docx -o paper.docx --filter pandoc-citeproc --bibliography=listb.bib --csl=apa.csl.我以前只是paste0()能够将它传播到多行并使其更好阅读.

    输出是word文档.如果您更喜欢其他文档,请查看本指南以了解其他语法.


附加功能

1)如果您不喜欢转换后的文档包含文档转换的语法,请使用转换语法在代码单元格的上方和下方插入一个markdown单元格.在上面的单元格中输入<!--并在下面的单元格中输入-->.这是注释的常规html命令,因此将评估这两个单元格之间的语法,但不会打印.

2)您还可以在第一个单元格中包含yaml标题.例如,

---
title: This is a great title. 
author: Author Name
abstract: This is a great abstract
---
Run Code Online (Sandbox Code Playgroud)

  • 当使用“pandoc”将“.ipynb”转换为“.md”时,引用将转换为“\[@something\]”,当编译为 pdf 文件时,它不会提供所需的输出。这是通过使用“pandoc”而不是“nbconvert”来解释的吗? (2认同)

Ari*_*ide 9

您可以使用文档工具中的印花布套件,可分别与安装:

sudo ipython install-nbextension https://bitbucket.org/ipre/calico/downloads/calico-document-tools-1.0.zip
Run Code Online (Sandbox Code Playgroud)

阅读教程并观看YouTube视频了解详情.


警告:仅处理引用的引用.因此,如果您没有引用某篇文章,它将不会出现在"参考文献"部分中.作为一个小工作示例,在Markdown单元格中复制以下内容并按"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).
Run Code Online (Sandbox Code Playgroud)

这应该导致以下添加的Markdown单元格:

参考

^ Pérez,Fernando和Granger,Brian E .. 2007. IPython:交互式科学计算系统.网址

^ Papa,David A.和Markov,Igor L .. 2007. Hypergraph分割和聚类.网址

  • 您的教程链接不再有效. (4认同)