Jekyll-带有换行符的Markdown不会以HTML呈现

时间:2018-10-11 14:19:43

标签: markdown jekyll

Jekyll 3.0.1未呈现单个换行符(换行符)。它忽略它。令人惊讶的是,它正在按原样发送双换行。我在Jekyll上使用Ubuntu 16.04。有人可以帮我解决这个问题吗?

输入

enter image description here

已渲染

enter image description here

5 个答案:

答案 0 :(得分:3)

如果您使用的是Kramdown(Jekylls的默认Markdown渲染器),请将以下内容添加到_config.yml中:

kramdown:
  hard_wrap: true

hard_wrap-从字面上解释换行符

Jekyll Docs

答案 1 :(得分:2)

您要寻找this吗?

  

当您要做要使用Markdown插入{ name: "AARON", age: 29, } 中断标签时,请以两个或多个空格结束一行,然后键入return。

此来源

<br />

应呈现为

此行以两个空格结尾
然后立即

答案 2 :(得分:1)

好问题。有(一如既往)多种方法来执行此操作。每个解决方案都有其优点和缺点。选择最适合您的风格或项目的一种。


解决方案1:br的换行符

这是迄今为止最优雅的解决方案。它就像PHP一样工作。您可以编写:

<div id="content">{{ content | newline_to_br }}</div>

并添加此CSS:

#content br {display: none;}
#content p br {display: inline;}

它会稍微污染您的输出(在段落标签外带有未渲染的中断),但它确实可以满足您的要求。它易于阅读,不需要对内容/降价进行任何更改。


解决方案2:每行后两个空格

在输出中,行尾的两个空格将由<br />替换。我不喜欢在代码编辑器中很难看到这些空格,但这是真正的降价方式。 Source


解决方案3:手动添加HTML换行符

由于Markdown允许使用HTML,因此您可以手动编写HTML分隔符,例如:<br />。这些中断编写起来很麻烦,并且会用HTML污染您的markdown,但它们确实有效。

答案 3 :(得分:0)

这是我肮脏的解决方法。

我将此代码移到了单独的辅助程序include中,以在使用时提供更好的可读性。

帮助文件。 _includes/linebreaks.html

{% capture devnull %}
{% assign parts = include.input | newline_to_br | strip_newlines | split:"<br />" %}
{% capture output %}{% for item in parts %}{% assign item = item | strip %}{%
    if item.size > 0 %}{{ item | append: '<br />' | replace:"</p><br />","</p>" }}{% endif %}
{% endfor %}{% endcapture %}
{% endcapture %}{{ output }}

在模板中使用_layouts/default.html

<h1>{{ page.title }}</h1>
{% include linebreaks.html input=content %}

源降价文件_posts/2020-02-20-marys-lamb.md

---
title: Mary’s Lamb
---

Mary had a little lamb,
Little lamb, little lamb,
Mary had a little lamb
Whose fleece was white as snow.

And everywhere that Mary went,
Mary went, Mary went,
Everywhere that Mary went
The lamb was sure to go.

和结果

<h1>Mary’s Lamb</h1>

<p>Mary had a little lamb,<br />
Little lamb, little lamb,<br />
Mary had a little lamb<br />
Whose fleece was white as snow.</p>

<p>And everywhere that Mary went,<br />
Mary went, Mary went,<br />
Everywhere that Mary went<br />
The lamb was sure to go.</p>

答案 4 :(得分:0)

对此的一种解决方案可能是: 在行尾添加两个 br 标签:
This is line one without any space at end.<br><br>This is line two.
输出:
This is line one without any space at end
This is line two