nbconvert 生成的 html 文件中的 custom.css 在哪里?

Where is custom.css in the generated html file from nbconvert?

我正在使用 nbconvert 通过

将我的 jupyter notebook 转换为 html

jupyter nbconvert my.ipynb --to html

然后它说:

[NbConvertApp] Converting notebook my.ipynb to html [NbConvertApp] Writing 407497 bytes to my.html

然后在生成的my.html中,我可以看到它需要custom.css:

<!-- Custom stylesheet, it must be in the same directory as the html file -->
<link rel="stylesheet" href="custom.css">

<!-- Loading mathjax macro -->
<!-- Load mathjax -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS_HTML"></script>
    <!-- MathJax configuration -->
    <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [ ['$','$'], ["\(","\)"] ],
            displayMath: [ ['$$','$$'], ["\[","\]"] ],
            processEscapes: true,
            processEnvironments: true
        },
        // Center justify equations in code and markdown cells. Elsewhere
        // we use CSS to left justify single line equations in code cells.
        displayAlign: 'center',
        "HTML-CSS": {
            styles: {'.MathJax_Display': {"margin": 0}},
            linebreaks: { automatic: true }
        }
    });
    </script>

信息: nbconvert 版本是 5.6.1

谢谢

如果文件 custom.css 存在于同一目录中,<link rel="stylesheet" href="custom.css"> 会有效地导致包含自定义的 CSS 样式规则。

如果您需要一些自定义 CSS 样式规则来显示生成的 html。您可以在与 html 文件相同的目录中添加具有这些规则的文件 custom.css

这不是强制性要求。如果您不想要任何自定义的样式规则,可以不包含这样的文件。生成的 HTML 文件中的默认 CSS 规则仍然有效。

如果您唯一的问题是这一行:<link rel="stylesheet" href="custom.css">,您可以修改模板文件并编写自定义 HTML 导出器:

导航到 nbconvert 的源目录。转到 ./templates/html/。将有一个名为 full.tpl 的文件。这是您的 HTML 文件的模板。使用文本编辑器打开文件并删除 <link rel="stylesheet" href="custom.css"> 行。 使用 .tpl 扩展名 (fullcustom.tpl) 保存文件。确保将其保存在与 full.tpl.

相同的目录中

下一步是在 Python 中编写自定义导出器 class(推荐)。您必须继承 HTMLExporter class 中定义的 ./exporters/html.py。您可以按照此处描述的过程进行操作:https://nbconvert.readthedocs.io/en/latest/external_exporters.html

现在,如果您不想花时间这样做,一个快速的“拼凑”就是实际修改 HTMLExporter class。如果需要,请创建 html.py 文件的副本,因为它正在被修改。打开./exporters/html.py,在HTMLExporterclass中找到如下方法:

@default('template_file')
    def _template_file_default(self):
        return 'full.tpl'

return full.tpl 更改为您使用 (fullcustom.tpl).

保存修改后的 full.tpl 的名称