Jekyll \ kramdown - 将`.table`类添加到生成的表中

时间:2016-09-26 10:59:09

标签: markdown jekyll kramdown

Jekyll 3.2.1 + kramdown。我有一个使用bootstrap css的主题。 生成的<table>应该用class="table"作为bootstrap css要求进行修饰。

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

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

3 个答案:

答案 0 :(得分:6)

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

table {
  @extend .table;
}

答案 1 :(得分:3)

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

但是,这可能会让您感到痛苦,并且不会使用GitHub页面。

您也可以编写将类添加到表中的JavaScript。既然您正在使用Bootstrap(以及JQuery),那么您应该能够做到这样的事情:

$("table").addClass("table");

答案 2 :(得分:0)

您可以向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进行转换的地方(我想注册一个新的转换器类)。