3

如果您将 Jekyll 与 Pygments 语法高亮包一起使用,则可以编写

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

<div>根据 Clojure 语法生成一个包含该行的语法高亮。但是有没有办法在段落中间突出显示语法?我希望能够写作

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

此处所需的行为是 Clojure 关键字将使用与第一个示例中的关键字相同的样式突出显示。但是,当我尝试这样做时,它只会产生<div>类似的结果。(也许这是特定于我正在使用的 Kramdown 降价引擎,但 div 标签本身是 HTML 转义的,因此您可以在生成的文本中看到“<div>”。)

有没有办法让 Jekyll/Pygments 像这样进行“内联”语法突出显示?

4

4 回答 4

6

两年后,我继续创建了自己的 Jekyll 插件来提供内联语法高亮。它被称为inline_highlight,它可以像这样使用:

In Clojure, keywords like {% ihighlight clojure %}:foobar{% endihighlight %}
are prepended by colons.
于 2014-12-14T20:42:24.450 回答
1

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

如果你像这样定义一个 CSS 条目:

.inlined { display:inline; }

然后,您可以将此类添加到生成的<div>执行此操作中:

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

这适用于所有类型的对象(表格、图像等)。我现在无法测试它,但我认为这将解决问题。

测试时,请查看输出 HTML。然后你会发现你的<div>now 已经class=inlined设置了属性。

于 2013-11-10T18:38:51.727 回答
0

我认为您可以使用该nowrap选项来防止 Pygments 将代码包装在div标签中。所以你的例子会变成:

In Clojure, keywords like 
<span class='highlight'><code class='closure'>
{% highlight clojure nowrap %}:foobar{% endhighlight %}
</code></span>
are prepended by colons.
于 2013-03-07T15:19:38.810 回答
0

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

<div class="highlight">
    <code class="language-css" data-lang="css">…&lt;/code>
</div>

并在用 span 替换 div 后将其粘贴到所需的位置:

<span class="highlight">
    <code class="language-css" data-lang="css">…&lt;/code>
</span>    
于 2015-07-19T19:27:14.057 回答