在Github上的Jupyter笔记本中的HTML锚点

13

在Markdown中创建锚点和在笔记本中创建内部目录类型的锚点,这些方面已经有很多资料。然而我需要的是能够从外部源访问Github上我的笔记本中的锚点,例如:

https://github.com/.../mynotebook.ipynb#thiscell

我有一些以这种方式托管的交互式教程和一个单独的手册,我希望能够链接到笔记本电脑的各个部分。我可以毫不费力地在Markdown单元格中添加锚标签,方法如下:

<a id='thiscell'></a> 

但是当我尝试使用我上面写的链接时,它只会在顶部加载笔记本,就好像没有引用锚点一样。


3
可能是因为Github正在渲染笔记本,这个中间步骤导致你失去了“锚定功能”。我尝试使用“name”而不是“id”,如此帖子所述,但结果是相同的。 - Albert Camps
这个不起作用是因为GitHub在iframe中呈现笔记本。父页面URL上的锚点不适用于iframe内容;锚点需要传播到<iframe src="..."> URL。 - Martijn Pieters
2个回答

11

GitHub使用一个独立的域名render.githubusercontent.com来渲染笔记本,并在嵌套框架中集成输出。这意味着GitHub URL上的任何锚点都不起作用,因为框架文档是完全不同的URL。

此外,框架内容不易重复使用,因为结果是笔记本的缓存渲染,具有有限的生命周期。您不能指望它长期保存以供以后链接!

因此,如果您需要能够链接到笔记本中的部分,则最好使用Jupyter笔记本查看器服务https://nbviewer.jupyter.org/。它支持从任何公共URL显示笔记本,包括托管在GitHub的存储库和GitHub代码片段。您也可以输入GitHub用户名(或username/repository)以快速访问。

这个笔记本查看器比GitHub使用的要丰富得多。GitHub禁用所有嵌入式JavaScript,并剥离几乎所有HTML属性。任何嵌入的动画都将消失不见。但是Jupyter nbviewer服务直接支持这些功能。

例如,在nbviewer上比较这两个笔记本:

在GitHub上使用相同的笔记本:

第一个包含一段动画,第二个则通过使用一些HTML样式和锚链接使复杂的表格更易于阅读。


1
我很想知道我的回答哪些地方不够有帮助或是有错误,以致于会被踩。这样我才能改进我的回答! - Martijn Pieters

3
我曾经也遇到过同样的问题。作为一种解决方法,我已将我的笔记本渲染委托给了http://nbviewer.jupyter.org。只需要提供其GitHub公共链接并点击Go!即可。

当然,在GitHub下,内部链接仍然无法工作,但是我现在在网络上找到了一个功能齐全的笔记本,这正是我最初想要的。

希望这对你的情况也适用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接