使用 Redcarpet 呈现的 Markdown 缺少列表的破折号和部分之间的换行符

Markdown rendered with Redcarpet missing dashes for lists and new lines between sections

我生成了一些 Markdown,其文本形式如下所示:

"### We're looking for someone with…\r\n\r\n- Significant Rails experience\r\n- Good communication skills (recommended)\r\n\r\n\r\n### You should be located near:\r\n\r\n- Berlin\r\n- San Francisco\r\n- Toronto\r\n"

ApplicationHelper.rb中,我有以下内容:

module ApplicationHelper
    def markdown(content)
      return '' if content.blank?

      @options = {
           autolink: true,
           space_after_headers: true,
           underline: true,
           link_attributes: {rel: 'nofollow', target: "_blank"}
       }

      markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, @options)

      markdown.render(content).html_safe
    end
end

无论我在每个 H3 部分之间添加多少换行符(在本例中是 3 行新行),这两个部分都紧挨着彼此,而不是尊重 3 \ns在文中。

此外,列表中每个项目之前没有 -* 字符。

我查看了 Redcarpet 文档,但没有看到任何可以启用的内容来尊重新行和列表项。将 markdown 编译到的每个 html 标记列入白名单似乎不是正确的解决方案。

如有任何帮助,我们将不胜感激。谢谢!

这些示例选项可能会帮助您解决问题,选择并删除您不需要的选项。 对于 rails 将您的数据类型更改为文本而不是字符串,因为它不能使用换行符。

options = {
    :fenced_code_blocks => true,
    :no_intra_emphasis => true,
    :autolink => true,
    :strikethrough => true,
    :lax_html_blocks => true,
    # :superscript => true,
    :tables => true,
    :with_toc_data => true
  }

你应该用这个测试,

### We're looking for someone with

- Significant Rails experience
- Good communication skills (recommended)

### You should be located near

- Berlin
- San Francisco
- Toronto

Redcarpet 的输出是 HTML。它在浏览器中的显示方式取决于您对此设置样式的方式 HTML,并且或多或少与源 markdown 中的间距无关。

您给出的降价会产生以下结果 HTML:

<h3>We&#39;re looking for someone with…</h3>

<ul>
<li>Significant Rails experience</li>
<li>Good communication skills (recommended)</li>
</ul>

<h3>You should be located near:</h3>

<ul>
<li>Berlin</li>
<li>San Francisco</li>
<li>Toronto</li>
</ul>

无论列表和 header 之间有多少换行符,都会生成完全相同的 HTML。

渲染时出现多少 space 取决于您的 CSS。例如,您可能希望将 margin-toppadding-top 添加到 h3 元素以创建更多 space.

列表图标也是如此,您可能已将 list-style 设置为 none,这就是项目符号没有显示任何内容的原因。