图中标在nbconvert中心?

时间:2013-11-28 10:56:51

标签: latex ipython-notebook

我在ipython笔记本中的数字下面有包含图标标题文本的单元格。我希望他们成为中心('中心') - 对齐。我用“< center>”在降价时,它完全给出了我在笔记本中的外观。但是当nb转换为乳胶时,文本被分流到左边。

在转换为乳胶时,有没有办法让nbconvert识别降价单元格中的文本对齐?

感谢。

1 个答案:

答案 0 :(得分:4)

您实际上已经提出了两个不同的问题:

  1. 有没有办法让nbconvert识别markdown单元格中的文本对齐
  2. nbconvert中的图标题(居中)
  3. ad 1)
    要使用降价转换为乳胶pandoc。不幸的是,如果转换为乳胶,pandoc会从markdown中删除原始html(如果在将markdown转换为html时也删除了原始乳胶)。 因此,使用html标签来格式化html和latex中的输出并不是那么简单。这种格式化可以基于单元格元数据来实现,但目前并不是那么简单。

    ad 2)
    然而,可以创建像文本一样的标题来处理html和latex。 这里我们要区分pyout或流数据的标题(例如Ipython.display.Image)和降价图像。

    pyout和stream

    一种可能的方法是创建 Caption 类,如

    class Caption():
        def __init__(self,s):
            self.s = s
        def _repr_html_(self):
            return '<center>{0}</center>'.format(self.s)
        def _repr_latex_(self):
            return '\\begin{center}\n'+self.s+'\n\\end{center}'
    

    在图像之后调用。请注意,两者都应使用IPython.display.display方法调用,例如oneliner

    display(Image('image.jpg'),Caption('Figure Caption'))
    

    这种方法允许使用python处理captiontext,例如:添加图号。
    如果你想在matplotlib图中添加这样的标题,那就有点棘手,因为必须克服错误的排序。一种可能的方法是使用此片段进行绘图

    %matplotlib inline
    plt.plot([1,2])
    f=plt.gcf()
    plt.close()
    display(f,Caption('Plot'))
    

    可能会注意到IPython 1.x的默认乳胶模板在这种方法中效果不佳,因为这里图像和标题只是松散耦合,因此在乳胶编译过程中可能会包含垂直空间。 latex_basic模板效果更好。在IPython master中,默认模板工作正常。

    降价图片

    Markdown允许使用

    等图像
    ![Caption](/files/image)
    

    转换为乳胶时,pandoc可以取Caption部分并创建一个真正的乳胶标题。 类似地,当转换为html时,标题会嵌入到标题类中,以便使用css轻松设置样式。 但是,目前IPython需要一个当前未删除的“/ files /”前缀,因此乳胶将无法找到图像文件。(现在已修复)
    请注意,这些降价图像调用不会嵌入,只会将图像链接到ipynb文件,因此,图像必须保持可用。