【问题标题】:Jekyll Highlight Tag: Prevent escapingJekyll 高亮标签:防止转义
【发布时间】:2017-05-19 17:42:18
【问题描述】:
{% highlight %}
I want {% raw %}<span class="handle">{% endraw %}this span{% raw %}</span>{% endraw %} to be rendered as HTML.
{% endhighlight %}

是否可以阻止 Jekyll 的 highlight 标签处理输入的某些部分?

在上面的例子中,我希望 Jekyll 生成这样的 HTML:

<pre>
  <code>I want <span class="handle">this span</span> to be rendered in HTML</code>
</pre>

,而不是:

<pre>
  <code>I want &lt;span class="handle" ...</code>
</pre>

【问题讨论】:

  • 还有其他例子吗?为什么不直接写&lt;pre&gt; &lt;code&gt;I want &lt;span class="handle"&gt;this span&lt;/span&gt; to be rendered in HTML&lt;/code&gt; &lt;/pre&gt;
  • 好吧,那么我不能使用 {% highlight linenos %}。使用 linenos,HTML 标记变得相当复杂。

标签: jekyll highlighting


【解决方案1】:

高亮标签有两个参数。第一个参数是您需要突出显示的语言(我假设它是 html),第二个参数称为 linenos,这是一个可选参数,它将强制突出显示的代码包含行号。所以您需要使用 html 来获得您想要的。

{% highlight html %}
I want {% raw %}<span class="handle">{% endraw %}this span{% raw %}</span>{% endraw %} to be rendered as HTML.
{% endhighlight %}

换句话说,您不能为此使用{% highlight %}。回退到 HTML,如果它不是太冗长的话。

Jekyll 的{% include %} 可以解决 HTML 的冗长问题。

Jekyll 功能强大且灵活。

使用{% include %} 包含sn-ps 可以很好地简化表达式。

包括:

{% assign linenos = "1 2 3" | split: " " %}
{% include linenos.html numbers=linenos %}
{% highlight text %}
Once upon a time, there was a unicorn.

The unicorn looked around.
{% endhighlight %}

包含的sn-p:

<pre class="linenos"><code>{% for number in include.numbers %}{{ number }}
{% endfor %}</code></pre>

附带的 CSS 很简单:pre.linenos { float: left; }

结果是添加行号的能力(通过{% include %},以您喜欢的样式,不少于。 上面的“unicorn”例子见here

您想要的一个更复杂的示例是您可以在其中添加&lt;span&gt; 元素。你需要放弃{% highlight %},自己去&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;,对不起。 Jekyll 的{% highlight %} 会转义它收到的所有内容,也不例外。 这个例子是here

插件也可以工作

但如果您直接发布(没有您自己的 jekyll build 步骤)到 GitHub Pages,则不会。

如果您包含自己的脚本来执行jekyll build(就像上面提到的项目中所做的那样),请随意编写自己的插件!

【讨论】:

  • @{Abdul Hadi} 你是对的。经过一番搜索,我求助于 HTML。您能否将我的答案添加到您的答案中,以便我可以将您的答案标记为解决方案?
【解决方案2】:

@{阿卜杜勒·哈迪}

您能否将我的答案添加到您的答案中?您是第一个正确回答我的人,我想将您的回答标记为正确。

我的回答...

简短的回答,您不能为此使用{% highlight %}。回退到 HTML,如果它不是太冗长的话。

Jekyll 的 {% include %} 可以解决 HTML 的冗长问题。

Jekyll 功能强大且灵活。

使用{% include %} 包含sn-ps 可以很好地简化表达式。

包括:

{% assign linenos = "1 2 3" | split: " " %}
{% include linenos.html numbers=linenos %}
{% highlight text %}
Once upon a time, there was a unicorn.

The unicorn looked around.
{% endhighlight %}

包含的sn-p:

<pre class="linenos"><code>{% for number in include.numbers %}{{ number }}
{% endfor %}</code></pre>

附带的 CSS 很简单:pre.linenos { float: left; }

结果是添加行号的能力(通过{% include %},以您喜欢的风格,不少于。 上面的“unicorn”例子见here

您想要的一个更复杂的示例是您可以在其中添加&lt;span&gt; 元素。你需要放弃{% highlight %},自己去&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;,对不起。 Jekyll 的{% highlight %} 会转义它收到的所有内容,没有例外。 这个例子是here

插件也可以工作

但如果您直接发布(没有您自己的 jekyll build 步骤)到 GitHub Pages,则不会。

如果您包含自己的脚本来执行jekyll build(就像上面提到的项目中所做的那样),请随意编写自己的插件!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 2020-11-26
    • 2013-11-04
    相关资源
    最近更新 更多