使用 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 \n
s在文中。
此外,列表中每个项目之前没有 -
或 *
字符。
我查看了 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'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-top
或 padding-top
添加到 h3
元素以创建更多 space.
列表图标也是如此,您可能已将 list-style
设置为 none
,这就是项目符号没有显示任何内容的原因。
我生成了一些 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 \n
s在文中。
此外,列表中每个项目之前没有 -
或 *
字符。
我查看了 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'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-top
或 padding-top
添加到 h3
元素以创建更多 space.
列表图标也是如此,您可能已将 list-style
设置为 none
,这就是项目符号没有显示任何内容的原因。