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}"这样的标签。