导出的jupyter笔记本有不同的语法高亮

问题描述 投票:0回答:1

当我在 Jupyter 笔记本中有此 Python 代码时:

df = pd.read_csv("data.csv", index_col=0)
print(df.shape)

read_csv
shape
为蓝色,
"data.csv"
为红色,
0
print
为绿色。

当我将笔记本导出为 HTML 时,

read_csv
shape
print
不再具有语法突出显示功能。

另外,在我的 jupyter 笔记本中:

for v in my_values:
    something

for
in
均为绿色,但是当我将其导出为 HTML 时,
for
为绿色,
in
为紫色。

我的问题:是否有一些简单的解决办法,使导出的 HTML 与笔记本相同?

我希望突出显示相同,但我没有时间为此编写解决方案。

更多信息

我尝试从 Jupyter Notebook 和 Jupyter Lab 导出。 两者给出了相同的结果。

我还安装了 pandoc,以便可以导出为 LaTeX。 也有同样的问题。

我检查了 HTML,发现突出显示是通过 span 标签和 CSS 样式完成的。 这是两个代码块的 HTML:

<div class="highlight hl-ipython3"><pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="s2">"data.csv"</span><span class="p">,</span> <span class="n">index_col</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">df</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
</pre></div>

<div class="highlight hl-ipython3"><pre><span></span><span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">my_values</span><span class="p">:</span>
<span class="n">something</span>
</pre></div>

我在CSS中找到了span标签:

.highlight .s2 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Double */
.highlight .mi { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer */
.highlight .k { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword */
.highlight .ow { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator.Word */

我没有找到任何跨度“n”或“nb”的突出显示,这可能就是它们在 HTML 文档中没有突出显示的原因。

我为“nb”添加了一个,使用与“k”相同的颜色。 我还更改了“ow”的颜色以匹配“k”的颜色。 这解决了一半的突出问题。

但是,我不能只更改“n”的颜色,因为某些“n”只是用户定义的名称(即变量),而其他则是我希望为蓝色的方法。

python jupyter-notebook syntax-highlighting
1个回答
0
投票

我仍然更喜欢一个更好的答案,这将使导出的 HTML 与每次显示的语法突出显示相匹配,但这是我的快速修复:

由于我剩下的就是将方法(和数据属性)突出显示为蓝色,因此我只需使用以下方式搜索句点后的名称:

<span class="o">.</span><span class="n">

然后用我自己的跨度“mn”替换它:

<span class="o">.</span><span class="mn">

我找到了可用的 jupyterlab pygments here

并将这行CSS添加到HTML文档中

.highlight .mn { color: var(--jp-mirror-editor-attribute-color) } /* Joe's method name color */
© www.soinside.com 2019 - 2024. All rights reserved.