【问题标题】:Add class to table rows in Kramdown向 Kramdown 中的表行添加类
【发布时间】:2017-07-10 12:21:35
【问题描述】:

在 kramdown 中,通常很容易为一些文本添加一个类。例如,这里是一个块引用:

> This is a blockquote.
{:.example}

HTML 输出:

<blockquote class="example">This is a blockquote.</blockquote>

虽然这种技术适用于许多地方,但它似乎不适用于表格。 我想在表格行上设置一个类。我希望以下方法可以解决问题:

...
|one|two|three|{:.example}
...

换句话说,我希望得到以下部分输出:

<tr class="example">
...
</tr>

我实际上得到的是这样的:

<tr>
  <td>one</td>
  <td>two</td>
  <td>three</td>
  <td>{:.example}</td>
</tr>

我意识到我可以只用 HTML 编写表格,但我更喜欢 kramdown 的可读性优势。 可以在 kramdown 中做我想做的事吗?如果没有,有没有比使用 HTML 更好的解决方案?

【问题讨论】:

标签: markdown jekyll kramdown


【解决方案1】:

这目前在 kramdown 中是不可能的:请参阅问题 #417#436。如果你想留在纯粹的 kramdown 中,你必须使用 HTML。

如果您不想这样做并且愿意做一些小的后处理,您可以使用一些正则表达式。例如,如果您只想设置表格中第二行的样式

| foo   | bar   | baz  |
| xyzzy | plugh | thud |

然后

$ kramdown file.md | perl -pe 's{tr}{++$n == 2 ? "tr class=\"waldo\"" : $&}ge'

$ kramdown file.md | tr '\n' '^' | sed 's/<tr/<tr class="waldo"/2' | tr '^' '\n'

两者都产生:

<table>
  <tbody>
    <tr>
      <td>foo</td>
      <td>bar</td>
      <td>baz</td>
    </tr>
    <tr class="waldo">
      <td>xyzzy</td>
      <td>plugh</td>
      <td>thud</td>
    </tr>
  </tbody>
</table>

2 更改为您喜欢的任何数字。这是一个杂项,但我不知道其他既使用 kramdown 又不恢复为 HTML 表格的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 2016-03-01
    • 1970-01-01
    • 2016-08-27
    相关资源
    最近更新 更多