【问题标题】:How to remove the end slash from the img tag?如何从 img 标签中删除结束斜线?
【发布时间】:2020-04-16 18:38:31
【问题描述】:

Kramdown 现在是 Jekyll 4.0 的默认 Markdown 渲染器。我想知道是否有办法从 img 标签中删除结束斜杠。

例如:

![Flowers](flowers.jpg)

<img src="flowers.jpg" alt="Flowers" />

几个月前的一种方法是使用 Redcarpet,但现在已放弃。

我该怎么办?

感谢您的支持。

【问题讨论】:

  • 它似乎是硬编码且不可配置的(参见kramdown code)。唯一的方法是重写此方法。
  • 嗨,大卫,谢谢。我可以用过滤器或插件覆盖 Kramdown 吗?
  • 我已经对此做出了回答。

标签: static jekyll slash kramdown redcarpet


【解决方案1】:

正如我在评论中所说,这个斜杠是硬编码在 Kramdown Html converter 中的。

您可以通过创建 _plugins/my_img_tag.rb 文件来覆盖此方法:

module Kramdown

  module Converter

    class Html < Base

      # Overriding method
      def convert_img(el, _indent)
        "<img#{html_attributes(el.attr)}>"
      end

    end

  end

end

注意:此插件不适用于 Github 页面。

【讨论】:

  • 所以,也许你可以批准这个答案 ;-)
  • 是的,大卫 :) - 我不明白为什么 Kramdown 会插入结尾斜杠。 2020年我们还需要标签上的/>?
  • 好的,但我希望 Kramdown/Jekyll 提供一种禁用 XHTML 的方法。我希望对最终输出进行 100% 控制。例如,Hugo 提供了这个功能。
【解决方案2】:

您可以为此使用正则表达式:

下面的正则表达式捕获了我们想要的:

(<img)(.*\n*\t*\s*)(\/>)

然后,您可以替换第 3 组:

$1$2>

我已经测试了标签 img 的一些变体:

Test using Sublime Text

【讨论】:

  • 喂,亚历山大,obrigado。 Mas eu utilizo markdown com Jekyll,portanto a sua sugestão não me ajuda。 Como respondeu o David acima,preciso sovrescrever o Kramdown。 O problema é como faze-lo.
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 2015-05-03
  • 2017-04-23
  • 2013-03-13
  • 1970-01-01
  • 2014-07-29
  • 2019-12-04
  • 1970-01-01
相关资源
最近更新 更多