我有多个相互链接的Jupyter笔记本,因此 Notebook1.ipydb 包含指向 Notebook2.ipydb 的链接,其中包含markdown [Notebook2](Notebook2.ipynb)
和版本反之亦然。
通过nbconvert
将所有笔记本导出为HTML时,会保留指向 Notebook2.ipynb 的链接。我想将该链接更改为导出的 Notebook2.html ,以便链接的HTML文件充当静态网站。
我尝试使用get_ipython().__class__.__name__
检测我是否在iPython中运行,但是在转换为HTML之前它会执行此代码。
有没有办法检测静态文件以有条件地呈现正确的降价?还有另一种方法来保存链接的笔记本吗?
答案 0 :(得分:3)
只有两种选择。一种是首先链接到Notebook2.html
,另一种是为nbconvert
创建自定义预处理器。
from nbconvert.preprocessors import Preprocessor
import re
class CustomPreprocessor(Preprocessor):
def preprocess_cell(self, cell, resources, index):
if 'source' in cell and cell.cell_type == "markdown":
cell.source = re.sub(r"\[(.*)\]\(\1\.ipynb\)",r"[\1](\1.html)",cell.source)
return cell, resources
将其保存到文件中,然后添加到您的nbconvert配置文件(位于~/.jupyter/jupyter_nbconvert_config.py
或可以使用命令jupyter nbconvert --generate-config
生成)行:
c.HTMLExporter.preprocessors = ['CustomPreprocessor.CustomPreprocessor']
这假设自定义预处理器文件名为CustomPreprocessor,并且与您尝试转换的文件位于同一目录中。您也可以将其正确安装为模块。