关于clojure:在Jekyll中突出显示pygments语法而无需启动

Pygments syntax highlighting in Jekyll without starting a <div>

如果将Jekyll与Pygments语法突出显示包一起使用,则可以编写

1
2
3
{% highlight clojure %}
(def something :foobar)
{% endhighlight %}

生成包含该行的,根据Clojure语法突出显示语法。但是,有没有一种方法可以在段落中间突出显示语法?我想能够写

1
2
In Clojure, keywords like {% highlight clojure %}:foobar{% endhighlight %}
are prepended by colons.

此处的理想行为是,将使用与第一个示例中的关键字相同的样式来突出显示Clojure关键字。但是,当我尝试执行此操作时,它只会像以前一样生成一个。 (也许这特定于Ia?m使用的Kramdown降价引擎,但是div标签本身是HTML换码的,以便您可以在生成的文本中看到a?a ??。)

是否有办法让Jekyll / Pygments进行内联?这样的语法高亮显示?


两年后,我继续创建自己的Jekyll插件,以提供内联语法突出显示功能。它称为inline_highlight,可以这样使用:

1
2
In Clojure, keywords like {% ihighlight clojure %}:foobar{% endihighlight %}
are prepended by colons.

您可以将CSS类添加到帖子中放置的任何对象。

如果您定义这样的CSS条目:

1
.inlined { display:inline; }

然后您可以将此类添加到生成的中,方法是:

1
2
3
In Clojure, keywords like
{% highlight clojure %}:foobar{% endhighlight %}{: .inlined }
are prepended by colons.

这适用于所有类型的对象(表格,图像等)。我目前无法对其进行测试,但是我认为这可以解决问题。

测试时,请查看输出HTML。然后,您会发现现在已设置了class=inlined属性。


我的快速解决方法是让Jekyll预处理代码:

1
    <code class="language-css" data-lang="css">a€|</wyn>

并用span替换div后将其粘贴到合适的位置:

1
2
3
<span class="highlight">
    <code class="language-css" data-lang="css">a€|</wyn>
</span>

我认为您可以使用nowrap选项来防止Pygments将代码package在div标记中。因此,您的示例将变为:

1
2
3
4
5
In Clojure, keywords like
<span class='highlight'><code class='closure'>
{% highlight clojure nowrap %}:foobar{% endhighlight %}
</wyn></span>
are prepended by colons.