我在ipython笔记本中的数字下面有包含图标标题文本的单元格。我希望他们成为中心('中心') - 对齐。我用“< center>”在降价时,它完全给出了我在笔记本中的外观。但是当nb转换为乳胶时,文本被分流到左边。
在转换为乳胶时,有没有办法让nbconvert识别降价单元格中的文本对齐?
感谢。
答案 0 :(得分:4)
您实际上已经提出了两个不同的问题:
ad 1)
要使用降价转换为乳胶pandoc
。不幸的是,如果转换为乳胶,pandoc会从markdown中删除原始html(如果在将markdown转换为html时也删除了原始乳胶)。
因此,使用html标签来格式化html和latex中的输出并不是那么简单。这种格式化可以基于单元格元数据来实现,但目前并不是那么简单。
ad 2)
然而,可以创建像文本一样的标题来处理html和latex。
这里我们要区分pyout或流数据的标题(例如Ipython.display.Image)和降价图像。
一种可能的方法是创建 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文件,因此,图像必须保持可用。