jupyter/ipython笔记本到乳胶转换器和拼写检查器

ipythontools的Python项目详细描述


转换器

当我第一次遇到ipython笔记本时,我认为这是一个解决方案 寻找问题。不过,我后来改信了! 我的转折点是:我想控制我的文件的版本 我总是有多个目录用于分析代码,绘图代码,乳胶文件, 打印脚本、图形和表格。真是太笨拙了。 另外,我发现把数字发邮件给各个合作者都很麻烦 时间。 笔记本可以把这些信息放在一个地方,我可以提供 我的共同作者有一个指向github存储库的链接,他们可以访问 一直到最新版本。即使他们不使用python,他们也可以 仍然可以使用nbviewer.ipython.org查看当前的所有数据

现在我写的所有论文都写在一个ipython笔记本上。所以,决赛 步骤是将笔记本转换为我可以提交给 期刊。这就是这个简单的转换器代码的作用。

此转换器不打算替换来自ipython的nbconvert 项目。相反,它有一个非常具体的目的: 把笔记本变成一个乳胶文件,我可以把它提交给日记。

如何使用它

作为脚本

安装此模块会在您的路径中放置一个脚本,因此您可以执行以下操作:

< Buff行情> jupyter2article myanalysis.ipynb myanalysis.tex

在这种情况下,它与我的一组设计选项一起运行(见下文)。

作为python模块

导入到python并生成一个notebookconverter对象:

< Buff行情> 从ipynb2article导入notebookconverter converter=notebookconverter

然后,通过更改转换器,自定义每种类型的单元格的转换方式:

< Buff行情> converter.cellconverters['code']=notebookconverter.ignoreconverter()

最后,请致电:

< Buff行情> converter.convert(infile,outfile,…)

此方法只允许使用笔记本文件的一部分(忽略到第一个n 单元格或忽略所有内容,直到单元格具有特定的字符串值,例如。 "报纸从这里开始")。同时,它允许您提供一个文本文件 粘贴在转换的笔记本之前或之后(您可以将"usepack"和 类似的东西放在那些文件里,这样它们就不会把你的笔记本弄得乱七八糟)。 但是,我不再使用这个选项,因为这意味着我将 多个输入文件。如果我把所有的胶乳头放进笔记本 好吧,我只有一个文件。

设计

代码是围绕这些设计思想编写的:

  • 能够忽略笔记本的某些部分(例如介绍性评论 在前几个单元格中)。

  • 将标题转换为章节/小节等。 我通常为2级,如"标题"表示章节,"标题"表示小节等。

  • 复制"标记"和"原始文本"单元格中的文本。简单地说,我只是写 在那些细胞里有真正的乳胶代码。所有方程式都将正确呈现 在我和我的同事的笔记本文件里-作者来看看。 当我想突出显示某个东西时,我输入乳胶"emph{}"或"textbf{}", 不是降价的等价物。在笔记本上看起来不太好,但是 让生活更轻松。 另外,标记不识别"引用"、"引用"和"标签"。再次,它 在降价方面看起来不太好,但是 (1)我只需要知道乳胶和(2)它的工作完美时转换。

  • 没有数字转换。相反,我在笔记本上发布:

    < Buff行情>

    >;fig.savefig('/path/to/my/article/xxx.eps')

    因为APJ要求我以单独的文件形式提交数据。

  • 只需在标记单元格中键入数字标题即可。

  • 没有代码单元格的转换。谁想在APJ报纸上写代码?

  • 有时,我想得到一个计算的输出(例如一个表 用乳胶版的astropy写的)在文章中。保持简单。 具有特定注释字符串的所有代码单元格的输出(我使用 "输出->;乳胶")被逐字复制到乳胶文件。

  • 仅使用python标准库。没有外部依赖关系。

为了实现这一点,我为每种单元类型编写了一个转换器。 literalsourceconverter 只接受文本字符串值(它还添加 细胞末端的一个换行符)并将其放入乳胶文件中 (用于标记和原始文本单元格) markedcodeoutputconverter 检查代码单元格是否在 如果是,则复制此单元格的输出,并 LatexHeadingConverter 查找标题的级别并将其转换为乳胶(它还添加了 像"label{sect:title}"这样的标签。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
带有服务类安卓的java altbeacon   java在OpenXava免费版本中可以创建多个用户吗?   java如何决定定义变量“private”?   java为什么GetMethodID()对不存在的方法不返回NULL?   java Get JComboBox项字符串表示法   java如何在ifs之间设置限制?   java Android错误:IllegalStateException   JavaSpring4MVC语言环境已更改,但JSP对此没有响应   java Netbeans:如何构建。jar文件随附外部文件。jar库?   Spring Petclinic项目Maven编译时出现java错误   声明Java数组增量元素的快速方法   java无法使用相对xpath找到元素   javascript无法更改标题,也无法在操作栏上显示图标   java标签不是一个接一个地动态创建的   java如何使用ThymeLeaf将对象的属性绑定到隐藏字段?   java从EJB无状态会话bean调用CDI会话范围的生产者方法   java为什么num+=array[i]与for循环中的num=num+array[i]的工作方式不同   使用jsonsimple实现jQuery UI自动完成的java JSON格式   JavaFaceletsUI:重复标记中断JSF表单验证