使用Redcarpet时,当我在降价中包含以下内容时,它不尊重任何换行符或缩进。我在行尾尝试了两个空格。代码之间的额外行。似乎什么都不起作用。
```xml
<?xml version="1.0" encoding="UTF-8"?>
<hash>
<money>3</money>
</hash>
```
明白了:
<?xml version="1.0" encoding="UTF-8"?> <hash> <money>3</money> </hash>
以下是红地毯设置:
Redcarpet::Markdown.new(Redcarpet::Render::HTML, :autolink => true, :space_after_headers => true, :fenced_code_blocks => true, :no_intra_emphasis => true, :lax_html_blocks => true)
我需要做什么才能使线条正确断开并保留缩进,就像在这里或 GitHub 上一样?
更新 - 源如下所示:
<pre><code><?xml version="1.0" encoding="UTF-8"?>
<hash>
<money>3</money>
</hash>
</code></pre>
尝试将降价结果包装在 find_and_preserve
Haml 助手中
# Assuming a setup like this:
markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML)
code_snippet = " <xml>n <tag/>n </xml>"
# This should prevent undesirable spaces within code blocks:
find_and_preserve(markdown.render(code_snippet)).html_safe
使用 find_and_preserve
Haml 帮助程序包装渲染调用时,降价输出中<pre>
标记内的所有换行符都将使用等效的 HTML 实体进行转义,然后 Haml 自动缩进将忽略它们。
解析的结果在<pre>
块内有换行符:
require 'redcarpet'
md = Redcarpet::Markdown.new(Redcarpet::Render::HTML, fenced_code_blocks:true)
puts md.render("```xmln<foo>n</foo>n```")
#=> <pre><code class="xml"><foo>
#=> </foo>
#=> </code></pre>
- 确认您在输出 HTML 中看到类似的包装器
将 CSS 设置为在
<pre>
块中使用预格式化:pre { white-space:pre }
在 Github 上,我需要做的就是用 <pre>
和 </pre>
标签包装我的缩进/格式化文本。
尝试使用此脚本来隔离它是您的应用程序还是红地毯中的某些内容。
我无法重现您遇到的问题(使用红地毯-2.1.1 宝石)。将其放入文件中,然后运行它(ruby redcarpet_test.rb
):
require 'rubygems'
require 'redcarpet'
md = %Q{...
```xml
<?xml version="1.0" encoding="UTF-8"?>
<hash>
<money>3</money>
</hash>
```
...}
r = Redcarpet::Markdown.new(Redcarpet::Render::HTML, :autolink => true, :space_after_headers => true, :fenced_code_blocks => true, :no_intra_emphasis => true, :lax_html_blocks => true)
puts r.render md
这适当地产生:
<p>...
<code>xml
<?xml version="1.0" encoding="UTF-8"?>
<hash>
<money>3</money>
</hash>
</code>
...</p>