4

Jekyll 3.2.1 + kramdown。我有一个使用引导 css 的主题。生成<table>的 s 应该class="table"按照引导 css 的要求进行装饰。

{: class=table}我已经看到了添加或添加到降价表的其他建议,{.table}但我真的不喜欢这个解决方案,因为它“污染”了带有 html\css 详细信息的纯降价。我希望我的 markdown 可以按原样阅读,并且与目标格式无关。

首选的解决方案是自定义 Jekyll 或 kramdown,以便使用此类自动生成降价表。这可能吗?

4

3 回答 3

8

table如果所有表都将具有该类,则将样式应用于标记可能更容易。这样可以避免污染 Markdown 和标记。为了避免分叉或修改 Bootstrap,您甚至可以table使用 Sass 扩展这些样式:

table {
  @extend .table;
}
于 2016-09-26T21:00:04.387 回答
4

当然,您可以使用kramdown api创建自定义解析器。

但是,这可能有点让人头疼,而且它不适用于 GitHub 页面。

您还可以编写将类添加到表中的 JavaScript。由于您使用的是 Bootstrap(因此也使用了 JQuery),因此您应该能够执行以下操作:

$("table").addClass("table");
于 2016-09-26T13:00:43.153 回答
1

您可以向 Kramdown 添加新的输出转换器:

module Kramdown
  # Add some bootstrap4 specific defaults to markdown output
  class Converter::HtmlBootstrap4 < Converter::Html
    def convert_table(el, indent)
      el.attr["class"] ||= 'table'
      super
    end
  end
end

然后,当您要呈现降价时,请使用该输出转换器:

Kramdown::Document.new(output).to_html_bootstrap4

你需要把它放在 jekyll 进行转换的任何地方(我认为注册一个新的转换器类)。

于 2018-02-08T23:47:47.237 回答